Начало работы
VS Code Remote SSH и Jupyter на GPU-сервере
Редактируйте, запускайте и отлаживайте код на GPU сервера прямо с ноутбука, оставляйте блокноты Jupyter доступными только через SSH и эффективно переносите датасеты.
На этой странице
gpu1.
Подключение VS Code через Remote-SSH
- Установите в VS Code расширение Remote - SSH от Microsoft.
- Откройте палитру команд (F1), выполните
и выберитеRemote-SSH : Connect to Host...gpu1. Хосты из вашего~/.ssh/configотображаются в списке. - При первом подключении VS Code устанавливает свой серверный компонент в
~/.vscode-server на GPU-сервере. Это занимает около минуты. - Откройте папку на сервере через File > Open Folder, например
/data/projects. - Установите расширения Python и Jupyter на удалённой стороне: в панели Extensions у них есть кнопка Install in SSH: gpu1.
Для проверки откройте терминал в VS Code и выполните . Вы должны увидеть GPU сервера, а в левом нижнем углу — SSH: gpu1. Выберите виртуальное окружение своего проекта командой Python: Select Interpreter. VS Code также умеет открывать блокноты .ipynb прямо через это подключение, без туннеля.
Процессы, запущенные в терминале VS Code, зависят от подключения VS Code. Запускайте обучение внутри tmux, как показано ниже, чтобы оно не прервалось, когда ноутбук уйдёт в спящий режим.
Запуск JupyterLab через SSH-туннель
- На сервере создайте окружение и установите JupyterLab:
sudo apt install -y python3-venv python3 -m venv ~/venvs/lab source ~/venvs/lab/bin/activate pip install jupyterlab Запустите его внутри tmux так, чтобы он слушал только loopback-интерфейс :
JupyterLab выведет URL с токеном, напримерtmux new -s lab source ~/venvs/lab/bin/activate jupyter lab --no-browser --ip=127.0.0.1 --port=8888http://127.0.0.1:8888/lab?token=.... Отключитесь от сессии: Ctrl+B, затем D.- На ноутбуке откройте туннель и не закрывайте его:
ssh -N -L 8888:127.0.0.1:8888 gpu1 - Вставьте в браузер полный URL вместе с токеном.
Для проверки откройте Terminal из панели запуска JupyterLab и выполните : вы должны увидеть GPU сервера. Установите свой фреймворк в то же окружение, чтобы его можно было импортировать в блокнотах; установка описана в руководстве по PyTorch и vLLM.
Никогда не запускайте Jupyter с , потому что опубликованные порты обходят ufw, как объясняется в руководстве по файрволу.
Сохранение сессий с помощью tmux
Благодаря tmux командные оболочки и их процессы продолжают работать на сервере после того, как вы отключились. Если tmux не установлен, установите его командой sudo apt install . Команды, которые понадобятся чаще всего:
| Действие | Команда или клавиши |
|---|---|
| Новая именованная сессия | tmux new |
| Отключение от сессии | Ctrl+B, затем D |
| Список сессий | tmux ls |
| Возврат в сессию | tmux attach |
| Новое окно, следующее окно | Ctrl+B, затем C; Ctrl+B, затем N |
| Прокрутка назад | Ctrl+B, затем [ (выход — Q) |
| Завершение сессии | tmux |
Сессии сохраняются при обрыве соединения, но не при перезагрузке. Дублируйте вывод обучения в файл, например python3 train.py 2>&1 | tee train.log, чтобы прочитать его позже.
Перенос данных с помощью rsync и scp
rsync копирует только изменения и продолжает прерванные передачи, что важно для датасетов и чекпоинтов. Он должен быть установлен с обеих сторон: в Ubuntu — sudo apt install , а в Windows используйте WSL или scp.
# upload a dataset (the trailing slash copies the folder's contents)
rsync -avP ./dataset/ gpu1:/data/dataset/
# download checkpoints
rsync -avP gpu1:/data/checkpoints/run-01/ ./run-01/
# preview a mirror before running it for real
rsync -avP --delete --dry-run ./code/ gpu1:/data/projects/code/
сохраняет права доступа и временные метки, выводит список файлов, а показывает прогресс и сохраняет частично переданные файлы, чтобы повторный запуск продолжил передачу. удаляет в месте назначения файлы, которых нет в источнике, поэтому сначала попробуйте его с . Для одного файла достаточно scp:
scp model.safetensors gpu1:/data/models/
scp gpu1:/data/results/metrics.csv .
Чтобы перенести данные между двумя своими серверами, запустите rsync на одном и укажите другой в качестве цели. Если у вас подключена частная сеть, используйте частный адрес, чтобы передача шла не через публичный интерфейс. Пути в /data предполагают, что вы
Устранение неполадок
- VS Code не подключается, хотя ssh gpu1 работает. Выполните
и подключитесь снова. Установка также не удаётся, если домашний каталог заполнен; проверьте его командойRemote-SSH : Kill VS Code Server on Host...df.-h ~ - bind: Address already in use при открытии туннеля. Порт 8888 на вашем ноутбуке занят другой программой. Выберите другой локальный порт, например
, и откройте в браузере порт 8890.-L 8890:127.0.0.1:8888 - Jupyter не принимает токен. Активируйте окружение и выполните на сервере
jupyter server list: команда выведет текущий URL и токен.
Не получается?
Создайте тикет в личном кабинете: укажите сервер, что вы запускали, и приложите вывод ошибок, если он есть. Инженеры отвечают круглосуточно.