Это первая часть серии сообщений в блогах, в которых описывается, как использовать Контроль версий данных (DVC) и Непрерывное машинное обучение (CML) при разработке диалоговых помощников ИИ с использованием фреймворка Rasa. Этот пост в основном представляет собой введение в эти три компонента, в следующем посте я углублюсь в код и в то, как все соединить для блаженства Rasa MLOps.

Что такое ДВК?

Если вы не слышали о контроле версий данных (DVC), вы многое упустили. DVC — это захватывающий инструмент от iterative.ai, который привносит все преимущества контроля версий исходного кода в управление вашими данными. DVC расширяет функциональные возможности git, чтобы охватить ваши данные в любом месте, где вы хотите их хранить, будь то локально, на облачной платформе, такой как AWS S3, или в файловой системе Hadoop.

Как и git, DVC не зависит от языка. Неважно, на каком языке вы разрабатываете; DVC поможет вам. Мы могли бы расхваливать преимущества DVC в целом посте, но вместо этого вам следует заглянуть в блог DVC или канал на YouTube.

DVC также работает как gnu make, позволяя вам разрабатывать рабочие процессы как прямые ациклические графы (DAG). Помимо отслеживания зависимостей и выходных данных, вы также можете использовать эти конвейеры для отслеживания всех параметров, используемых в конкретном запуске модели.

Что такое ХМЛ?

Непрерывное машинное обучение, или CML, — еще одно предложение от iterative.ai, команды разработчиков DVC. CML — это, по сути, действие github и серия контейнеров докеров, которые помогают вам запускать задания на исполнителях (экземплярах) на github, облачной платформе по вашему выбору или на машинах в вашей локальной сети. Рабочий процесс с использованием экземпляров EC2, запускаемых github, будет выглядеть так:

  1. Вы отправляете фиксацию на github с изменением кода или настройкой гиперпараметра.
  2. Github запускает действие CML, которое использует terraform для предоставления облачного экземпляра в соответствии с вашей спецификацией (раннер)
  3. CML запускает док-контейнер из предварительно подготовленных образов CML (или вашего собственного образа).
  4. Ваши произвольные команды выполняются в контейнере докеров с использованием исходного кода из вашего репозитория (это может быть конвейер DVC)
  5. Любые артефакты, созданные вашим кодом, могут быть сохранены в DVC обычным способом, а метрики автоматически переданы обратно в PR.

Что такое Раса?

Раса — это фреймворк с открытым исходным кодом для разработки разговорного ИИ — нет, не чат-ботов… (пусть объяснят почему). Rasa использует SpaCy, но также имеет множество собственных крутых инноваций. Если ваш разговорный ИИ должен обслуживать сложные варианты использования, помимо поддержки клиентов и т. д., тогда Rasa — отличный выбор.

Почему DVC и CML с Rasa?

С Rasa принято хранить все ваши обучающие данные в репозитории git. Обычно это связано с тем, что обучающие данные не очень велики, а также потому, что инструмент пользовательского интерфейса Rasa Rasa X может напрямую подключаться к вашему репозиторию git и синхронизировать обучающие данные по мере их получения и аннотирования. Здесь нет особого смысла использовать DVC, но полезно создать DAG для управления обучением.

Люди, стоящие за Rasa, превозносят достоинства Conversational Driven Development (CDD), итеративного подхода, который способствует взаимодействию между пользователями и ИИ для управления циклом разработки. Двумя ключевыми положениями этого подхода являются

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

Rasa создала действие github для запуска своей собственной функции тестирования в рамках конвейера CI/CD, что хорошо, но изначально не отслеживает метрики, полученные в результате тестов: по сути, вы получаете Test, но нужно сделать что-то еще, чтобы получить часть Track. С помощью DVC мы можем сделать и то, и другое, а с помощью CML мы можем легко добавить его в наши конвейеры CI/CD.

Этот пост просто устанавливает сцену для того, что должно произойти, в следующем посте в блоге я подробно расскажу о том, как начать.