Передаём сложные вычисления в облако с DataSphere Jobs

C DataSphere Jobs вы можете подключать облачные вычисления к локальной разработке без дополнительных настроек окружения. Рассказываем, как новая функциональность DataSphere упрощает ML-разработку и позволяет организовать гибридный формат работы.

Yandex DataSphere — это сервис для ML-разработки, в котором есть все необходимые инструменты для полного цикла машинного обучения. Мы развиваем DataSphere и постоянно улучшаем его. Недавно мы добавили в сервис инструмент, который позволяет совместить локальную и облачную ML-разработку — DataSphere Jobs. О нём мы сегодня и расскажем. Но прежде, чем погружаться в особенности DataSphere, предлагаем уделить время истории появления и развития машинного обучения. Так будет проще понимать все нюансы и возможности сервиса. Если вам уже известна история ML, вы можете сразу перейти к части о DataSphere Jobs.

Машинное обучение — одно из направлений искусственного интеллекта (ИИ), которое с помощью технологий нейросетей и глубокого обучения помогает решать сложные задачи на больших объёмах данных. Причём делает это подобно человеку: не просто выполняет алгоритмы, а учится, анализирует результаты и самостоятельно их улучшает.

За 80 лет существования технологии машинного обучения (Machine Learning, ML) подходы, мощности и инструменты существенно изменились, но базовые принципы остались прежними: на входе алгоритм получает набор данных, на выходе отдаёт результат их обработки.

Как развивалось ML
  • 1940–50‑е годы — учёные и математики создают первые нейронные сети и называют машинным обучением концепцию самостоятельного обучения на базе алгоритмов. В 1957 г. Фрэнк Розенблатт конструирует персептрон — первую обучаемую нейронную сеть на основе алгоритма для двоичной классификации.

  • 1960–70‑е годы — ИИ развивается по пути моделирования экспертных знаний.

  • 1980‑е годы — новые ML‑алгоритмы работают со статистическими моделями, появляются понятия компьютерного зрения и чат‑ботов. IBM Research на основе ML‑технологии создаёт шахматный суперкомпьютер Deep Blue, который обыграл чемпиона мира Гарри Каспарова, и суперкомпьютер Watson, который выиграл в телевикторине Jeopardy (аналоге «Своей игры»). Алгоритмы Watson понимали вопросы на естественном языке и находили на них ответы с помощью нейросети.

  • Конец 1990‑х — начало 2000‑х годов — нейросети совершают резкий скачок за счёт развития вычислительных мощностей. Появляются технологии глубокого обучения для распознавания изображений и голоса, роботы‑гуманоиды и домашние помощники, автопилоты, системы анализа неструктурированных данных и рекомендательные системы.

Сейчас свои ML‑платформы есть практически у всех техногигантов — их используют не только внутри компаний, но и предоставляют сторонним разработчикам для сборки и обучения собственных моделей данных и решения своих задач. Машинное обучение стало по‑настоящему доступно массам.

Виды машинного обучения

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

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

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

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

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

Вызовы и решения

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

На рынке представлено множество решений и для ML‑разработки, и для инфраструктуры машинного обучения (MLOps). Можно локально развернуть Kubeflow и использовать Seldon Core, KFServing, Kubeflow Pipelines, Jupyter Notebook или собрать свой набор инструментов. Запускать вычисления можно и на локальном сервере, и в облаке. Объединяя сказанное, выделим несколько вариантов организации MLOps:

  • Ручное развёртывание окружения на удалённой машине и перенос кода с локальной машины — сложный и долгий процесс. В случае неудачного запуска кода придётся откатиться обратно в локальную среду для тестирования.

  • Сборка Docker‑образа со всеми необходимыми пакетами для быстрого развёртывания частично решает вопрос скорости, но приносит новые трудности. У каждого разработчика, как правило, своя привычная среда, а обновление базового образа под индивидуальные потребности может «сломать» работу остальных. А ещё локальный код придётся переносить вручную, потому что Docker‑образ на облачной машине с GPU не будет запускаться локально.

  • Написание собственного решения, которое будет выполнять pip freeze, собирать в архив локальный код, запускать базовый Docker‑образ в облаке, устанавливать нужные пакеты, распаковывать локальный код и запускать консоль. Выход, но очень медленный, нестабильный и без возможности кастомизации.

  • Готовое решение для запуска кода на облачных ресурсах вместе с его локальным окружением. Подключение ресурсов DataSphere упрощает и автоматизирует использование гибридной ML‑разработки, а при необходимости увеличивает производительность. DataSphere Jobs позволяет совместить локальную и облачную разработку: облачными ресурсами можно воспользоваться лишь в те моменты, когда они действительно нужны. Расскажем об этой возможности подробнее.

Помимо инструмента DataSphere Jobs, сервис Yandex DataSphere позволяет выбирать и переключать требуемые мощности на лету, подключать системы распределённых вычислений (Spark) и популярные библиотеки (TensorFlow, PyTorch), решать задачи в привычном IDE Jupyter® Notebook. Подробнее о сервисе вы можете прочитать тут и тут.

Преимущества DataSphere Jobs:

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

  • Безопасность — Yandex Cloud выполняет все требования безопасности информации
    и работы с персональными данными. После исполнения вычислений DataSphere
    Jobs удалит весь код и данные.

  • Экономия затрат на развёртывание кластеров, их обслуживание и DevOps.

Алгоритм работы сервиса DataSphere Jobs

Сервис DataSphere Jobs выполняет код локального проекта на ресурсах облака Yandex Cloud в несколько шагов:

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

  2. Пакеты, установленные через pip, добавляются в requirements и позже устанавливаются на виртуальной машине. Локальные модули и пакеты, установленные в editable‑режиме, загружаются в Object Storage и переносятся на виртуальную машину.

  3. Входные данные загружаются в Object Storage.

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

  5. На виртуальной машине исполняется локальный код с трансляцией логов процесса в консоль пользователя.

  6. После завершения исполнения в Object Storage выгружаются выходные данные со ссылками на скачивание. Входные и выходные данные, размещённые в хранилище, можно в дальнейшем переиспользовать. Сроки хранения задаются пользователем.

Остались вопросы по работе сервиса DataSphere Jobs? Задайте их в комьюнити DataSphere или поищите ответы в документации на сайте.

Подготовка к работе с сервисом DataSphere Jobs

Перед началом работы с DataSphere Jobs выполните действия:

  1. Установите Yandex Cloud CLI.

  2. Установите библиотеку datasphere в Python‑окружение с помощью команды pip install datasphere

  3. Запустите сервис командой yc datasphere job run --project-id <project id> --config config.yaml, где config.yaml — конфигурационный файл, в котором описаны необходимые для исполнения входные данные, пути, по которым ожидаются выходные данные, и команда для запуска вашего кода. Также в нём указываются секреты для подключения к S3, датасеты, которые нужно подключить к виртуальной машине, и необходимая конфигурация виртуальной машины.

Пример конфигурационного файла:

name: my-script
desc: Learning model using PyTorch  
cmd: python src/main.py --features ${bt12tlsc3nkt2opg2h61}/features.tsv   
  --model ${MODEL} --epochs 5  
inputs:  
  - misc/logging.yaml   
outputs:  
  - data/model.bin: MODEL    
s3-mounts:  
  - bt12tlsc3nkt2opg2h61

После запуска можно следить за процессом из консоли или интерфейса DataSphere, мониторить историю запусков и статус исполнений, а ещё управлять ими:

yc datasphere job list --project-id bt12tlsc3nkt2opg2h61

[{"id": "bt8jd73hs9dk8dh38djs",  
"name": "Save the world",  
"desc": "Train my first model",  
"started_at": "2023-08-22T09:44:47",  
"finished_at": "2023-08-22T09:54:47",  
"status": "FINISHED"},  
{"id": "bt8jd73hk0489jujikf5",  
"name": "Contest submission",  
"desc": "Another try to beat the leaderboards",  
"started_at": "2023-08-22T19:24:42",  
"status": "EXECUTING"}  
]

Выводы

Технологии ИИ уже применяются в различных отраслях, позволяют компаниям эффективнее работать, а людям комфортнее жить. Yandex Cloud использует машинное обучение не только для работы собственных сервисов, но предоставляет свои ИИ‑технологии пользователям, выпускает продукты и инструменты для эффективной разработки. DataSphere Jobs — один из таких инструментов, который призван упростить сложные процессы ML‑разработки.

Yandex DataSphere

Создайте свой проект и работайте в новом интерфейсе DataSphere, который объединяет привычный Jupyter® Notebook и вычислительные мощности Yandex Cloud.

Напишите нам

Начать пользоваться Yandex Cloud

Тарифы

Узнать цены и рассчитать стоимость

Мероприятия

Календарь событий Yandex Cloud
Передаём сложные вычисления в облако с DataSphere Jobs
Войдите, чтобы сохранить пост