8 мин чтения ·
Аналог Google Colab с GPU: JupyterLab без ограничения сессии
Jupyter на арендованном GPU-сервере вместо Colab: сессия не обрывается по таймеру, карту выбираете сами, диск сохраняется. Как перенести блокнот.

Аналог Google Colab с GPU — это JupyterLab на сервере с видеокартой, который вы арендуете по минутам. Формат блокнотов тот же, .ipynb, а работа идёт в браузере. Отличие в том, что сессия на сервере не обрывается по таймеру, пока сервер запущен, а диск сохраняется до его удаления. JupyterLab поднимается из шаблона PyTorch + Jupyter, подробнее — на странице Jupyter.
Какие ограничения у Colab
Тарифы Google Colab меняются, поэтому актуальные условия смотрите на сайте сервиса. Чаще всего на ограничения жалуются из-за трёх вещей:
- Сессии ограничены по времени.
- GPU выдаётся не всегда: в нужный момент карты может не оказаться.
- Доступность из России ограничена, это стоит учитывать при планировании работы.
Если эти ограничения мешают — обучение длится часами, нужна конкретная карта или большой набор данных, — сервер с JupyterLab решает задачу иначе.
Чем отличается сервер с JupyterLab
| Вопрос | Google Colab | Сервер на gpu.nz |
|---|---|---|
| Сессия | Ограничена по времени | Не обрывается по таймеру, пока сервер запущен и на балансе есть средства |
| Карта | Выдаётся сервисом, не всегда доступна | Вы выбираете карту из каталога по памяти и цене |
| Файлы | Временная машина; постоянное хранение обычно через Google Drive | Диск сохраняется до удаления сервера |
| Пакеты | Ставятся через pip в ячейке блокнота | Pip и apt, как на обычной Linux-машине; для чистой системы есть Ubuntu + CUDA |
| Доступ | Браузерный блокнот, SSH не предусмотрен | JupyterLab, терминал и SSH на каждом сервере |
| Оплата | По тарифам Google | Поминутно с баланса; цена фиксируется при запуске |
Когда сервер с Jupyter удобнее
- Обучение или эксперименты дольше часа: сервер не прерывается по таймеру.
- Нужна конкретная карта: 24 ГБ для LoRA или 80 ГБ для большой модели.
- Большие наборы данных: файлы лежат на диске и не скачиваются заново при каждом запуске.
- Нужны SSH, своё окружение или несколько процессов сразу: терминалы в tmux или screen.
Как перенести блокнот из Colab
- В Colab откройте меню «Файл» и выберите «Скачать» → «Скачать .ipynb». Названия пунктов зависят от языка интерфейса.
- Запустите сервер с шаблоном PyTorch + Jupyter и картой нужного объёма. Откройте JupyterLab кнопкой из карточки сервера.
- Загрузите .ipynb через кнопку загрузки в файловом браузере JupyterLab или перетащите файл в окно.
- Уберите то, что работает только в Colab: монтирование Google Drive (drive.mount), files.upload и пути вида /content/. Данные переносите по SFTP, как описано в гайде по SSH, или скачивайте по ссылке командой wget.
- Проверьте GPU первой ячейкой:
import torch
print(torch.cuda.is_available(), torch.cuda.get_device_name(0))Недостающие пакеты ставьте прямо в блокноте командой %pip install имя-пакета. Длинные процессы держите в терминале внутри tmux или screen: тогда они не остановятся, когда вы закроете вкладку браузера.
Что подготовить до аренды
- Публичный SSH-ключ в личном кабинете. JupyterLab работает и без него, но терминал по SSH и загрузка файлов через SFTP потребуют ключ.
- Карта под задачу и диск с запасом. Датасеты и веса моделей занимают больше места, чем кажется, поэтому закладывайте запас.
- Файл requirements.txt со списком пакетов, чтобы поставить окружение одной командой.
- План хранения: что остаётся на диске сервера, а что вы скачиваете на свой компьютер перед удалением.
Пример: проверка окружения
Первая ячейка блокнота или первая команда в терминале могут проверить сразу три вещи: карту, версию PyTorch и то, что окружение собралось:
nvidia-smi
pip install -q -r requirements.txt
python -c "import torch; print(torch.__version__, torch.cuda.is_available())"Если последняя строка выводит True, PyTorch видит карту. Установку зависимостей и проверку удобно держать в одном скрипте: тогда после каждого нового запуска сервера окружение поднимается одной командой.
Длинные задачи и обрыв связи
Обучение, которое идёт часами, запускайте внутри tmux. Процесс не остановится, если закроется вкладка браузера или пропадёт интернет. В терминале JupyterLab это выглядит так:
tmux new -s train # новая сессия с именем train
python train.py # запуск обучения внутри неё
# Ctrl+B, затем D # отсоединиться: процесс продолжит работать
tmux attach -t train # вернуться к сессииЛоги пишите в файл, а контрольные точки сохраняйте на диск. Тогда даже при остановке процесса обучение продолжится с последнего шага, а не начнётся заново.
Код, который работает и на CPU, и на GPU
Чтобы один и тот же код работал и на своём компьютере, и на сервере, выберите устройство один раз и перенесите на него модель и тензоры:
import torch
device = 'cuda' if torch.cuda.is_available() else 'cpu'
model = model.to(device)Если память заканчивается во время обучения, уменьшите размер батча или включите смешанную точность. Обе правки обычно дают самый заметный эффект, и их легко проверить коротким запуском.
Где хранить результаты
Сохраняйте результаты в файлы в папке на диске: графики в PNG, таблицы в CSV, веса в safetensors. Тогда всё можно скачать одним архивом, не открывая блокнот.
Датасет на сервере
Наборы данных удобно держать в одном архиве и распаковывать на диск сервера один раз. Тогда при каждом перезапуске не придётся заново загружать данные: распакованная копия хранится на диске до удаления сервера. Перед распаковкой проверьте, что места хватает: распакованный набор обычно занимает заметно больше архива.
Если не хватает памяти
Ошибка CUDA out of memory в блокноте часто значит, что старые тензоры остались в памяти. Сначала удалите ненужные переменные, вызовите сборщик мусора и проверьте память командой nvidia-smi:
del outputs, loss
import gc
gc.collect()
torch.cuda.empty_cache()Если этого мало, уменьшите размер батча и используйте накопление градиентов: эффективный размер батча останется прежним, а память на одном шаге станет меньше. Во время долгого обучения сохраняйте контрольные точки по расписанию, а не только в конце:
torch.save({'model': model.state_dict(), 'step': step}, f'checkpoints/step_{step}.pt')Когда блокнот в Colab всё же проще
Для коротких экспериментов на час-два бесплатный блокнот часто удобнее: ничего не нужно настраивать, а результат появляется быстро. Сервер выигрывает там, где важны непрерывность работы, конкретная карта, большой объём данных и возможность вернуться к прошлой работе через день или неделю. Выбирайте по задаче, а не по привычке.
Код и модели из интернета
Код берите из репозиториев: команда git clone в терминале JupyterLab. Модели с Hugging Face удобно скачивать из Python, и тогда они сразу попадают в нужную папку на диске:
from huggingface_hub import snapshot_download
snapshot_download(repo_id='<автор>/<модель>', local_dir='/workspace/models/<модель>')Для закрытых моделей передайте токен доступа через переменную окружения HF_TOKEN. Не записывайте его в блокнот: его могут увидеть те, с кем вы делитесь файлом.
Что остаётся после остановки
Остановка сервера завершает все процессы: переменные в памяти пропадают, а ядро блокнота перезапускается. Файлы на диске остаются. Поэтому дорогие промежуточные результаты сохраняйте на диск сразу, а не держите только в переменных. Полезно также записывать параметры запуска в файл рядом с весами, чтобы через неделю понимать, как они получены.
Совместная работа
Ссылка на JupyterLab защищена токеном аренды, поэтому доступ есть только у вас. Делиться результатами удобнее файлами — графиками, таблицами или весами, а не доступом к самому серверу.
Графики во время обучения
Логи обучения удобно писать в файл и строить по нему графики потерь и скорости. Для этого хватит обычного matplotlib в блокноте. Сохраняйте графики в файлы, чтобы сравнивать запуски через неделю, а не только смотреть на экран во время обучения.
Место на диске
Перед большими загрузками проверяйте свободное место командой df -h. Если диск заполнится посреди обучения, сохранение контрольной точки упадёт, и последние шаги могут пропасть.
Если блокнот завис
Если ячейка зависла, а карта простаивает, перезапустите ядро блокнота из меню ядра. Память освободится, но переменные пропадут, поэтому сохраните результаты до перезапуска.
Как не платить за простой
Пока сервер остановлен, GPU не тарифицируется. Остановите его в консоли, когда закончили работу. Диск остаётся и оплачивается, поэтому удаляйте ненужные наборы данных, а сервер, который больше не нужен, удаляйте целиком — после того как скачаете результаты.
- Для экспериментов, которые переживут прерывание, берите прерываемый сервер: он дешевле, но его могут приостановить. Сохраняйте контрольные точки обучения на диск.
- Следите за балансом: предупреждения приходят за 24 часа, 3 часа, 1 час и 15 минут до исчерпания.
Больше приёмов собрано в гайде о том, как не переплачивать за аренду GPU.
Какую карту выбрать
Для LoRA на моделях 7–8B обычно хватает 24 ГБ памяти, а требования по разным задачам разобраны в гайде о выборе GPU для LoRA. Пошаговое обучение без своей карты описано в гайде как обучать нейросети без своей видеокарты. Карты с нужной памятью и текущими ценами — в каталоге GPU.
Вопросы и ответы
- Чем сервер с Jupyter отличается от Google Colab?
- Сессия не обрывается по таймеру, пока сервер запущен. Карту вы выбираете сами, файлы хранятся на диске до удаления сервера, есть SSH. Оплата поминутная, с баланса.
- Можно ли перенести блокнот из Colab без изменений?
- Обычно почти без изменений: формат .ipynb тот же. Нужно заменить строки, которые работают только в Colab: монтирование Google Drive, files.upload и пути /content.
- Как проверить, что ноутбук видит видеокарту?
- Выполните torch.cuda.is_available() в первой ячейке или команду nvidia-smi в терминале.
- Сохраняются ли файлы, если остановить сервер?
- Да. Остановка не удаляет диск. Файлы пропадают только вместе с сервером, поэтому скачайте результаты до удаления.
- Можно ли установить свои пакеты?
- Да. Это Linux-машина: пакеты ставятся через pip и apt. Для чистой системы с драйвером и CUDA подойдёт шаблон Ubuntu + CUDA.
- Работает ли сервис из России?
- Да. Интерфейс доступен на русском языке, цены и баланс — в рублях.