Оперативная отладка LLM с помощью Learning Interpretability Tool (LIT) на GCP

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, используя значок в правом верхнем углу строки меню, обведенный синим цветом на следующем снимке экрана.

Запуск облачной консоли Google

Внизу страницы вы должны увидеть терминал с оболочкой Bash.

Облачная консоль Google

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 .

Список запусков облака Google Cloud Console

URL-адрес службы можно найти, щелкнув только что развернутую службу.

URL-адрес службы Google Cloud Find

После этого вы сможете просмотреть пользовательский интерфейс LIT. Если вы столкнулись с ошибкой, проверьте раздел «Устранение неполадок».

ЛИТ Демо-дом

Вы можете проверить раздел ЖУРНАЛЫ, чтобы отслеживать активность, просматривать сообщения об ошибках и отслеживать ход развертывания.

Журнал запуска облака Google Cloud Console

Вы можете проверить раздел МЕТРИКИ, чтобы просмотреть показатели услуги.

Метрики запуска облака в Google Cloud Console

3-c: Загрузка наборов данных

Нажмите кнопку Configure в пользовательском интерфейсе LIT, выберите Dataset . Загрузите набор данных, указав имя и URL-адрес набора данных. Формат набора данных должен быть .jsonl, где каждая запись содержит prompt и необязательные поля target и source .

LIT Загрузить набор данных

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 . Скопируйте адрес электронной почты учетной записи службы.

Сервисные аккаунты GCP

Добавьте адрес электронной почты сервисного аккаунта в качестве основного с ролью Vertex AI User в свой белый список IAM .

Добавить адрес электронной почты сервисных аккаунтов

4-b: Загрузка моделей Gemini

Вы будете загружать модели Gemini и настраивать их параметры, следуя инструкциям ниже.

    1. Нажмите кнопку Configure в пользовательском интерфейсе LIT.
    1. Выберите опцию gemini в разделе « Select a base model .
    1. Вам нужно назвать модель в new_name .
    1. Введите выбранные вами модели Gemini в качестве model_name .
    1. Нажмите Load Model .
    1. Нажмите Submit .

LIT Загрузка модели Gemini

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

kerasnlp , transformers

Библиотека моделирования, используемая для загрузки весов модели в указанную среду выполнения. По умолчанию используется kerasnlp .

DL_RUNTIME

torch , tensorflow

Серверная платформа глубокого обучения, на которой работает модель. Все модели, загруженные этим сервером, будут использовать один и тот же сервер, несовместимость приведет к ошибкам. По умолчанию torch .

ТОЧНОСТЬ

bfloat16 , float32

Точность с плавающей запятой для моделей LLM. По умолчанию bfloat16 .

BATCH_SIZE

Положительные целые числа

Количество примеров для обработки в пакете. По умолчанию 1 .

SEQUENCE_LENGTH

Положительные целые числа

Максимальная длина последовательности приглашения ввода плюс сгенерированный текст. По умолчанию 512 .

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 .

Список запусков облака Google Cloud Console

URL-адрес службы можно найти, щелкнув модель службы, которую вы только что развернули.

URL-адрес службы Google Cloud Find

Вы можете проверить раздел ЖУРНАЛЫ, чтобы отслеживать активность, просматривать сообщения об ошибках и отслеживать ход развертывания.

Журнал запуска облака Google Cloud Console

Вы можете проверить раздел МЕТРИКИ, чтобы просмотреть показатели услуги.

Метрики запуска облака в Google Cloud Console

5-d: Загрузка автономных моделей

Если вы используете прокси-сервер LIT на шаге 3 (см. раздел «Устранение неполадок»), вам потребуется получить токен идентификации GCP, выполнив следующую команду.

# Find your GCP identity token.
gcloud auth print-identity-token

Вы будете загружать автономные модели и настраивать их параметры, следуя инструкциям ниже.

  1. Нажмите кнопку Configure в пользовательском интерфейсе LIT.
  2. Выберите параметр LLM (self hosted) в разделе « Select a base model .
  3. Вам нужно назвать модель в new_name .
  4. Введите URL-адрес сервера вашей модели в качестве base_url .
  5. Введите полученный токен идентификации в identity_token , если вы проксируете сервер приложений LIT (см. Шаг 3 и Шаг 7). В противном случае оставьте это поле пустым.
  6. Нажмите Load Model .
  7. Нажмите Submit .

LIT Загрузка моделей LLM

6. Взаимодействие с LIT на GCP

LIT предлагает богатый набор функций, которые помогут вам отладить и понять поведение модели. Вы можете сделать что-то простое, например запросить модель, набрав текст в поле и просмотрев прогнозы модели, или тщательно изучить модели с помощью набора мощных функций LIT, в том числе:

6-a: Запрос модели через LIT

LIT автоматически запрашивает набор данных после загрузки модели и набора данных. Вы можете просмотреть реакцию каждой модели, выбрав ответ в столбцах.

LIT Посмотреть ответ

Ответ ЛИТ

6-b: Используйте технику выделения последовательности

В настоящее время метод Sequence Salience в LIT поддерживает только автономные модели.

Sequence Salience — это визуальный инструмент, который помогает отлаживать подсказки LLM, выделяя те части подсказки, которые наиболее важны для конкретного результата. Для получения дополнительной информации о Sequence Salience ознакомьтесь с полным руководством по использованию этой функции.

Чтобы получить доступ к результатам значимости, щелкните любой ввод или вывод в подсказке или ответе, и результаты значимости будут отображены.

Результаты значимости последовательности LIT

6-c: Подсказка и цель редактирования Manullay

LIT позволяет вручную редактировать любое prompt и target для существующей точки данных. При нажатии кнопки Add » новые входные данные будут добавлены в набор данных.

ЛИТ Маннулли Править

6-d: Сравните подсказки рядом

LIT позволяет сравнивать подсказки на оригинальных и отредактированных примерах. Вы можете вручную отредактировать пример и просмотреть результат прогнозирования и анализ значимости последовательности как для исходной, так и для отредактированной версии одновременно. Вы можете изменить запрос для каждой точки данных, и LIT сгенерирует соответствующий ответ, запросив модель.

LIT Сравнить наборы данных

6-e: Сравнение нескольких моделей рядом

LIT позволяет параллельно сравнивать модели на отдельных примерах генерации текста и оценки, а также на агрегированных примерах для конкретных показателей. Опрашивая различные загруженные модели, вы можете легко сравнить различия в их ответах.

LIT Сравните ответ модели

6-f: Автоматические контрфактические генераторы

Вы можете использовать автоматические контрфактические генераторы для создания альтернативных входных данных и сразу же увидеть, как ваша модель ведет себя на них.

LIT автоматически генерирует ввод

6-g: Оценка производительности модели

Вы можете оценить эффективность модели с помощью показателей (в настоящее время поддерживаются оценки BLEU и ROUGE для генерации текста) по всему набору данных или любым подмножествам отфильтрованных или выбранных примеров.

LIT Просмотр показателей модели

7. Устранение неполадок

7-a: Потенциальные проблемы с доступом и их решения

Поскольку при развертывании в Cloud Run применяется --no-allow-unauthenticated , вы можете столкнуться с запрещенными ошибками, как показано ниже.

Ошибка Google Cloud запрещена

Существует два подхода к доступу к сервису приложений 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.