1. Введение
Обзор
В этой кодовой лаборатории вы будете использовать задания Cloud Run для запуска пакетного вывода с использованием Meta's Llama 3.2-1b LLM и vLLM на базе Cloud Run Jobs GPU. Вы будете записывать результаты непосредственно в Cloud Storage с помощью монтирования томов 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
, в Cloud Run Admin API.
Примечание: если вы используете новый проект, между включением 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
- Создайте репозиторий реестра артефактов для хранения образа контейнера. Если вы уже использовали исходные развертывания 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 GPU в этом процессе.
- Записывает результаты на локальный диск. Это записывается в Cloud Storage через монтирование томов.
Чтобы создать задание 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 beta 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 Cloud Console по адресу https://console.cloud.google.com/run и удалите задание inference-job
.
Чтобы удалить весь проект, перейдите в Управление ресурсами , выберите проект, созданный на шаге 2, и выберите Удалить. Если вы удалите проект, вам нужно будет изменить проекты в вашем Cloud SDK. Вы можете просмотреть список всех доступных проектов, запустив gcloud projects list
.