본문으로 건너뛰기
cccskills
무료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.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

연동 도구Hugging Face
설치 방법 보기

포함된 파일(4)

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

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

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

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

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.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

artubss/SKILLS-CLAUDE-CODE112026년 5월 17일 업데이트

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.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

artubss/SKILLS-CLAUDE-CODE112026년 5월 17일 업데이트

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".

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

artubss/SKILLS-CLAUDE-CODE112026년 5월 17일 업데이트

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.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

artubss/SKILLS-CLAUDE-CODE112026년 5월 17일 업데이트

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.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

artubss/SKILLS-CLAUDE-CODE112026년 5월 17일 업데이트

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

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

artubss/SKILLS-CLAUDE-CODE112026년 5월 17일 업데이트

artubss의 스킬 모두 보기

이 스킬의 문제 신고