Оперативная отладка 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?

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

Что вы будете делать

Для развертывания контейнера Docker из предварительно созданного образа LIT вы будете использовать Google Cloud Shell и Cloud Run .

Cloud Run — это управляемая вычислительная платформа, позволяющая запускать контейнеры непосредственно на масштабируемой инфраструктуре Google, в том числе на графических процессорах (GPU) .

Набор данных

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

Прежде чем начать

Для работы с этим руководством вам потребуется проект Google Cloud . Вы можете создать новый проект или выбрать уже созданный.

2. Запустите консоль Google Cloud и оболочку Cloud Shell.

На этом шаге вы запустите консоль Google Cloud и воспользуетесь оболочкой Google Cloud Shell.

2-а: Запуск консоли Google Cloud

Откройте браузер и перейдите в консоль Google Cloud .

Консоль Google Cloud — это мощный и безопасный веб-интерфейс администратора, позволяющий быстро управлять ресурсами Google Cloud. Это инструмент DevOps, доступный в любое время и в любом месте.

2-б: Запуск Google Cloud Shell

Cloud Shell — это онлайн-среда разработки и эксплуатации, доступная из любой точки мира через браузер. Вы можете управлять своими ресурсами с помощью онлайн-терминала, в который предварительно загружены такие утилиты, как инструмент командной строки gcloud, kubectl и другие. Вы также можете разрабатывать, создавать, отлаживать и развертывать свои облачные приложения, используя онлайн-редактор Cloud Shell. Cloud Shell предоставляет готовую к использованию онлайн-среду для разработчиков с предустановленным набором любимых инструментов и 5 ГБ постоянного хранилища. На следующих шагах вы будете использовать командную строку.

Запустите Google Cloud Shell, используя значок в правом верхнем углу строки меню, обведенный синим кругом на следующем скриншоте.

Запуск консоли Google Cloud

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

Консоль Google Cloud

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-а: Развертывание приложения LIT в облаке

Сначала необходимо установить последнюю версию 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-б: Просмотр сервиса приложений LIT

После создания сервера приложений LIT вы сможете найти эту службу в разделе Cloud Run в консоли Cloud Console.

Выберите созданную вами службу LIT App. Убедитесь, что имя службы совпадает с LIT_SERVICE_NAME .

Список запуска Cloud Run в консоли Google Cloud

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

URL-адрес сервиса Google Cloud Find

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

LIT Demo home

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

Журнал запуска Cloud в консоли Google Cloud

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

Google Cloud Console Cloud Run Metrics

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

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

Набор данных загрузки LIT

4. Подготовка моделей Gemini в Vertex AI Model Garden.

Модели Gemini Foundation от Google доступны через API Vertex AI. LIT предоставляет оболочку модели VertexAIModelGarden для использования этих моделей при генерации. Просто укажите желаемую версию (например, "gemini-1.5-pro-001") в параметре имени модели. Ключевое преимущество использования этих моделей заключается в том, что они не требуют дополнительных усилий для развертывания. По умолчанию вы получаете немедленный доступ к таким моделям, как Gemini 1.0 Pro и Gemini 1.5 Pro в GCP, что исключает необходимость дополнительных шагов настройки.

4-а: Предоставить Vertex AI разрешения

Для выполнения запросов к Gemini в GCP необходимо предоставить учетной записи службы права доступа к Vertex AI. Убедитесь, что имя учетной записи службы — Default compute service account . Скопируйте адрес электронной почты учетной записи службы.

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

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

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

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

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

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

LIT Load Gemini Model

5. Разверните сервер модели LLM с самостоятельным размещением на GCP.

Самостоятельное размещение моделей LLM с помощью образа Docker для сервера моделей LIT позволяет использовать функции определения значимости и токенизации LIT для получения более глубокого понимания поведения модели. Образ сервера моделей работает с моделями KerasNLP или Hugging Face Transformers , включая веса, предоставляемые библиотекой, и веса, размещаемые самостоятельно, например, в Google Cloud Storage.

5-а: Настройка моделей

Каждый контейнер загружает одну модель, настроенную с помощью переменных среды.

Необходимо указать модели для загрузки, задав параметр 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 .

РАЗМЕР ПАРТИИ

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

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

ДЛИНА_ПОСЛЕДОВАТЕЛЬНОСТИ

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

Максимальная длина последовательности, включающая входной запрос и сгенерированный текст. По умолчанию — 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-моделей требуют дорогостоящих вычислительных ресурсов, настоятельно рекомендуется использовать GPU. Если вы предпочитаете работать только на CPU (что хорошо подходит для небольших моделей, таких как 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 .

Список запуска Cloud Run в консоли Google Cloud

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

URL-адрес сервиса Google Cloud Find

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

Журнал запуска Cloud в консоли Google Cloud

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

Google Cloud Console Cloud Run Metrics

5-d: Загрузка саморазмещаемых моделей

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

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

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

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

LIT Загрузка LLM Модели

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

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

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

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

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

Ответ LIT

6-б: Использование техники последовательной значимости

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

Функция «Выделение важных частей последовательности» — это визуальный инструмент, помогающий отлаживать подсказки LLM, выделяя наиболее важные части подсказки для заданного результата. Более подробную информацию о функции «Выделение важных частей последовательности» можно найти в полном руководстве по её использованию.

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

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

6-c: Запрос на ручное редактирование и целевой объект

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

LIT Mannully Edit

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

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

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

6-е: Сравните несколько моделей бок о бок.

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

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

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

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

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

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

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

Метрики модели просмотра LIT

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

7-а: Возможные проблемы доступа и пути их решения.

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

Ошибка Google Cloud Forbidden Error

Доступ к сервису LIT App возможен двумя способами.

1. Прокси для локального сервиса

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

# Proxy the service to local host.
gcloud run services proxy $LIT_SERVICE_NAME

После этого вы сможете получить доступ к серверу LIT, щелкнув ссылку на прокси-сервис.

2. Прямая аутентификация пользователей

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

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-а выше.

8. Поздравляем!

Отлично справились с лабораторной работой! Пора отдохнуть!

Уборка

Для очистки лаборатории удалите все созданные для нее сервисы Google Cloud. Используйте 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
  • Статья в LIT: ArXiv
  • Статья по отладке подсказок LIT: ArXiv
  • Демонстрационный видеоролик LIT: YouTube
  • Демонстрация отладки в командной строке LIT: YouTube
  • Набор инструментов для ответственного создания искусственного интеллекта: ссылка

Контакт

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

Лицензия

Данная работа распространяется под лицензией Creative Commons Attribution 4.0 Generic.