Логотип Тераферма Тераферма Регистрация

21 октября 2026 г. · Анатолий Крылов, редактор Тераферма

PyTorch на арендованной GPU: рабочая среда Python за 10 минут без поломанных зависимостей

Ноутбук с кодом и ящик с инструментами рядом с сервером — настройка PyTorch на арендованной GPU

Рабочая среда PyTorch на арендованной GPU собирается за 10 минут, и ставить CUDA или драйвер для этого не нужно. Драйвер уже стоит на машине, а в шаблоне «PyTorch + CUDA + Jupyter» на Тераферме есть PyTorch 2.7.1 с CUDA 12.8. Ваша задача: проверить карту, поставить зависимости проекта так, чтобы они не заменили torch, перенести кэши в /workspace и запускать долгие задачи так, чтобы они пережили обрыв связи.

Статья продолжает гайд первый запуск на арендованной GPU: там про SSH-ключ, Jupyter и подключение. Здесь разберём, что делать после того, как вы оказались в терминале сервера.

Что уже есть на сервере

Компонент Что стоит в шаблоне Нужно ли ставить
Драйвер NVIDIA на машине владельца, пробрасывается в контейнер нет, и обновить его изнутри нельзя
CUDA и cuDNN библиотеки внутри PyTorch, CUDA 12.8, cuDNN 9 нет
PyTorch 2.7.1 нет, если проекту не нужна другая версия
Python и pip Python образа pytorch/pytorch нет
Jupyter Lab запускается автоматически, папка /workspace нет
Компилятор CUDA nvcc отсутствует: образ runtime, а не devel только для сборки CUDA-расширений из исходников

Последняя строка важна. Пакеты с готовыми колёсами (transformers, diffusers, peft, bitsandbytes, ultralytics) ставятся обычным pip install. А то, что компилируется из исходников, например flash-attn без готовой сборки под вашу версию, потребует nvcc. Тогда либо ищите готовое колесо под свою версию torch и CUDA, либо запускайте сервер со своим образом на базе pytorch/pytorch:…-devel.

Шаг 1. Проверьте карту и PyTorch (1 минута)

nvidia-smi
python -c "import torch; print(torch.__version__, torch.version.cuda, torch.cuda.is_available(), torch.cuda.get_device_name(0))"
df -h /workspace
nproc && free -g

Первая команда показывает модель карты, память и драйвер. Вторая должна вывести что-то вроде 2.7.1+cu128 12.8 True NVIDIA GeForce RTX 4090. Третья показывает свободное место на рабочем диске: его объём вы выбирали при запуске. Четвёртая выводит ядра CPU и оперативную память. Они понадобятся, чтобы настроить загрузку данных.

Если вторая команда вывела False, дальше не идите. Разбор причин — в статье CUDA не видит видеокарту.

Шаг 2. Перенесите кэши в /workspace (1 минута)

Hugging Face, pip и PyTorch по умолчанию складывают скачанное в ~/.cache. На сервере это системный раздел, и модель на 15 ГБ может его переполнить. Перенаправьте кэши на рабочий диск:

cat >> ~/.bashrc <<'EOF'
export HF_HOME=/workspace/.cache/huggingface
export PIP_CACHE_DIR=/workspace/.cache/pip
export TORCH_HOME=/workspace/.cache/torch
export HF_HUB_ENABLE_HF_TRANSFER=1
EOF
source ~/.bashrc
pip install -q hf_transfer

hf_transfer ускоряет загрузку моделей с Hugging Face в несколько раз: канал серверов обычно 100 Мбит/с и выше, и стандартный загрузчик его не заполняет. Для закрытых моделей вроде Llama выполните huggingface-cli login и вставьте токен.

Учтите, что трафик на Тераферме оплачивается по факту. Скачивайте модель один раз и держите её на диске сервера, пока работаете, а не перекачивайте при каждом запуске скрипта.

Шаг 3. Поставьте зависимости, не сломав torch (3–5 минут)

Самая частая поломка на новом сервере выглядит так: pip install -r requirements.txt, в котором стоит torch==2.3.0, — и pip ставит другую сборку, иногда без CUDA. Через полчаса вы обнаруживаете, что обучение идёт на процессоре.

Защитой служит файл ограничений:

cd /workspace
git clone https://github.com/<вы>/<проект>.git && cd <проект>
pip freeze | grep -E "^(torch|torchvision|torchaudio)==" > /workspace/constraints.txt
pip install -r requirements.txt -c /workspace/constraints.txt

Если пакет несовместим с установленной версией torch, pip остановится и покажет конфликт. Тогда решите осознанно: обновить пакет, ослабить версию в requirements или поставить другой torch с правильного индекса:

pip install torch==2.6.0 --index-url https://download.pytorch.org/whl/cu124

Для ускорения установки можно использовать uv: pip install uv && uv pip install --system -r requirements.txt -c /workspace/constraints.txt. На проектах с десятками зависимостей он экономит несколько минут оплаченного времени.

Нужен ли venv

Для одного проекта на сервере — нет. Контейнер одноразовый, и системный Python образа уже содержит согласованный PyTorch. Отдельное окружение нужно, когда на одном сервере живут два проекта с разными версиями библиотек:

python -m venv /workspace/venv --system-site-packages
source /workspace/venv/bin/activate

Флаг --system-site-packages оставляет доступным установленный PyTorch, и его не нужно скачивать заново. Чтобы окружение было видно в Jupyter, зарегистрируйте ядро: pip install ipykernel && python -m ipykernel install --user --name venv.

Шаг 4. Проверьте скорость карты (1 минута)

Перед долгой задачей полезно убедиться, что карта выдаёт свою скорость. Скрипт измеряет умножение матриц в bf16 — основную операцию обучения и инференса:

import torch, time
x = torch.randn(8192, 8192, device="cuda", dtype=torch.bfloat16)
for _ in range(3): x @ x
torch.cuda.synchronize(); t = time.time(); n = 50
for _ in range(n): x @ x
torch.cuda.synchronize(); dt = time.time() - t
print(f"{2 * 8192**3 * n / dt / 1e12:.0f} TFLOPS bf16", torch.cuda.get_device_name(0))

Ориентиры для плотного bf16 без разреженности:

Карта Паспорт, TFLOPS Нормальный результат теста
RTX 3090 71 55–70
RTX 4090 165 140–165
RTX 5090 210 170–210
A100 80 ГБ 312 230–280
H100 989 600–750

Если результат ниже нормы в полтора-два раза, карта, скорее всего, перегрета или ограничена по мощности. Посмотрите nvidia-smi -q -d PERFORMANCE: строки SW Thermal Slowdown и HW Slowdown со значением Active подтвердят троттлинг. В этом случае выгоднее сразу перезапустить сервер на другой машине, чем час платить за медленную карту.

Шаг 5. Запускайте долгие задачи в tmux

Обучение на несколько часов нельзя запускать прямо в SSH-сессии или в ячейке Jupyter, если вы собираетесь закрыть ноутбук. Оборвётся связь — оборвётся и процесс.

apt-get update -qq && apt-get install -y -qq tmux
tmux new -s train
python train.py 2>&1 | tee /workspace/train.log

Отключиться и оставить задачу работать: Ctrl+B, затем D. Вернуться: tmux attach -t train. Если tmux не нужен, хватит nohup python train.py > /workspace/train.log 2>&1 & и tail -f /workspace/train.log.

Пока задача идёт, держите в соседнем окне watch -n 2 nvidia-smi. Загрузка GPU ниже 70% почти всегда значит, что карта ждёт данные.

Шаг 6. Настройте загрузку данных и точность

Две настройки дают больше скорости, чем выбор более дорогой карты.

DataLoader. По умолчанию данные готовит один процесс, и быстрая карта простаивает:

from torch.utils.data import DataLoader
import os
loader = DataLoader(ds, batch_size=64, shuffle=True,
                    num_workers=min(8, os.cpu_count()), pin_memory=True,
                    persistent_workers=True)

Смешанная точность. На RTX 30, 40, 50, A100 и H100 обучение в bf16 идёт в 2–3 раза быстрее FP32 и занимает вдвое меньше памяти:

with torch.autocast("cuda", dtype=torch.bfloat16):
    loss = model(x).loss
loss.backward()

После этого можно попробовать model = torch.compile(model): первые минуты уйдут на компиляцию, зато дальше шаг обычно ускоряется на 10–30%. Для задачи на 10 минут компиляция не окупится, для обучения на ночь — окупится.

Шаг 7. Сохраните результат и окружение до остановки

После нажатия «Остановить» контейнер и диск удаляются. Поэтому:

  • сохраняйте чекпоинты каждые 30–60 минут, а не только в конце;
  • выгружайте их во внешнее хранилище по ходу: huggingface-cli upload, rclone copy в S3 или rsync на свой сервер;
  • перед остановкой скачайте логи и метрики;
  • сохраните окружение: pip freeze > /workspace/requirements.lock и закоммитьте файл в репозиторий.

С requirements.lock следующий сервер настраивается одной командой. А если установка занимает больше 10 минут, соберите свой Docker-образ и укажите его при запуске: окружение будет готово сразу, хотя сам запуск со своим образом занимает 8–15 минут вместо 2–5.

Итоговый чек-лист

Шаг Команда Время
Проверка карты nvidia-smi, torch.cuda.is_available() 1 мин
Кэши на рабочий диск HF_HOME, PIP_CACHE_DIR в ~/.bashrc 1 мин
Зависимости без замены torch pip install -r requirements.txt -c constraints.txt 3–5 мин
Тест скорости matmul в bf16 1 мин
Долгая задача tmux new -s train —
Сохранение чекпоинты во внешнее хранилище, pip freeze по ходу

На арендованной GPU не нужно ставить ни CUDA, ни драйвер — всё уже согласовано в шаблоне. Десять минут уходят на то, чтобы не сломать готовое: зафиксировать torch, перенести кэши, проверить скорость карты и запустить задачу в tmux. Эти шаги экономят часы оплаченного времени, которые иначе уходят на обучение на процессоре или на перезапуск после обрыва связи.

Под обучение и дообучение подберите карту на странице аренды GPU для обучения моделей, для первых экспериментов достаточно аренды RTX 3090 за 26 ₽ в час. А чтобы не платить за забытый сервер, прочитайте, как не платить за простой GPU.

Вопросы по теме

Нужно ли устанавливать CUDA и драйвер на арендованной GPU?

Нет. Драйвер NVIDIA стоит на машине владельца и пробрасывается в контейнер, а библиотеки CUDA приходят вместе с PyTorch. В шаблоне «PyTorch + CUDA + Jupyter» на Тераферме уже установлены PyTorch 2.7.1 и CUDA 12.8, они работают на всех картах, включая RTX 50.

Как установить зависимости проекта и не сломать PyTorch?

Зафиксируйте версию torch файлом ограничений: pip freeze | grep -E '^torch' > constraints.txt, затем pip install -r requirements.txt -c constraints.txt. Если пакет требует другую версию torch, pip покажет конфликт вместо того, чтобы молча поставить CPU-сборку.

Куда сохранять модели и датасеты на сервере?

В /workspace. Перенаправьте туда кэш Hugging Face и pip переменными HF_HOME и PIP_CACHE_DIR, чтобы модели не заполнили маленький системный раздел. Помните, что после остановки сервера диск удаляется: результаты нужно скачать или выгрузить заранее.

Как не потерять обучение, если отключится интернет?

Запускайте долгие задачи в tmux или через nohup. Тогда процесс продолжит работу на сервере, даже если ноутбук уснёт или оборвётся SSH. Переподключитесь и выполните tmux attach, чтобы вернуться к логу.

Можно ли сохранить настроенное окружение на следующий раз?

Да, двумя способами. Простой — сохранить requirements.txt и скрипт установки в Git и запускать его на новом сервере. Надёжный — собрать свой Docker-образ и указать его при запуске: окружение будет готово сразу, но запуск займёт 8–15 минут вместо 2–5.

Подберите GPU

20 моделей с поминутной оплатой в рублях.