Operações Essenciais para Pesquisa Científica em Servidores Linux

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

Tags: Linux anaconda CUDA Pytorch Conda

Publicado em 7-11 17:47