TensorFlow - lncc-sered/manual-sdumont2nd GitHub Wiki
1) Primeiro, é necessário criar um ambiente virtual do conda, conforme descrito aqui.
module load anaconda3/2024.10 conda create --prefix $HOME/conda-env/test-tf python=3.12
2) Ativar o virtual env:
source activate $SCRATCH/conda-env/test-tf
3) Instalar o TensorFlow
pip install tensorflow[and-cuda]
Testando a execução do TensorFlow através de um script de exemplo (teste-tf.py):
import tensorflow as tf
print("Num GPUs Available: ", len(tf.config.list_physical_devices('GPU')))
print(tf.config.list_physical_devices('GPU'))
print(tf.reduce_sum(tf.random.normal([1000, 1000])))
Script de submissão (sub_tf_conda.srm):
#!/bin/bash
#SBATCH --nodes=1 #Numero de Nos
#SBATCH -p lncc-h100_dev #Fila (partition) a ser utilizada
#SBATCH -J tensorflow_conda #Nome job
#SBATCH --gpus=1 #Numero total de GPUS
#Exibe os nós alocados para o Job
echo $SLURM_JOB_NODELIST
nodeset -e $SLURM_JOB_NODELIST
cd $SLURM_SUBMIT_DIR
#Configura os Módulos
module load anaconda3/2024.10
#Ativa o ambiente conda
source activate $SCRATCH/conda-env/test-tf
#Exibe as GPUs disponiveis
nvidia-smi
#Verificando se está utilizando o python do local correto (ambiente conda)
which python3
#Executa o Tensorflow
python3 ./teste-tf.py
Referência: https://catalog.ngc.nvidia.com/orgs/nvidia/containers/tensorflow
Lista das verões (tags): https://catalog.ngc.nvidia.com/orgs/nvidia/containers/tensorflow/tags
Versão do exemplo: 25
Exemplo utilizando 1 nó e 1 GPUs por nó, com o mesmo script teste-tf.py utilizado acima.
As imagens dos container disponíveis no catálogo da NVidia e compatíveis com o SDumont2nd já está presentes dentro do sistema de armazenamento, não sendo necessário o Download.
Os módulos disponíveis, conforme exemplos abaixo, configuram a variável de ambiente $TF_IMAGE com o caminho correto da imagem, visando facilitar a utilização do script.
Script sub_tf_container_h100.srm
#!/bin/bash
#SBATCH --nodes=1 #Numero de Nos
#SBATCH -p lncc-h100_dev #Fila (partition) a ser utilizada
#SBATCH -J tensorflow #Nome job
#SBATCH --gpus-per-node=1 #Numero total de GPUS
#Exibe os nós alocados para o Job
echo $SLURM_JOB_NODELIST
nodeset -e $SLURM_JOB_NODELIST
cd $SLURM_SUBMIT_DIR
module load arch_gpu
module load tensorflow/25.02-tf2-py3_nv_container
export SINGULARITY="singularity run --nv -B ${PWD}:/host_pwd --pwd /host_pwd $TF_IMAGE"
${SINGULARITY} python3 ./teste-tf.py
Script sub_tf_container_gh200.srm
#!/bin/bash
#SBATCH --nodes=1 #Numero de Nos
#SBATCH -p lncc-gh200_dev #Fila (partition) a ser utilizada
#SBATCH -J tensorflow #Nome job
#SBATCH --gpus-per-node=1 #Numero total de GPUS
#Exibe os nós alocados para o Job
echo $SLURM_JOB_NODELIST
nodeset -e $SLURM_JOB_NODELIST
cd $SLURM_SUBMIT_DIR
module load arch_gpu_sc
module load tensorflow/25.02-tf2-py3_nv_container
export SINGULARITY="singularity run --nv -B ${PWD}:/host_pwd --pwd /host_pwd $TF_IMAGE"
${SINGULARITY} python3 ./teste-tf.py
EM CONSTRUÇÃO