generated from yandexdataschool/sphinx-lesson-template
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Первая версия инструкции настройки среды.
- Loading branch information
Showing
1 changed file
with
138 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,138 @@ | ||
# Настройка рабочего окружения | ||
|
||
## Доступ на сервер | ||
|
||
Описание доступных серверов есть в [официальной инструкции](https://docs.google.com/document/d/1oW1I6Ec2QIC1B3RQON4FwiSx6PjXCH8nOZxJGoQnQEk/edit#heading=h.i4z3eccegkh6). Для пользования серверами нужно её изучить. | ||
|
||
Нас будет интересовать в первую очередь сервер `imladris` и карты RTX A4000 на нём. Обратите внимание, что на сервере стоят как [RTX 4000](https://blogs.nvidia.com/blog/quadro-rtx-4000/) (поколение Turing, то же, что и 2070), так и гораздо более современные [RTX A4000](https://www.nvidia.com/en-us/design-visualization/rtx-4000/) (Ada, то же, что и 4070). Для первых заданий это не имеет значения, для последующих — может быть важно. | ||
|
||
Для доступа к серверам нужно заполнить форму, ссылка на которую есть в разделе «Новые GPU-сервера → Доступ на сервер». После одобрения заявки нужно настроить `~/.ssh/config` (Linux, Mac, WSL) или сессию в Putty (Windows) по инструкции из того же раздела. | ||
|
||
Опционально: пробрасываем [ключи](https://help.ubuntu.com/community/SSH/OpenSSH/Keys) на сервер для входа без пароля (Linux, Mac, WSL): | ||
* `ssh-copy-id imladris` (ключи должны быть предварительно сгенерированы командой `ssh-keygen -t rsa`) | ||
* Проверяем, что вход работает теперь без пароля: `ssh imladris` | ||
|
||
На сервере проверяем, что нам доступны видеокарты через команду `nvidia-smi`: | ||
``` | ||
$ nvidia-smi | ||
Mon Aug 26 19:42:50 2024 | ||
+-----------------------------------------------------------------------------------------+ | ||
| NVIDIA-SMI 560.28.03 Driver Version: 560.28.03 CUDA Version: 12.6 | | ||
|-----------------------------------------+------------------------+----------------------+ | ||
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC | | ||
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. | | ||
| | | MIG M. | | ||
|=========================================+========================+======================| | ||
| 0 Quadro RTX 4000 On | 00000000:02:00.0 Off | N/A | | ||
| 30% 26C P8 9W / 125W | 1MiB / 8192MiB | 0% Default | | ||
| | | N/A | | ||
+-----------------------------------------+------------------------+----------------------+ | ||
| 1 NVIDIA RTX A4000 On | 00000000:05:00.0 Off | Off | | ||
| 41% 37C P8 15W / 140W | 2MiB / 16376MiB | 0% Default | | ||
| | | N/A | | ||
+-----------------------------------------+------------------------+----------------------+ | ||
| 2 NVIDIA RTX A4000 On | 00000000:06:00.0 Off | Off | | ||
| 41% 33C P8 13W / 140W | 2MiB / 16376MiB | 0% Default | | ||
| | | N/A | | ||
+-----------------------------------------+------------------------+----------------------+ | ||
| 3 Quadro RTX 4000 On | 00000000:81:00.0 Off | N/A | | ||
| 30% 29C P8 7W / 125W | 1MiB / 8192MiB | 0% Default | | ||
| | | N/A | | ||
+-----------------------------------------+------------------------+----------------------+ | ||
| 4 Quadro RTX 4000 On | 00000000:82:00.0 Off | N/A | | ||
| 30% 26C P8 10W / 125W | 1MiB / 8192MiB | 0% Default | | ||
| | | N/A | | ||
+-----------------------------------------+------------------------+----------------------+ | ||
| 5 Quadro RTX 4000 On | 00000000:85:00.0 Off | N/A | | ||
| 30% 30C P8 8W / 125W | 1MiB / 8192MiB | 0% Default | | ||
| | | N/A | | ||
+-----------------------------------------+------------------------+----------------------+ | ||
| 6 Quadro RTX 4000 On | 00000000:86:00.0 Off | N/A | | ||
| 30% 30C P8 9W / 125W | 1MiB / 8192MiB | 0% Default | | ||
| | | N/A | | ||
+-----------------------------------------+------------------------+----------------------+ | ||
+-----------------------------------------------------------------------------------------+ | ||
| Processes: | | ||
| GPU GI CI PID Type Process name GPU Memory | | ||
| ID ID Usage | | ||
|=========================================================================================| | ||
| No running processes found | | ||
+-----------------------------------------------------------------------------------------+ | ||
``` | ||
|
||
Карты `NVIDIA RTX A4000` (GPU#1, GPU#2) — нового поколения, карты `Quadro RTX 4000` (GPU#0, GPU#3-6) — более старые. | ||
|
||
Другая полезная информация: | ||
* Версия CUDA (12.6) — для чтения [актуальной документации](https://developer.nvidia.com/cuda-toolkit-archive). | ||
* Какие карты и чем заняты (см. «No running processes found», сейчас всё свободно). См. также утилиту `nvtop`. | ||
* Для каждой карты указана степень её загрузки (`GPU-Util`) и объём занятой памяти (`Memory-Usage`). | ||
|
||
## Редактирование файлов на удалённой машине | ||
|
||
Disclaimer: редакторы `vim`, `emacs` и их производные тут не рассматриваются. Если вы умеете ими пользоваться, то дальнейшие инструкции можете смело пропустить. | ||
|
||
Наш курс предполагает программирование на C++, поэтому редактирование файлов через Jupyter Notebook здесь также не рассматривается. Но и не запрещается, если вам так удобно. | ||
|
||
### Редактор `nano` | ||
|
||
Простой консольный аналог Блокнота с подсветкой синтаксиса из коробки. Подходит для небольших правок. | ||
|
||
```bash | ||
$ nano test.py | ||
``` | ||
|
||
Нижняя строка содержит подсказки основных команд (могут быть кликабельны): | ||
* `^G` (`Ctrl/Cmd-G`) — справка. | ||
* `^O` (`Ctrl/Cmd-O`) — сохранить сделанные правки. | ||
* `^X` (`Ctrl/Cmd-X`) — выход (если файл был изменён, предложит сохранить). | ||
* `M-U`/`M-E` (`Alt/Option-U`/`Alt/Option-E`) — undo/redo. | ||
* Навигация — стрелками. | ||
|
||
Попробуйте ввести `print("Hello, world!")`, нажать `Ctrl/Cmd-X`, подтвердить сохранение (`y`) и запустить полученный файл: `python3 test.py`. | ||
|
||
### Копирование файлов по `scp`/`pscp` (Putty) | ||
|
||
Редактировать файлы можно на своём компьютере в своём любимом редакторе, копируя их для исполнения на удалённую машину. Важно соблюдать следующие требования к формату файлов: | ||
* Кодировка `utf-8` (без `BOM`, не `utf-8-sig`). | ||
* Перевод строк через `\n` (`LF`). Не подходят `\r\n` (`CRLF`) | ||
|
||
Далее копируем на удалённую машину, заходим, запускаем: | ||
```bash | ||
scp ~/test.py imladris:~ | ||
ssh imladris | ||
python3 test.py | ||
``` | ||
|
||
Для WSL (Windows) путь к локальному файлу на условном рабочем столе будет выглядеть примерно так: | ||
```bash | ||
scp /mnt/c/Users/MyLogin/Desktop/test.py imladris:~ | ||
ssh imladris | ||
python3 test.py | ||
``` | ||
|
||
Putty: | ||
```cmd | ||
cd c:\Users\MyLogin\Desktop | ||
pscp test.py imladris:~ | ||
``` | ||
(заходим через Putty и так же запускаем: `python3 test.py`) | ||
|
||
Более продвинутый вариант синхронизации (через `rsync` будет рассмотрен позже, когда проект разрастётся в более чем один файл). | ||
|
||
### Синхронизация через удалённый репозиторий | ||
|
||
Можно использовать github (или другой доступный вам репозиторий/систему контроля версий) для переноса правок с машины на машину. | ||
|
||
Этот способ требует достаточно большого количества действий (`git commit -a *`/`git push`/`git pop`) и предварительной настройки рабочих копий. В рамках данного курса это кажется избыточным, но для полноты картины и этот способ упомянут. Если вы знаете, что делать и вам так удобно — можно пользоваться. | ||
|
||
### VS Code | ||
|
||
Благодаря плагину Remote SSH этот редактор позволяет редактировать файлы на удалённой машине практически как на локальной. Он есть под все актуальные операционные системы, но требует некоторой предварительной настройки (как редактора, так и себя). | ||
|
||
Здесь мы рассмотрим минимальный «джентльменский набор», который позволит редактировать файлы удалённо. | ||
|
||
* https://code.visualstudio.com/ — сайт проекта. | ||
* https://code.visualstudio.com/docs — возможно, слишком подробное getting started. | ||
|
||
TODO: минимальные шаги настройки vs code. |