LLM только для SQL с BigQuery ML с использованием Vertex AI PaLM API

1. Введение

В этой лаборатории кода я перечислил шаги по обобщению исходного кода из репозиториев Github и идентификации языка программирования в репозитории с использованием большой языковой модели Vertex AI для генерации текста ( text-bison ) в качестве размещенной удаленной функции в BigQuery. . Благодаря проекту GitHub Archive Project у нас теперь есть полный снимок более 2,8 миллионов репозиториев GitHub с открытым исходным кодом в общедоступных наборах данных Google BigQuery . Список используемых услуг:

  1. BigQuery ML
  2. Vertex AI PaLM API

Что ты построишь

Вы создадите

  • Набор данных BigQuery, содержащий модель.
  • Модель BigQuery, в которой размещается API Vertex AI PaLM в качестве удаленной функции.
  • Внешнее соединение для установления связи между BigQuery и Vertex AI.

2. Требования

  • Браузер, например Chrome или Firefox.
  • Проект Google Cloud с включенной оплатой

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

  1. В Google Cloud Console на странице выбора проекта выберите или создайте проект Google Cloud.
  2. Убедитесь, что для вашего облачного проекта включена оплата. Узнайте, как проверить, включена ли оплата в проекте.
  3. Убедитесь, что все необходимые API (BigQuery API, Vertex AI API, BigQuery Connection API) включены.
  4. Вы будете использовать Cloud Shell , среду командной строки, работающую в Google Cloud, в которую предварительно загружен bq . Обратитесь к документации по командам и использованию gcloud.

В Cloud Console нажмите «Активировать Cloud Shell» в правом верхнем углу:

51622c00acec2fa.png

Если ваш проект не установлен, используйте следующую команду, чтобы установить его:

gcloud config set project <YOUR_PROJECT_ID>
  1. Перейдите в консоль BigQuery напрямую, введя следующий URL-адрес в браузере: https://console.cloud.google.com/bigquery.

4. Подготовка данных

В этом случае мы используем содержимое исходного кода из набора данных github_repos в общедоступных наборах данных Google BigQuery . Чтобы использовать это, в консоли BigQuery найдите «github_repos» и нажмите Enter. Нажмите на звездочку рядом с набором данных, который указан в качестве результата поиска. Затем нажмите кнопку «ПОКАЗАТЬ ТОЛЬКО ПОЗВЕЗДАННЫЕ», чтобы просмотреть этот набор данных только из общедоступных наборов данных.

dc6bf1e2fa6bba8a.png

Разверните таблицы в наборе данных, чтобы просмотреть схему и предварительный просмотр данных. Мы собираемся использовать sample_contents, который содержит только образец (10%) полных данных в таблице содержимого. Вот предварительный просмотр данных:

e021c689c56abf22.png

5. Создание набора данных BigQuery.

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

Создайте набор данных в регионе «США» (или в любом другом регионе по вашему выбору) с именем bq_llm.

c67e9f929629739a.png

В этом наборе данных будет храниться модель машинного обучения, которую мы создадим на следующих шагах. Обычно мы также храним данные, которые мы используем в приложении ML, в таблице самого этого набора данных, однако в нашем случае данные уже находятся в общедоступном наборе данных BigQuery, мы собираемся ссылаться на них непосредственно из нашего вновь созданного набора данных как необходимый. Если вы хотите реализовать этот проект на собственном наборе данных, который хранится в формате CSV (или любом другом файле), вы можете загрузить свои данные в набор данных BigQuery в таблицу, выполнив приведенную ниже команду из терминала Cloud Shell:

bq load --source_format=CSV --skip_leading_rows=1 bq_llm.table_to_hold_your_data \
./your_file.csv \ text:string,label:string

6. Создание внешнего соединения

Создайте внешнее соединение (включите API подключения BQ, если это еще не сделано) и запишите идентификатор учетной записи службы в деталях конфигурации соединения:

  1. Нажмите кнопку «+ДОБАВИТЬ» на панели BigQuery Explorer (слева от консоли BigQuery) и выберите «Подключение к внешним источникам данных» в списке популярных источников.
  2. Выберите тип соединения «BigLake и удаленные функции» и укажите «llm-conn» в качестве идентификатора соединения.

6b75042881eaec5f.png

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

7. Предоставьте разрешения

На этом этапе мы предоставим разрешения учетной записи службы на доступ к службе Vertex AI:

Откройте IAM и добавьте учетную запись службы, которую вы скопировали после создания внешнего соединения, в качестве основного и выберите роль «Пользователь Vertex AI».

ff8e1d730879f972.png

8. Создайте удаленную модель машинного обучения

Создайте удаленную модель, представляющую размещенную модель большого языка Vertex AI:

CREATE OR REPLACE MODEL bq_llm.llm_model
  REMOTE WITH CONNECTION `us.llm-conn`
  OPTIONS (remote_service_type = 'CLOUD_AI_LARGE_LANGUAGE_MODEL_V1');

Он создает модель с именем llm_model в наборе данных bq_llm, которая использует API CLOUD_AI_LARGE_LANGUAGE_MODEL_V1 Vertex AI в качестве удаленной функции. Это займет несколько секунд.

9. Сгенерируйте текст с помощью модели ML

После создания модели используйте ее для создания, обобщения или категоризации текста.

SELECT
  ml_generate_text_result['predictions'][0]['content'] AS generated_text,
  ml_generate_text_result['predictions'][0]['safetyAttributes']
    AS safety_attributes,
  * EXCEPT (ml_generate_text_result)
FROM
  ML.GENERATE_TEXT(
    MODEL `bq_llm.llm_model`,
    (
  SELECT
        CONCAT('Can you read the code in the following text and generate a summary for what the code is doing and what language it is written in:', content)
        AS prompt from `bigquery-public-data.github_repos.sample_contents`
          limit 5
    ),
    STRUCT(
      0.2 AS temperature,
      100 AS max_output_tokens));

**Объяснение:

ml_generate_text_result** — это ответ модели генерации текста в формате JSON, который содержит как содержимое, так и атрибуты безопасности: a. Содержимое представляет собой сгенерированный текстовый результат b. Атрибуты безопасности представляют собой встроенный фильтр контента с настраиваемым пороговым значением, который включен в Vertex AI Palm API, чтобы избежать любых непреднамеренных или непредвиденных ответов от большой языковой модели — ответ блокируется, если он нарушает порог безопасности.

ML.GENERATE_TEXT — это конструкция, которую вы используете в BigQuery для доступа к Vertex AI LLM для выполнения задач по генерации текста.

CONCAT добавляет оператор PROMPT и запись базы данных.

github_repos — это имя набора данных, а sample_contents — это имя таблицы, содержащей данные, которые мы будем использовать при разработке приглашения.

Температура является параметром подсказки, позволяющим контролировать случайность ответа: чем меньше, тем лучше с точки зрения релевантности.

Max_output_tokens — количество слов, которые вы хотите получить в ответ.

Ответ на запрос выглядит следующим образом:

1156f6eecb548cd5.png

10. Сгладьте результат запроса

Давайте сгладим результат, чтобы нам не приходилось явно декодировать JSON в запросе:

SELECT *
FROM
  ML.GENERATE_TEXT(
    MODEL `bq_llm.llm_model`,
    (
  SELECT
        CONCAT('Can you read the code in the following text and generate a summary for what the code is doing and what language it is written in:', content)
        AS prompt from `bigquery-public-data.github_repos.sample_contents`
          limit 5
        ),
    STRUCT(
      0.2 AS temperature,
      100 AS max_output_tokens,
      TRUE AS flatten_json_output));

**Объяснение:

Flatten_json_output** представляет собой логическое значение, которое, если установлено значение true, возвращает простой понятный текст, извлеченный из ответа JSON.

Ответ на запрос выглядит следующим образом:

3b662ef7d3ba9263.png

11. Очистка

Чтобы избежать списания средств с вашей учетной записи Google Cloud за ресурсы, используемые в этом посте, выполните следующие действия:

  1. В консоли Google Cloud перейдите на страницу «Управление ресурсами».
  2. В списке проектов выберите проект, который хотите удалить, и нажмите «Удалить».
  3. В диалоговом окне введите идентификатор проекта и нажмите «Завершить работу», чтобы удалить проект.

12. Поздравления

Поздравляем! Вы успешно использовали Vertex AI Text Generation LLM программно для выполнения текстового анализа ваших данных только с помощью SQL-запросов. Ознакомьтесь с документацией по продукту Vertex AI LLM , чтобы узнать больше о доступных моделях.