Pular para conteúdo

Python

Visão geral

Python é uma linguagem de programação extremamente versátil, amplamente utilizada para ciência de dados, aprendizado de máquina e computação científica. No cluster, você pode carregar diferentes versões do Python e criar ambientes virtuais para gerenciar pacotes de maneira isolada.

Este guia mostra como configurar e usar Python de forma eficiente no ambiente HPC.

Verificar versões disponíveis

Antes de começar, verifique quais versões do Python estão disponíveis como módulos:

# Listar módulos Python disponíveis
module avail python

# Ver detalhes de um módulo específico
module spider python/3.10

Criar ambiente virtual

Passo a Passo

1. Carregar o Python

module load python/3.10

2. Escolher onde criar o ambiente

Onde criar ambientes virtuais

  • Ambientes pequenos (< 5 GB): /home/$USER/venvs/
  • Ambientes grandes ou compartilhados: /scratch/projetos/<seu_projeto>/envs/

Exemplo:

# Para ambiente pessoal
mkdir -p ~/venvs

# Para ambiente de projeto
mkdir -p /scratch/projetos/<seu_projeto>/envs

3. Criar o ambiente virtual

# Ambiente pessoal
python -m venv ~/venvs/meu_ambiente

# Ou para projeto
python -m venv /scratch/projetos/<seu_projeto>/envs/meu_ambiente

4. Ativar o ambiente

# Ambiente pessoal
source ~/venvs/meu_ambiente/bin/activate

# Ou para projeto
source /scratch/projetos/<seu_projeto>/envs/meu_ambiente/bin/activate

Quando ativo, você verá o nome do ambiente no prompt:

(meu_ambiente) [usuario@login0 ~]$

5. Instalar pacotes

# Atualizar pip primeiro
pip install --upgrade pip

# Instalar pacotes
pip install numpy pandas matplotlib scikit-learn

# Instalar de arquivo requirements.txt
pip install -r requirements.txt

# Listar pacotes instalados
pip list

6. Criar requirements.txt

Para reproduzibilidade, salve seus pacotes:

pip freeze > requirements.txt

7. Desativar o ambiente

deactivate

Usar Python em jobs SLURM

Job simples

#!/bin/bash
#SBATCH --job-name=python_job
#SBATCH --output=/scratch/projetos/<seu_projeto>/logs/job_%j.out
#SBATCH --error=/scratch/projetos/<seu_projeto>/logs/job_%j.err
#SBATCH --time=01:00:00
#SBATCH --cpus-per-task=4
#SBATCH --mem=8G

# Carregar Python
module load python/3.10

# Ativar ambiente virtual
source ~/venvs/meu_ambiente/bin/activate

# Executar script
python meu_script.py

Job com processamento paralelo

#!/bin/bash
#SBATCH --job-name=python_parallel
#SBATCH --output=/scratch/projetos/<seu_projeto>/logs/parallel_%j.out
#SBATCH --time=04:00:00
#SBATCH --cpus-per-task=16
#SBATCH --mem=32G

module load python/3.10
source ~/venvs/ciencia_dados/bin/activate

# Configurar variáveis de ambiente para bibliotecas NumPy/SciPy
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK
export MKL_NUM_THREADS=$SLURM_CPUS_PER_TASK
export OPENBLAS_NUM_THREADS=$SLURM_CPUS_PER_TASK

# Executar com multiprocessing
python processamento_paralelo.py --workers $SLURM_CPUS_PER_TASK

Job array

Para processar múltiplos arquivos ou parâmetros:

#!/bin/bash
#SBATCH --job-name=python_array
#SBATCH --output=/scratch/projetos/<seu_projeto>/logs/array_%A_%a.out
#SBATCH --array=1-10
#SBATCH --time=02:00:00
#SBATCH --cpus-per-task=2

module load python/3.10
source ~/venvs/meu_ambiente/bin/activate

# Usar SLURM_ARRAY_TASK_ID como parâmetro
python processar_arquivo.py --id $SLURM_ARRAY_TASK_ID

Consulte exemplos completos de jobs SLURM para mais opções.

Boas práticas

1. Organização de Ambientes

# Criar estrutura organizada
~/venvs/
├── analise_dados/      # Para análise de dados
├── machine_learning/   # Para ML
└── web_scraping/       # Para scraping

# Ou por projeto
/scratch/projetos/<seu_projeto>/envs/
├── producao/
└── desenvolvimento/

2. Gerenciar Quotas

Ambientes Python podem crescer rapidamente. Monitore o tamanho:

# Verificar tamanho do ambiente
du -sh ~/venvs/meu_ambiente

# Limpar cache do pip
pip cache purge

3. Usar requirements.txt

Sempre mantenha um arquivo requirements.txt atualizado:

# Criar/atualizar
pip freeze > requirements.txt

# Reinstalar em novo ambiente
pip install -r requirements.txt

4. Especificar Versões

No requirements.txt, especifique versões exatas para reproduzibilidade:

numpy==1.24.3
pandas==2.0.3
scikit-learn==1.3.0

5. Usar Cache Local do Pip

Para evitar downloads repetidos, configure cache local:

# Adicionar ao ~/.bashrc
export PIP_CACHE_DIR=/scratch/projetos/<seu_projeto>/.pip_cache

Pacotes comuns para ciência de dados

Análise de Dados

pip install numpy pandas scipy matplotlib seaborn

Machine Learning

pip install scikit-learn tensorflow torch

Processamento Paralelo

pip install dask joblib multiprocessing

Visualização

pip install plotly bokeh altair

Jupyter Notebooks

Para usar Jupyter no cluster:

# Instalar no ambiente
pip install jupyter jupyterlab

# Iniciar (em job interativo ou como job)
jupyter notebook --no-browser --port=8888

Veja o guia completo de Jupyter para configuração de túnel SSH.

Problemas comuns

ImportError após instalar pacote

Problema: Pacote instalado mas Python não encontra.

Solução:

# Verificar se ambiente está ativado
which python

# Deve mostrar o caminho do ambiente, não /usr/bin/python
# Se não, ative o ambiente novamente
source ~/venvs/meu_ambiente/bin/activate

Falta de espaço em /home

Problema: Quota excedida ao instalar pacotes.

Solução:

# Mover ambiente para /scratch
mv ~/venvs/meu_ambiente /scratch/projetos/<seu_projeto>/envs/

# Criar link simbólico
ln -s /scratch/projetos/<seu_projeto>/envs/meu_ambiente ~/venvs/meu_ambiente

Pacotes requerem compilação

Problema: Erro ao instalar pacotes que precisam de compilação (ex: numpy, scipy).

Solução:

# Carregar compilador
module load gcc/11.2.0

# Ou usar binários pré-compilados
pip install --only-binary :all: numpy

Versão incompatível do Python

Problema: Pacote requer versão específica do Python.

Solução:

# Listar versões disponíveis
module avail python

# Carregar versão apropriada
module load python/3.11

# Criar novo ambiente com essa versão
python -m venv ~/venvs/meu_ambiente_py311

Remover ambiente virtual

Quando não precisar mais do ambiente:

# Desativar se estiver ativo
deactivate

# Remover diretório
rm -rf ~/venvs/meu_ambiente

Recursos adicionais

Suporte

Se você encontrar problemas ao usar Python no cluster:

  • Verifique se o módulo está carregado: module list
  • Verifique se o ambiente está ativado: which python
  • Consulte nossa página de suporte
  • Entre em contato: hpc@fieb.org.br