Когда я только начинала разбираться с машинным обучением, мне казалось, что для запуска моделей нужны серверные фермы или сложные облачные платформы с бесконечным количеством кнопок. Но на практике оказалось, что всё можно уместить в одну виртуалку. В этой статье расскажу, как развернуть полноценную среду под ML на обычном VPS: с PyTorch, Jupyter и FastAPI. Всё просто, если знаешь, за что хвататься.
Подбираем VPS для ML задач
Если вы планируете обучать модели, обращайте внимание на конфигурацию:
- Минимум 2 CPU и 4–8 GB RAM — иначе Jupyter будет подвисать.
- SSD-диск от 20 ГБ — под датасеты и модели.
- Ubuntu 22.04 — стабильная и поддерживаемая версия, с которой дружат почти все ML-библиотеки.
Клиенты CloudVPS часто используют такие конфигурации как недорогой ml-сервис — просто и удобно.
Установка Python и PyTorch
После подключения к VPS (через SSH) первым делом обновим систему:
sudo apt update && sudo apt upgrade -y
Устанавливаем Python и pip:
sudo apt install python3 python3-pip -y
Создаём виртуальное окружение:
python3 -m venv venv source venv/bin/activate
Ставим PyTorch:
pip install torch torchvision torchaudio
Готово! Можно импортировать
torch
Настройка Jupyter Notebook
Jupyter — это, грубо говоря, ваш рабочий стол для ML.
Устанавливаем:
pip install notebook
Создаём конфиг:
jupyter notebook --generate-config
Устанавливаем пароль:
from notebook.auth import passwd passwd()
Добавьте сгенерированный хеш в
~/.jupyter/jupyter_notebook_config.py
c.NotebookApp.password = 'sha1:...' c.NotebookApp.ip = '0.0.0.0' c.NotebookApp.open_browser = False c.NotebookApp.port = 8888
Запускаем:
jupyter notebook
Теперь блокнот доступен по IP:8888. Обязательно настройте брандмауэр или reverse proxy для безопасности.
Быстрый API на FastAPI
FastAPI — идеальный выбор, если вы хотите обернуть модель в API. Он быстрый, лаконичный и поддерживает async.
Установка:
pip install fastapi uvicorn
Простой пример:
from fastapi import FastAPI app = FastAPI() @app.get("/") def read_root(): return {"message": "ML-сервер готов!"} # Запуск # uvicorn main:app --host 0.0.0.0 --port 8000
В проде лучше запускать с помощью systemd или docker.
Как организовать рабочий процесс
Вот как я обычно организую среду под проекты:
- Под каждый проект — отдельное окружение. Это позволяет изолировать зависимости.
- Jupyter на отдельном порту, FastAPI на другом. Удобно при тестировании.
- Все скрипты и модели лежат в — чтобы было структурно и понятно.
/srv/ml/project_name/
- Резервные копии — хотя бы раз в неделю.
Пример кейса: запуск ML-проекта на VPS
Недавно я разворачивала проект по классификации изображений. На VPS с 4 ядрами и 8 ГБ памяти разместились PyTorch, Jupyter и FastAPI. Обучение шло 3 часа, API разворачивался за 5 минут. Такая связка — находка для pet-проектов, демонстраций и MVP.
Позже я добавила поддержку загрузки изображений через FastAPI и логирование с помощью MLflow — всё работало на одном сервере.
В завершении хочу добавить. Разворачивать ML-инфраструктуру на VPS — это не боль, а скорее приятная рутина. С правильным подходом и чёткими шагами можно за пару часов получить рабочее окружение. Не нужен дорогой ml сервис — достаточно VPS от CloudVPS и желания экспериментировать.