Слышите из каждого утюга про «эй-ай» и хотите разобраться в этом тренде? Или просто собрались попробовать запустить ML- или AI-проект, но вас пугают настройки серверов и облаков?                                                     

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

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

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

Что нужно для экспериментов с ML-моделями

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

Поэтому, оптимальными будут серверные модели GPU, которые обеспечивают тысячи параллельных вычислений и поэтому справляются с большими трансформерами и глубокими сетями. Для тех, у кого данных и вычислений — вагон. 

А чтобы масштабировать обучение и инференс моделей на GPU без потерь и с быстрым автосейлингом, используют Kubernetes с GPU-нодами и плагинами. Сам Kubernetes — инструмент управления, он автоматически выделяет ресурсы, держит сервисы и добавляет мощности по мере роста задач. 

Хранение данных и моделей организуют на быстрых SSD NVMe, которые дают низкие задержки при чтении и записи. А для резервирования и удобного доступа используют хранилище S3. 

ML Impact — про ML и AI без хайпа

Все кругом говорят про ML, но многие ли понимают его настоящую пользу для бизнеса? Мы запустили ресурс, который поможет во всем разобраться.

Подробнее →

Навыки в MLOps, так ли это все сложно

Для работы с ML и AI одного таланта разработки алгоритмов и написания кода недостаточно. Нужны глубокие навыки в области MLOps. И это не только про набор команд в терминале. Это умение спроектировать систему так, чтобы эксперименты не поглотили вашу команду и бюджет. 

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

Источник.

Как выбрать инфраструктуру

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

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

В таких сценариях рационально выбирать конфигурации с NVMe для чекпоинтов, связкой NVLink/RDMA или 25/100 GbE для распределенного обучения и достаточным объемом RAM. Затраты на обслуживание и сопровождение выше, но при постоянной загрузке итоговая стоимость и предсказуемость работы обычно лучше.

Облако же выигрывает в скорости старта, в управлении расходами и в удобстве операций. Инстанс GPU под эксперимент можно поднять за минуты, использовать автоскейлинг и spot-инстансы для экономии, интегрировать S3 и готовые образы с CUDA и драйверами. Это удобно для прототипов, A/B-тестов и динамичных нагрузок. При этом вы как пользователь избавлены от необходимости глубоко погружаться в настройку инфраструктуры. 

Есть распространенный миф, что при использовании облака случится потеря данных и контроля в случае сбоя и, как следствие, финансовые и репутационные риски. Давайте развеем этот миф, как Джейми Хайнеман и Адам Сэвидж из «Разрушителей легенд».

На деле проблемы с хранением и восстановлением информации отсутствуют. Все решается грамотным резервированием и надежной инфраструктурой. А выбор надежного провайдера, такого как Selectel, дает и соответствие международным и российским стандартам безопасности, продвинутую систему управления доступом с разделением ролей и многофакторную аутентификацию. Но приятности не заканчиваются: также есть защита на уровне сети, включая DDoS-щит и WAF. 

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

Источник.

Так, аргументы в пользу облачной инфраструктуры часто перевешивают. И переезд с собственных или арендованных bare-metal-серверов‎ позволит быстрее адаптироваться к нагрузкам (при необходимости можно увеличивать потребление ресурсов и оперативно откатываться обратно). Даст прозрачно управлять вычислительными мощностями из панели управления и платить по мере потребления. 

Путь 1. AI на выделенных серверах

Здесь вы не боретесь с соседями по хосту и не зависите от квот — вы получаете выделенную площадку, где можно запустить тяжелые эксперименты. 

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

Подготовка рабочей среды

Создание выделенного сервера

1. Перейдите в панель управления и откройте вкладку ПродуктыВыделенные серверы

2. В открывшемся меню выберите одну из конфигураций с GPU. Для демонстрации возьмем сборку GL10-1-T4, в которой установлена Tesla T4.

3. Откройте страницу сервера и перейдите ко вкладке Операционная система. Выберите Pre-installed AppsData Science (Ubuntu 24.04 LTS) — это даст вам готовое окружение с нужными пакетами.

3.1 Опционально: для безопасного подключения к серверу по зашифрованному протоколу SSH выберите ранее загруженный и размещенный SSH-ключ или добавьте новый. Подробнее — в инструкции.

4. Выберите тарифный план и нажмите Оплатить сейчас. Далее вы получите сервер с готовностью от нескольких минут до часа.

5. После установки ОС будет сгенерирован пароль для подключения к серверу, который также используется для авторизации в JupyterLab. Пароль можно скопировать в панели управления — для этого перейдите в раздел Операционная система.

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

Подключение к JupyterLab

Теперь по IP-адресу сервера можно открыть в браузере JupyterLab. Для авторизации достаточно ввести пароль от сервера. 

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

Путь 2. AI в облаке

Теперь рассмотрим инструкцию по развертыванию окружения для ML на облачном сервере. Если выделенные серверы — это студия с собственным набором реквизита, то облако — это арендная площадка с огромным каталогом декораций, техников и штук «на прокат». Нужен еще один GPU на час для теста — подняли инстанс. Нужен кластер под A/B-тесты — запустили. Все платится только за использованные ресурсы, все автоматизируется через API и легко интегрируется с S3-хранилищем и CI/CD.

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

1. Переходим в раздел Облачные серверы внутри панели управления.

2. Для своего проекта выбираем Регион и Пул (если это принципиально), нажимаем Создать сервер.

3. В поле Источник образ ОС с дистрибутивом Data Science VM (Ubuntu 22.04 LTS 64-bit) или архивным Ubuntu 22.04 LTS Machine Learning 64-bit и подходящей конфигурацией. Используем виртуальную машину с видеокартой NVIDIA Tesla®  T4 16 ГБ.

3. Выберите конфигурацию и задайте нужные настройки: количество ядер CPU, объем RAM, объем диска.

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

5. Нажимаем Создать. Система загрузится в пределах пары минут. Чтобы настроить окружение, подключимся к серверу по SSH — тогда он покажет данные для авторизации в окружении. Команду для подключения можно найти во вкладке Конфигурация.

6. Берем в терминале ссылку для подключения, логин и информацию о пароле для первого входа.

Ссылка для подключения и данные для входа.
Ссылка для подключения и данные для входа.

7. Переходим по ссылке и авторизуемся в DAVM. Теперь можно запустить JupyterLab, Keycloak, Prefect или Superset из браузера. В рамках статьи будем использовать только JupyterLab. 

Стартовая страница DAVM.
Стартовая страница DAVM.

Подключение хранилища

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

В облачной инфраструктуре идеальным вариантом будет S3-хранилище — объектное облачное хранилище, которое позволяет удобно управлять большими массивами данных, быстро получать к ним доступ и масштабировать объемы без лишних хлопот. Настройка S3 проста, посмотрите шаги ниже сами.

Настраиваем S3

1. В панели управления переходим в Продукты → S3 → Создать бакет.

2. Выбираем Регион — Санкт-Петербург и Пул — ru-1. 

3. Тип — публичный. Такой контейнер доступен без авторизации. Если нужно ограничить прямой доступ к файлам, подойдет приватный. Класс — стандартное хранение. Оптимальный выбор для работы с часто используемыми данными. Холодное хранение применяется для бэкапов, архивов и прочих важных данных с редким обращением. 

Выбираем по умолчанию тип адресации vHosted. Он обеспечивает лучшую совместимость с клиентами и SDK, упрощает маршрутизацию запросов по регионам. А еще это рекомендованный в Selectel способ работы с S3 :)

4. Адресацию оставляем как есть. Нажимаем Создать бакет.

Создаем сервисного пользователя

Чтобы взаимодействовать с S3 по API, следует создать сервисного пользователя.

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

1. Переходим во вкладку Управление доступом → Сервисные пользователи.

2. Нажимаем Добавить пользователя. Имя пользователя можем оставить по умолчанию, а пароль сгенерировать. 

3. В поле Роль выбираем нужную для проекта, например member

4. После выбора нужного проекта нажимаем Добавить пользователя.

Получаем ключи

Для работы с S3 через API необходимы специальные ключи — как логин и пароль, но для программ. На один проект можно создать несколько таких ключей, чтобы разные задачи или сервисы могли работать независимо.

1. В той же вкладке Управление пользователями переходим к созданному пользователю.

2. В поле Доступ, тыкаем на S3-ключи и нажимаем Добавить ключ.

3. В окне Добавление S3 ключа выбираем наш проект, имя можно оставить по умолчанию. Нажимаем Сгенерировать

Видим, что сгенерировано два значения: Access key — идентификатор ключа, и Secret key — секретный ключ. Копируем и сохраняем ключ — после закрытия окна его нельзя будет просмотреть.

Заключение

Итак, подытожим. Как вы поняли, правильная IT-инфраструктура — это главный параметр для успешного внедрения AI и ML-моделей в бизнес. 

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

А также чтобы не возникало таких курьезных случаев:

Источник.


Комментарии (0)