1. Введение
В этой лаборатории кода я перечислил шаги по обобщению исходного кода из репозиториев Github и идентификации языка программирования в репозитории с использованием большой языковой модели Vertex AI для генерации текста ( text-bison ) в качестве размещенной удаленной функции в BigQuery. . Благодаря проекту GitHub Archive Project у нас теперь есть полный снимок более 2,8 миллионов репозиториев GitHub с открытым исходным кодом в общедоступных наборах данных Google BigQuery . Список используемых услуг:
- BigQuery ML
- Vertex AI PaLM API
Что ты построишь
Вы создадите
- Набор данных BigQuery, содержащий модель.
- Модель BigQuery, в которой размещается API Vertex AI PaLM в качестве удаленной функции.
- Внешнее соединение для установления связи между BigQuery и Vertex AI.
2. Требования
3. Прежде чем начать
- В Google Cloud Console на странице выбора проекта выберите или создайте проект Google Cloud.
- Убедитесь, что для вашего облачного проекта включена оплата. Узнайте, как проверить, включена ли оплата в проекте.
- Убедитесь, что все необходимые API (BigQuery API, Vertex AI API, BigQuery Connection API) включены.
- Вы будете использовать Cloud Shell , среду командной строки, работающую в Google Cloud, в которую предварительно загружен bq . Обратитесь к документации по командам и использованию gcloud.
В Cloud Console нажмите «Активировать Cloud Shell» в правом верхнем углу:
Если ваш проект не установлен, используйте следующую команду, чтобы установить его:
gcloud config set project <YOUR_PROJECT_ID>
- Перейдите в консоль BigQuery напрямую, введя следующий URL-адрес в браузере: https://console.cloud.google.com/bigquery.
4. Подготовка данных
В этом случае мы используем содержимое исходного кода из набора данных github_repos в общедоступных наборах данных Google BigQuery . Чтобы использовать это, в консоли BigQuery найдите «github_repos» и нажмите Enter. Нажмите на звездочку рядом с набором данных, который указан в качестве результата поиска. Затем нажмите кнопку «ПОКАЗАТЬ ТОЛЬКО ПОЗВЕЗДАННЫЕ», чтобы просмотреть этот набор данных только из общедоступных наборов данных.
Разверните таблицы в наборе данных, чтобы просмотреть схему и предварительный просмотр данных. Мы собираемся использовать sample_contents, который содержит только образец (10%) полных данных в таблице содержимого. Вот предварительный просмотр данных:
5. Создание набора данных BigQuery.
Набор данных BigQuery – это набор таблиц. Все таблицы в наборе данных хранятся в одном и том же месте данных. Вы также можете прикрепить настраиваемые элементы управления доступом, чтобы ограничить доступ к набору данных и его таблицам.
Создайте набор данных в регионе «США» (или в любом другом регионе по вашему выбору) с именем bq_llm.
В этом наборе данных будет храниться модель машинного обучения, которую мы создадим на следующих шагах. Обычно мы также храним данные, которые мы используем в приложении 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, если это еще не сделано) и запишите идентификатор учетной записи службы в деталях конфигурации соединения:
- Нажмите кнопку «+ДОБАВИТЬ» на панели BigQuery Explorer (слева от консоли BigQuery) и выберите «Подключение к внешним источникам данных» в списке популярных источников.
- Выберите тип соединения «BigLake и удаленные функции» и укажите «llm-conn» в качестве идентификатора соединения.
- После создания соединения запишите учетную запись службы, созданную на основе сведений о конфигурации соединения.
7. Предоставьте разрешения
На этом этапе мы предоставим разрешения учетной записи службы на доступ к службе Vertex AI:
Откройте IAM и добавьте учетную запись службы, которую вы скопировали после создания внешнего соединения, в качестве основного и выберите роль «Пользователь Vertex AI».
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 — количество слов, которые вы хотите получить в ответ.
Ответ на запрос выглядит следующим образом:
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.
Ответ на запрос выглядит следующим образом:
11. Очистка
Чтобы избежать списания средств с вашей учетной записи Google Cloud за ресурсы, используемые в этом посте, выполните следующие действия:
- В консоли Google Cloud перейдите на страницу «Управление ресурсами».
- В списке проектов выберите проект, который хотите удалить, и нажмите «Удалить».
- В диалоговом окне введите идентификатор проекта и нажмите «Завершить работу», чтобы удалить проект.
12. Поздравления
Поздравляем! Вы успешно использовали Vertex AI Text Generation LLM программно для выполнения текстового анализа ваших данных только с помощью SQL-запросов. Ознакомьтесь с документацией по продукту Vertex AI LLM , чтобы узнать больше о доступных моделях.