Джейсон Бранкацио, старший инженер SADA по машинному обучению

Введение

Google Cloud Vertex AI предоставляет несколько вариантов обучения модели машинного обучения: Workbench, Training или Pipelines. Что выбрать? К концу этой статьи вы сможете уверенно выбрать решение Vertex AI, отвечающее вашим самым насущным потребностям в оркестровке машинного обучения.

Фон

Вы часто можете начать разработку моделей машинного обучения в блокноте Jupyter на своем ноутбуке или в облаке, используя бесплатный сервис, такой как Colabratory. Различные потребности могут вынудить вас перенести процесс обучения модели в облако. Например, графические процессоры (GPU) могут повысить скорость обучения вашей модели, или вам может понадобиться конвейерное планирование. На этом этапе ваша команда, скорее всего, оценит лучший метод для достижения следующего уровня зрелости операций машинного обучения (MLOps).

Без понимания облачных сервисов машинного обучения, таких как Vertex AI, у вас может возникнуть соблазн полагаться на подходы, предложенные инженерами-программистами вашей компании. Это может включать создание микросервисов с помощью Cloud Run, использование кластеров, таких как Google Kubernetes Engine, запуск и настройку виртуальных машин в Google Compute Engine или даже встраивание процедур обучения машинному обучению в рабочие нагрузки по обработке данных, которые выполняются на таких сервисах, как Датапрок. Хотя эти подходы имеют свои достоинства в определенных случаях использования, они, вероятно, заставят вас изучить и управлять многими элементами инфраструктуры или потребуют, чтобы вы встроили приложения машинного обучения в бессерверную инфраструктуру, лучше разработанную для постоянно доступных API-интерфейсов или веб-приложений.

Управляемые сервисы, подобные предлагаемым в Vertex AI, упрощают выполнение рабочих нагрузок машинного обучения в облаке, поскольку они снижают нагрузку на управление инфраструктурой. Если вы находитесь на ранней стадии своего пути к машинному обучению, Vertex AI Workbench может быть лучшим местом для начала.

Вершина AI Workbench

Vertex AI Workbench предоставляет размещенную версию JupyterLab в качестве среды разработки для рабочих процессов обработки данных. Вариант управляемых ноутбуков, общедоступный в апреле 2022 г., содержит встроенные средства интеграции, которые помогут вам легко настроить сквозную среду на основе ноутбуков. Если вам нужно больше контроля, Vertex AI Workbench предлагает вариант блокнотов, управляемых пользователем. Оба варианта имеют надежный набор предустановленных библиотек машинного обучения, поддержку графического процессора и могут синхронизировать код с GitHub.

Управляемые ноутбуки — отличный выбор, если вы хотите:

Управляемые пользователями ноутбуки — это более раннее предложение Google Cloud в области ноутбуков. Они лучше всего подходят, если вам нужен больший контроль над окружающей средой. Блокноты, управляемые пользователем, могут:

  • Предлагайте аналогичную конфигурацию для виртуальных машин Compute Engine.
  • Поддержка настраиваемых контейнеров глубокого обучения в качестве сред выполнения
  • Включите индивидуальную сеть и безопасность

Запуск экземпляров Vertex AI Workbench

По состоянию на май 2022 года путь Vertex AI -> Workbench -> Managed Notebooks -> Create Notebook в Cloud Console является единственным хорошо задокументированным способом запуска управляемых экземпляров Notebook. Также существует SDK для python — ознакомьтесь с библиотекой google-cloud-notebooks python, в частности с методом notebooks_v1.ManagedNotebookServiceClient.create_runtime, чтобы узнать больше.

Самый проверенный способ запуска блокнотов, управляемых пользователями, — это команда gcloud notebooks instances create. Вы также можете запускать экземпляры через облачную консоль и NotebookServiceClient библиотеки Python google-cloud-notebooks. Кроме того, вы можете воспользоваться удобным ярлыком https://notebook.new. Если у вас есть путь к файлу записной книжки, размещенному в Интернете, например, на Github, вы также можете создать экземпляр для его запуска с помощью следующей ссылки: https://console.cloud.google.com/vertex-ai/ ноутбуки/деплой-ноутбук?download_url=https://raw.githubusercontent.com/keras-team/keras-io/master/guides/ipynb/functional_api.ipynb.

Vertex AI Workbench для оркестровки: что нужно учитывать

Основным преимуществом Vertex AI Workbench как средства оркестровки является то, что он позволяет вам использовать инструмент, с которым вы, возможно, уже знакомы, но который, вероятно, имеет лучшие ресурсы, чем может предоставить ваша рабочая станция, например, графические процессоры. Кроме того, управляемые ноутбуки легко интегрируются с множеством других облачных сервисов Google и могут предоставлять планировщик, что позволяет проводить непрерывное обучение, не выходя из знакомой среды.

Однако для организации, стремящейся к зрелости MLOps, ноутбуки, скорее всего, не удовлетворят долгосрочные потребности в оркестровке. В качестве производственного кода блокноты требуют строгого соблюдения личного контроля качества — подумайте, сколько блокнотов вы сталкивались с тем, что они не выполнялись от начала до конца. Их сложнее оснастить лучшими инженерными практиками, такими как модульные тесты. Код в записных книжках имеет тенденцию быть монолитным — извлечение данных, разработка функций и обучение моделей выполняются в одном файле. Чтобы избежать монолитных блокнотов при одновременном планировании выполнения блокнотов, вам, вероятно, потребуется разработать сложную систему для последовательного выполнения нескольких блокнотов или полагаться на синхронизацию заданий cron, что не всегда может быть успешным.

Несмотря на свои недостатки как инструмента оркестровки, Vertex AI Workbench занимает ценное место в вашей экосистеме MLOps. Временно используйте экземпляры Workbench с выключением в режиме ожидания или вручную для экспериментов, когда вам потребуется больше ресурсов, чем может предоставить ваша локальная среда. Вы также можете просто использовать их вместо вашей локальной среды!

Кроме того, если вы используете пользовательский контейнер с блокнотами, управляемыми пользователями, вы можете запустить среду Workbench, специально адаптированную к вашим конкретным потребностям в науке о данных. Например, вы можете создать скрипты в своем репозитории кода, которые запускают экземпляры Workbench на основе образов Docker с дополнительным кодом, скопированным в них для удобства.

Обучение Vertex AI: индивидуальные задания

Разработчики, которые в прошлом работали с сервисными предложениями Google Cloud Platform AI/ML, вероятно, знакомы с предшественниками Vertex AI: Cloud Machine Learning Engine и AI Platform. Пользовательские задания в Vertex AI предлагают аналогичную функциональность, но с более простым в использовании python SDK. Поскольку они также являются базовой единицей исполнения для всех остальных вариантов оркестровки в Vertex AI, они действительно являются рабочей лошадкой Vertex AI.

Пользовательские задания могут запускать контейнер Docker или упакованное приложение Python. Мы рекомендуем контейнерировать ваше обучающее приложение с помощью Контейнеров глубокого обучения Google Cloud. В этом семействе образов Docker используются популярные платформы машинного обучения, они оптимизированы по производительности, протестированы на совместимость и готовы к развертыванию.

Настройка пользовательского задания

Чтобы настроить пользовательское задание, необходимо сначала создать файл Dockerfile, который использует контейнер глубокого обучения в качестве основы. Вот простой пример из одного из учебных репозиториев GitHub Google Cloud, обновленный более свежим изображением:

FROM gcr.io/deeplearning-platform-release/tf-gpu.2-8
COPY . /code
WORKDIR /code
ENTRYPOINT ["python3", "-m", "trainer.task"]

В этом примере trainer — это каталог в /code, содержащий весь исходный код, который вы хотите использовать в пользовательском задании, а task — это файл Python, который запустит код, который вы хотите выполнить, например, ваш цикл обучения.

Используйте команды docker build и docker push, чтобы отправить образ в Реестр контейнеров или Реестр артефактов. В приведенном ниже примере предполагается, что вы указали путь gcr.io/your-gcp-project/some-image:some-tag в Container Registry. Обратите внимание, что вам может понадобиться настроить Docker один раз, чтобы иметь возможность отправлять в реестры.

Затем в скрипте Python для запуска пользовательского задания вам сначала нужно будет создать спецификации пула рабочих процессов. Здесь мы показываем обучение с одной репликой и несколькими GPU, передавая пользовательский аргумент при запуске контейнера:

worker_pool_specs = [
  {
    "machine_spec": {
      "machine_type": "n1-standard-8",
      "accelerator_type": "NVIDIA_TESLA_T4",
      "accelerator_count": 4,
    },
    "replica_count": 1,
    "container_spec": {
    "image_uri": "gcr.io/your-gcp-project/some-image:some-tag",
    "args": ["--arg1", "value1"],
    },
  }
]

Запуск пользовательского задания

Когда изображение загружено и worker_pool_specs создано, запустить пользовательское задание несложно:

from google.cloud import aiplatform
custom_job = aiplatform.CustomJob(
    display_name="my-custom-job",
    worker_pool_specs=worker_pool_specs,
    base_output_dir="gs://your-project/some-path/",
    staging_bucket="gs://your-project/some-path/",
)
custom_job.run(
    service_account="[email protected]"
    enable_web_access=False,
    timeout=3600,
)

Включение веб-доступа в методе run() — это полезная функция, которая позволяет вам подключаться к запущенному контейнеру по SSH во время выполнения вашей задачи.

Хотя это выходит за рамки этой статьи, одним из простых способов планирования пользовательских заданий является создание Облачной функции с аналогичным кодом, способным получать сообщения Pub/Sub или HTTPS-запросы от Облачного планировщика. Это верно для всех решений, описанных в оставшейся части этой статьи.

Индивидуальные задания: моменты, которые следует учитывать

Пользовательские задания — это самый простой способ перейти от записной книжки или скрипта, который вы запускаете локально, к контейнерному выполнению в облаке. Требуя только базовых знаний Docker и нескольких строк кода для запуска задания, они представляют собой вариант оркестровки Vertex AI с наименьшим количеством новых концепций для изучения. Более того, вы можете запускать пользовательские задания для любого произвольного кода, который вы запускаете внутри контейнера Docker, а не только для обучения машинному обучению.

Тем не менее, индивидуальные задания имеют свои недостатки. Например, включение целого конвейера извлечения данных, преобразования данных и обучения модели в одно пользовательское задание может привести к избыточному выполнению частей этого конвейера в процессе экспериментирования. Кроме того, если вы хотите загрузить модель в Реестр моделей или создать Конечную точку, вам нужно написать дополнительный код для запуска внутри пользовательского задания, чтобы сделать это. Наконец, если вы хотите разбить свою задачу на несколько настраиваемых заданий, вам понадобится какой-то другой сервис, чтобы связать их вместе. Один из способов сделать это — использовать Vertex AI Pipelines, которые рассматриваются далее в этой статье.

Пользовательские задания блестят, когда вы используете их для прототипирования выполнения в контейнерах. Как только вы подтвердите, что ваша задача может выполняться в контейнере в облаке в пользовательском задании, этот контейнер легко переназначить для заданий настройки гиперпараметров, обучающих конвейеров или в качестве узла в Vertex AI Pipelines. Кроме того, настраиваемые задания — отличный выбор для бессерверных автономных временных заданий любого типа, особенно если для задания требуется доступ к графическому процессору или оно будет выполняться дольше, чем поддерживаемое в настоящее время время выполнения Cloud Function.

Больше удовольствия с контейнерами для глубокого обучения

Контейнеры глубокого обучения позволяют локально запускать два очень популярных и полезных инструмента:

  • ЮпитерЛаб
  • Тензорборд

JupyterLab предварительно установлен внутри вашего индивидуального контейнера. Вы можете запустить JupyterLab для разработки и повторения вашей задачи, избегая ошибок кода, возникающих из-за несоответствия между вашей локальной средой и средой в контейнере. Кроме того, вы можете смонтировать внешний каталог, чтобы записные книжки, которые вы создаете внутри работающего контейнера, сохранялись за его пределами, возможно, в папке в вашем репозитории кода. Кроме того, вы можете смонтировать каталог, в котором хранятся ваши учетные данные Google Cloud, чтобы упростить аутентификацию.

Для этого выполните следующее:

docker run \
    -it \
    --rm \
    --entrypoint /run_jupyter.sh \
    -p 8888:8888 \
    --mount type=bind,src=/some/local/dir,dst=/some/container/dir \
    --mount type=bind,src=${HOME}/.config/gcloud/,dst=/root/.config/gcloud/ \
gcr.io/your-gcp-project/some-image:some-tag

Используйте команду gcloud notebooks instances create, чтобы запустить предварительно настроенный контейнер в качестве управляемого пользователем экземпляра записной книжки Vertex AI Workbench. Просто внесите небольшие изменения в свой Dockerfile, чтобы убедиться, что в нем нет ENTRYPOINT или CMD (точкой входа по умолчанию для контейнера глубокого обучения является JupyterLab).

Контейнеры глубокого обучения также поставляются с предустановленным набором инструментов визуализации TensorFlow TensorBoard. С помощью одной простой команды вы можете визуализировать ход обучения в одном из ваших пользовательских заданий или любом другом процессе, который записывает журналы TensorFlow в облачное хранилище:

docker run \
    -it \
    --rm \
    -p 6006:6006 \
    --mount type=bind,src=${HOME}/.config/gcloud/,dst=/root/.config/gcloud/ \
    --entrypoint tensorboard \
gcr.io/your-gcp-project/some-image:some-tag \
    --host 0.0.0.0 \
    --logdir gs://your-project/your-path-to-tensorflow-logs/

Обучение Vertex AI: задания по настройке гиперпараметров

Как и пользовательские задания, задания настройки гиперпараметров — это функция Vertex AI Training, которая была перенесена из предшественников Vertex AI. Служба настройки гиперпараметров Vertex AI опирается на библиотеку Python cloudml-hypertune, требуя всего несколько дополнительных строк кода в пользовательском задании для отчета о метриках:

if 'CLOUD_ML_USE_HYPERTUNE_AGENT' in os.environ:
    hpt = hypertune.HyperTune()
    hpt.report_hyperparameter_tuning_metric(
        hyperparameter_metric_tag="accuracy", #or some other metric
        metric_value=score,
        global_step=None
        )

Проверка CLOUD_ML_USE_HYPERTUNE_AGENT в среде гарантирует, что метрики публикуются только тогда, когда ваша задача выполняется в контексте задания настройки гиперпараметров.

Работа состоит из набора испытаний; на каждом этапе задания одно или несколько испытаний будут запускаться как настраиваемые задания, а затем сообщать свои показатели, как показано выше. На основе этих результатов задание по настройке гиперпараметров затем выберет следующий набор гиперпараметров для изучения, повторяя процесс до указанного пользователем лимита испытаний. Как и пользовательские задания, задания настройки гиперпараметров позволяют точно указать, какие ресурсы ЦП и ГП вы хотите использовать. Сервис использует Байесовскую оптимизацию по умолчанию для выбора следующего набора гиперпараметров для исследования, но также может выполнять случайный поиск или поиск по сетке.

Пробные задания по настройке гиперпараметров получают гиперпараметры в качестве аргументов командной строки. Поэтому вы должны настроить свою основную задачу в своем настроенном контейнере, чтобы принимать аргументы для любого гиперпараметра, который вы хотите оптимизировать.

Настройка задания настройки гиперпараметров

В дополнение к настроенному классу CustomJob (см. выше) для заданий настройки гиперпараметров требуются metric_spec и parameter_spec. metric_spec указывает, какую метрику оптимизировать. parameter_spec указывает тип и диапазон гиперпараметров для изучения. Служба настройки гиперпараметров выбирает параметры из диапазонов в parameter_spec, преобразовывает их в аргументы командной строки и запускает пользовательские задания с этими аргументами.

Вот пример использования metric_spec и parameter_spec:

from google.cloud.aiplatform import hyperparameter_tuning as hpt
metric_spec = {"val_sparse_categorical_accuracy": "maximize"}
parameter_spec = {
    "dropout_pct":  hpt.DoubleParameterSpec(
                min=0.05,
                max=0.25,
                scale="linear",
    ),
}

Вы можете указать столько типов классов ParameterSpec, сколько пожелаете, в словаре parameter_spec. Другие типы, не показанные выше, это IntegerParameterSpec, DiscreteParameterSpec и CategoricalParameterSpec.

Выполнение задания по настройке гиперпараметров

SDK платформы Vertex AI предоставляет простой класс HyperparameterTuningJob для настройки и запуска задания настройки гиперпараметров:

hp_job = aiplatform.HyperparameterTuningJob(
    display_name="some-display-name",
    custom_job=some_custom_job_class, # see earlier in post
    metric_spec=metric_spec,
    parameter_spec=parameter_spec,
    max_trial_count=20,
    parallel_trial_count=2
)
hp_job.run(service_account="[email protected]")

Класс HyperparameterTuningJob предполагает, что вы уже настроили класс CustomJob, который обсуждался ранее в этой статье.

Задания по настройке гиперпараметров: моменты, которые следует учитывать

Как видно из приведенных выше примеров кода, задания по настройке гиперпараметров легко организовать, если вы уже создали образ Docker, который можно запускать как задание. Служба настройки гиперпараметров Vertex AI обрабатывает распараллеливание заданий и сохраняет метрики в удобном для понимания пользовательском интерфейсе в облачной консоли.

Как и пользовательские задания, задания по настройке гиперпараметров могут привести к избыточному выполнению частей вашего конвейера в зависимости от того, сколько задач вы запускаете в контейнере Docker. Кроме того, задания по настройке гиперпараметров не приводят к автоматическому развертыванию наилучшей модели.

Эта функция Vertex AI может иметь срок действия. Библиотека cloudml-hypertune на PyPi не обновлялась с декабря 2019 года и имеет нечетный номер версии 0.1.0.dev6. Vertex AI теперь имеет новую библиотеку оптимизации черного ящика Vertex AI Vizier; его можно распространить на любую поддающуюся оценке систему, но он не обрабатывает запущенные задания.

Мы рекомендуем как минимум использовать задания по настройке гиперпараметров в начале нового проекта, прежде чем запускать новую модель в производство. Затем вы можете запускать дополнительные задания по настройке гиперпараметров либо периодически для новых данных, либо когда мониторинг модели Vertex AI указывает на дрейф данных (функций) или концепции (метки).

Vertex AI Training: конвейеры обучения

Последней важной особенностью обучения Vertex AI, обсуждаемой в этой статье, являются Конвейеры обучения Vertex AI. Эти конвейеры обучения отличаются от конвейеров вершинного ИИ, которые мы обсудим далее, и имеют более ограниченные возможности.

В отличие от настраиваемых заданий, конвейеры обучения можно запускать прямо из облачной консоли. Учебные пайплайны демонстрируют унифицированный характер Vertex AI; вы можете инициировать учебные задания AutoML, а также пользовательские задания и использовать Vertex AI Наборы данных. Конвейеры обучения могут запускать задание обучения и автоматически загружать модель в Реестр моделей Vertex AI.

Настройка конвейера обучения

Конвейер обучения настраивается аналогично пользовательскому заданию, но не предоставляются спецификации пула рабочих процессов, а также предоставляется контейнер для обслуживания модели. Обратите внимание, что мы используем класс CustomContainerTrainingJob в SDK aiplatform для создания экземпляра конвейера обучения с пользовательским контейнером:

training_pipeline = aiplatform.CustomContainerTrainingJob(
    display_name="some-display-name",
    container_uri="gcr.io/your-gcp-project/some-image:some-tag",
    staging_bucket="gs://your-project/some-path/",
    model_serving_container_image_uri=\
      "us-docker.pkg.dev/vertex-ai/prediction/tf2-cpu.2.8:latest"
)

Запуск обучающего пайплайна

Большинство необходимых параметров конфигурации задания предоставляются методу run(). Существует больше параметров, чем показано здесь:

model = training_pipeline.run(
    args=custom_args,
    base_output_dir=base_output_dir,
    service_account=,
    replica_count=1
    machine_type="n1-standard-8",
    accelerator_type="NVIDIA_TESLA_T4",
    accelerator_count=4,
    model_display_name="some-display-name",
)

С aiplatform.Model, возвращаемым методом run(), вы можете выполнять другие действия, такие как batch_predict() с данными в облачном хранилище или deploy() с aiplatform.Endpoint.

Тренировочные пайплайны: что нужно учитывать

Преимущество обучающих конвейеров перед пользовательскими заданиями заключается в объединении различных сервисов, предлагаемых Vertex AI, в один набор SDK API. Кроме того, они могут автоматически создавать модель Vertex AI, избавляя вас от написания дополнительного кода для этого. Наконец, поскольку их можно запустить из облачной консоли, вы можете использовать их для подтверждения того, что пользовательский контейнер Docker будет работать в облаке, если у вас возникли проблемы с написанием сценариев для запуска пользовательских заданий или обучающих конвейеров с помощью Python SDK.

Тем не менее обучающие конвейеры — относительно негибкое решение для оркестровки. Развертывание модели в конечной точке по-прежнему необходимо обрабатывать отдельно после завершения конвейера обучения. Это потенциально может привести к длительному выполнению сценария. Кроме того, конвейеры обучения не позволяют визуализировать все этапы конвейера.

Обучающие конвейеры лучше всего подходят для простых конвейеров, где вам нужно просто обучить модель и развернуть ее. Кроме того, вы, вероятно, столкнетесь с обучающими конвейерами при использовании наборов данных AutoML или Vertex AI.

Однако в какой-то момент сложность вашего конвейера может возрасти до такой степени, что вам потребуется более гибкое решение: Vertex AI Pipelines. На этом этапе вы можете создать конвейер либо с помощью Kubeflow Pipelines v2 SDK, либо с помощью TensorFlow Extended (TFX).

Конвейеры Vertex AI: Kubeflow

Kubeflow Pipelines предоставляет механизм планирования многоэтапных рабочих процессов машинного обучения и SDK для определения конвейеров и компонентов и управления ими. При запуске в кластере Kubernetes он также предоставляет пользовательский интерфейс (UI) для управления и отслеживания экспериментов, заданий и запусков. Vertex AI Pipelines позволяет запускать Kubeflow Pipelines без управления кластером Kubernetes и вместо этого использовать пользовательский интерфейс Vertex AI.

Для большинства случаев использования Google Cloud рекомендует построить конвейер с помощью SDK Kubeflow Pipelines. С помощью Kubeflow Pipelines SDK вы можете использовать готовые компоненты Google Cloud Pipeline для выполнения стандартных действий с Vertex AI или создавать собственные компоненты. Кроме того, вы можете использовать любую среду машинного обучения в своей учебной задаче.

Пример компонента Google Cloud Pipeline

Примеры кода для пользовательских компонентов и сложных конвейеров выходят за рамки этой статьи. Существует множество отличных туториалов и лабораторий кода, если вы хотите узнать больше. Однако перед разработкой пользовательского компонента вы должны попробовать предварительно созданные Компоненты Google Cloud Pipeline. Компоненты Google Cloud Pipeline, по сути, представляют собой оболочки для многих методов SDK aiplatform. Если вы знакомы с SDK, поскольку работали с пользовательскими заданиями и конвейерами обучения, о которых говорилось выше, вы можете легко начать работу с конвейерами Kubeflow в Vertex AI.

Вот пример Vertex AI Pipeline, который создаст Vertex AI Training Pipeline. Он имеет один CustomContainerTrainingJobRunOp шаг. Как вы можете видеть ниже, большинство параметров, представленных в CustomContainerTrainingJobRunOp, такие же, как и представленные ранее в этом сообщении блога:

import kfp
from google_cloud_pipeline_components import aiplatform as gcc_aip
@kfp.dsl.pipeline(
  name="some-pipeline-name",
  pipeline_root=pipeline_root_path)
def pipeline(project_id: str):
  training_op = gcc_aip.CustomContainerTrainingJobRunOp(
    project="some-project",
    location="us-central1",
    display_name="some-display-name",
    container_uri="gcr.io/your-gcp-project/some-image:some-tag",
    staging_bucket="gs://your-project/some-path/",
    model_serving_container_image_uri=\
    "us-docker.pkg.dev/vertex-ai/prediction/tf2-cpu.2.8:latest",
    base_output_dir="gs://your-project/some-path/",
    service_account="[email protected]",
    replica_count=1,
    machine_type="n1-standard-8",
    model_display_name="some-display-name",
)

Vertex AI Pipelines (Kubeflow): что нужно учитывать

Vertex AI Pipelines — это естественное дополнение к набору управляемых сервисов Vertex AI. Они позволяют разбить рабочий процесс машинного обучения на ряд шагов, каждый из которых может выполняться в контейнере, подключенном к различным ресурсам облачных вычислений. Вы можете визуализировать и анализировать результаты конвейера и отслеживать происхождение артефактов конвейера. Пользовательские компоненты компилируются в YAML, и ими можно легко поделиться.

Однако создание конвейеров с такими функциями и гибкостью требует изучения новых библиотек кода и концепций, некоторые из которых имеют очень мало общего с кодом машинного обучения, для обучения которого созданы конвейеры. Кроме того, поскольку каждый компонент в конвейере контейнеризован, даже простые операции Python, такие как получение и изменение выходных данных предыдущего шага конвейера, могут потребовать разработки специального компонента. Наконец, использование Vertex AI Pipelines, особенно с компонентами Google Cloud Pipeline, может увеличить ваши финансовые затраты по сравнению с заказными заданиями. Когда вы используете Google Cloud Pipeline Components, узлы конвейера запускаются в контейнерах, которые запускают пользовательские задания, которые выполняются в других контейнерах, в результате чего для каждой задачи выполняется два контейнера.

Конвейеры Vertex AI (TFX)

Вы также можете использовать TFX для компиляции конвейеров, которые могут работать на Vertex AI. Google Cloud рекомендует использовать TFX, когда вам нужно обработать терабайты структурированных данных или текстовых данных. Библиотека TFX предоставляет такие компоненты, как проверка данных Tensorflow (TFDV), преобразование Tensorflow (TFT), анализ моделей Tensorflow (TFMA), предназначенные для масштабируемых и высокопроизводительных задач машинного обучения.

Одна из причин, по которой компоненты TFX масштабируются, заключается в том, что они используют Apache Beam под капотом, что позволяет выполнять задачи в сервисе распределенной обработки данных Google Cloud Dataflow. Кроме того, модели могут обучаться быстрее благодаря использованию формата данных TFRecord для хранения.

Использование TFX имеет свои недостатки. Преобразование данных зависит от навыков разработки Apache Beam, которыми может не обладать ваша команда. Отладка может быть сложной, и труднее отклониться от предписанных шаблонов TFX, например, путем написания пользовательских компонентов.

В документации TFX есть отличный пример использования TFX с Vertex AI.

Заключение

Vertex AI предлагает множество вариантов организации рабочих нагрузок машинного обучения в облаке, каждый из которых адаптирован к уникальным потребностям различных этапов процесса разработки машинного обучения. Теперь вы должны быть вооружены всеми необходимыми знаниями, чтобы сделать правильный выбор.

SADA также предлагает решения для профессиональных услуг, адаптированные к каждому этапу процесса разработки машинного обучения, включая технико-экономическое обоснование и разработку моделей и конвейеров. Пожалуйста, посетите нашу страницу SADA POWER, чтобы узнать больше.



О Джейсоне Бранкацио

Джейсон Бранкацио присоединился к SADA в октябре 2021 года. Он является сертифицированным Google Cloud профессиональным инженером по машинному обучению с семилетним опытом разработки и развертывания конвейеров машинного обучения и обработки данных. До прихода в SADA он руководил командой инженеров по машинному обучению в Red Bull Media House, разрабатывая рекомендательные системы для Red Bull TV. Он работает с продуктами Google Cloud для машинного обучения и обработки данных в течение четырех лет и в восторге от направления продукта для Vertex AI.

О САДА

В SADA мы взбираемся на каждую гору, преодолеваем все препятствия и превращаем невероятное в возможное — снова и снова. Проще говоря, мы продвигаем вашу организацию вперед. Недостаточно мигрировать в облако, это то, что вы делаете, когда находитесь там. Ускорение разработки приложений. Повышение производительности и совместной работы. Использование ваших данных в качестве конкурентного преимущества. Когда дело доходит до Google Cloud, мы не являемся надстройкой, мы должны иметь, повышая эффективность бизнеса наших клиентов благодаря своей мощности. Помимо наших знаний и опыта, нас отличает наш персонал. Это дух, который из года в год ведет нас от случайных истоков в качестве одного из партнеров по запуску Google Cloud к отмеченному наградами глобальному партнеру. Имея список клиентов, который охватывает здравоохранение, средства массовой информации и развлечения, розничную торговлю, производство, государственный сектор и цифровых аборигенов, мы просто выполняем свою работу на каждом этапе пути. Посетите SADA.com, чтобы узнать больше.

Если вы хотите стать частью команды SADA, посетите нашу страницу вакансий.