From 828e8605ff8ab04969e392a49a69f11c03807bd6 Mon Sep 17 00:00:00 2001 From: Valeriy Novitskiy Date: Mon, 2 Sep 2024 12:11:21 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B2=D0=B0=D1=8F=20=D0=B2?= =?UTF-8?q?=D0=B5=D1=80=D1=81=D0=B8=D1=8F=20=D0=B8=D0=BD=D1=81=D1=82=D1=80?= =?UTF-8?q?=D1=83=D0=BA=D1=86=D0=B8=D0=B8=20=D0=BD=D0=B0=D1=81=D1=82=D1=80?= =?UTF-8?q?=D0=BE=D0=B9=D0=BA=D0=B8=20=D1=81=D1=80=D0=B5=D0=B4=D1=8B.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/01_Introduction/Setup.md | 138 +++++++++++++++++++++++++++++++ 1 file changed, 138 insertions(+) create mode 100644 content/01_Introduction/Setup.md diff --git a/content/01_Introduction/Setup.md b/content/01_Introduction/Setup.md new file mode 100644 index 0000000..ec69a3d --- /dev/null +++ b/content/01_Introduction/Setup.md @@ -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.