1. Введение
Обзор
В этой лабораторной работе вы будете использовать задания Cloud Run для пакетного вывода с помощью LLM и vLLM от Meta Llama 3.2-1b на базе графического процессора Cloud Run Jobs. Результаты будут записываться непосредственно в облачное хранилище с помощью монтирования томов Cloud Run .
Чему вы научитесь
- Как выполнить пакетный вывод с использованием Cloud Run Jobs GPU
- Как записывать данные в облачное хранилище с помощью монтирования томов Cloud Run
2. Прежде чем начать
Включить API
Прежде чем приступить к использованию этой лабораторной работы, включите следующие API, выполнив:
gcloud services enable run.googleapis.com \
cloudbuild.googleapis.com \
secretmanager.googleapis.com \
artifactregistry.googleapis.com
Квота графического процессора
Запросите увеличение квоты для поддерживаемого региона . Квота — nvidia_l4_gpu_allocation_no_zonal_redundancy в API администратора Cloud Run.
Примечание: если вы используете новый проект, между включением API и появлением квот на этой странице может пройти несколько минут.
Обнимающее лицо
В этой лабораторной работе используется модель, размещённая на Hugging Face . Чтобы получить эту модель, запросите токен доступа пользователя Hugging Face с разрешением «Чтение». Далее вы будете ссылаться на него как YOUR_HF_TOKEN .
Для использования модели вам также необходимо согласиться с условиями использования: https://huggingface.co/meta-llama/Llama-3.2-1B
3. Настройка и требования
В этом разделе приведены инструкции по настройке следующих ресурсов:
- Учетная запись службы IAM и связанные с ней разрешения IAM.
- Секретный менеджер секретов для хранения вашего токена Hugging Face.
- Облачное хранилище для сохранения результатов вашего вывода.
Чтобы настроить необходимые ресурсы, выполните следующие действия:
- Установите переменные среды для этой лабораторной работы:
export PROJECT_ID=<your_project_id> export REGION=<your_region> export HF_TOKEN=<YOUR_HF_TOKEN> export SERVICE_ACCOUNT=inference-service-account export SERVICE_ACCOUNT_EMAIL=${SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com export SECRET_ID=hugging-face-token export BUCKET_NAME=inference-codelab-${PROJECT_ID} - Создайте учетную запись службы, выполнив:
gcloud iam service-accounts create ${SERVICE_ACCOUNT} \ --display-name="Service account for batch inference codelab" - Используйте Secret Manager для хранения токена доступа Hugging Face:
gcloud secrets create $SECRET_ID \ --replication-policy="automatic" printf $HF_TOKEN | gcloud secrets versions add $SECRET_ID --data-file=- - Предоставьте своей учетной записи службы роль Secret Manager Secret Accessor:
gcloud secrets add-iam-policy-binding $SECRET_ID \ --member serviceAccount:$SERVICE_ACCOUNT_EMAIL \ --role='roles/secretmanager.secretAccessor' - Создайте контейнер для размещения вашей доработанной модели:
gcloud storage buckets create -l us-central1 gs://${BUCKET_NAME} - Предоставьте вашей учетной записи службы доступ к контейнеру:
gcloud storage buckets add-iam-policy-binding gs://$BUCKET_NAME \ --member=serviceAccount:$SERVICE_ACCOUNT_EMAIL \ --role=roles/storage.objectAdmin - Создайте репозиторий Artifact Registry для хранения образа контейнера. Если вы ранее использовали развёртывания исходного кода Cloud Run в своём проекте, пропустите этот шаг.
gcloud artifacts repositories create cloud-run-source-deploy \ --repository-format=docker \ --location=$REGION \ --project=$PROJECT_ID
4. Создайте задание Cloud Run.
В этом разделе вы создадите код, который выполняет следующие действия:
- Импортирует модель Llama из Hugging Face
- Выполняет пакетный вывод модели. В этом процессе используется один графический процессор L4.
- Записывает результаты на локальный диск. Запись в облачное хранилище осуществляется через монтирование томов.
Чтобы создать задание Cloud Run и Dockerfile, выполните следующие действия:
- Создайте каталог для размещения кода задания по тонкой настройке:
mkdir codelab-inference-job cd codelab-inference-job - Создайте файл с именем
main.py# SPDX-License-Identifier: Apache-2.0 from vllm import LLM, SamplingParams # Sample prompts. prompts = [ "Cloud Run is", "The future of AI is", "The capital of Germany is", "python as a programming language is", ] # Create a sampling params object. sampling_params = SamplingParams(temperature=0.8, top_p=0.95) # Create an LLM. llm = LLM(model="meta-llama/Llama-3.2-1B") # Generate texts from the prompts. The output is a list of RequestOutput objects # that contain the prompt, generated text, and other information. outputs = llm.generate(prompts, sampling_params) # Save the outputs to disk with open("/results/output.txt", "w") as f: for output in outputs: prompt = output.prompt generated_text = output.outputs[0].text f.write(f"Prompt: {prompt!r}, Generated text: {generated_text!r}\n") print(f"Wrote {len(outputs)} to disk.") - Создайте
Dockerfile:FROM python:3.12 ADD main.py . RUN python -m pip install --upgrade pip setuptools RUN pip install vllm CMD ["python", "./main.py"]
5. Развертывание и выполнение задания
На этом этапе вы создадите задание Cloud Run с помощью развёртывания исходного кода Cloud Run, а затем выполните его. Этот шаг также включает в себя установку флагов монтирования тома Cloud Run для сохранения результатов.
- Создайте задание Cloud Run:
Эта команда создаёт образ из исходного кода и развёртывает задание. Выполнение займёт некоторое время.gcloud run jobs deploy inference-job \ --region $REGION \ --source . \ --gpu=1 \ --set-secrets HF_TOKEN=${SECRET_ID}:latest \ --add-volume name=results,type=cloud-storage,bucket=${BUCKET_NAME} \ --add-volume-mount volume=results,mount-path=/results \ --service-account $SERVICE_ACCOUNT_EMAIL - Выполнить задание:
Выполнение задания займёт несколько минут. Вы можете проверить статус, перейдя по ссылке в результатах выполнения последней команды.gcloud run jobs execute inference-job --region $REGION --async
Подтверждение успеха
Чтобы убедиться в успешном выполнении задания, просмотрите журналы задания, как в выводе последней команды.
Проверьте результаты в контейнере облачного хранилища:
В консоли:
- Перейдите в облачное хранилище .
- Выберите контейнер, начинающийся с
inference-codelab. - Выберите
output.txt. - Нажмите «Аутентифицированный URL» , чтобы просмотреть содержимое в браузере.
Содержимое файла должно включать четыре подсказки и их результаты.
6. Поздравляем!
Поздравляем с завершением лабораторной работы!
Мы рекомендуем ознакомиться с документацией Cloud Run .
Что мы рассмотрели
- Как выполнить пакетный вывод с использованием Cloud Run Jobs GPU
- Как записывать данные в облачное хранилище с помощью монтирования томов Cloud Run
7. Уборка
Чтобы удалить задание Cloud Run, перейдите в облачную консоль Cloud Run по адресу https://console.cloud.google.com/run и удалите задание inference-job .
Чтобы удалить весь проект, перейдите в раздел «Управление ресурсами» , выберите проект, созданный на шаге 2, и нажмите «Удалить». После удаления проекта вам потребуется изменить проекты в Cloud SDK. Список всех доступных проектов можно просмотреть, выполнив gcloud projects list .