Skip to content
cccskills
FreePublished on GitHub

huggingface-accelerate

API de treinamento distribuído mais simples. 4 linhas para adicionar suporte distribuído a qualquer script PyTorch. API unificada para DeepSpeed/FSDP/Megatron/DDP. Posicionamento automático de device, precisão mista (FP16/BF16/FP8). Config interativo, comando de launch único. Padrão do ecossistema HuggingFace.

The English summary is being prepared. Showing the original description.

Works withHugging Face
See how to install

Files included (4)

  • SKILL.md8.5 KB
  • references/custom-plugins.md11.5 KB
  • references/megatron-integration.md11.0 KB
  • references/performance.md12.3 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

HuggingFace Accelerate - Treinamento Distribuído Unificado

Início rápido

Accelerate simplifica o treinamento distribuído em 4 linhas de código.

Instalação:

pip install accelerate

Converter script PyTorch (4 linhas):

import torch
+ from accelerate import Accelerator

+ accelerator = Accelerator()

  model = torch.nn.Transformer()
  optimizer = torch.optim.Adam(model.parameters())
  dataloader = torch.utils.data.DataLoader(dataset)

+ model, optimizer, dataloader = accelerator.prepare(model, optimizer, dataloader)

  for batch in dataloader:
      optimizer.zero_grad()
      loss = model(batch)
-     loss.backward()
+     accelerator.backward(loss)
      optimizer.step()

Executar (comando único):

accelerate launch train.py

Workflows comuns

Workflow 1: De uma GPU para multi-GPU

Script original:

# train.py
import torch

model = torch.nn.Linear(10, 2).to('cuda')
optimizer = torch.optim.Adam(model.parameters())
dataloader = torch.utils.data.DataLoader(dataset, batch_size=32)

for epoch in range(10):
    for batch in dataloader:
        batch = batch.to('cuda')
        optimizer.zero_grad()
        loss = model(batch).mean()
        loss.backward()
        optimizer.step()

Com Accelerate (4 linhas adicionadas):

# train.py
import torch
from accelerate import Accelerator  # +1

accelerator = Accelerator()  # +2

model = torch.nn.Linear(10, 2)
optimizer = torch.optim.Adam(model.parameters())
dataloader = torch.utils.data.DataLoader(dataset, batch_size=32)

model, optimizer, dataloader = accelerator.prepare(model, optimizer, dataloader)  # +3

for epoch in range(10):
    for batch in dataloader:
        # Sem necessidade de .to('cuda') - automático!
        optimizer.zero_grad()
        loss = model(batch).mean()
        accelerator.backward(loss)  # +4
        optimizer.step()

Configurar (interativo):

accelerate config

Perguntas:

  • Qual máquina? (single/multi GPU/TPU/CPU)
  • Quantas máquinas? (1)
  • Precisão mista? (no/fp16/bf16/fp8)
  • DeepSpeed? (no/yes)

Launch (funciona em qualquer setup):

# Single GPU
accelerate launch train.py

# Multi-GPU (8 GPUs)
accelerate launch --multi_gpu --num_processes 8 train.py

# Multi-node
accelerate launch --multi_gpu --num_processes 16 \
  --num_machines 2 --machine_rank 0 \
  --main_process_ip $MASTER_ADDR \
  train.py

Workflow 2: Treinamento com precisão mista

Habilitar FP16/BF16:

from accelerate import Accelerator

# FP16 (com gradient scaling)
accelerator = Accelerator(mixed_precision='fp16')

# BF16 (sem scaling, mais estável)
accelerator = Accelerator(mixed_precision='bf16')

# FP8 (H100+)
accelerator = Accelerator(mixed_precision='fp8')

model, optimizer, dataloader = accelerator.prepare(model, optimizer, dataloader)

# Tudo mais é automático!
for batch in dataloader:
    with accelerator.autocast():  # Opcional, feito automaticamente
        loss = model(batch)
    accelerator.backward(loss)

Workflow 3: Integração DeepSpeed ZeRO

Habilitar DeepSpeed ZeRO-2:

from accelerate import Accelerator

accelerator = Accelerator(
    mixed_precision='bf16',
    deepspeed_plugin={
        "zero_stage": 2,  # ZeRO-2
        "offload_optimizer": False,
        "gradient_accumulation_steps": 4
    }
)

# Mesmo código de antes!
model, optimizer, dataloader = accelerator.prepare(model, optimizer, dataloader)

Ou via config:

accelerate config
# Selecione: DeepSpeed → ZeRO-2

deepspeed_config.json:

{
    "fp16": {"enabled": false},
    "bf16": {"enabled": true},
    "zero_optimization": {
        "stage": 2,
        "offload_optimizer": {"device": "cpu"},
        "allgather_bucket_size": 5e8,
        "reduce_bucket_size": 5e8
    }
}

Launch:

accelerate launch --config_file deepspeed_config.json train.py

Workflow 4: FSDP (Fully Sharded Data Parallel)

Habilitar FSDP:

from accelerate import Accelerator, FullyShardedDataParallelPlugin

fsdp_plugin = FullyShardedDataParallelPlugin(
    sharding_strategy="FULL_SHARD",  # Equivalente a ZeRO-3
    auto_wrap_policy="TRANSFORMER_AUTO_WRAP",
    cpu_offload=False
)

accelerator = Accelerator(
    mixed_precision='bf16',
    fsdp_plugin=fsdp_plugin
)

model, optimizer, dataloader = accelerator.prepare(model, optimizer, dataloader)

Ou via config:

accelerate config
# Selecione: FSDP → Full Shard → No CPU Offload

Workflow 5: Acumulação de gradientes

Acumular gradientes:

from accelerate import Accelerator

accelerator = Accelerator(gradient_accumulation_steps=4)

model, optimizer, dataloader = accelerator.prepare(model, optimizer, dataloader)

for batch in dataloader:
    with accelerator.accumulate(model):  # Lida com acumulação
        optimizer.zero_grad()
        loss = model(batch)
        accelerator.backward(loss)
        optimizer.step()

Tamanho efetivo de batch: batch_size * num_gpus * gradient_accumulation_steps

Quando usar vs alternativas

Use Accelerate quando:

  • Quer o treinamento distribuído mais simples
  • Precisa de um único script para qualquer hardware
  • Usa o ecossistema HuggingFace
  • Quer flexibilidade (DDP/DeepSpeed/FSDP/Megatron)
  • Precisa de prototipagem rápida

Principais vantagens:

  • 4 linhas: Mudanças mínimas de código
  • API unificada: Mesmo código para DDP, DeepSpeed, FSDP, Megatron
  • Automático: Posicionamento de device, precisão mista, sharding
  • Config interativo: Sem necessidade de setup manual de launcher
  • Launch único: Funciona em qualquer lugar

Use alternativas em vez disso:

  • PyTorch Lightning: Precisa de callbacks, abstrações de alto nível
  • Ray Train: Orquestração multi-node, tuning de hiperparâmetros
  • DeepSpeed: Controle direto de API, recursos avançados
  • DDP bruto: Controle máximo, abstração mínima

Problemas comuns

Problema: Posicionamento errado de device

Não mova manualmente para device:

# ERRADO
batch = batch.to('cuda')

# CORRETO
# Accelerate lida automaticamente após prepare()

Problema: Acumulação de gradientes não funciona

Use context manager:

# CORRETO
with accelerator.accumulate(model):
    optimizer.zero_grad()
    accelerator.backward(loss)
    optimizer.step()

Problema: Checkpoint em distribuído

Use métodos do accelerator:

# Salve apenas no processo principal
if accelerator.is_main_process:
    accelerator.save_state('checkpoint/')

# Carregue em todos os processos
accelerator.load_state('checkpoint/')

Problema: Resultados diferentes com FSDP

Garanta a mesma seed aleatória:

from accelerate.utils import set_seed
set_seed(42)

Tópicos avançados

Integração Megatron: Veja references/megatron-integration.md para tensor parallelism, pipeline parallelism e setup de sequence parallelism.

Plugins customizados: Veja references/custom-plugins.md para criar plugins distribuídos customizados e configuração avançada.

Tuning de performance: Veja references/performance.md para profiling, otimização de memória e melhores práticas.

Requisitos de hardware

  • CPU: Funciona (lento)
  • Single GPU: Funciona
  • Multi-GPU: DDP (padrão), DeepSpeed ou FSDP
  • Multi-node: DDP, DeepSpeed, FSDP, Megatron
  • TPU: Suportado
  • Apple MPS: Suportado

Requisitos de launcher:

  • DDP: torch.distributed.run (built-in)
  • DeepSpeed: deepspeed (pip install deepspeed)
  • FSDP: PyTorch 1.12+ (built-in)
  • Megatron: Setup customizado

Recursos

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

Especialista em construir experiências 3D para a web - Three.js, React Three Fiber, Spline, WebGL e cenas 3D interativas. Cobre configuradores de produtos, portfólios 3D, websites imersivos e adição de profundidade às experiências web. Use quando: website 3D, three.js, WebGL, react three fiber, experiência 3D.

The English summary is being prepared. Showing the original description.

artubss/SKILLS-CLAUDE-CODE11Updated May 17, 2026

Quando o usuário quer planejar, projetar ou implementar um teste A/B ou experimento. Também use quando o usuário menciona "teste A/B", "split test", "experimento", "testar essa mudança", "copy variante", "teste multivariado" ou "hipótese". Para implementação de rastreamento, veja analytics-tracking.

The English summary is being prepared. Showing the original description.

artubss/SKILLS-CLAUDE-CODE11Updated May 17, 2026

Auditar e melhorar a acessibilidade web seguindo as diretrizes WCAG 2.1. Use quando solicitado para "melhorar acessibilidade", "auditoria a11y", "conformidade WCAG", "suporte a leitor de tela", "navegação por teclado" ou "tornar acessível".

The English summary is being prepared. Showing the original description.

artubss/SKILLS-CLAUDE-CODE11Updated May 17, 2026

Testes e benchmarking de agentes LLM incluindo testes comportamentais, avaliação de capacidades, métricas de confiabilidade e monitoramento em produção—onde até os melhores agentes alcançam menos de 50% em benchmarks do mundo real. Use quando: testes de agentes, avaliação de agentes, benchmark de agentes, confiabilidade de agentes, teste de agentes.

The English summary is being prepared. Showing the original description.

artubss/SKILLS-CLAUDE-CODE11Updated May 17, 2026

Criar, gerenciar e orquestrar agentes de IA usando o CLI AI Maestro. Use quando o usuário pedir para "criar agente", "listar agentes", "deletar agente", "hibernar agente", "despertar agente", "instalar plugin", "mostrar agente", "reiniciar agente" ou qualquer tarefa de gerenciamento do ciclo de vida do agente.

The English summary is being prepared. Showing the original description.

artubss/SKILLS-CLAUDE-CODE11Updated May 17, 2026

Gerencie múltiplos agentes CLI locais via sessões tmux (iniciar/parar/monitorar/atribuir) com agendamento compatível com cron.

The English summary is being prepared. Showing the original description.

artubss/SKILLS-CLAUDE-CODE11Updated May 17, 2026

See all skills by artubss

Report a problem with this skill