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.
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
- 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)
Copie o token e clone o repositório substituindo o nome do usuário e o token no comando
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.