1. Обзор
В этой лабораторной работе представлено подробное описание развертывания сервера приложений LIT на Google Cloud Platform (GCP) для взаимодействия с базовыми моделями Vertex AI Gemini и автономными сторонними моделями большого языка (LLM). Он также включает руководство по использованию пользовательского интерфейса LIT для оперативной отладки и интерпретации модели.
Пройдя эту лабораторную работу, пользователи узнают, как:
- Настройте LIT-сервер на GCP.
- Подключите сервер LIT к моделям Vertex AI Gemini или другим автономным LLM.
- Используйте пользовательский интерфейс LIT для анализа, отладки и интерпретации подсказок для повышения производительности модели и получения более глубокой информации.
Что такое ЛИТ?
LIT — это визуальный интерактивный инструмент для понимания моделей, который поддерживает текстовые, графические и табличные данные. Его можно запускать как автономный сервер или внутри сред ноутбуков, таких как Google Colab, Jupyter и Google Cloud Vertex AI. LIT доступен на PyPI и GitHub .
Первоначально созданные для понимания моделей классификации и регрессии, в недавних обновлениях добавлены инструменты для отладки подсказок LLM , позволяющие изучить, как содержимое пользователя, модели и системы влияет на поведение генерации.
Что такое Vertex AI и Model Garden?
Vertex AI — это платформа машинного обучения (ML), которая позволяет обучать и развертывать модели машинного обучения и приложения искусственного интеллекта, а также настраивать LLM для использования в ваших приложениях на базе искусственного интеллекта. Vertex AI сочетает в себе рабочие процессы обработки данных, обработки данных и машинного обучения, позволяя вашим командам сотрудничать, используя общий набор инструментов, и масштабировать свои приложения, используя преимущества Google Cloud.
Vertex Model Garden — это библиотека моделей машинного обучения, которая помогает вам находить, тестировать, настраивать и развертывать собственные модели и ресурсы Google, а также выбирать сторонние модели и ресурсы.
Что ты будешь делать
Вы будете использовать Google Cloud Shell и Cloud Run для развертывания контейнера Docker из предварительно созданного образа LIT.
Cloud Run — это управляемая вычислительная платформа, которая позволяет запускать контейнеры непосредственно поверх масштабируемой инфраструктуры Google, в том числе на графических процессорах .
Набор данных
В демонстрации по умолчанию используется образец набора данных для отладки подсказки LIT, но вы можете загрузить свой собственный через пользовательский интерфейс.
Прежде чем начать
Для работы с этим справочным руководством вам понадобится проект Google Cloud . Вы можете создать новый или выбрать уже созданный проект.
2. Запустите Google Cloud Console и Cloud Shell.
На этом этапе вы запустите Google Cloud Console и будете использовать Google Cloud Shell.
2-a. Запустите облачную консоль Google.
Запустите браузер и перейдите в Google Cloud Console .
Консоль Google Cloud — это мощный и безопасный интерфейс веб-администратора, который позволяет быстро управлять ресурсами Google Cloud. Это мобильный инструмент DevOps.
2-б: Запустите Google Cloud Shell
Cloud Shell — это онлайн-среда разработки и эксплуатации, доступная в любом месте с помощью браузера. Вы можете управлять своими ресурсами с помощью онлайн-терминала, в который предварительно загружены такие утилиты, как инструмент командной строки gcloud, kubectl и другие. Вы также можете разрабатывать, создавать, отлаживать и развертывать свои облачные приложения с помощью онлайн-редактора Cloud Shell. Cloud Shell предоставляет готовую онлайн-среду для разработчиков с предустановленным избранным набором инструментов и 5 ГБ постоянного места для хранения данных. На следующих шагах вы будете использовать командную строку.
Запустите Google Cloud Shell, используя значок в правом верхнем углу строки меню, обведенный синим цветом на следующем снимке экрана.
Внизу страницы вы должны увидеть терминал с оболочкой Bash.
2-c: Установите проект Google Cloud
Вы должны установить идентификатор проекта и регион проекта с помощью команды gcloud
.
# Set your GCP Project ID.
gcloud config set project your-project-id
# Set your GCP Project Region.
gcloud config set run/region your-project-region
3. Разверните образ Docker сервера приложений LIT с помощью Cloud Run.
3-a: Развертывание приложения LIT в Cloud Run
Сначала вам необходимо установить последнюю версию LIT-App в качестве версии для развертывания.
# Set latest version as your LIT_SERVICE_TAG.
export LIT_SERVICE_TAG=latest
# List all the public LIT GCP App server docker images.
gcloud container images list-tags us-east4-docker.pkg.dev/lit-demos/lit-app/gcp-lit-app
После установки тега версии вам необходимо дать сервису имя.
# Set your lit service name. While 'lit-app-service' is provided as a placeholder, you can customize the service name based on your preferences.
export LIT_SERVICE_NAME=lit-app-service
После этого вы можете запустить следующую команду, чтобы развернуть контейнер в Cloud Run.
# Use below cmd to deploy the LIT App to Cloud Run.
gcloud run deploy $LIT_SERVICE_NAME \
--image us-east4-docker.pkg.dev/lit-demos/lit-app/gcp-lit-app:$LIT_SERVICE_TAG \
--port 5432 \
--cpu 8 \
--memory 32Gi \
--no-cpu-throttling \
--no-allow-unauthenticated
LIT также позволяет добавлять набор данных при запуске сервера. Для этого установите переменную DATASETS
так, чтобы она включала данные, которые вы хотите загрузить, используя name:path
, например data_foo:/bar/data_2024.jsonl
. Формат набора данных должен быть .jsonl, где каждая запись содержит prompt
и необязательные поля target
и source
. Чтобы загрузить несколько наборов данных, разделите их запятой. Если этот параметр не установлен, будет загружен образец набора данных отладки подсказки LIT.
# Set the dataset.
export DATASETS=[DATASETS]
Установив MAX_EXAMPLES, вы можете установить максимальное количество примеров для загрузки из каждого оценочного набора.
# Set the max examples.
export MAX_EXAMPLES=[MAX_EXAMPLES]
Затем в команде развертывания вы можете добавить
--set-env-vars "DATASETS=$DATASETS" \
--set-env-vars "MAX_EXAMPLES=$MAX_EXAMPLES" \
3-b: Просмотр службы приложений LIT
После создания сервера приложений LIT вы сможете найти службу в разделе Cloud Run Cloud Console.
Выберите только что созданную службу приложения LIT. Убедитесь, что имя службы совпадает с LIT_SERVICE_NAME
.
URL-адрес службы можно найти, щелкнув только что развернутую службу.
После этого вы сможете просмотреть пользовательский интерфейс LIT. Если вы столкнулись с ошибкой, проверьте раздел «Устранение неполадок».
Вы можете проверить раздел ЖУРНАЛЫ, чтобы отслеживать активность, просматривать сообщения об ошибках и отслеживать ход развертывания.
Вы можете проверить раздел МЕТРИКИ, чтобы просмотреть показатели услуги.
3-c: Загрузка наборов данных
Нажмите кнопку Configure
в пользовательском интерфейсе LIT, выберите Dataset
. Загрузите набор данных, указав имя и URL-адрес набора данных. Формат набора данных должен быть .jsonl, где каждая запись содержит prompt
и необязательные поля target
и source
.
4. Подготовьте модели Близнецов в саду моделей Vertex AI.
Базовые модели Google Gemini доступны через API Vertex AI. LIT предоставляет оболочку модели VertexAIModelGarden
для использования этих моделей для создания. Просто укажите желаемую версию (например, «gemini-1.5-pro-001») через параметр названия модели. Ключевым преимуществом использования этих моделей является то, что они не требуют дополнительных усилий для развертывания. По умолчанию у вас есть немедленный доступ к таким моделям, как Gemini 1.0 Pro и Gemini 1.5 Pro, на GCP, что устраняет необходимость дополнительных действий по настройке.
4-a: Предоставление разрешений Vertex AI
Чтобы запросить Gemini в GCP, вам необходимо предоставить разрешения Vertex AI сервисному аккаунту . Убедитесь, что имя учетной записи службы — Default compute service account
. Скопируйте адрес электронной почты учетной записи службы.
Добавьте адрес электронной почты сервисного аккаунта в качестве основного с ролью Vertex AI User
в свой белый список IAM .
4-b: Загрузка моделей Gemini
Вы будете загружать модели Gemini и настраивать их параметры, следуя инструкциям ниже.
- Нажмите кнопку
Configure
в пользовательском интерфейсе LIT.
- Нажмите кнопку
- Выберите опцию
gemini
в разделе «Select a base model
.
- Выберите опцию
- Вам нужно назвать модель в
new_name
.
- Вам нужно назвать модель в
- Введите выбранные вами модели Gemini в качестве
model_name
.
- Введите выбранные вами модели Gemini в качестве
- Нажмите
Load Model
.
- Нажмите
- Нажмите
Submit
.
- Нажмите
5. Развертывание локального сервера модели LLM на GCP.
Самостоятельно размещаемые LLM с образом Docker-образа модельного сервера LIT позволяют использовать функции значимости и токенизации LIT, чтобы получить более глубокое понимание поведения модели. Изображение сервера модели работает с моделями KerasNLP или Hugging Face Transformers , включая веса, предоставленные библиотекой и самостоятельно размещенные, например, в облачном хранилище Google.
5-a: Настройка моделей
Каждый контейнер загружает одну модель, настроенную с использованием переменных среды.
Вам следует указать модели для загрузки, установив параметр MODEL_CONFIG. Формат должен быть name:path
, например model_foo:model_foo_path
. Путь может представлять собой URL-адрес, путь к локальному файлу или имя предустановки для настроенной платформы глубокого обучения (дополнительную информацию см. в следующей таблице). Этот сервер протестирован с Gemma, GPT2, Llama и Mistral на всех поддерживаемых значениях DL_FRAMEWORK
. Другие модели должны работать, но могут потребоваться корректировки.
# Set models you want to load. While 'gemma2b is given as a placeholder, you can load your preferred model by following the instructions above.
export MODEL_CONFIG=gemma2b:gemma_2b_en
Кроме того, сервер модели LIT позволяет настраивать различные переменные среды с помощью приведенной ниже команды. Пожалуйста, обратитесь к таблице для получения подробной информации. Обратите внимание, что каждая переменная должна быть установлена индивидуально.
# Customize the variable value as needed.
export [VARIABLE]=[VALUE]
Переменная | Ценности | Описание |
DL_FRAMEWORK | | Библиотека моделирования, используемая для загрузки весов модели в указанную среду выполнения. По умолчанию используется |
DL_RUNTIME | | Серверная платформа глубокого обучения, на которой работает модель. Все модели, загруженные этим сервером, будут использовать один и тот же сервер, несовместимость приведет к ошибкам. По умолчанию |
ТОЧНОСТЬ | | Точность с плавающей запятой для моделей LLM. По умолчанию |
BATCH_SIZE | Положительные целые числа | Количество примеров для обработки в пакете. По умолчанию |
SEQUENCE_LENGTH | Положительные целые числа | Максимальная длина последовательности приглашения ввода плюс сгенерированный текст. По умолчанию |
5-b: Развертывание сервера модели для запуска в облаке
Сначала вам необходимо установить последнюю версию Model Server в качестве версии для развертывания.
# Set latest as MODEL_VERSION_TAG.
export MODEL_VERSION_TAG=latest
# List all the public LIT GCP model server docker images.
gcloud container images list-tags us-east4-docker.pkg.dev/lit-demos/lit-app/gcp-model-server
После установки тега версии вам необходимо назвать свою модель-сервер.
# Set your Service name.
export MODEL_SERVICE_NAME='gemma2b-model-server'
После этого вы можете запустить следующую команду, чтобы развернуть контейнер в Cloud Run. Если вы не установите переменные среды, будут применены значения по умолчанию. Поскольку большинство LLM требуют дорогостоящих вычислительных ресурсов, настоятельно рекомендуется использовать графический процессор. Если вы предпочитаете работать только на процессоре (что отлично подходит для небольших моделей, таких как GPT2), вы можете удалить соответствующие аргументы --gpu 1 --gpu-type nvidia-l4 --max-instances 7
.
# Deploy the model service container.
gcloud beta run deploy $MODEL_SERVICE_NAME \
--image us-east4-docker.pkg.dev/lit-demos/lit-app/gcp-model-server:$MODEL_VERSION_TAG \
--port 5432 \
--cpu 8 \
--memory 32Gi \
--no-cpu-throttling \
--gpu 1 \
--gpu-type nvidia-l4 \
--max-instances 7 \
--set-env-vars "MODEL_CONFIG=$MODEL_CONFIG" \
--no-allow-unauthenticated
Кроме того, вы можете настроить переменные среды, добавив следующие команды. Включайте только те переменные среды, которые необходимы для ваших конкретных нужд.
--set-env-vars "DL_FRAMEWORK=$DL_FRAMEWORK" \
--set-env-vars "DL_RUNTIME=$DL_RUNTIME" \
--set-env-vars "PRECISION=$PRECISION" \
--set-env-vars "BATCH_SIZE=$BATCH_SIZE" \
--set-env-vars "SEQUENCE_LENGTH=$SEQUENCE_LENGTH" \
Для доступа к определенным моделям могут потребоваться дополнительные переменные среды. См. инструкции от Kaggle Hub (используется для моделей KerasNLP) и Hugging Face Hub, если это необходимо.
5-c: Сервер модели доступа
После создания сервера модели запущенный сервис можно будет найти в разделе Cloud Run вашего проекта GCP.
Выберите сервер модели, который вы только что создали. Убедитесь, что имя службы совпадает с MODEL_SERVICE_NAME
.
URL-адрес службы можно найти, щелкнув модель службы, которую вы только что развернули.
Вы можете проверить раздел ЖУРНАЛЫ, чтобы отслеживать активность, просматривать сообщения об ошибках и отслеживать ход развертывания.
Вы можете проверить раздел МЕТРИКИ, чтобы просмотреть показатели услуги.
5-d: Загрузка автономных моделей
Если вы используете прокси-сервер LIT на шаге 3 (см. раздел «Устранение неполадок»), вам потребуется получить токен идентификации GCP, выполнив следующую команду.
# Find your GCP identity token.
gcloud auth print-identity-token
Вы будете загружать автономные модели и настраивать их параметры, следуя инструкциям ниже.
- Нажмите кнопку
Configure
в пользовательском интерфейсе LIT. - Выберите параметр
LLM (self hosted)
в разделе «Select a base model
. - Вам нужно назвать модель в
new_name
. - Введите URL-адрес сервера вашей модели в качестве
base_url
. - Введите полученный токен идентификации в
identity_token
, если вы проксируете сервер приложений LIT (см. Шаг 3 и Шаг 7). В противном случае оставьте это поле пустым. - Нажмите
Load Model
. - Нажмите
Submit
.
6. Взаимодействие с LIT на GCP
LIT предлагает богатый набор функций, которые помогут вам отладить и понять поведение модели. Вы можете сделать что-то простое, например запросить модель, набрав текст в поле и просмотрев прогнозы модели, или тщательно изучить модели с помощью набора мощных функций LIT, в том числе:
6-a: Запрос модели через LIT
LIT автоматически запрашивает набор данных после загрузки модели и набора данных. Вы можете просмотреть реакцию каждой модели, выбрав ответ в столбцах.
6-b: Используйте технику выделения последовательности
В настоящее время метод Sequence Salience в LIT поддерживает только автономные модели.
Sequence Salience — это визуальный инструмент, который помогает отлаживать подсказки LLM, выделяя те части подсказки, которые наиболее важны для конкретного результата. Для получения дополнительной информации о Sequence Salience ознакомьтесь с полным руководством по использованию этой функции.
Чтобы получить доступ к результатам значимости, щелкните любой ввод или вывод в подсказке или ответе, и результаты значимости будут отображены.
6-c: Подсказка и цель редактирования Manullay
LIT позволяет вручную редактировать любое prompt
и target
для существующей точки данных. При нажатии кнопки Add
» новые входные данные будут добавлены в набор данных.
6-d: Сравните подсказки рядом
LIT позволяет сравнивать подсказки на оригинальных и отредактированных примерах. Вы можете вручную отредактировать пример и просмотреть результат прогнозирования и анализ значимости последовательности как для исходной, так и для отредактированной версии одновременно. Вы можете изменить запрос для каждой точки данных, и LIT сгенерирует соответствующий ответ, запросив модель.
6-e: Сравнение нескольких моделей рядом
LIT позволяет параллельно сравнивать модели на отдельных примерах генерации текста и оценки, а также на агрегированных примерах для конкретных показателей. Опрашивая различные загруженные модели, вы можете легко сравнить различия в их ответах.
6-f: Автоматические контрфактические генераторы
Вы можете использовать автоматические контрфактические генераторы для создания альтернативных входных данных и сразу же увидеть, как ваша модель ведет себя на них.
6-g: Оценка производительности модели
Вы можете оценить эффективность модели с помощью показателей (в настоящее время поддерживаются оценки BLEU и ROUGE для генерации текста) по всему набору данных или любым подмножествам отфильтрованных или выбранных примеров.
7. Устранение неполадок
7-a: Потенциальные проблемы с доступом и их решения
Поскольку при развертывании в Cloud Run применяется --no-allow-unauthenticated
, вы можете столкнуться с запрещенными ошибками, как показано ниже.
Существует два подхода к доступу к сервису приложений LIT.
1. Прокси для локальной службы
Вы можете проксировать службу на локальном хосте, используя команду ниже.
# Proxy the service to local host.
gcloud run services proxy $LIT_SERVICE_NAME
После этого вы сможете получить доступ к серверу LIT, щелкнув ссылку прокси-службы.
2. Непосредственная аутентификация пользователей
Вы можете перейти по этой ссылке для аутентификации пользователей и предоставления прямого доступа к сервису приложений LIT. Этот подход также может позволить группе пользователей получить доступ к услуге. Для разработки, предполагающей сотрудничество с несколькими людьми, это более эффективный вариант.
7-b: Проверяет успешность запуска сервера модели.
Чтобы убедиться, что сервер модели запущен успешно, вы можете напрямую запросить сервер модели, отправив запрос. Сервер модели предоставляет три конечные точки: predict
, tokenize
и salience
. Убедитесь, что вы предоставили в своем запросе как поле prompt
, так и target
поля.
# Query the model server predict endpoint.
curl -X POST http://YOUR_MODEL_SERVER_URL/predict -H "Content-Type: application/json" -d '{"inputs":[{"prompt":"[YOUR PROMPT]", "target":[YOUR TARGET]}]}'
# Query the model server tokenize endpoint.
curl -X POST http://YOUR_MODEL_SERVER_URL/tokenize -H "Content-Type: application/json" -d '{"inputs":[{"prompt":"[YOUR PROMPT]", "target":[YOUR TARGET]}]}'
# Query the model server salience endpoint.
curl -X POST http://YOUR_MODEL_SERVER_URL/salience -H "Content-Type: application/json" -d '{"inputs":[{"prompt":"[YOUR PROMPT]", "target":[YOUR TARGET]}]}'
Если у вас возникли проблемы с доступом, ознакомьтесь с разделом 7-a выше.
8. Поздравления
Молодцы, завершили кодлаб! Время расслабиться!
Очистить
Чтобы очистить лабораторию, удалите все созданные для нее облачные службы Google. Используйте Google Cloud Shell для выполнения следующих команд.
Если соединение с Google Cloud потеряно из-за бездействия, сбросьте переменные, выполнив предыдущие шаги.
# Delete the LIT App Service.
gcloud run services delete $LIT_SERVICE_NAME
Если вы запустили сервер модели, вам также необходимо удалить сервер модели.
# Delete the Model Service.
gcloud run services delete $MODEL_SERVICE_NAME
Дальнейшее чтение
Продолжайте изучать возможности инструмента LIT, используя следующие материалы:
- Джемма: Ссылка
- База открытого исходного кода LIT: репозиторий Git.
- Доклад ЛИТ: ArXiv
- Документ по быстрой отладке LIT: ArXiv
- Видео-демонстрация функции ЛИТ: Youtube
- Демонстрация быстрой отладки LIT: Youtube
- Инструментарий ответственного GenAI: ссылка
Контакт
По любым вопросам или проблемам, связанным с этой лабораторией кода, обращайтесь к нам на GitHub .
Лицензия
Эта работа распространяется под лицензией Creative Commons Attribution 4.0 Generic License.