В предыдущем блоге Как повысить уровень своих навыков MLOps с помощью GCP и познакомиться с основными инструментами — Часть 1. Я рассмотрел MLOps и основные инструменты, с которыми необходимо ознакомиться, прежде чем внедрять цикл CI/CD в ваши решения на основе ML. Как и обещал, сейчас я проведу вас через сквозной обзор жизненного цикла развертывания с помощью GCP. для этого я буду ссылаться на главную страницу GCP, где с подробностями можно найти большинство рисунков и ресурсов.

Итак, возможно, возьмите чашку кофе или чая;) и наслаждайтесь чтением!

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

Модель данных хранилища функций Vertex AI:

Значения функций хранятся с использованием модели данных временных рядов в хранилище функций Vertex AI. Причина использования модели на основе временных рядов заключается в том, чтобы помочь поддерживать значения признаков, даже если они меняются с течением времени. Ресурсы Vertex AI организованы иерархически в следующем порядке: Featurestore -> EntityType -> Feature. Эти ресурсы необходимо создать до загрузки данных в хранилище объектов. Чтобы понять это, давайте рассмотрим следующий пример исходных данных в таблице BigQuery:

Следующие исходные данные посвящены фильмам и их особенностям.

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

На изображении выше столбец movie_id может сопоставляться с типом сущности movie. average_rating, title и genre являются объектами типа объекта movie. Значения в каждом столбце соответствуют конкретным экземплярам типа сущности или функций, которые называются сущностями и значениями функций.

В столбце update_time указывается время формирования значений признаков. В магазине функций этот столбец временной метки не является обязательным, поскольку вы можете указать временную метку как часть запроса на прием. Кроме того, если вы хотите предварительно сформировать прием данных о функциях, Vertex AI Feature Store может получать данные из таблиц в BigQuery или файлов в Cloud Storage, но я не собираюсь вдаваться в подробности требований к исходным данным, вы можете просмотреть это подробно. здесь.

Одна важная вещь, которую я должен упомянуть о хранилище функций, — это онлайн- и офлайн-методы хранения Vertex AI Feature Store. Все магазины функций имеют автономное хранилище и, при необходимости, онлайн-хранилище. Преимущество метода онлайн-хранения заключается в том, что онлайн-хранилище сохраняет последние функции значений временных меток для обработки запросов онлайн-обслуживания. Когда вы используете API для предварительного задания приема, вы можете проверить, записаны ли данные в интернет-магазин, иначе в случае автономного хранения не будет никакой нагрузки на узлы онлайн-обслуживания. Онлайн-хранилище может оказаться очень полезным при выполнении заданий по обратной засыпке. Данные хранятся в хранилище функций Vertex AI в автономном режиме до тех пор, пока данные не достигнут предела хранения или пока они не будут удалены. Ограничений на объем данных, которые вы можете хранить в автономном режиме, нет.

До сих пор мы рассмотрели часть управления функциями с хранилищем функций процесса, но как насчет управления моделями? это заставляет меня перейти к следующей части.

Реестр моделей Vertex AI:

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

Чтобы добавить свои модели в реестр, вам необходимо выполнить следующие шаги:

  • Импортируйте модели в реестр.
  • Создавайте новые модели, назначайте версии модели псевдоним по умолчанию и готово к производству.
  • Вы также можете добавить другие псевдонимы/метки, чтобы упростить управление и систематизацию версий модели.
  • Разверните свои модели в конечной точке.
  • Запустите пакетное прогнозирование и запустите конвейер оценки модели.
  • Просмотрите показатели производительности модели на странице сведений о модели.

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

Оценка и оркестровка моделей:

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

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

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

Помните инструменты Kubeflow и Tensorflow Extended, о которых я упоминал в предыдущем посте? вы можете использовать Vertex AI Pipelines для запуска конвейеров, созданных с помощью этих двух инструментов. Узнайте больше о выборе между Kubeflow Pipelines SDK и TFX.

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

Анализ метаданных и понимание поведения модели:

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

Метаданные Vertex ML позволяют записывать метаданные и артефакты, создаваемые вашим конвейером ML, а также запрашивать эти метаданные для анализа, отладки и аудита производительности вашей системы ML. Для этого Vertex ML использует библиотеку ML Metadata (MLMD) с открытым исходным кодом, разработанную командой Google TensorFlow Extended. На рисунке ниже представлен обзор того, где проверка метаданных участвует во всей системе.

Несмотря на то, что мой блог не вдается в глубокие подробности о том, как на самом деле кодировать и соединять все части, я наткнулся на эти хорошие фрагменты кода о том, как получить метаданные, хранящиеся в GCP BigQuery, с помощью клиента BigQuery и выполнить проверку метаданных следующим образом:

from google.cloud import bigquery

client = bigquery.Client(project=PROJECT_ID)

# define a lambda function to get the delta days
get_delta_day = lambda td: td.days

# perform general checks
  for bq_table in bq_tables:
      table = client.get_table(bq_table)
      print(
          "Got table '{}.{}.{}'.".format(
              table.project, table.dataset_id, table.table_id
          )
      )
      print("Table schema: {}".format(table.schema))
      print("Table description: {}".format(table.description))
      print("Table has {} rows".format(table.num_rows))

      assert table.num_rows > 0, "Table has no rows"
      assert (
          get_delta_day(datetime.now(pytz.utc) - table.modified) < 30
      ), "Table is not updated in the last 30 days"

# Table specific checks
table1 = client.get_table("table_name")

# add example assert here
assert (
    get_delta_day(datetime.now(pytz.utc) - table1.modified) < 3
), "Table is not updated in the last 3 days"

С основной документацией по этой теме вы можете ознакомиться здесь.

Отслеживайте качество модели и эксперименты:

Производительность модели меняется в зависимости от данных, используемых для прогнозирования. Чем больше разница между данными обучения и данными, используемыми для прогнозирования, тем сильнее ухудшается производительность модели, даже если сама модель не изменилась.

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

  • Неравномерность обучения и обслуживания – это то, что происходит, когда распределение данных объектов, используемое в рабочей среде, отличается от того, которое использовалось для обучения модели. Обнаружение перекоса может быть выполнено заранее, если доступны данные, используемые для обучения.
  • Дрейф прогноза — это то, что происходит при значительном изменении распределения функциональных данных в рабочей среде. Если данные, используемые для обучения, недоступны, можно включить обнаружение дрейфа, чтобы отслеживать входные данные на предмет изменений с течением времени.

Обнаружение отклонения и отклонения функции поддерживается Model Monitoring как для категориальных, так и для числовых функций. Как только асимметрия или смещение для функции модели превышает определенный порог оповещения, Model Monitoring отправляет оповещение по электронной почте. Он также предлагает представление о распределении функций во времени, что помогает принять решение о том, следует ли переобучать модель или нет.

Посмотрите на перекос или дрейф между базовым и последним распределениями числового признака:

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

При создании задания по мониторингу модели вы можете предоставить свою собственную входную схему, чтобы гарантировать, что мониторинг модели правильно анализирует входные данные вашей модели. Эта схема называется схемой экземпляра анализа. Файл схемы определяет формат входных полезных данных, имена каждой функции и тип каждой функции и записывается в файле YAML в формате Open API. Взгляните на пример, представленныйздесь.

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

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

Экспериментирование и упаковка → Управление версиями модели → CI (непрерывная интеграция) → CT (непрерывное обучение) → CD (непрерывная доставка) → Мониторинг

На первом этапе можно использовать такие инструменты, как блокноты MLFlow, Kubeflow, Tensorflow Extended и Jupyter, для очистки данных и часть процесса обработки данных, для управления версиями модели Git. Конечно, реестр моделей играет здесь большую роль, Непрерывная интеграция обрабатывается такими компонентами Vertex AI, как реестр моделей, хранилище функций, хранилище метаданных ML, оркестратор конвейера ML и система контроля версий, службы тестирования и сборки, развертывание. услуги. На этапе непрерывного обучения модели машинного обучения автоматически оркестрируются в кластере Kubernetes с помощью конвейеров Kubeflow.

На этапе непрерывной доставки обученная модель помещается в готовую к работе среду, сложность автоматического масштабирования и настройки сервера, сетевое взаимодействие можно решить с помощью собственного KFServing Kubeflow, который позволяет делать выводы без использования сервера. на Kubernetes и предоставляет высокопроизводительные и простые интерфейсы абстракции для распространенных сред машинного обучения. Наконец, что касается мониторинга, я могу сказать, что он соответствует разделу отслеживания качества модели и экспериментов, обнаруженному ранее в этом блоге, где в реальном времени могут храниться журналы вывода с различными подробностями о показателе достоверности для некоторых прогнозов, IP- адреса клиентов, пользующихся услугами.

На этом пост закончен. Надеюсь, вам понравилось читать, и теперь у вас есть обзор всего жизненного цикла поддержки/развертывания системы ML.

Я активно использовал основную документацию MLOps с Vertex AI на главном веб-сайте Google Cloud, где вы можете найти более подробную информацию, а также использованные исходные изображения и ссылки на них.

Использованная литература :













Подпишитесь на ДДИнтел Здесь.

DDIntel содержит наиболее примечательные фрагменты нашего основного сайта и нашей популярной публикации DDI Medium. Посетите нас, чтобы увидеть более содержательную работу нашего сообщества.

Зарегистрируйтесь на AItoolverse (альфа), чтобы получить 50 DDIN

Поддержите серию DDI AI Art: https://heartq.net/collections/ddi-ai-art-series

Присоединяйтесь к нашей сети здесь: https://datadriveninvestor.com/collaborate

Следуйте за нами в LinkedIn, Twitter, YouTube и Facebook.