Instalação do Anaconda no Servidor Linux
Para configurar o Anaconda em um ambiente de servider, siga estes passos adaptados. Caso tenha esquecido de responder "sim" durante a instalação para configurar as variáveis de ambiente, edite manualmente o arquivo .bashrc:
# Navegue até o diretório home do usuário
cd /home/usuario
# Abra o arquivo .bashrc com um editor de texto
vim .bashrc
# No modo de inserção, adicione a linha abaixo (ajuste o caminho conforme necessário)
export PATH=/home/usuario/anaconda3/bin:$PATH
# Salve e saia do editor (:wq no vim)
# Aplique as alterações no shell atual
source .bashrc
# Verifique a instalação
conda --version
Configuração do CUDA no Servidor Linux
Para instalar o toolkit CUDA, primeiro verifique a versão do sistema operacional e baixe o instalador correspondente:
# Exibir informações do sistema
cat /etc/os-release
# Baixar o instalador CUDA (exemplo para versão 11.8)
wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run
# Executar o instalador
sudo sh cuda_11.8.0_520.61.05_linux.run
Instalação do PyTorch com Compatibilidade CUDA
Ao configurar o PyTorch para GPUs como RTX 3090 com CUDA 11.4, utilize comandos específicos para evitar problemas de compatibilidade. Em vez de depender de espelhos genéricos, use o URL estável do PyTorch:
# Instalação via pip com suporte a CUDA 11.0
pip install torch==1.7.1+cu110 torchvision==0.8.2+cu110 torchaudio==0.7.2 -f https://download.pytorch.org/whl/torch_stable.html
# Para versões mais recentes, como PyTorch 2.0.0 com CUDA 12.1
pip install torch==2.1.1 torchvision==0.16.1 torchaudio==2.1.1 --index-url https://download.pytorch.org/whl/cu121
Gerenciamento de Ambientes com Conda
O Conda facilita a criação e manutenção de ambientes isolados. Aqui estão comandos úteis:
# Criar um novo ambiente com Python específico
conda create -n meu_ambiente python=3.9
# Clonar um ambiente existente
conda create -n novo_ambiente --clone ambiente_existente
# Ativar/desativar um ambiente
conda activate meu_ambiente
conda deactivate
# Exportar dependências para um arquivo de requisitos
pip freeze > requirements.txt
# Instalar pacotes usando fontes alternativas
pip install pacote -i https://pypi.tuna.tsinghua.edu.cn/simple/
# Configurar fontes globais para o Conda
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes
Uso do Git para Controle de Versão
O Git é essencial para gerenciar projetos. Comandos básicos para operações comuns:
# Clonar um repositório remoto
git clone git@github.com:usuario/repositorio.git
# Verificar o histórico de commits
git log --oneline
# Criar e mudar de branch
git checkout -b nova_branch
# Mesclar branches
git merge branch_fonte
# Resolver conflitos durante merges pode ser feito com ferramentas de diff
git diff branch1 branch2
Configuração de Acesso SSH sem Senha
Para habilitar o login SSH sem senha entre cliente e servidor:
# No cliente, copie a chave pública
cat ~/.ssh/id_rsa.pub
# No servidor, adicione a chave pública ao arquivo authorized_keys
vim ~/.ssh/authorized_keys
# No arquivo de configuração do VS Code, especifique o caminho da chave privada
IdentityFile caminho/para/id_rsa
Comandos Úteis do Linux para Pesquisa
Comandos frequentes para administração de sistemas e processos:
# Listar arquivos com detalhes
ls -la
# Monitorar uso de GPU
nvidia-smi
nvidia-smi --query-gpu=memory.free --format=csv
# Executar scripts em segundo plano com nohup
nohup python treino.py > log.txt 2>&1 &
# Verificar processos relacionados
ps aux | grep nome_processo
# Transferir arquivos entre servidores com scp
scp -P porta_remota arquivo.txt usuario@host_remoto:/caminho/remoto
# Criar links simbólicos
ln -s /caminho/origem /caminho/destino
# Descompactar arquivos tar.gz
tar xzf arquivo.tar.gz
Treinamento Distribuído com DDP
Para acelerar o treinamento usando múltiplas GPUs com DistributedDataParallel (DDP):
import torch
import torch.distributed as dist
from torch.nn.parallel import DistributedDataParallel as DDP
# Inicializar o processo distribuído
dist.init_process_group(backend='nccl')
local_rank = dist.get_rank()
device = torch.device('cuda', local_rank)
torch.cuda.set_device(device)
# Envolva o modelo com DDP
modelo = Modelo().to(device)
modelo_ddp = DDP(modelo, device_ids=[local_rank])
# Configurar o DataLoader com amostrador distribuído
amostrador = torch.utils.data.distributed.DistributedSampler(dataset, rank=local_rank)
dataloader = torch.utils.data.DataLoader(dataset, sampler=amostrador)
# Durante o treinamento, ajuste a época no amostrador
for epoca in range(num_epocas):
amostrador.set_epoch(epoca)
for dados in dataloader:
# Lógica de treinamento...
pass
# Salvar apenas no rank 0
if local_rank == 0:
torch.save(modelo_ddp.module.state_dict(), 'modelo.pth')
# Finalizar o processo
dist.destroy_process_group()
Inicie o treinamento com:
python -m torch.distributed.launch --nproc_per_node=2 script_treino.py
Visualização com TensorBoard
Utilize o TensorBoard para monitorar métricas de treino. Para acessá-lo remotamente, configure o encaminhamento de portas no cliente SSH e execute:
# Ative o ambiente e inicie o TensorBoard
conda activate meu_ambiente
tensorboard --logdir=caminho/para/logs --port 6006
# Acesse via navegador em localhost:porta_local (ex: localhost:16666)
Baixando Modelos do HuggingFace
Para baixar modelos de forma eficiente do HuggingFace, configure o endpoint de espelho e use o CLI:
# Defina a variável de ambiente para o espelho
export HF_ENDPOINT="https://hf-mirror.com"
# Use o Hugging Face CLI para download
huggingface-cli download --resume-download nome_modelo --local-dir caminho_local
Depuração de Gradientes com Hooks
Para vreificar a propagação reversa em redes neurais, registre hooks em tensores intermediários:
import torch
# Exemplo de hook para imprimir gradientes
def hook_grad(grad):
print("Gradiente:", grad)
# Registrar o hook em um tensor intermediário
tensor_intermediario = modelo.camada_saida(input)
tensor_intermediario.register_hook(hook_grad)
Uso do Tmux para Sessões Persistentes
O Tmux permite manter sessões de terminal ativas mesmo após desconexões. Configure atalhos personalizados:
# Edite o arquivo de configuração
vim ~/.tmux.conf
# Adicione para usar Ctrl+A como prefixo
set -g prefix C-a
unbind C-b
bind C-a send-prefix
# Comandos básicos do Tmux
tmux new -s sessao_pesquisa
tmux attach -t sessao_pesquisa
tmux split-window -h