Pular para conteúdo

Conda

Visão geral

Conda é uma ferramenta robusta para gestão de ambientes e pacotes de software, amplamente adotada nas áreas de ciência de dados e computação científica. Ela possibilita a criação de ambientes isolados com diferentes versões de pacotes, facilitando a compatibilidade entre dependências.

Este guia mostra como usar Conda de forma eficiente no cluster HPC.

Licenciamento Anaconda

Devido a restrições de licença do Anaconda, recomendamos usar Conda através do canal conda-forge para uso acadêmico e comercial sem restrições.

Verificar disponibilidade

# Verificar se Conda está disponível como módulo
module avail conda

# Ou verificar Miniconda
module avail miniconda

Configuração inicial

Opção 1: Usar Conda do Módulo

# Carregar módulo Conda
module load conda

# Inicializar Conda (primeira vez)
conda init bash

# Recarregar shell ou fazer login novamente
source ~/.bashrc

Opção 2: Instalar Miniconda Pessoal

Se preferir ter sua própria instalação do Conda:

# Baixar Miniconda
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh

# Instalar (escolha local apropriado)
bash Miniconda3-latest-Linux-x86_64.sh -b -p ~/miniconda3

# Inicializar
~/miniconda3/bin/conda init bash
source ~/.bashrc

Configurar conda

Configurar conda-forge como canal padrão

# Adicionar conda-forge
conda config --add channels conda-forge

# Definir prioridade estrita
conda config --set channel_priority strict

# Verificar configuração
conda config --show channels

Configurar diretório de pacotes e envs

Onde criar ambientes Conda

  • Ambientes pequenos (< 10 GB): /home/$USER/miniconda3/envs/
  • Ambientes grandes: /scratch/projetos/<seu_projeto>/conda_envs/
# Configurar local de ambientes
conda config --add envs_dirs /scratch/projetos/<seu_projeto>/conda_envs
conda config --add pkgs_dirs /scratch/projetos/<seu_projeto>/.conda_pkgs

# Verificar configuração
conda config --show envs_dirs
conda config --show pkgs_dirs

Gerenciar ambientes

Criar ambiente

# Criar ambiente com Python específico
conda create --name meu_ambiente python=3.10

# Criar com pacotes iniciais
conda create --name ciencia_dados python=3.10 numpy pandas matplotlib

# Criar de arquivo environment.yml
conda env create -f environment.yml

Ativar/Desativar ambiente

# Ativar
conda activate meu_ambiente

# Desativar
conda deactivate

Listar ambientes

# Listar todos os ambientes
conda env list

# Ou
conda info --envs

Remover ambiente

conda env remove --name meu_ambiente

Instalar pacotes

Instalação básica

# Ativar ambiente primeiro
conda activate meu_ambiente

# Instalar pacote
conda install numpy

# Instalar múltiplos pacotes
conda install numpy pandas scipy matplotlib

# Instalar de canal específico
conda install -c conda-forge scikit-learn

# Instalar versão específica
conda install python=3.11

Atualizar pacotes

# Atualizar pacote específico
conda update numpy

# Atualizar todos os pacotes
conda update --all

# Atualizar Conda em si
conda update conda

Listar pacotes

# Listar pacotes no ambiente atual
conda list

# Buscar pacote disponível
conda search tensorflow

Usar conda em jobs SLURM

Job simples

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

# Inicializar Conda
source ~/miniconda3/etc/profile.d/conda.sh

# Ou se usar módulo
# module load conda

# Ativar ambiente
conda activate meu_ambiente

# Executar script
python analise.py

Job com GPU (TensorFlow/PyTorch)

#!/bin/bash
#SBATCH --job-name=deep_learning
#SBATCH --partition=gpu
#SBATCH --gpus=1
#SBATCH --cpus-per-task=4
#SBATCH --mem=32G
#SBATCH --time=08:00:00
#SBATCH --output=/scratch/projetos/<seu_projeto>/logs/gpu_%j.out

# Carregar módulos necessários
module load cuda/11.8

# Inicializar Conda
source ~/miniconda3/etc/profile.d/conda.sh

# Ativar ambiente
conda activate pytorch_env

# Executar treinamento
python treinar_modelo.py

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

Exportar/importar ambientes

Criar arquivo environment.yml

# Exportar ambiente atual
conda env export > environment.yml

# Ou apenas dependências principais
conda env export --from-history > environment.yml

Exemplo de environment.yml:

name: meu_ambiente
channels:
  - conda-forge
  - defaults
dependencies:
  - python=3.10
  - numpy=1.24.3
  - pandas=2.0.3
  - matplotlib=3.7.2
  - scikit-learn=1.3.0

Recriar ambiente

# Criar ambiente de arquivo
conda env create -f environment.yml

# Ou atualizar ambiente existente
conda env update -f environment.yml --prune

Boas práticas

1. Sempre use conda-forge

# Configurar uma vez
conda config --add channels conda-forge
conda config --set channel_priority strict

2. Criar ambientes por projeto

/scratch/projetos/<seu_projeto>/conda_envs/
├── producao/
├── desenvolvimento/
└── testes/

3. Manter environment.yml atualizado

# Sempre que instalar novos pacotes
conda env export --from-history > environment.yml

4. Limpar cache regularmente

Ambientes Conda podem ocupar muito espaço:

# Limpar pacotes não utilizados
conda clean --all

# Verificar tamanho
du -sh ~/miniconda3
du -sh /scratch/projetos/<seu_projeto>/conda_envs

5. Usar mamba para instalações mais rápidas

Mamba é um solver mais rápido para Conda:

# Instalar mamba
conda install mamba -c conda-forge

# Usar mamba em vez de conda
mamba install numpy pandas

Pacotes comuns

Ciência de Dados

conda install numpy pandas scipy matplotlib seaborn

Machine Learning

conda install scikit-learn tensorflow pytorch torchvision

Bioinformática

conda install bioconda::biopython bioconda::samtools

Visualização

conda install plotly bokeh altair

Problemas comuns

Conflitos de dependências

Problema: Conda não consegue resolver dependências.

Solução:

# Usar mamba (mais rápido)
mamba install <pacote>

# Ou criar ambiente novo
conda create --name novo_env <pacotes>

Ambiente grande demais

Problema: Ambiente ocupa muito espaço.

Solução:

# Limpar cache
conda clean --all

# Mover para /scratch
mv ~/miniconda3/envs/meu_env /scratch/projetos/<seu_projeto>/conda_envs/
ln -s /scratch/projetos/<seu_projeto>/conda_envs/meu_env ~/miniconda3/envs/meu_env

Conda lento

Problema: Instalação de pacotes muito lenta.

Solução:

# Instalar e usar mamba
conda install mamba -c conda-forge
mamba install <pacote>

# Ou desabilitar atualizações automáticas
conda config --set auto_update_conda false

Conflito com módulos

Problema: Conflito entre Conda e módulos do sistema.

Solução:

# Descarregar todos os módulos antes de usar Conda
module purge

# Depois ativar Conda
conda activate meu_ambiente

Conda vs Python venv

Aspecto Conda Python venv
Pacotes Python + Não-Python (C, R, etc.) Apenas Python
Gerenciamento Ambientes + Pacotes Apenas ambientes
Tamanho Maior Menor
Velocidade Mais lento Mais rápido
Uso recomendado Ciência de dados, ML Desenvolvimento Python puro

Veja também o guia de Python para comparação.

Recursos adicionais

Suporte

Se você encontrar problemas com Conda: