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
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:
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:
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:
7. Desativar o ambiente
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:
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:
5. Usar Cache Local do Pip¶
Para evitar downloads repetidos, configure cache local:
Pacotes comuns para ciência de dados¶
Análise de Dados¶
Machine Learning¶
Processamento Paralelo¶
Visualização¶
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:
Recursos adicionais¶
- Exemplos de Jobs SLURM com Python
- Gerenciamento de arquivos
- Guia de Conda (alternativa ao venv)
- Documentação oficial do Python
- Guia do pip
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