Skip to content

ai-chem/server_manual

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 

Repository files navigation

📘 Инструкция по работе с кластером aicltr.itmo.ru

1. Как получить доступ к серверу

Чтобы получить доступ к серверу, вам необходимо сначала согласовать это с вашим гайдом.

После того, как вы получите согласие от гайда, вы отправляете одному из ответственных (Юлия Разливина, Ася Орлова):

  • подтверждение, что ваш гайд в курсе и согласовал пользование сервером,
  • почту google;
  • SSH-ключ (см. инструкцию в пункте 2).

Вам дают доступ к тесту, вы его проходите. После выполнения теста необходимо написать ответственному. Если всё в порядке, вам откроют доступ на сервер и пришлют username и пароль ✅

Обычно логином (= username) является первая буква вашего имени + фамилия, например aorlova. Если вдруг не работает, уточните у того, кто выдавал вам доступ.


2. Генерация SSH-ключа 🔑

Откройте терминал и выполните команду:

ssh-keygen -t rsa

На консоль будет выведен следующий диалог:

Enter file in which to save the key (/home/user/.ssh/id_rsa):

➡ Нажмите Enter.

Далее система предложит ввести кодовую фразу для дополнительной защиты:

Enter passphrase (empty for no passphrase):

Этот шаг можно пропустить — просто нажимайте Enter.

После этого ключ будет создан. Перейдите в папку:

  • Linux: /home/<username>/.ssh/
  • Windows: C:\Users\<username>\.ssh\

Там появится пара криптографических ключей id_rsa и id_rsa.pub.

id_rsa - это закрытый (private) ключ, он хранится только у вас, никогда никому не передаётся.

id_rsa.pub - это открытый (public) ключ. Отправьте его ответственному, чтобы получить доступ.


3. Подготовка к работе ⚙️

На сервер можно заходить с помощью разных приложений. Вот несколько вариантов:

1. VS Code

💡 Удобно для разработки и редактирования кода прямо на сервере.

💡 Как подключиться?

  • Установите расширение Remote - SSH
  • После установки расширения в нижнем левом углу появится зеленая иконка
  • Нажмите на эту иконку, чтобы открыть палитру команд. Выберите пункт "Connect to Host..."
  • Введите команду для подключения в формате: ssh [email protected] -i путь/к/ключу, например ssh [email protected] -i /home/aorlova/.ssh/id_rsa
  • В списке доступных хостов выберите тот, который вы добавили.
  • VS Code откроет новое окно, и вы, возможно, увидите запрос на проверку "отпечатка пальца" (fingerprint) сервера. Нажмите "Continue" (Продолжить), чтобы продолжить.
  • Вы подключились. Можете открыть папку проекта для редактирования кода и пользоваться терминалом для запуска команд.

2. Терминал Ubuntu/Linux/macOS

💡 Идеально для тех, кто уверенно работает в командной строке, т.к. здесь у вас нет удобного графического интерфейса для работы с файловой системой и написания кода.

💡 Как подключиться?

  • Введите команду ssh [email protected], где your_login — ваш логин от кластера.
  • При первом подключении через SSH терминал обычно спрашивает о доверии к хосту. Появляется примерно такое сообщение: Are you sure you want to continue connecting (yes/no/[fingerprint])?
  • Отвечайте yes. После этого вы окажетесь на сервере.

3. WinSCP (Windows)

💡 Удобно для работы с файловой системой, но скрипты запускать нельзя.

💡 Как подключиться?

  • Введите:
    • в поле Имя хоста - aicltr.itmo.ru
    • в поле Имя пользователя - ваш логин
  • Нажмите "Еще" и перейдите в раздел Аутентификация.
  • В поле "Файл закрытого ключа" установите путь к приватному ключу. Подтвердите конвертацию формата в Putty, если возникает данный вопрос. Нажмите "Ок".
  • Нажмите "Войти"
  • Слева у вас будет файловая система вашего ПК, а справа - файловая система сервера. Вы сразу оказываетесь в домашней директории. Можете перемещаться между директориями, копировать файлы с ПК на сервер, создавать папки и файлы - в общем, все как в обычном Проводнике Windows.

4. MobaXterm (Windows)

💡 Есть и терминал, и файловый менеджер.

💡 Как подключиться?

  • Session → SSH → Remote host - ввести aicltr.itmo.ru
  • Username - ваш логин
  • Перейдите на вкладку Дополнительные параметры SSH (или "Advanced SSH settings").
  • Найдите поле для указания пути к вашему ключу и укажите путь к нему.
  • Нажмите OK, чтобы сохранить настройки и попытаться подключиться. MobaXterm попытается установить соединение с использованием указанного ключа.

Это лишь несколько наиболее популярных вариантов, выбирайте наиболее удобный(е) для вас. Если возникают вопросы в процессе подключения, пользуйтесь интернетом или ChatGPT. Если не нашли ответ на свой вопрос (что маловероятно), попросите помощи у коллег.


4. О кластере 🖥️

На кластере есть две вычислительные ноды:

  • Сервер aichem (192.168.63.12)
    6 × GPU A6000, 256 ядер, AMD EPYC 7763 (64-Core), 512 GB RAM

  • Сервер aihub (192.168.63.10)
    6 × GPU A6000, 256 ядер, AMD EPYC 7763 (64-Core), 512 GB RAM

⚠️ Студенты и сотрудники Центра ИИ в химии должны пользоваться только нодой aichem

Файловая система

  • Домашние директории: /nfs/home/<user>/ (30GB)
  • Рабочие директории: /mnt/tank/scratch/<user>/ (250GB)

Обычно:

  • Домашняя директория → для установки conda и окружений
  • Рабочая директория → для хранения папок проектов, скриптов, данных и т.п.

Если вы планируете работать с большим кол-вом окружений, вы можете сразу установить conda в рабочую директорию, т.к. в домашней директории гораздо меньше места.


5. Работа с Conda 🐍

Установка Anaconda

Для установки Anaconda нужно перейти в свою домашнюю директорию и выполнить там по очереди команды:

wget https://repo.anaconda.com/archive/Anaconda3-2024.02-1-Linux-x86_64.sh
bash Anaconda3-2024.02-1-Linux-x86_64.sh
source ~/anaconda3/bin/activate
echo ". ~/anaconda3/etc/profile.d/conda.sh" >> ~/.bashrc
source ~/.bashrc

Создание и активация окружения

conda create -n myenv python=3.10
conda activate myenv

⚠️ В base лучше ничего не устанавливать! Для каждого проекта создавайте своё окружение.


6. Подготовка и запуск скриптов 📝

Задача запускается через bash-скрипт:

  1. Напишите свой .py скрипт (например, my_script.py)
  2. Создайте файл запуска (например, file.sh)

Пример file.sh

#!/bin/sh
python my_script.py

⚠️ Строчка #!/bin/sh обязательна!

Запуск через SLURM

На кластере работает система управления очередью задач SLURM. Запуск задач осуществляется через команду sbatch:

sbatch --cpus-per-task=10 -p aichem --gres=gpu:1 --mem=20G --time=05:00:00 --error=jobname.err file.sh

Параметры:

  • --cpus-per-task=10 — число CPU-ядер
  • -p aichem — очередь (partition)
  • --gres=gpu:1 — число GPU (Базово можно использовать не больше 1! При необходимости увеличить лимит, обращайтесь к ответственному.)
  • --mem=20G — память
  • --time=05:00:00 — лимит времени
  • --error=jobname.err — файл ошибок

⚠️ Обязательно указывайте --time! Если не знаете, сколько времени будет работать задача, указывайте такой лимит, через который вы её точно убъете. Можно использовать в виде --time=3-0 --- TL = 3 дня.

Если программа захочет больше ресурсов (больше памяти, или будет дольше работать), она будет автоматически остановлена.

Пример команды без использования GPU:

sbatch --cpus-per-task=10 -p aichem --mem=20G --time=05:00:00 --error=jobname.err file.sh

7. Мониторинг задач 📊

  • Проверить очередь:

    squeue

    Вы увидите вот такую сводку. Здесь можно посмотреть ID вашей задачи (этот же ID используйте, чтобы отменить задачу, см. ниже), на какой ноде она была запущена, время выполнения задачи (сколько уже прошло с момента запуска). Если задача вылетела с ошибкой, она вылетает из этой сводки, в таком случае нужно идти проверять файл .err. Если вы превысили кол-во разрешенных ресурсов (например, запустили 3 задачи, в каждой из которых используется по 1 GPU, то есть всего 3 GPU, что запрещено), в NODELIST (REASON) будет написано (QOSMaxGRESPerUser). Можете подождать, пока одна из задач исполнится, тогда другая задача начнет выполняться, либо отменить ее и запустить позже.

    JOBID  PARTITION  NAME      USER      ST  TIME        NODES  NODELIST(REASON)
    4506   aichem     GluSerGl  vgvozdev  R   5:26:59     1      aichem
    4473   aichem     boltz_pa  ikarpush  R   1-15:17:13  1      aichem
    4503   aichem     boltz_pa  pshestun  R   5:36:56     1      aichem
    4513   aichem     cl_scree  enam      R   1:58:08     1      aichem
    4494   aihub      bash      rgurtsie  R   1-01:03:55  1      aihub
  • Отменить задачу с ID 123:

    scancel 123
  • Проверить ошибки прямо из терминала, не открывая файл:

    cat jobname.err

8. Запуск Jupyter Notebook 📓

  1. Перейдите в папку, где лежит файл .ipynb.
  2. Узнайте IP ноды:
    hostname -I
    Выберите первый IP.
  3. Запустите GPU-ноду на сервере:
    srun --cpus-per-task=10 -p aichem --mem=20G --time=12:00:00 --pty bash
  4. На локальном ноутбуке пробросьте порт:
    ssh -N -L localhost:8000:<ip_ноды>:8000 [email protected]
  5. На сервере:
    jupyter notebook --ip=<ip_ноды> --NotebookApp.token='' --NotebookApp.password='' --port 8000
  6. В браузере откройте: http://localhost:8000

⚠️ Если не работает, возможно, этот порт уже занят. Можно попробовать другие порты: 8888, 8889, 8890 и т.п. Номер порта во всех командах должен быть одинаковый.


9. Перенос файлов 📂

Файлы с личного ПК на сервер и обратно можно переносить либо с помощью файлового менеджера (например, WinSCP), либо с помощью команды scp:

Из локального ПК на сервер

scp /путь/к/локальному_файлу user@server:/путь/на/сервере/

С сервера на локальный ПК

scp user@server:/путь/на/сервере/имя_файла /путь/к/локальной_папке/

10. Советы по управлению пространством 🗄️

Полезные команды

du -sh *       # размер всех папок
du -sh .       # общий размер директории
du -sh ~/anaconda3/envs/*  # размер окружений conda

Очистка места

  • Очистка conda от ненужных файлов:
    conda clean --all
  • Удаление окружения:
    conda env remove -n myenv
  • Архивирование папки:
    tar -czvf project.tar.gz project/

11. Использование видеокарт ℹ️

С помощью данной команды:

  srun --cpus-per-task=1 -p aichem --gres=gpu:0 --mem=1G nvidia-smi -l

можно посмотреть текущее состояние GPU от NVIDIA: загрузку, температуру, используемую память, активные процессы и др. Разберём типичный вывод по блокам.

Заголовок

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 535.113.01    Driver Version: 535.113.01    CUDA Version: 12.2   |
+-----------------------------------------------------------------------------+
  • NVIDIA-SMI — версия самой утилиты.
  • Driver Version — версия драйвера NVIDIA, установленного в системе.
  • CUDA Version — максимальная версия CUDA Toolkit, поддерживаемая этим драйвером.

Таблица GPU

| 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  NVIDIA RTX A6000     On  | 00000000:65:00.0 Off |                  Off |
| 30%   45C    P0    75W / 300W |   512MiB / 49152MiB  |     15%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
  • GPU / Name — номер и модель видеокарты.
  • Temp — температура (°C).
  • Pwr: Usage/Cap — текущее энергопотребление и максимум.
  • Memory-Usage — сколько памяти занято и сколько всего есть.
  • GPU-Util — загрузка ядра (%).

Активные процессы

| GPU   PID   Type   Process name              GPU Memory Usage   |
|    0  1234      C   python train.py                5000MiB      |
  • PID — ID процесса в ОС.
  • Type — C (вычисления) или G (графика/дисплей).
  • Process name — какая программа использует GPU.
  • GPU Memory Usage — сколько памяти она заняла.

Перед выполнением с помощью этой команды можно посмотреть свободные ресурсы и выбрать карту, на которую вы хотите направить свои вычисления. Для этого в file.sh после #!/bin/sh надо прописать строку export CUDA_VISIBLE_DEVICES=2,3 (номер или номера выбранных вами карт).

Не обязательно это делать всегда, только если ваша задача не запускается на карте, которая выбирается по дефолту.


12. Базовые команды Linux 🐧

Команда Описание
pwd показать текущую директорию
ls список файлов
ls -lh список с размерами
cd folder перейти в папку
cd .. на уровень выше
mkdir new_folder создать папку
rm file.txt удалить файл
rm -r folder удалить папку с содержимым
cp file1 file2 скопировать
mv file1 file2 переместить
vi file.txt редактировать
cat file.txt вывести содержимое
head -n 10 file.txt первые 10 строк
tail -n 10 file.txt последние 10 строк

✅ Примерный сценарий работы

  1. Захожу в папку /mnt/tank/scratch/user/Project
  2. Создаю file.py
  3. Создаю file.sh
  4. Активирую окружение
  5. Запускаю через sbatch (≤2 GPU, указываю время работы)
  6. Если проект завершён → удаляю окружение и архивирую 📦

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published