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

Использование контроля версий с DVC

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

Машинное обучение немного сложнее, поскольку во многом оно представляет собой сочетание исследований и разработки программного обеспечения. Например, сами данные имеют большой размер, поэтому совместное хранилище может быть проблематичным. Или отобразить изменения в Jupyter Notebooks сложно, поскольку Git не позволяет отображать изменения на графиках от фиксации до фиксации.

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

В любое время вам, вероятно, потребуется получить полный контекст эксперимента, который вы запустили / проводите. DVC гарантирует, что все файлы и показатели будут согласованными и в нужном месте для воспроизведения эксперимента или использования его в качестве основы для новой итерации. Кроме того, DVC хранит метафайлы в Git для описания и управления версиями ваших данных и моделей. Если вы работаете в команде, DVC может служить протоколом для сотрудничества, определяя правила и процессы для эффективной работы.

Отслеживание экспериментов с весами и смещениями

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

Weights & Biases - отличная платформа для управления экспериментами в том смысле, что она действительно удобна для пользователей. Очень легко регистрировать любые показатели, которые вы хотите регистрировать. Таким образом, он обеспечивает прозрачный способ выявления узких мест в ваших моделях машинного обучения, позволяя легко исправлять ошибки и улучшать оптимизацию.

Одна вещь, которая сложна в машинном обучении, заключается в том, что часто существует так много гиперпараметров или так много способов изменить систему. Таким образом, очень важно иметь возможность противопоставлять эксперименты, изменяя одно за другим. Информационная панель Weights & Biases обладает гибкостью и масштабируемостью, чтобы обеспечить большой объем визуализации для прогнозов вашей модели. Как специалист по данным, вы можете легко сравнивать и сравнивать различные эксперименты и объединять их в физические отчеты и / или мониторинг в реальном времени. В команде по обработке и анализу данных Weights & Biases может стать общим журналом, чтобы отслеживать, какие модели обучаются, а также прогресс каждого члена команды.

Развертывание моделей с помощью Docker

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

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

Весьма вероятно, что разработанные вами модели машинного обучения имеют неоднородные среды (Windows против Unix), разные пакеты библиотек (TensorFlow против PyTorch) или различные требования к ресурсам (GPU против TPU), контейнеры GPU могут справиться со всеми этими проблемами, размещение разных моделей в разных контейнерах и распределение гибких ресурсов в соответствии с требованиями.

Фактически, вы можете легко интегрировать Weights & Biases с Docker с помощью команды wandb docker, которая устанавливает образ Docker с установленными стандартными пакетами, монтирует ваш код и помещает вас внутрь него. . Команда автоматически запускает образ Docker с установленными по умолчанию TensorFlow, PyTorch, Keras и Jupyter - типичным набором инструментов для глубокого обучения. Во время процесса обучения модели Weights & Biases будет сохранять постоянную запись о состоянии вашего образа Docker, так что вы всегда сможете восстановить точную среду, в которой выполнялся ваш код.

В любое время в будущем вы можете запустить ”wandb restore ‹username› / ‹project›: ‹run_id›», чтобы вернуться к тому состоянию, в котором ваш код и образ Docker находились во время обучения. бег. Затем веса и смещения будут предварительно заполнять вашу историю bash исходной командой.

Заключение

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