1. Обзор
В этой лабораторной работе вы узнаете, как анализировать метаданные ваших запусков Vertex Pipelines с помощью метаданных Vertex ML .
Что вы узнаете
Вы узнаете, как:
- Используйте Kubeflow Pipelines SDK для создания конвейера машинного обучения, который создает набор данных в Vertex AI, а затем обучает и развертывает пользовательскую модель обучения Scikit на этом наборе данных.
- Написание пользовательских компонентов конвейера, которые генерируют артефакты и метаданные.
- Сравнение запусков Vertex Pipelines как в облачной консоли, так и программно.
- Проследите происхождение артефактов, генерируемых конвейером.
- Запросите метаданные запуска конвейера
Общая стоимость запуска этой лаборатории в Google Cloud составляет около 2 долларов США .
2. Знакомство с Vertex AI
В этой лаборатории используется новейшее предложение продуктов искусственного интеллекта, доступное в Google Cloud. Vertex AI интегрирует предложения машинного обучения в Google Cloud в единый процесс разработки. Раньше модели, обученные с помощью AutoML, и пользовательские модели были доступны через отдельные сервисы. Новое предложение объединяет оба API в одном API, а также другие новые продукты. Вы также можете перенести существующие проекты на Vertex AI.
Помимо услуг по обучению и развертыванию моделей, Vertex AI также включает в себя различные продукты MLOps, в том числе Vertex Pipelines, метаданные машинного обучения, мониторинг моделей, хранилище функций и многое другое. Вы можете увидеть все предложения продуктов Vertex AI на диаграмме ниже.
Эта лабораторная работа посвящена конвейерам Vertex и метаданным Vertex ML .
Если у вас есть отзывы о Vertex AI, посетите страницу поддержки .
Чем полезны конвейеры машинного обучения?
Прежде чем мы углубимся, давайте сначала поймем, почему вам нужно использовать конвейер. Представьте, что вы строите рабочий процесс машинного обучения, который включает обработку данных, обучение модели, настройку гиперпараметров, оценку и развертывание модели. Каждый из этих шагов может иметь разные зависимости, которые могут стать громоздкими, если рассматривать весь рабочий процесс как монолит. Когда вы начнете масштабировать свой процесс машинного обучения, вы, возможно, захотите поделиться своим рабочим процессом машинного обучения с другими членами вашей команды, чтобы они могли запустить его и внести свой код. Без надежного и воспроизводимого процесса это может оказаться затруднительным. При использовании конвейеров каждый шаг процесса машинного обучения представляет собой отдельный контейнер. Это позволяет вам разрабатывать шаги независимо и отслеживать входные и выходные данные каждого шага воспроизводимым образом. Вы также можете запланировать или инициировать запуск вашего конвейера на основе других событий в вашей облачной среде, например запуск конвейера при появлении новых данных обучения.
Конвейеры tl;dr : помогают автоматизировать и воспроизвести рабочий процесс машинного обучения.
3. Настройка облачной среды
Для запуска этой лаборатории кода вам понадобится проект Google Cloud Platform с включенной оплатой. Чтобы создать проект, следуйте инструкциям здесь .
Запустить Cloud Shell
В этой лабораторной работе вы будете работать в сеансе Cloud Shell , который представляет собой интерпретатор команд, размещенный на виртуальной машине, работающей в облаке Google. Вы также можете легко запустить этот раздел локально на своем компьютере, но использование Cloud Shell дает каждому доступ к воспроизводимому опыту в согласованной среде. После лабораторной работы вы можете повторить этот раздел на своем компьютере.
Активировать Cloud Shell
В правом верхнем углу Cloud Console нажмите кнопку ниже, чтобы активировать Cloud Shell :
Если вы никогда раньше не запускали Cloud Shell, вам будет представлен промежуточный экран (ниже сгиба) с описанием того, что это такое. В этом случае нажмите «Продолжить» (и вы больше никогда этого не увидите). Вот как выглядит этот одноразовый экран:
Подготовка и подключение к Cloud Shell займет всего несколько минут.
Эта виртуальная машина оснащена всеми необходимыми инструментами разработки. Он предлагает постоянный домашний каталог объемом 5 ГБ и работает в Google Cloud, что значительно повышает производительность сети и аутентификацию. Большую часть, если не всю, работу в этой лаборатории кода можно выполнить с помощью просто браузера или Chromebook.
После подключения к Cloud Shell вы увидите, что вы уже прошли аутентификацию и что для проекта уже установлен идентификатор вашего проекта.
Выполните следующую команду в Cloud Shell, чтобы подтвердить, что вы прошли аутентификацию:
gcloud auth list
Вывод команды
Credentialed Accounts ACTIVE ACCOUNT * <my_account>@<my_domain.com> To set the active account, run: $ gcloud config set account `ACCOUNT`
Выполните следующую команду в Cloud Shell, чтобы убедиться, что команда gcloud знает о вашем проекте:
gcloud config list project
Вывод команды
[core] project = <PROJECT_ID>
Если это не так, вы можете установить это с помощью этой команды:
gcloud config set project <PROJECT_ID>
Вывод команды
Updated property [core/project].
Cloud Shell имеет несколько переменных среды, включая GOOGLE_CLOUD_PROJECT
, которая содержит имя нашего текущего проекта Cloud. Мы будем использовать это в разных местах этой лабораторной работы. Вы можете увидеть это, запустив:
echo $GOOGLE_CLOUD_PROJECT
Включить API
На последующих шагах вы увидите, где нужны эти службы (и почему), а пока запустите эту команду, чтобы предоставить вашему проекту доступ к службам Compute Engine, Container Registry и Vertex AI:
gcloud services enable compute.googleapis.com \
containerregistry.googleapis.com \
aiplatform.googleapis.com
Это должно привести к успешному сообщению, похожему на это:
Operation "operations/acf.cc11852d-40af-47ad-9d59-477a12847c9e" finished successfully.
Создайте сегмент облачного хранилища
Чтобы запустить задание обучения на Vertex AI, нам понадобится сегмент хранилища для хранения сохраненных ресурсов модели. Ведро должно быть региональным. Здесь мы используем us-central
, но вы можете использовать другой регион (просто замените его в ходе этой лабораторной работы). Если у вас уже есть ведро, вы можете пропустить этот шаг.
Выполните следующие команды в терминале Cloud Shell, чтобы создать корзину:
BUCKET_NAME=gs://$GOOGLE_CLOUD_PROJECT-bucket
gsutil mb -l us-central1 $BUCKET_NAME
Далее мы предоставим нашей учетной записи вычислительной службы доступ к этому сегменту. Это гарантирует, что Vertex Pipelines имеет необходимые разрешения для записи файлов в эту корзину. Запустите следующую команду, чтобы добавить это разрешение:
gcloud projects describe $GOOGLE_CLOUD_PROJECT > project-info.txt
PROJECT_NUM=$(cat project-info.txt | sed -nre 's:.*projectNumber\: (.*):\1:p')
SVC_ACCOUNT="${PROJECT_NUM//\'/}-compute@developer.gserviceaccount.com"
gcloud projects add-iam-policy-binding $GOOGLE_CLOUD_PROJECT --member serviceAccount:$SVC_ACCOUNT --role roles/storage.objectAdmin
Создайте экземпляр Vertex AI Workbench.
В разделе Vertex AI облачной консоли нажмите Workbench:
Оттуда в блокнотах, управляемых пользователями , нажмите «Новый блокнот» :
Затем выберите тип экземпляра TensorFlow Enterprise 2.3 (с LTS) без графических процессоров :
Используйте параметры по умолчанию и нажмите «Создать» .
Откройте свой блокнот
После создания экземпляра выберите «Открыть JupyterLab» :
4. Настройка вершинных конвейеров
Чтобы использовать Vertex Pipelines, нам необходимо установить несколько дополнительных библиотек:
- Kubeflow Pipelines : это SDK, который мы будем использовать для создания нашего конвейера. Vertex Pipelines поддерживает запуск конвейеров, созданных с помощью Kubeflow Pipelines или TFX.
- Vertex AI SDK : этот SDK оптимизирует процесс вызова Vertex AI API. Мы будем использовать его для запуска нашего конвейера на Vertex AI.
Создайте блокнот Python и установите библиотеки.
Сначала в меню запуска экземпляра ноутбука создайте блокнот, выбрав Python 3 :
Чтобы установить обе службы, которые мы будем использовать в этой лабораторной работе, сначала установите пользовательский флаг в ячейке блокнота:
USER_FLAG = "--user"
Затем запустите из своего блокнота следующее:
!pip3 install {USER_FLAG} google-cloud-aiplatform==1.7.0
!pip3 install {USER_FLAG} kfp==1.8.9
После установки этих пакетов вам необходимо перезапустить ядро:
import os
if not os.getenv("IS_TESTING"):
# Automatically restart kernel after installs
import IPython
app = IPython.Application.instance()
app.kernel.do_shutdown(True)
Затем убедитесь, что вы правильно установили версию KFP SDK. Оно должно быть >=1,8:
!python3 -c "import kfp; print('KFP SDK version: {}'.format(kfp.__version__))"
Затем убедитесь, что ваша версия Vertex AI SDK >= 1.6.2:
!pip list | grep aiplatform
Установите идентификатор проекта и корзину
На протяжении всего практического занятия вы будете ссылаться на идентификатор своего облачного проекта и корзину, которую вы создали ранее. Далее мы создадим переменные для каждого из них.
Если вы не знаете идентификатор своего проекта, вы можете получить его, выполнив следующую команду:
import os
PROJECT_ID = ""
# Get your Google Cloud project ID from gcloud
if not os.getenv("IS_TESTING"):
shell_output=!gcloud config list --format 'value(core.project)' 2>/dev/null
PROJECT_ID = shell_output[0]
print("Project ID: ", PROJECT_ID)
В противном случае установите его здесь:
if PROJECT_ID == "" or PROJECT_ID is None:
PROJECT_ID = "your-project-id" # @param {type:"string"}
Затем создайте переменную для хранения имени вашего сегмента. Если вы создали его в этой лабораторной работе, будет работать следующее. В противном случае вам придется установить это вручную:
BUCKET_NAME="gs://" + PROJECT_ID + "-bucket"
Импортировать библиотеки
Добавьте следующее, чтобы импортировать библиотеки, которые мы будем использовать в этой лаборатории кода:
import matplotlib.pyplot as plt
import pandas as pd
from kfp.v2 import compiler, dsl
from kfp.v2.dsl import pipeline, component, Artifact, Dataset, Input, Metrics, Model, Output, InputPath, OutputPath
from google.cloud import aiplatform
# We'll use this namespace for metadata querying
from google.cloud import aiplatform_v1
Определение констант
Последнее, что нам нужно сделать перед созданием нашего конвейера, — это определить некоторые постоянные переменные. PIPELINE_ROOT
— это путь к облачному хранилищу, куда будут записываться артефакты, созданные нашим конвейером. В качестве региона мы используем us-central1
, но если при создании сегмента вы использовали другой регион, обновите переменную REGION
в приведенном ниже коде:
PATH=%env PATH
%env PATH={PATH}:/home/jupyter/.local/bin
REGION="us-central1"
PIPELINE_ROOT = f"{BUCKET_NAME}/pipeline_root/"
PIPELINE_ROOT
После запуска приведенного выше кода вы должны увидеть напечатанный корневой каталог вашего конвейера. Это место в облачном хранилище, куда будут записываться артефакты из вашего конвейера. Он будет в формате gs://YOUR-BUCKET-NAME/pipeline_root/
5. Создание трехэтапного конвейера с пользовательскими компонентами
Основное внимание в этой лабораторной работе уделяется пониманию метаданных запусков конвейера. Для этого нам понадобится конвейер, работающий на Vertex Pipelines, с которого мы и начнем. Здесь мы определим трехэтапный конвейер со следующими пользовательскими компонентами:
-
get_dataframe
: получить данные из таблицы BigQuery и преобразовать их в DataFrame Pandas. -
train_sklearn_model
: используйте Pandas DataFrame для обучения и экспорта модели Scikit Learn вместе с некоторыми метриками. -
deploy_model
: развертывание экспортированной модели Scikit Learn в конечной точке в Vertex AI.
В этом конвейере мы будем использовать набор данных UCI Machine Learning Dry Beans из: KOKLU, M. и OZKAN, IA, (2020), «Многоклассовая классификация сухих бобов с использованием методов компьютерного зрения и машинного обучения». В «Компьютерах и электронике в сельском хозяйстве», 174, 105507. DOI .
Это табличный набор данных, и в нашем конвейере мы будем использовать этот набор данных для обучения, оценки и развертывания модели обучения Scikit, которая классифицирует компоненты bean-компоненты по одному из 7 типов на основе их характеристик. Давайте начнем кодировать!
Создание компонентов на основе функций Python
Используя KFP SDK, мы можем создавать компоненты на основе функций Python. Мы будем использовать это для трех компонентов в этом конвейере.
Загрузите данные BigQuery и конвертируйте их в CSV.
Сначала мы создадим компонент get_dataframe
:
@component(
packages_to_install=["google-cloud-bigquery", "pandas", "pyarrow", "db-dtypes"],
base_image="python:3.9",
output_component_file="create_dataset.yaml"
)
def get_dataframe(
bq_table: str,
output_data_path: OutputPath("Dataset")
):
from google.cloud import bigquery
import pandas as pd
import os
project_number = os.environ["CLOUD_ML_PROJECT_ID"]
bqclient = bigquery.Client(project=project_number)
table = bigquery.TableReference.from_string(
bq_table
)
rows = bqclient.list_rows(
table
)
dataframe = rows.to_dataframe(
create_bqstorage_client=True,
)
dataframe = dataframe.sample(frac=1, random_state=2)
dataframe.to_csv(output_data_path)
Давайте подробнее посмотрим, что происходит в этом компоненте:
- Декоратор
@component
компилирует эту функцию в компонент при запуске конвейера. Вы будете использовать это каждый раз, когда будете писать собственный компонент. - Параметр
base_image
указывает образ контейнера, который будет использовать этот компонент. - Этот компонент будет использовать несколько библиотек Python, которые мы указываем с помощью параметра
packages_to_install
. - Параметр
output_component_file
является необязательным и указывает файл yaml, в который будет записываться скомпилированный компонент. После запуска ячейки вы должны увидеть этот файл, записанный в экземпляр вашего блокнота. Если вы хотите поделиться этим компонентом с кем-то, вы можете отправить ему сгенерированный файл yaml и попросить загрузить его со следующим:
# This is optional, it shows how to load a component from a yaml file
# dataset_component = kfp.components.load_component_from_file('./create_dataset.yaml')
- Затем этот компонент использует клиентскую библиотеку BigQuery Python для загрузки наших данных из BigQuery в DataFrame Pandas, а затем создает выходной артефакт этих данных в виде CSV-файла. Это будет передано в качестве входных данных для нашего следующего компонента.
Создайте компонент для обучения модели обучения Scikit.
В этом компоненте мы возьмем CSV, который мы сгенерировали ранее, и будем использовать его для обучения модели дерева решений Scikit-learn. Этот компонент экспортирует полученную модель Scikit вместе с артефактом Metrics
, который включает точность нашей модели, структуру и размер набора данных, использованного для ее обучения:
@component(
packages_to_install=["sklearn", "pandas", "joblib", "db-dtypes"],
base_image="python:3.9",
output_component_file="beans_model_component.yaml",
)
def sklearn_train(
dataset: Input[Dataset],
metrics: Output[Metrics],
model: Output[Model]
):
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import roc_curve
from sklearn.model_selection import train_test_split
from joblib import dump
import pandas as pd
df = pd.read_csv(dataset.path)
labels = df.pop("Class").tolist()
data = df.values.tolist()
x_train, x_test, y_train, y_test = train_test_split(data, labels)
skmodel = DecisionTreeClassifier()
skmodel.fit(x_train,y_train)
score = skmodel.score(x_test,y_test)
print('accuracy is:',score)
metrics.log_metric("accuracy",(score * 100.0))
metrics.log_metric("framework", "Scikit Learn")
metrics.log_metric("dataset_size", len(df))
dump(skmodel, model.path + ".joblib")
Определите компонент для загрузки и развертывания модели в Vertex AI.
Наконец, наш последний компонент возьмет обученную модель из предыдущего шага, загрузит ее в Vertex AI и развернет в конечной точке:
@component(
packages_to_install=["google-cloud-aiplatform"],
base_image="python:3.9",
output_component_file="beans_deploy_component.yaml",
)
def deploy_model(
model: Input[Model],
project: str,
region: str,
vertex_endpoint: Output[Artifact],
vertex_model: Output[Model]
):
from google.cloud import aiplatform
aiplatform.init(project=project, location=region)
deployed_model = aiplatform.Model.upload(
display_name="beans-model-pipeline",
artifact_uri = model.uri.replace("model", ""),
serving_container_image_uri="us-docker.pkg.dev/vertex-ai/prediction/sklearn-cpu.0-24:latest"
)
endpoint = deployed_model.deploy(machine_type="n1-standard-4")
# Save data to the output params
vertex_endpoint.uri = endpoint.resource_name
vertex_model.uri = deployed_model.resource_name
Здесь мы используем Vertex AI SDK для загрузки модели с использованием предварительно созданного контейнера для прогнозирования . Затем он развертывает модель в конечной точке и возвращает URI как модели, так и ресурсам конечной точки. Далее в этой лаборатории вы узнаете больше о том, что значит возвращать эти данные в виде артефактов.
Определить и скомпилировать конвейер
Теперь, когда мы определили наши три компонента, мы создадим определение конвейера . Здесь описывается, как артефакты ввода и вывода передаются между этапами:
@pipeline(
# Default pipeline root. You can override it when submitting the pipeline.
pipeline_root=PIPELINE_ROOT,
# A name for the pipeline.
name="mlmd-pipeline",
)
def pipeline(
bq_table: str = "",
output_data_path: str = "data.csv",
project: str = PROJECT_ID,
region: str = REGION
):
dataset_task = get_dataframe(bq_table)
model_task = sklearn_train(
dataset_task.output
)
deploy_task = deploy_model(
model=model_task.outputs["model"],
project=project,
region=region
)
Следующее действие создаст файл JSON, который вы будете использовать для запуска конвейера:
compiler.Compiler().compile(
pipeline_func=pipeline, package_path="mlmd_pipeline.json"
)
Запустить два пробега конвейера
Далее мы запустим два запуска нашего конвейера. Сначала давайте определим временную метку, которая будет использоваться для идентификаторов заданий конвейера:
from datetime import datetime
TIMESTAMP = datetime.now().strftime("%Y%m%d%H%M%S")
Помните, что наш конвейер при запуске принимает один параметр: таблицу bq_table
которую мы хотим использовать для обучения данных. Этот запуск конвейера будет использовать уменьшенную версию набора данных bean-компонентов:
run1 = aiplatform.PipelineJob(
display_name="mlmd-pipeline",
template_path="mlmd_pipeline.json",
job_id="mlmd-pipeline-small-{0}".format(TIMESTAMP),
parameter_values={"bq_table": "sara-vertex-demos.beans_demo.small_dataset"},
enable_caching=True,
)
Затем создайте еще один запуск конвейера, используя более крупную версию того же набора данных.
run2 = aiplatform.PipelineJob(
display_name="mlmd-pipeline",
template_path="mlmd_pipeline.json",
job_id="mlmd-pipeline-large-{0}".format(TIMESTAMP),
parameter_values={"bq_table": "sara-vertex-demos.beans_demo.large_dataset"},
enable_caching=True,
)
Наконец, запустите выполнение конвейера для обоих запусков. Лучше всего сделать это в двух отдельных ячейках блокнота, чтобы вы могли видеть результаты каждого запуска.
run1.submit()
Затем начните второй прогон:
run2.submit()
После запуска этой ячейки вы увидите ссылку для просмотра каждого конвейера в консоли Vertex AI. Откройте эту ссылку, чтобы увидеть более подробную информацию о вашем конвейере:
Когда он завершится (этот конвейер занимает около 10-15 минут на запуск), вы увидите что-то вроде этого:
Теперь, когда у вас есть два завершенных запуска конвейера, вы готовы более внимательно изучить артефакты конвейера, метрики и происхождение.
6. Понимание артефактов и происхождения конвейера
На графике конвейера после каждого шага вы увидите небольшие прямоугольники. Это артефакты или выходные данные, созданные на этапе конвейера. Существует много типов артефактов. В этом конкретном конвейере у нас есть наборы данных, метрики, модели и артефакты конечных точек. Нажмите на ползунок «Развернуть артефакты» в верхней части пользовательского интерфейса, чтобы просмотреть более подробную информацию о каждом из них:
Нажав на артефакт, вы увидите более подробную информацию о нем, включая его URI. Например, нажав на артефакт vertex_endpoint , вы увидите URI, по которому вы можете найти эту развернутую конечную точку в консоли Vertex AI:
Артефакт Metrics
позволяет передавать пользовательские метрики, связанные с определенным шагом конвейера. В компоненте sklearn_train
нашего конвейера мы регистрировали показатели точности нашей модели, ее структуры и размера набора данных. Нажмите на артефакт метрики, чтобы просмотреть подробности:
У каждого артефакта есть Lineage , который описывает другие артефакты, с которыми он связан. Снова щелкните артефакт vertex_endpoint вашего конвейера, а затем нажмите кнопку «Просмотреть происхождение» :
Откроется новая вкладка, где вы сможете увидеть все артефакты, связанные с выбранным вами. Ваш график происхождения будет выглядеть примерно так:
Это показывает нам модель, метрики и набор данных, связанные с этой конечной точкой. Почему это полезно? Возможно, у вас есть модель, развернутая на нескольких конечных точках, или вам необходимо знать конкретный набор данных, используемый для обучения модели, развернутой на рассматриваемой вами конечной точке. График происхождения помогает вам понять каждый артефакт в контексте остальной части вашей системы машинного обучения. Вы также можете получить доступ к Lineage программным путем, как мы увидим позже в этой кодовой лаборатории.
7. Сравнение участков трубопровода
Скорее всего, один конвейер будет запускаться несколько раз, возможно, с разными входными параметрами, новыми данными или людьми из вашей команды. Чтобы отслеживать работу конвейера, было бы удобно иметь возможность сравнивать их по различным показателям. В этом разделе мы рассмотрим два способа сравнения прогонов.
Сравнение запусков в пользовательском интерфейсе Pipelines
В облачной консоли перейдите на панель мониторинга Pipelines . Это обеспечивает обзор каждого выполненного вами запуска конвейера. Проверьте два последних запуска, а затем нажмите кнопку «Сравнить» вверху:
Это приведет нас на страницу, где мы сможем сравнить входные параметры и метрики для каждого из выбранных нами запусков. Обратите внимание на разные таблицы BigQuery, размеры наборов данных и значения точности для этих двух прогонов:
Вы можете использовать эту функцию пользовательского интерфейса для сравнения более чем двух запусков и даже запусков из разных конвейеров.
Сравнение прогонов с Vertex AI SDK
При многих выполнениях конвейера вам может потребоваться программный способ получения этих показателей сравнения, чтобы глубже изучить детали показателей и создать визуализации.
Вы можете использовать метод aiplatform.get_pipeline_df()
для доступа к метаданным запуска. Здесь мы получим метаданные для двух последних запусков одного и того же конвейера и загрузим их в DataFrame Pandas. Параметр pipeline
здесь относится к имени, которое мы дали нашему конвейеру в определении конвейера:
df = aiplatform.get_pipeline_df(pipeline="mlmd-pipeline")
df
Когда вы распечатаете DataFrame, вы увидите что-то вроде этого:
Здесь мы запустили наш конвейер только дважды, но вы можете себе представить, сколько метрик вы получите при большем количестве выполнений. Далее мы создадим собственную визуализацию с помощью matplotlib, чтобы увидеть взаимосвязь между точностью нашей модели и объемом данных, используемых для обучения.
Запустите следующее в новой ячейке блокнота:
plt.plot(df["metric.dataset_size"], df["metric.accuracy"],label="Accuracy")
plt.title("Accuracy and dataset size")
plt.legend(loc=4)
plt.show()
Вы должны увидеть что-то вроде этого:
8. Запрос метрик конвейера
Помимо получения DataFrame всех метрик конвейера, вы можете захотеть программно запросить артефакты, созданные в вашей системе машинного обучения. Отсюда вы можете создать собственную панель мониторинга или позволить другим сотрудникам вашей организации получать подробную информацию о конкретных артефактах.
Получение всех артефактов модели
Чтобы запросить артефакты таким способом, мы создадим MetadataServiceClient
:
API_ENDPOINT = "{}-aiplatform.googleapis.com".format(REGION)
metadata_client = aiplatform_v1.MetadataServiceClient(
client_options={
"api_endpoint": API_ENDPOINT
}
)
Затем мы отправим запрос list_artifacts
к этой конечной точке и передадим фильтр, указывающий, какие артефакты нам нужны в нашем ответе. Для начала давайте получим все артефакты нашего проекта, которые являются моделями . Для этого запустите в своем блокноте следующую команду:
MODEL_FILTER="schema_title = \"system.Model\""
artifact_request = aiplatform_v1.ListArtifactsRequest(
parent="projects/{0}/locations/{1}/metadataStores/default".format(PROJECT_ID, REGION),
filter=MODEL_FILTER
)
model_artifacts = metadata_client.list_artifacts(artifact_request)
Результирующий ответ model_artifacts
содержит итерируемый объект для каждого артефакта модели в вашем проекте, а также связанные метаданные для каждой модели.
Фильтрация объектов и отображение в DataFrame
Было бы удобно, если бы нам было проще визуализировать результирующий запрос артефакта. Далее давайте получим все артефакты, созданные после 10 августа 2021 года, в состоянии LIVE
. После выполнения этого запроса мы отобразим результаты в DataFrame Pandas. Сначала выполните запрос:
LIVE_FILTER = "create_time > \"2021-08-10T00:00:00-00:00\" AND state = LIVE"
artifact_req = {
"parent": "projects/{0}/locations/{1}/metadataStores/default".format(PROJECT_ID, REGION),
"filter": LIVE_FILTER
}
live_artifacts = metadata_client.list_artifacts(artifact_req)
Затем отобразите результаты в DataFrame:
data = {'uri': [], 'createTime': [], 'type': []}
for i in live_artifacts:
data['uri'].append(i.uri)
data['createTime'].append(i.create_time)
data['type'].append(i.schema_title)
df = pd.DataFrame.from_dict(data)
df
Вы увидите что-то вроде этого:
Вы также можете фильтровать артефакты на основе других критериев в дополнение к тому, что вы пробовали здесь.
На этом вы закончили лабораторию!
🎉Поздравляем! 🎉
Вы узнали, как использовать Vertex AI, чтобы:
- Используйте Kubeflow Pipelines SDK для создания конвейера машинного обучения, который создает набор данных в Vertex AI, а затем обучает и развертывает пользовательскую модель обучения Scikit на этом наборе данных.
- Написание пользовательских компонентов конвейера, которые генерируют артефакты и метаданные.
- Сравнение запусков Vertex Pipelines как в облачной консоли, так и программно.
- Проследите происхождение артефактов, генерируемых конвейером.
- Запросите метаданные запуска конвейера
Чтобы узнать больше о различных частях Vertex, ознакомьтесь с документацией .
9. Очистка
Чтобы с вас не взималась плата, рекомендуется удалить ресурсы, созданные в ходе этого практического занятия.
Остановите или удалите экземпляр Notebook
Если вы хотите продолжать использовать записную книжку, созданную в ходе этой лабораторной работы, рекомендуется выключать ее, когда она не используется. В пользовательском интерфейсе «Блокноты» в облачной консоли выберите блокнот и нажмите «Стоп» . Если вы хотите полностью удалить экземпляр, выберите «Удалить» :
Удалите конечные точки Vertex AI
Чтобы удалить развернутую конечную точку, перейдите в раздел «Конечные точки» консоли Vertex AI и щелкните значок удаления:
Удалите корзину Cloud Storage
Чтобы удалить сегмент хранилища, в меню навигации облачной консоли перейдите к разделу «Хранилище», выберите сегмент и нажмите «Удалить»: