- PVSM.RU - https://www.pvsm.ru -

Слышите из каждого утюга про «эй-ай» и хотите разобраться в этом тренде? Или просто собрались попробовать запустить ML- или AI-проект, но вас пугают настройки серверов и облаков?
Не переживайте, сейчас расскажем, когда лучше выбрать собственный выделенный сервер [1], а когда — облако [2]. И как не тратить кучу времени на рутину, а сосредоточиться на важном — развитии моделей и получении результата. Эта статья — ваш путеводитель по настройке окружения для AI, без лишнего технического мата и сложных терминов. Детали под катом.
В статье показаны два базовых варианта создания окружений для AI на облачных и выделенных серверах. Оптимальный вариант реализации на инфраструктуре в Selectel [3] зависит от задач, масштаба, целей, бюджета, команды проекта и других факторов.
Чтобы не перегружать статью информацией, подробности, например, когда и как использовать облачные серверы с GPU и без, а также нужен ли проекту шаринг ресурсов GPU в Kubernetes, мы разберем в наших следующих публикациях.
Для того чтобы всерьез заниматься обучением и запуском современных ML-моделей, требуется инфраструктура. Да не простая, а со специализированным железом и отлаженными сервисами. Взять, запустить все на ноутбуке и написать скрипты на Python, конечно, можно, но это если вы хотите увидеть, как ноутбук превращается в обогреватель и еле тянет обучение на датасете из пары тысяч строк.
Поэтому, оптимальными будут серверные модели GPU [4], которые обеспечивают тысячи параллельных вычислений и поэтому справляются с большими трансформерами и глубокими сетями. Для тех, у кого данных и вычислений — вагон.
А чтобы масштабировать обучение и инференс моделей на GPU без потерь и с быстрым автосейлингом, используют Kubernetes с GPU-нодами и плагинами. Сам Kubernetes — инструмент управления, он автоматически выделяет ресурсы, держит сервисы и добавляет мощности по мере роста задач.
Хранение данных и моделей организуют на быстрых SSD NVMe, которые дают низкие задержки при чтении и записи. А для резервирования и удобного доступа используют хранилище S3.

ML Impact — про ML и AI без хайпа
Все кругом говорят про ML, но многие ли понимают его настоящую пользу для бизнеса? Мы запустили ресурс, который поможет во всем разобраться.
Подробнее → [5]
Для работы с ML и AI одного таланта разработки алгоритмов и написания кода недостаточно. Нужны глубокие навыки в области MLOps. И это не только про набор команд в терминале. Это умение спроектировать систему так, чтобы эксперименты не поглотили вашу команду и бюджет.
Если вы хотите серьезно углубиться в теорию и начать карьеру в ML, то загляните в статью про MLOps [6], а мы пойдем дальше к практике.
Выбор инфраструктуры под проект — главная задача. Ее решение сводится к простому вопросу: нужны ли вам предсказуемые, круглосуточно доступные ресурсы для долгих и тяжелых тренировок или важнее гибкость и быстрое масштабирование для экспериментов и периодических нестандартных нагрузок. Коротко: если подходит первое — выбирайте выделенные серверы [1], если второе — берите облако [2].
В ряде случаев быстро построить работающую инфраструктуру в облаке дороже, чем на выделенных серверах. Например, когда у вас большая база данных (требуется много дисков), собственный инженерный штат и высокие требования к производительности (актуально для высоконагруженных сервисов — такси, маркетплейсов и др).
В таких сценариях рационально выбирать конфигурации с NVMe для чекпоинтов, связкой NVLink/RDMA или 25/100 GbE для распределенного обучения и достаточным объемом RAM. Затраты на обслуживание и сопровождение выше, но при постоянной загрузке итоговая стоимость и предсказуемость работы обычно лучше.
Облако же выигрывает в скорости старта, в управлении расходами и в удобстве операций. Инстанс GPU под эксперимент можно поднять за минуты, использовать автоскейлинг и spot-инстансы для экономии, интегрировать S3 и готовые образы с CUDA и драйверами. Это удобно для прототипов, A/B-тестов и динамичных нагрузок. При этом вы как пользователь избавлены от необходимости глубоко погружаться в настройку инфраструктуры.
Есть распространенный миф, что при использовании облака случится потеря данных и контроля в случае сбоя и, как следствие, финансовые и репутационные риски. Давайте развеем этот миф, как Джейми Хайнеман и Адам Сэвидж из «Разрушителей легенд».
На деле проблемы с хранением и восстановлением информации отсутствуют. Все решается грамотным резервированием и надежной инфраструктурой. А выбор надежного провайдера, такого как Selectel, дает и соответствие международным и российским стандартам безопасности, продвинутую систему управления доступом с разделением ролей и многофакторную аутентификацию. Но приятности не заканчиваются: также есть защита на уровне сети, включая DDoS-щит и WAF.
В случае с облаком, как и с выделенными серверами, железо находиться в дата-центрах уровня Tier III. Данные в нем хранятся в трех копиях на разных серверах и стойках, что исключает потерю даже при серьезных инцидентах.
Так, аргументы в пользу облачной инфраструктуры часто перевешивают. И переезд с собственных или арендованных bare-metal-серверов позволит быстрее адаптироваться к нагрузкам (при необходимости можно увеличивать потребление ресурсов и оперативно откатываться обратно). Даст прозрачно управлять вычислительными мощностями из панели управления и платить по мере потребления.
Здесь вы не боретесь с соседями по хосту и не зависите от квот — вы получаете выделенную площадку, где можно запустить тяжелые эксперименты.
Помните: если вы хотите выжать максимум из каждого GPU-часа, нужно думать не только о видеокарте, но и о всей цепочке вокруг нее. Начните с прогнозирования размера проекта и закончите автоматизацией бэкапов.
1. П��рейдите в панель управления [9] и откройте вкладку Продукты → Выделенные серверы.
2. В открывшемся меню выберите одну из конфигураций с GPU. Для демонстрации возьмем сборку GL10-1-T4, в которой установлена Tesla T4.

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

3.1 Опционально: для безопасного подключения к серверу по зашифрованному протоколу SSH выберите ранее загруженный и размещенный SSH-ключ или добавьте новый. Подробнее — в инструкции [10].
4. Выберите тарифный план и нажмите Оплатить сейчас. Далее вы получите сервер с готовностью от нескольких минут до часа.
5. После установки ОС будет сгенерирован пароль для подключения к серверу, который также используется для авторизации в JupyterLab. Пароль можно скопировать в панели управления — для этого перейдите в раздел Операционная система.
Пароль доступен для просмотра 24 часа с момента начала установки ОС или изменения конфигурации. Если забыли пароль от сервера, вы можете сбросить и восстановить его [11].
Теперь по IP-адресу сервера можно открыть в браузере JupyterLab. Для авторизации достаточно ввести пароль от сервера.

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

Теперь рассмотрим инструкцию по развертыванию окружения для ML на облачном сервере. Если выделенные серверы — это студия с собственным набором реквизита, то облако — это арендная площадка с огромным каталогом декораций, техников и штук «на прокат». Нужен еще один GPU на час для теста — подняли инстанс. Нужен кластер под A/B-тесты — запустили. Все платится только за использованные ресурсы, все автоматизируется через API и легко интегрируется с S3-хранилищем и CI/CD.
За основу возьмем ту же конфигурацию с Tesla T4: это хороший баланс для прототипов, инференса и мелкомасштабных тренировок. В облаке вы выигрываете скорость итерации и гибкость, но при этом важно правильно настроить управление затратами, резервирование данных и безопасность — об этом чуть ниже по шагам.
1. Переходим в раздел Облачные серверы внутри панели управления [9].
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.
Ну вот, мы обучили модель, но при повторном запуске ошибки из раза в раз одни и те же. Почему так? Часто причина кроется в неправильном хранении и управлении версиями данных моделей. Данные моделей нужно где-то хранить. В любом AI-проекте важно иметь удобное и надежное место для файлов — весов моделей, обучающих датасетов, результатов экспериментов.
В облачной инфраструктуре идеальным вариантом будет S3-хранилище — объектное облачное хранилище, которое позволяет удобно управлять большими массивами данных, быстро получать к ним доступ и масштабировать объемы без лишних хлопот. Настройка S3 проста, посмотрите шаги ниже сами.
1. В панели управления [9] переходим в Продукты → 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-продуктов на рынок, а вот эти сложные вопросы возьмет на себя провайдер [12].
А также чтобы не возникало таких курьезных случаев:
Автор: techno_mot
Источник [14]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/oblachny-e-servisy/437665
Ссылки в тексте:
[1] выделенный сервер: https://selectel.ru/services/dedicated/?utm_source=habr.com&utm_medium=referral&utm_campaign=dedicated_article_environmentAI_281125_content
[2] облако: https://selectel.ru/services/cloud/?utm_source=habr.com&utm_medium=referral&utm_campaign=cloud_article_environmentAI_281125_content
[3] на инфраструктуре в Selectel: https://selectel.ru/?utm_source=habr.com&utm_medium=referral&utm_campaign=selectel_article_environmentAI_281125_content
[4] серверные модели GPU: https://selectel.ru/services/cloud/servers/gpu/?utm_source=habr.com&utm_medium=referral&utm_campaign=cloud_article_environmentAI_281125_content
[5] Подробнее →: https://promo.selectel.ru/mlimpact/?utm%5C_source=habr.com&utm_medium=referral&utm_campaign=ml_article_environmentAI_281125_banner_i099_ord
[6] в статью про MLOps: https://selectel.ru/blog/what-is-mlops/
[7] Источник: https://ru.wikipedia.org/wiki/MLOps
[8] Источник: https://www.meme-arsenal.com/create/chose?tag=busted
[9] в панель управления: http://my.selectel.ru/?utm_source=habr.com&utm_medium=referral&utm_campaign=myselectel_article_environmentAI_281125_content
[10] в инструкции: https://docs.selectel.ru/dedicated/manage/create-and-place-ssh-key/?utm_source=habr.com&utm_medium=referral&utm_campaign=docs_article_environmentAI_281125_content
[11] сбросить и восстановить его: https://docs.selectel.ru/dedicated/troubleshooting/recover-password/?utm_source=habr.com&utm_medium=referral&utm_campaign=docs_article_environmentAI_281125_content
[12] провайдер: https://selectel.ru/onboarding/?utm_source=habr.com&utm_medium=referral&utm_campaign=onboarding_article_environmentAI_281125_content
[13] Источник: https://selectel.ru/blog/nvidia-gpu-operator-configuration/
[14] Источник: https://habr.com/ru/companies/selectel/articles/971150/?utm_source=habrahabr&utm_medium=rss&utm_campaign=971150
Нажмите здесь для печати.