1. Обзор
В этой лабораторной работе вы научитесь анализировать метаданные из ваших запусков Vertex Pipelines с помощью Vertex ML Metadata .
Чему вы научитесь
Вы научитесь:
- Используйте SDK Kubeflow Pipelines для создания конвейера машинного обучения, который создает набор данных в Vertex AI, обучает и развертывает пользовательскую модель Scikit-learn на этом наборе данных.
- Разрабатывайте пользовательские компоненты конвейера, которые генерируют артефакты и метаданные.
- Сравните результаты работы Vertex Pipelines как в облачной консоли, так и программно.
- Отслеживание происхождения артефактов, сгенерированных конвейером обработки данных.
- Запросите метаданные выполнения вашего конвейера.
Общая стоимость запуска этой лабораторной работы в Google Cloud составляет около 2 долларов .
2. Введение в Vertex AI
В этой лабораторной работе используется новейший продукт для искусственного интеллекта, доступный в Google Cloud. Vertex AI интегрирует предложения машинного обучения в Google Cloud в единый процесс разработки. Ранее модели, обученные с помощью AutoML, и пользовательские модели были доступны через отдельные сервисы. Новое предложение объединяет оба варианта в единый API, а также включает другие новые продукты. Вы также можете перенести существующие проекты в Vertex AI.
Помимо услуг по обучению и развертыванию моделей, Vertex AI также предлагает широкий спектр продуктов MLOps, включая Vertex Pipelines, метаданные машинного обучения, мониторинг моделей, хранилище признаков и многое другое. Все продукты Vertex AI представлены на диаграмме ниже.

Данная лабораторная работа посвящена конвейерам Vertex и метаданным Vertex ML .
Если у вас есть какие-либо замечания или предложения по Vertex AI, пожалуйста, посетите страницу поддержки .
Почему конвейеры машинного обучения полезны?
Прежде чем углубиться в детали, давайте сначала разберемся, зачем вам может понадобиться конвейер. Представьте, что вы создаете рабочий процесс машинного обучения, который включает обработку данных, обучение модели, настройку гиперпараметров, оценку и развертывание модели. Каждый из этих шагов может иметь различные зависимости, что может стать неудобным, если рассматривать весь рабочий процесс как монолит. По мере масштабирования вашего процесса машинного обучения вы можете захотеть поделиться своим рабочим процессом с другими членами вашей команды, чтобы они могли запускать его и вносить свой вклад в код. Без надежного, воспроизводимого процесса это может стать сложно. В конвейерах каждый шаг вашего процесса машинного обучения является собственным контейнером. Это позволяет разрабатывать шаги независимо и отслеживать входные и выходные данные каждого шага воспроизводимым образом. Вы также можете планировать или запускать запуск вашего конвейера на основе других событий в вашей облачной среде, например, запускать запуск конвейера при появлении новых обучающих данных.
Вкратце : конвейеры помогают автоматизировать и воспроизводить рабочий процесс машинного обучения.
3. Настройка облачной среды
Для выполнения этого практического задания вам потребуется проект Google Cloud Platform с включенной функцией оплаты. Чтобы создать проект, следуйте инструкциям здесь .
Запустить Cloud Shell
В этой лабораторной работе вы будете работать в сеансе Cloud Shell , который представляет собой интерпретатор команд, размещенный на виртуальной машине, работающей в облаке Google. Вы с таким же успехом могли бы выполнить этот раздел локально на своем компьютере, но использование Cloud Shell обеспечивает всем доступ к воспроизводимому опыту в согласованной среде. После завершения лабораторной работы вы можете повторить этот раздел на своем компьютере.

Активировать Cloud Shell
В правом верхнем углу консоли Cloud Console нажмите кнопку ниже, чтобы активировать Cloud Shell :

Если вы никогда раньше не запускали Cloud Shell, вам будет показан промежуточный экран (внизу), описывающий его назначение. В этом случае нажмите «Продолжить» (и вы больше никогда его не увидите). Вот как выглядит этот одноразовый экран:

Подготовка и подключение к Cloud Shell займут всего несколько минут.

Эта виртуальная машина оснащена всеми необходимыми инструментами разработки. Она предоставляет постоянный домашний каталог размером 5 ГБ и работает в облаке Google, что значительно повышает производительность сети и аутентификацию. Большая часть, если не вся, работа в этом практическом задании может быть выполнена с помощью обычного браузера или вашего 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 оптимизирует работу с API Vertex AI. Мы будем использовать его для запуска нашего конвейера обработки данных в 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 — это путь к Cloud Storage, куда будут записываться артефакты, созданные нашим конвейером. В данном случае мы используем регион 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
После выполнения приведенного выше кода вы должны увидеть корневой каталог вашего конвейера. Это местоположение в Cloud Storage, куда будут записываться артефакты из вашего конвейера. Оно будет иметь формат gs://YOUR-BUCKET-NAME/pipeline_root/
5. Создание трехэтапного конвейера с использованием пользовательских компонентов.
В этой лабораторной работе основное внимание будет уделено пониманию метаданных, получаемых в процессе выполнения конвейера. Для этого нам понадобится конвейер, который будет работать на платформе Vertex Pipelines, с чего мы и начнём. Здесь мы определим трёхэтапный конвейер со следующими пользовательскими компонентами:
-
get_dataframe: Извлекает данные из таблицы BigQuery и преобразует их в DataFrame Pandas. -
train_sklearn_model: Используйте DataFrame Pandas для обучения и экспорта модели Scikit Learn, а также некоторых метрик. -
deploy_model: Развертывает экспортированную модель Scikit Learn на конечной точке в Vertex AI.
В этом алгоритме мы будем использовать набор данных UCI Machine Learning Dry beans , взятый из статьи: KOKLU, M. и OZKAN, IA, (2020), "Многоклассовая классификация сухих бобов с использованием методов компьютерного зрения и машинного обучения". В журнале Computers and Electronics in Agriculture, 174, 105507. DOI .
Это табличный набор данных, и в нашем конвейере мы будем использовать его для обучения, оценки и развертывания модели Scikit-learn, которая классифицирует бобы по одному из 7 типов на основе их характеристик. Давайте начнем кодировать!
Создавайте компоненты на основе функций Python.
Используя SDK KFP, мы можем создавать компоненты на основе функций 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-learn.
В этом компоненте мы возьмем ранее сгенерированный 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
Здесь мы используем SDK Vertex AI для загрузки модели с помощью предварительно созданного контейнера для прогнозирования . Затем он развертывает модель на конечной точке и возвращает 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 которую мы хотим использовать в качестве обучающих данных. В этом запуске конвейера будет использоваться уменьшенная версия набора данных beans:
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 вашего конвейера, а затем нажмите кнопку «Просмотреть происхождение» (View Lineage) :

Откроется новая вкладка, где вы сможете увидеть все артефакты, связанные с выбранным вами. Ваша родословная будет выглядеть примерно так:

Здесь отображается модель, метрики и набор данных, связанные с данной конечной точкой. Зачем это нужно? Возможно, у вас развернута модель на нескольких конечных точках, или вам необходимо знать конкретный набор данных, использованный для обучения модели, развернутой на той конечной точке, которую вы рассматриваете. График происхождения помогает понять каждый артефакт в контексте остальной части вашей системы машинного обучения. Вы также можете получить доступ к графику происхождения программно, как мы увидим позже в этом практическом занятии.
7. Сравнение результатов выполнения конвейера.
Вероятно, один и тот же конвейер будет запускаться несколько раз, возможно, с разными входными параметрами, новыми данными или разными сотрудниками вашей команды. Для отслеживания запусков конвейера было бы удобно иметь способ сравнения их по различным показателям. В этом разделе мы рассмотрим два способа сравнения запусков.
Сравнение результатов выполнения в пользовательском интерфейсе Pipelines.
В консоли Cloud перейдите на панель мониторинга «Конвейеры» . Здесь отображается обзор всех выполненных вами запусков конвейера. Отметьте два последних запуска, а затем нажмите кнопку «Сравнить» вверху:

Это переведет нас на страницу, где мы можем сравнить входные параметры и метрики для каждого из выбранных нами запусков. Обратите внимание на различия в таблицах 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 для:
- Используйте SDK Kubeflow Pipelines для создания конвейера машинного обучения, который создает набор данных в Vertex AI, обучает и развертывает пользовательскую модель Scikit-learn на этом наборе данных.
- Разрабатывайте пользовательские компоненты конвейера, которые генерируют артефакты и метаданные.
- Сравните результаты работы Vertex Pipelines как в облачной консоли, так и программно.
- Отслеживание происхождения артефактов, сгенерированных конвейером обработки данных.
- Запросите метаданные выполнения вашего конвейера.
Чтобы узнать больше о различных компонентах Vertex, ознакомьтесь с документацией .
9. Уборка
Чтобы избежать списания средств, рекомендуется удалить ресурсы, созданные в ходе этой лабораторной работы.
Остановите или удалите экземпляр блокнота.
Если вы хотите продолжить использовать созданный в этой лабораторной работе блокнот, рекомендуется выключать его, когда он не используется. В интерфейсе блокнотов в вашей облачной консоли выберите блокнот, а затем выберите «Остановить» . Если вы хотите полностью удалить экземпляр, выберите «Удалить» .

Удалите свои конечные точки Vertex AI.
Чтобы удалить развернутую вами конечную точку, перейдите в раздел «Конечные точки» в консоли Vertex AI и нажмите значок удаления:

Удалите свой сегмент облачного хранилища.
Чтобы удалить сегмент хранилища, воспользуйтесь меню навигации в облачной консоли, перейдите в раздел «Хранилище», выберите свой сегмент и нажмите «Удалить».
