1. Введение
В этом практическом занятии мы создадим модель прогнозирования оценок фильмов с использованием Vertex AI AutoML и настроим конечную точку развернутой модели на запуск из Java Cloud Functions. Модель обучается на данных, хранящихся в BigQuery и зарегистрированных в Vertex AI. Список сервисов можно разделить на две части:
- Создание и развертывание моделей машинного обучения
- Запуск для прогнозирования с использованием API машинного обучения.
Создание модели машинного обучения:
- Данные из CSV-файла в BigQuery
- Интеграция данных BigQuery в Vertex AI для создания моделей AutoML.
- Модель развернута в реестре моделей Vertex AI для генерации API-интерфейса конечной точки.
Запуск для прогнозирования с использованием API машинного обучения:
- Java Cloud Functions инициируют вызов конечной точки развернутой модели AutoML, которая принимает данные о фильме в качестве запроса от пользовательского интерфейса и возвращает прогнозируемый балл фильма.
Ниже представлен общий архитектурный обзор приложения:

Применение описанной выше архитектуры выходит за рамки данного практического занятия, но если вы хотите разработать и клиентское приложение, пожалуйста, обратитесь к блогу .
Давайте перейдем к этапам реализации.
Что вы построите
Вы создадите
- Набор данных BigQuery, содержащий компоненты таблицы и модели.
- Модель Vertex AI AutoML (создание и развертывание)
- Использование Java Cloud Functions для запуска прогнозирования с помощью API машинного обучения.
2. Требования
Ниже перечислены необходимые условия:
Создайте свой проект
- В консоли Google Cloud на странице выбора проекта выберите или создайте проект Google Cloud.
- Убедитесь, что для вашего облачного проекта включена функция выставления счетов. Узнайте, как проверить, включена ли функция выставления счетов для проекта .
- Для включения API перейдите в BigQuery . Вы также можете открыть веб-интерфейс BigQuery напрямую, введя в браузере следующий URL: https://console.cloud.google.com/bigquery
Активировать Cloud Shell
- Вы будете использовать Cloud Shell — среду командной строки, работающую в Google Cloud и поставляемую с предустановленным bq : В консоли Cloud нажмите «Активировать Cloud Shell» в правом верхнем углу:

- После подключения к Cloud Shell вы увидите, что ваша аутентификация пройдена и проект уже настроен на ваш идентификатор проекта. Для подтверждения аутентификации выполните следующую команду в Cloud Shell:
gcloud auth list
- Выполните следующую команду в Cloud Shell, чтобы убедиться, что команда gcloud знает о вашем проекте.
gcloud config list project
- Если ваш проект не задан, используйте следующую команду для его настройки:
gcloud config set project <PROJECT_ID>
Для получения информации о командах gcloud и их использовании обратитесь к документации .
3. Подготовка обучающих данных
Это важный этап во всех проектах, продуктах и приложениях, связанных с данными, который требует не только технических знаний, но и глубоких знаний в предметной области для подготовки оптимального набора данных и его обработки для вашего проекта машинного обучения. В рамках этого практического занятия мы будем предполагать, что данные уже подготовлены, и использовать уже обработанный файл данных .
4. Создание и загрузка набора данных
Набор данных BigQuery представляет собой коллекцию таблиц. Все таблицы в наборе данных хранятся в одном и том же месте . Вы также можете добавить пользовательские элементы управления доступом, чтобы ограничить доступ к набору данных и его таблицам.
- В Cloud Shell используйте команду bq mk для создания набора данных с именем "movies".
bq mk --location=<<LOCATION>> movies
Укажите местоположение в регионе (asia-south1). Не забудьте указать его также в качестве региона для шага VERTEX AI (оба экземпляра должны находиться в одном регионе).
- Убедитесь, что у вас готов файл данных (.csv). Выполните следующие команды в Cloud Shell, чтобы клонировать репозиторий и перейти к проекту:
git clone <<repository link>>
cd movie-score
- Используйте команду `bq load` для загрузки CSV-файла в таблицу BigQuery (обратите внимание, что вы также можете загружать файлы непосредственно из пользовательского интерфейса BigQuery):
bq load --source_format=CSV --skip_leading_rows=1 movies.movies_score \
./movies_bq_src.csv \ Id:numeric,name:string,rating:string,genre:string,year:numeric,released:string,score:string,director:string,writer:string,star:string,country:string,budget:numeric,company:string,runtime:numeric,data_cat:string
- Выполните запрос одним из 3 способов:
Взаимодействовать с BigQuery можно тремя способами, мы попробуем два из них: а) через веб- интерфейс BigQuery; б) с помощью команды bq; в) через API.
SELECT name, rating, genre, runtime FROM movies.movies_score limit 3;
Для выполнения запросов я использовал рабочую область BigQuery Web SQL. Рабочая область SQL выглядит следующим образом:

Использование команды bq:
bq query --use_legacy_sql=false \
SELECT name, rating, genre, runtime FROM movies.movies_score limit 3;
5. Использование данных BigQuery в Vertex AI AutoML
Используйте данные из BigQuery для непосредственного создания модели AutoML с помощью Vertex AI. Помните, что мы также можем выполнить AutoML непосредственно из BigQuery, зарегистрировать модель в VertexAI и предоставить доступ к конечной точке. Обратитесь к документации по BigQuery AutoML . Однако в этом примере мы будем использовать Vertex AI AutoML для создания нашей модели.
Создание набора данных Vertex AI
Перейдите в Vertex AI из консоли Google Cloud, включите API Vertex AI, если это еще не сделано, разверните раздел «Данные» и выберите «Наборы данных», нажмите «Создать набор данных», выберите тип данных «ТАБЛИЧНЫЙ» и параметр «Регрессия/классификация», затем нажмите «Создать».

Выберите источник данных
На следующей странице выберите источник данных. Выберите опцию «Выберите таблицу или представление из BigQuery» и выберите таблицу из BigQuery в поле «Просмотр» в поле «Путь в BigQuery». Нажмите «Продолжить».
Помните: для того чтобы таблица BigQuery отображалась в Vertex AI, экземпляр BigQuery и наборы данных Vertex AI должны находиться в одном и том же регионе.

При выборе исходной таблицы/представления из списка, не забудьте нажать на соответствующую кнопку, чтобы продолжить выполнение следующих шагов. Если вы случайно нажмете на название таблицы/представления, вы перейдете на Dataplex. В этом случае вам просто нужно вернуться на сайт Vertex AI.
Обучите модель
- После создания набора данных вы увидите страницу «Анализ» с возможностью обучения новой модели. Нажмите на неё:

- Оставьте в поле «Цель» значение «Классификация», выберите опцию AutoML на первой странице и нажмите «Продолжить»:

- Присвойте вашей модели имя, выберите в раскрывающемся списке «Score» в качестве имени целевого столбца и нажмите «Продолжить».
- Также обратите внимание, что вы можете установить флажок «Экспорт тестового набора данных в BigQuery», что позволяет легко и эффективно просматривать тестовый набор с результатами в базе данных без дополнительного уровня интеграции или необходимости перемещения данных между сервисами.
- На следующей странице вы можете выбрать необходимые дополнительные параметры обучения и указать количество часов, в течение которых модель будет обучаться. Обратите внимание, что перед увеличением количества часов работы узлов для обучения следует учитывать стоимость.
Нажмите «Начать обучение», чтобы начать обучение вашей новой модели.

Оцените, разверните и протестируйте модель.
После завершения обучения вы сможете нажать кнопку «Обучение» (в разделе «Разработка моделей» в меню слева) и увидеть свой курс обучения в разделе «Конвейеры обучения». Нажмите на него, чтобы перейти на страницу реестра моделей. Вы сможете:
- Просмотрите и оцените результаты обучения.

- Разверните и протестируйте модель с помощью вашей конечной точки API.
После развертывания модели создается конечная точка API, которую можно использовать в вашем приложении для отправки запросов и получения результатов прогнозирования модели в ответе.

Прежде чем перейти к следующему разделу, обязательно запишите идентификатор конечной точки развернутой модели, ее местоположение и другие сведения в разделе конечных точек Vertex AI.
6. Java Cloud Function для запуска машинного обучения.
Помните, что у нас есть конечная точка и другие детали на этапе развертывания машинного обучения? Мы будем использовать это и здесь, и поскольку мы используем Java Cloud Functions, мы будем использовать pom.xml для управления зависимостями. Мы используем библиотеку google-cloud-aiplatform для взаимодействия с API конечной точки Vertex AI AutoML.
- Найдите Cloud Functions в консоли Google Cloud и нажмите «Создать функцию».
- Введите параметры конфигурации, такие как среда, имя функции, регион, триггер (в данном случае, HTTPS), выбранный вами тип аутентификации, включите параметр «Требовать HTTPS» и нажмите «Далее/Сохранить».

- На следующей странице выберите Runtime (Java 11), Source Code (Inline or upload) и начните редактирование.

- Скопируйте файлы java и pom.xml из репозитория и вставьте их в соответствующие файлы во встроенном редакторе. Если вы используете локальный редактор (рекомендуется), то клонируйте исходный код из репозитория.
- В этом примере измените идентификатор проекта, идентификатор конечной точки, местоположение и конечную точку в исходном файле .java, но обратите внимание, что для хранения учетных данных рекомендуется использовать Secret Manager.
- В рамках данного практического задания закомментируйте части кода, относящиеся к MongoDB, в файле .java класса в скопированном исходном коде.
После внесения всех изменений разверните функцию. Вы увидите URL-адрес конечной точки, который можно использовать в вашем клиентском приложении для отправки запросов к этой облачной функции и получения оценки за фильм в качестве ответа.
7. Уборка
Чтобы избежать списания средств с вашего аккаунта Google Cloud за ресурсы, использованные в этой статье, выполните следующие действия:
- В консоли Google Cloud перейдите на страницу «Управление ресурсами» .
- В списке проектов выберите проект, который хотите удалить, и нажмите «Удалить».
- В диалоговом окне введите идентификатор проекта, а затем нажмите «Завершить», чтобы удалить проект.
8. Поздравляем!
Поздравляем! Вы успешно создали и развернули модель прогнозирования оценок фильмов в Vertex AI AutoML и запустили развернутую модель из Cloud Functions.