Primeiros Passos

Conectando a Máquina de Acesso

O envio de tarefas para o cluster precisa ser feito a partir de uma máquina de acesso. A entrada na maquina de acesso é realizado através do SSH.

ssh <login>@slurm-client1.cin.ufpe.br

Uma vez conectado na máquina de acesso, é possível alocar e editar seus jobs a partir de comandos slurm. Primeiramente, você precisará preparar seu ambiente de trabalho no servidor que utilizará. Jobs que utilizam máquinas virtuais (Docker e afins) não serão aprovados, pois abrem brechas de segurança. Qualquer biblioteca que necessite de instalação, por favor nos contate e faremos a instalação o mais rápido possível. Para acessar o servidor que realizará o processamento, utilize o comando “salloc” como no exemplo abaixo:

salloc

Nossos servidores já possuem o gerenciador de pacotes conda para qualquer projeto que for realizado em Python. Os comandos de git também estão disponíveis e prontos para uso. Após a preparação do seu ambiente, volte para o nodo de login com o comando “exit” e rode o seu job com o comando srun. Exemplo:

srun –gpus=N_GPUS –cpus-per-task=N_CPUS nvidia-smi

Bibliotecas disponíveis

  • Pytorch = 1.10.2 com Python = 3.9.15

  • Tensorflow = 2.10.0 com Python = 3.10.8

Exemplo com repositório do público do GitHub

Primeiro é necessário clonar o repositório. Obs.: o diretório home do usuário é sincronizado entre todas as máquinas.

  1. git clone https://github.com/username/repoName.git

Depois de clonar o repositório, um script .sh será criado. Uma das alternativas é utilizando o comando nano:

nano test_slurm.sh

Em seguida, o usuário preenche o script com as diretivas do SBATCH que ele achar necessário, e depois com os comandos que devem ser executados no node.

test_slurm.sh

#!/bin/sh
#SBATCH -o slurm-%j.out  # Write the log here
#SBATCH --gres=gpu:1    # Ask for 1 GPU
#SBATCH --output=job_output.txt
#SBATCH --error=job_error.txt

. "/usr/local/anaconda3/etc/profile.d/conda.sh"
conda create –-name myenv
conda activate myenv
conda install python=3.9
conda install pytorch
conda install pandas
conda install matplotlib
conda install seaborn
conda install IPython
python repoName/thisScript.py

Aqui foi realizado o dowgrade da versão do Python de 3.10 para 3.9. Isto foi feito porque ainda existem bugs da classe DataLoader do PyTorch ao utilizar o python 3.10. O conda é bastante versátil neste aspecto, pois pode-se escolher a versão do python e das dependencias mais adequadas para o funcionamento do seu código.

Um exemplo de script que faz uso de tensorflow é apresentado abaixo:

#!/bin/sh
#SBATCH -o slurm-%j.out  # Write the log here
#SBATCH --gres=gpu:1    # Ask for 1 GPU
#SBATCH --output=job_output.txt
#SBATCH --error=job_error.txt

. "/usr/local/anaconda3/etc/profile.d/conda.sh"
conda create -n myenv
conda activate myenv
conda install  tensorflow
python repoName/thisScript.py

Para agendar o job faça:

sbatch test_slurm.sh

Para verificar a posição do job na fila faça:

squeue

Para cancelar o job faça:

scancel job_id

Exemplo com repositório privado do GitHub

Clonando um repositório privado

  1. Foto do perfil
    • Settings

    • Developer settings

    • Personal access tokens

    • Tokens (classic)

    • Generate new token (classic)

    • configurar da forma que desejar

    • Gerar token (salvar em um local seguro para reutilizar)

  2. Copie o token e clone o repositório substituindo o nome do usuário e o token no comando

  3. git clone https://username:token@github.com/username/repoName.git

Em seguida, basta repetir os outros passos do exemplo com repositório público do GitHub.