1. Введение
В этой лаборатории кода мы создадим модель прогнозирования оценки фильма с помощью Vertex AI AutoML и запустим конечную точку развернутой модели из облачных функций Java. Модель обучается на данных, хранящихся в BigQuery и зарегистрированных в Vertex AI. Перечень услуг можно разделить на два раздела:
- Создание и развертывание модели ML
- Триггер для прогнозирования с помощью API ML
Создание модели машинного обучения:
- Данные получены из CSV в BigQuery.
- Данные BigQuery интегрированы в Vertex AI для создания моделей AutoML
- Модель развернута в реестре моделей Vertex AI для создания API конечных точек.
Триггер для прогнозирования с помощью API ML:
- Облачные функции Java для запуска вызова конечной точки развернутой модели AutoML, которая принимает детали фильма по запросу из пользовательского интерфейса и возвращает прогнозируемый балл фильма.
Ниже приведен общий обзор архитектуры приложения:
Применение указанной выше архитектуры выходит за рамки данной кодовой лаборатории, но если вы хотите также разработать клиентское приложение, обратитесь к блогу .
Давайте углубимся в этапы реализации.
Что ты построишь
Вы создадите
- Набор данных BigQuery, содержащий компоненты таблицы и модели.
- Модель Vertex AI AutoML (создание и развертывание)
- Облачные функции Java Trigger для прогнозирования с использованием API ML
2. Требования
Ниже приведены предварительные условия:
Создайте свой проект
- В Google Cloud Console на странице выбора проекта выберите или создайте проект Google Cloud.
- Убедитесь, что для вашего облачного проекта включена оплата. Узнайте, как проверить, включена ли оплата в проекте .
- Перейдите в BigQuery , чтобы включить API. Вы также можете открыть веб-интерфейс BigQuery напрямую, введя следующий URL-адрес в браузере: https://console.cloud.google.com/bigquery.
Активировать Cloud Shell
- Вы будете использовать Cloud Shell , среду командной строки, работающую в Google Cloud, в которую предварительно загружен bq : в Cloud Console нажмите «Активировать Cloud Shell» в правом верхнем углу:
- После подключения к Cloud Shell вы увидите, что вы уже прошли аутентификацию и что для проекта уже установлен идентификатор вашего проекта. Выполните следующую команду в Cloud Shell, чтобы подтвердить, что вы прошли аутентификацию:
gcloud auth list
- Выполните следующую команду в Cloud Shell, чтобы убедиться, что команда gcloud знает о вашем проекте.
gcloud config list project
- Если ваш проект не установлен, используйте следующую команду, чтобы установить его:
gcloud config set project <PROJECT_ID>
Обратитесь к документации по командам и использованию gcloud.
3. Подготовка данных обучения
Это важный шаг во всех проектах, продуктах и приложениях, связанных с данными, который требует большого опыта в предметной области в дополнение к технологиям для подготовки оптимального набора данных и подготовки его для вашего проекта ML. Для целей этой лаборатории мы будем предполагать, что данные уже подготовлены, и использовать этот уже обработанный файл данных .
4. Создание и загрузка набора данных
Набор данных BigQuery – это набор таблиц. Все таблицы в наборе данных хранятся в одном и том же месте данных. Вы также можете прикрепить настраиваемые элементы управления доступом, чтобы ограничить доступ к набору данных и его таблицам.
- В Cloud Shell используйте команду bq mk , чтобы создать набор данных под названием «movies».
bq mk --location=<<LOCATION>> movies
Установите местоположение в регионе (Азия-Юг1). Не забудьте также установить его в качестве региона для шага 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
- Запрос одним из трех способов:
Мы можем взаимодействовать с BigQuery тремя способами, мы попробуем два из них: а. Веб -интерфейс BigQuery б. Команда bq c. 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 Console, включите Vertex AI API, если это еще не сделано, разверните данные и выберите «Наборы данных», нажмите «Создать набор данных», выберите тип данных ТАБЛИЧНЫЙ и параметр «Регрессия/классификация» и нажмите «Создать»:
Выберите источник данных
На следующей странице выберите источник данных. Выберите опцию «Выбрать таблицу или представление из BigQuery» и выберите таблицу из BigQuery в поле «Путь к BigQuery» ОБЗОР. Нажмите Продолжить.
Помните: экземпляр BigQuery и наборы данных Vertex AI должны находиться в одном и том же регионе, чтобы таблица BigQuery отображалась в Vertex AI.
Когда вы выбираете исходную таблицу/представление в списке просмотра, не забудьте нажать переключатель, чтобы продолжить выполнение следующих шагов. Если вы случайно нажмете на имя таблицы/представления, вы попадете в Dataplex. Вам просто нужно вернуться к Vertex AI, если это произойдет с вами.
Обучение модели
- После создания набора данных вы должны увидеть страницу «Анализ» с возможностью обучения новой модели. Нажмите на это:
- Оставьте «Цель» как «Классификация», выберите параметр AutoML на первой странице и нажмите «Продолжить»:
- Дайте вашей модели имя и выберите имя целевого столбца как «Оценка» в раскрывающемся списке и нажмите «Продолжить».
- Также обратите внимание, что вы можете выбрать опцию «Экспорт набора тестовых данных в BigQuery», которая позволяет легко и эффективно просматривать набор тестов с результатами в базе данных без дополнительного уровня интеграции или необходимости перемещать данные между сервисами.
- На следующей странице у вас есть возможность выбрать любые необходимые вам параметры расширенного обучения и часы, в течение которых вы хотите установить модель для обучения. Обратите внимание: возможно, вам стоит обратить внимание на цены, прежде чем увеличивать количество узловых часов, которые вы хотите использовать для обучения.
Нажмите «Начать обучение», чтобы начать обучение новой модели.
Оцените, разверните и протестируйте модель
После завершения обучения вы сможете нажать «Обучение» (под заголовком «Разработка модели» в меню слева) и просмотреть свое обучение, указанное в разделе «Конвейеры обучения». Нажмите на нее, чтобы попасть на страницу реестра моделей. Вы должны быть в состоянии:
- Посмотреть и оценить результаты обучения
- Разверните и протестируйте модель с помощью конечной точки API.
После развертывания модели создается конечная точка API, которую можно использовать в вашем приложении для отправки запросов и получения в ответ результатов прогнозирования модели.
Прежде чем перейти к этому разделу, обязательно запишите идентификатор конечной точки развернутой модели, местоположение и другие сведения в разделе конечной точки Vertex AI.
6. Облачная функция Java для запуска вызова ML
Помните, как у нас есть конечная точка и другие детали на этапе развертывания машинного обучения? Мы собираемся использовать это здесь, и поскольку мы используем облачные функции Java, мы будем использовать pom.xml для обработки зависимостей. Мы используем библиотеку google-cloud-aiplatform для использования API конечной точки Vertex AI AutoML.
- Найдите облачные функции в консоли Google Cloud и нажмите «Создать функцию».
- Введите данные конфигурации, такие как среда, имя функции, регион, триггер (в данном случае HTTPS), аутентификация по вашему выбору, включите «Требовать HTTPS» и нажмите «Далее/Сохранить».
- На следующей странице выберите «Среда выполнения» (Java 11), «Исходный код» (встроенный или загруженный) и начните редактирование.
- Скопируйте файлы Java и pom.xml из репозитория и вставьте соответствующие файлы во встроенный редактор. Если вы используете локальный редактор (рекомендуется), затем клонируйте источник из репозитория.
- Измените идентификатор проекта, идентификатор конечной точки, местоположение и конечную точку в исходном файле .java для этого примера, но обратите внимание, что лучше всего использовать Secret Manager для хранения учетных данных.
- В рамках этой лаборатории кода закомментируйте части MongoDB в классе .java в скопированном исходном коде.
Продолжайте и разверните функцию после завершения всех изменений. Вы должны увидеть URL-адрес конечной точки, который можно использовать в вашем клиентском приложении для отправки запросов к этой облачной функции и получения оценки фильма в качестве ответа.
7. Очистка
Чтобы избежать списания средств с вашей учетной записи Google Cloud за ресурсы, используемые в этом посте, выполните следующие действия:
- В консоли Google Cloud перейдите на страницу «Управление ресурсами».
- В списке проектов выберите проект, который хотите удалить, и нажмите «Удалить».
- В диалоговом окне введите идентификатор проекта и нажмите «Завершить работу», чтобы удалить проект.
8. Поздравления
Поздравляем! Вы успешно создали и развернули модель прогнозирования оценки фильма в Vertex AI AutoML и запустили развернутую модель из облачных функций.