1. Введение
Обзор
В этом практическом занятии вы будете использовать задания Cloud Run для выполнения пакетного вывода результатов с помощью Llama 3.2-1b LLM и vLLM от Meta, работающих на базе GPU заданий Cloud Run. Результаты будут записываться непосредственно в Cloud Storage с помощью монтирования томов Cloud Run .
Что вы узнаете
- Как выполнить пакетный вывод данных с использованием графического процессора в Cloud Run Jobs
- Как записывать данные в Cloud Storage с помощью монтирования томов 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.
- Секретный ключ Secret Manager для хранения вашего токена 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=- - Предоставьте своей учетной записи пользователя роль «Управитель секретов, ответственный за доступ к секретам»:
gcloud secrets add-iam-policy-binding $SECRET_ID \ --member serviceAccount:$SERVICE_ACCOUNT_EMAIL \ --role='roles/secretmanager.secretAccessor' - Создайте хранилище (bucket) для размещения вашей доработанной модели:
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.
В этом разделе вы создадите код, который будет выполнять следующие действия:
- Импортирует модель ламы из 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
Подтверждение успеха
Чтобы убедиться в успешном выполнении задания, просмотрите журналы выполнения задания, как в выводе последней команды.
Проверьте результаты в хранилище Cloud Storage:
В консоли:
- Перейдите в раздел «Облачное хранилище» .
- Выберите сегмент, начинающийся с
inference-codelab. - Выберите
output.txt. - Нажмите «Аутентифицированный URL» , чтобы просмотреть содержимое в браузере.
Содержимое файла должно представлять собой четыре запроса и их результаты.
6. Поздравляем!
Поздравляем с завершением практического занятия!
Мы рекомендуем ознакомиться с документацией Cloud Run .
Что мы рассмотрели
- Как выполнить пакетный вывод данных с использованием графического процессора в Cloud Run Jobs
- Как записывать данные в Cloud Storage с помощью монтирования томов Cloud Run
7. Уборка
Чтобы удалить задание Cloud Run, перейдите в консоль Cloud Run по адресу https://console.cloud.google.com/run и удалите задание inference-job .
Чтобы удалить весь проект, перейдите в раздел «Управление ресурсами» , выберите проект, созданный на шаге 2, и нажмите «Удалить». Если вы удалите проект, вам потребуется изменить проекты в вашем Cloud SDK. Вы можете просмотреть список всех доступных проектов, выполнив gcloud projects list .