
Слышите из каждого утюга про «эй-ай» и хотите разобраться в этом тренде? Или просто собрались попробовать запустить 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 Apps → Data 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.

Подключение хранилища
Ну вот, мы обучили модель, но при повторном запуске ошибки из раза в раз одни и те же. Почему так? Часто причина кроется в неправильном хранении и управлении версиями данных моделей. Данные моделей нужно где-то хранить. В любом 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-продуктов на рынок, а вот эти сложные вопросы возьмет на себя провайдер.
А также чтобы не возникало таких курьезных случаев:
