Yandex DataSphere

В предыдущих уроках вы научились пользоваться готовыми сервисами Yandex Cloud для решения типовых задач. Но часто бывает нужным:
- обучить модель на своих данных;
- дообучить существующую модель;
- разместить готовую модель на вычислительных ресурсах Yandex Cloud. Для всех этих задач существует сервис Yandex DataSphere.
ЛогикаВ этом уроке вы познакомитесь с особенностями DataSphere и выполните базовые операции. Это поможет вам усвоить основы работы с сервисом.
Что может и для чего используется DataSphere
💡 Yandex DataSphere — это платформенный сервис для решения всех задач, встающих перед специалистами по Data Scienсе. Можно сказать, что это «зонтичный бренд», который объединяет в себе несколько конкретных способов использования DataSphere для различных целей.Существуют следующие варианты использования DataSphere:
1️⃣ Диалоговый интерфейс JupyterLab для интерактивных задач исследования данных и обучения моделей. Интерфейс Jupyter является стандартом де-факто в мире машинного обучения, и многие специалисты по Data Scienсе привыкли им пользоваться. DataSphere предоставляет пользователю знакомый интерфейс, снижая порог входа практически до нуля. При этом DataSphere предоставляет ряд важных преимуществ по сравнению с использованием оригинального пакета JupyterLab на своей рабочей станции или виртуальной машине:
- Лёгкое переключение между вычислительными ресурсами. Можно изначально запустить код на недорогом вычислительном узле и затем переключиться на узел с GPU для обучения модели — при этом все данные в домашней директории проекта сохранятся.
- Монтирование хранилищ данных S3 и датасетов для доступа к ним как с разных вычислительных ресурсов, так и со стороны разных участников проекта.
- Командная работа, в рамках которой можно делиться артефактами (датасетами, моделями, Docker-образами и т. д.) с другими участниками проекта.
- Интеграция с Git-хранилищами для совместной работы над кодом.
2️⃣ DataSphere Jobs — это инструмент для запуска Python-скриптов на облачных вычислительных ресурсах. Более опытные специалисты часто используют скрипты для обеспечения повторяемости экспериментов, перебора гиперпараметров или запуска длительного обучения больших моделей. DataSphere Jobs позволяет запустить скрипт на удалённое выполнение в облаке из командной строки, при этом инструментарий DataSphere создаст на удалённом вычислительном узле такое же Python-окружение, что и на локальном компьютере, минимизируя затраты на настройку удалённого окружения.
3️⃣ Хостинг моделей в облаке в виде веб-сервиса. Часто модели машинного обучения становятся частью микросервисного облачного решения и оформляются в виде отдельного веб-сервиса, работающего на вычислительном узле с GPU. DataSphere позволяет создать такой узел либо на базе произвольного Docker-контейнера, либо из модели, сохранённой в репозитории моделей. При этом DataSphere может не только взять на себя построение веб-сервиса для модели, но и вопрос балансировки нагрузки и мультиплексирования моделей.Таким образом, DataSphere покрывает собой весь спектр задач машинного обучения: от сбора датасетов из облачных хранилищ S3 и исследования данных до обучения больших моделей и их размещения в облаке. При этом, будучи платформенным сервисом, DataSphere берёт на себя все заботы об обновлениях всех инструментов (JupyterLab, GPU-драйверов, конфигураций Python-библиотек по умолчанию и т. д.), а также о бесшовной интеграции с другими облачными сервисами.
💻 Практика. Изучение фотоархива в DataSphere
❗️Практическая часть курса предполагает использование облачных ресурсов, которые вы оплачиваете самостоятельно. Курс разработан так, чтобы расходы были минимальными, — часть из них покроет стартовый грант.Чтобы избежать лишних трат:— останавливайте ВМ в перерывах между практиками (это не снизит потребление до нуля, но заметно сократит расходы);— настройте бюджет и уведомления в разделе Биллинг;— удаляйте ресурсы после завершения курса;— необязательно выполнять все практики — сосредоточьтесь на релевантных.В этом задании вам предстоит исследовать фотоархив и определить, какие объекты и в каком количестве присутствуют на фотографиях. Для этого вы будете использовать предобученную модель обнаружения объектов YOLO в диалоговом интерфейсе JupyterLab. Фотографии будут размещаться в облачном объектном хранилище S3.Основные этапы работы:
- Создание сообщества и проекта в DataSphere
- Клонирование GitHub-репозитория с кодом
- Создание бакета S3 и загрузка туда фрагмента фотоархива
- Подключение бакета S3 к DataSphere
- Запуск кода и построение инфографики
ЛогикаВыполняйте этапы последовательно, следуя инструкциям.
Создание сообщества и проекта в DataSphere
1️⃣ Для начала работы с DataSphere зайдите по ссылке https://datasphere.yandex.cloud. Вы попадёте на домашний экран сервиса:

💡 Если у вас уже есть сообщество в DataSphere, то этап его создания можно пропустить.2️⃣ На этом экране нажмите кнопку Создать и в выпадающем списке выберите Создать сообщество. Далее для сообщества укажите имя и платёжный аккаунт:

Далее вы попадёте на начальный экран сообщества:

3️⃣ Здесь вы можете создать новый проект, нажав соответствующую кнопку. Дайте проекту любое имя. После создания откроется домашний экран проекта:

4️⃣ Проект готов к работе! Нажмите кнопку Открыть проект в JupyterLab и дождитесь окончания загрузки. В итоге вы увидите интерфейс JupyterLab:

5️⃣ Создайте новый ноутбук, нажав на прямоугольник с надписью D: DataSphere Kernel. После этого в первой строке ноутбука напишите код на языке Python, например:

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

7️⃣ В зависимости от доступных вам типов узлов этот список может быть больше или меньше. Выберите самую простую конфигурацию c1.4 и убедитесь, что написанный вами код выполняется.
Клонирование GitHub-репозитория с кодом
1️⃣ DataSphere поддерживает нативную интеграцию с Git. Нужно взять пример кода с GitHub. Для этого на левой панели инструментов в DataSphere нажмите кнопку с иконкой Git:

2️⃣ Далее в интерфейсе нажмите кнопку Clone Repository и введите адрес репозитория: https://github.com/yandex-datasphere/datasphere-practice. После выполнения команды в домашнем каталоге проекта помимо файла Untitled.ipynb появится директория datasphere-practice . К ней вам предстоит вернуться позднее.
Создание бакета S3 и загрузка фрагмента фотоархива
1️⃣ На время оставьте DataSphere и в соседней вкладке браузера откройте консоль Yandex Cloud: https://console.yandex.cloud. На домашней странице консоли перечислены основные облачные сервисы:

2️⃣ Вам необходимо создать хранилище Object Storage, поэтому нажмите на соответствующий прямоугольник. Вы попадёте в список доступных бакетов:

💡 Если вы впервые пользуетесь облаком, то список бакетов будет пустым.3️⃣ Далее создайте бакет для хранения своего фотоархива. В дальнейшем в тексте будет использоваться имя photoarch. Если такое имя окажется занято — выберите любое другое.

4️⃣ Перейдите в созданный бакет и посмотрите на следующий экран настройки параметров:

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

Подключение бакета S3 к DataSphere
Загруженные изображения можно сделать доступными в DataSphere в виде отдельной директории. Но для этого нужно выполнить определённые действия, чтобы предоставить проекту DataSphere доступ к бакету.📚 Подробные действия при подключении к хранилищу S3 описаны в документации.1️⃣ Создайте сервисный аккаунт: из начального экрана консоли перейдите во вкладку Сервисные аккаунты:

2️⃣ Далее нажмите Создать сервисный аккаунт и в открывшемся окне выберите имя аккаунта и назначенные ему роли. Вы должны дать права на доступ к хранилищу S3, поэтому нажмите + и выберите роль storage.editor.

3️⃣ Новый сервисный аккаунт появится в списке. Выберите его, дальше вы попадёте на домашний экран сервисного аккаунта:

4️⃣ Чтобы разрешить сервису DataSphere действовать от имени сервисного аккаунта, используйте ключ. Нажмите + Создать новый ключ, выберите Статический ключ доступа, введите текстовое описание и получите значения идентификатора ключа и сам ключ:

Эти значения необходимо скопировать, поскольку после закрытия окна они будут недоступны.5️⃣ Теперь переходите во вкладку с DataSphere и откройте начальное окно проекта. Можно просто заново зайти по ссылке http://datasphere.yandex.cloud:

6️⃣ Выберите пункт Коннектор S3, нажмите голубую кнопку Создать, после чего заполните поля формы, как показано ниже:

7️⃣ В поле Эндпоинт введите стандартное значение https://storage.yandexcloud.net, в поле Идентификатор статического ключа доступа — скопированное ранее значение идентификатора ключа.💡 Если имя бакета отличается от photoarch, то используйте photoarch в качестве параметра имя раздела при подключении, чтобы не пришлось модифицировать код на Python. В этом случае имя бакета и имя директории, к которой будет подключаться бакет, будут различаться.8️⃣ Для задания самого статического ключа используется механизм секретов DataSphere: нажмите кнопку Создать рядом со строчкой Статический ключ доступа и заполните окно создания нового секрета:

9️⃣ После этого нажмите кнопку Создать. Если вы всё сделали правильно, появится сообщение Коннектор S3 успешно создан, можно переходить к следующему экрану:

Чтобы созданный коннектор был виден из JupyterLab, необходимо на этом экране нажать кнопку Активировать.🔟 Теперь можно открыть интерфейс JupyterLab нажатием кнопки Войти в JupyterLab на домашней странице проекта DataSphere. Затем слева в дереве директорий перейти в папку s3, в которой будет видна директория photoarch.

Запуск кода и построение инфографики
1️⃣ Перейдите снова в директорию проекта, а затем в datasphere-practice/intro. В этой директории откройте ноутбук AlbumProcess.ipynb.

2️⃣ Далее последовательно выполните ноутбук, ячейка за ячейкой, следуя описаниям из самого ноутбука.💡 При запуске первой ячейки вам будет предложено выбрать конфигурацию вычислительного узла. По возможности выбирайте конфигурацию с поддержкой GPU, поскольку задача обнаружения объектов может быть ресурсоёмкой. Не забывайте останавливать узлы, когда вы ими не пользуетесь, — это минимизирует ваши расходы. По умолчанию DataSphere сама останавливает узел после четырёх часов без активностей. Это значение можно изменить в настройках проекта/сообщества.3️⃣ Обратите внимание на то, как устанавливать дополнительные библиотеки с помощью команды %pip install. После этого необходимо перезапустить ядро ноутбука, выбрав в меню комбинацию Kernel → Restart Kernel.В случае необходимости, если вы меняли название директории S3, не забудьте исправить путь к файлам в переменной src_dir.После выполнения кода вы получите анализ вашего фотоальбома по найденным объектам такого вида:

0 комментариев