Skip to main content 홈 크리에이터 dabit3 sonic-agent huggingface-accelerate
huggingface-accelerate Simplest distributed training API. 4 lines to add distributed support to any PyTorch script. Unified API for DeepSpeed/FSDP/Megatron/DDP. Automatic device placement, mixed precision (FP16/BF16/FP8). Interactive config, single launch command. HuggingFace ecosystem standard.
설치로 이동 Skills Marketplace 커뮤니티가 만든 AI 스킬을 발견하고 탐색하세요.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/dabit3/sonic-agent --skill huggingface-accelerate명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
Zip 다운로드 다운로드 중... name huggingface-accelerate description Simplest distributed training API. 4 lines to add distributed support to any PyTorch script. Unified API for DeepSpeed/FSDP/Megatron/DDP. Automatic device placement, mixed precision (FP16/BF16/FP8). Interactive config, single launch command. HuggingFace ecosystem standard. version 1.0.0 author Orchestra Research license MIT dependencies ["accelerate","torch","transformers"] platforms ["linux","macos","windows"] metadata {"sonic":{"tags":["Distributed Training","HuggingFace","Accelerate","DeepSpeed","FSDP","Mixed Precision","PyTorch","DDP","Unified API","Simple"]}}
HuggingFace Accelerate - Unified Distributed Training
Quick start
Accelerate simplifies distributed training to 4 lines of code.
Installation :
pip install accelerate
Convert PyTorch script (4 lines):
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()
Run (single command):
accelerate launch train.py
Common workflows
Workflow 1: From single GPU to multi-GPU
Original script :
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()
With Accelerate (4 lines added):
import torch
from accelerate import Accelerator
accelerator = Accelerator()
model = torch.nn.Linear(10 , 2 )
optimizer = torch.optim.Adam(model.parameters())
dataloader = torch.utils.data.DataLoader(dataset, batch_size= )
model, optimizer, dataloader = accelerator.prepare(model, optimizer, dataloader)
epoch ( ):
batch dataloader:
optimizer.zero_grad()
loss = model(batch).mean()
accelerator.backward(loss)
optimizer.step()
32
for
in
range
10
for
in
Which machine? (single/multi GPU/TPU/CPU)
How many machines? (1)
Mixed precision? (no/fp16/bf16/fp8)
DeepSpeed? (no/yes)
Launch (works on any setup):
accelerate launch train.py
accelerate launch --multi_gpu --num_processes 8 train.py
accelerate launch --multi_gpu --num_processes 16 \
--num_machines 2 --machine_rank 0 \
--main_process_ip $MASTER_ADDR \
train.py
Workflow 2: Mixed precision training from accelerate import Accelerator
accelerator = Accelerator(mixed_precision='fp16' )
accelerator = Accelerator(mixed_precision='bf16' )
accelerator = Accelerator(mixed_precision='fp8' )
model, optimizer, dataloader = accelerator.prepare(model, optimizer, dataloader)
for batch in dataloader:
with accelerator.autocast():
loss = model(batch)
accelerator.backward(loss)
Workflow 3: DeepSpeed ZeRO integration from accelerate import Accelerator
accelerator = Accelerator(
mixed_precision='bf16' ,
deepspeed_plugin={
"zero_stage" : 2 ,
"offload_optimizer" : False ,
"gradient_accumulation_steps" : 4
}
)
model, optimizer, dataloader = accelerator.prepare(model, optimizer, dataloader)
{
"fp16" : { "enabled" : false } ,
"bf16" : { "enabled" : true } ,
"zero_optimization" : {
"stage" : 2 ,
"offload_optimizer" : { "device" : "cpu" } ,
"allgather_bucket_size" : 5e8 ,
"reduce_bucket_size" : 5e8
}
}
accelerate launch --config_file deepspeed_config.json train.py
Workflow 4: FSDP (Fully Sharded Data Parallel) from accelerate import Accelerator, FullyShardedDataParallelPlugin
fsdp_plugin = FullyShardedDataParallelPlugin(
sharding_strategy="FULL_SHARD" ,
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)
Workflow 5: Gradient accumulation 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):
optimizer.zero_grad()
loss = model(batch)
accelerator.backward(loss)
optimizer.step()
Effective batch size : batch_size * num_gpus * gradient_accumulation_steps
When to use vs alternatives
Want simplest distributed training
Need single script for any hardware
Use HuggingFace ecosystem
Want flexibility (DDP/DeepSpeed/FSDP/Megatron)
Need quick prototyping
4 lines : Minimal code changes
Unified API : Same code for DDP, DeepSpeed, FSDP, Megatron
Automatic : Device placement, mixed precision, sharding
Interactive config : No manual launcher setup
Single launch : Works everywhere
Use alternatives instead :
PyTorch Sonic : Need callbacks, high-level abstractions
Ray Train : Multi-node orchestration, hyperparameter tuning
DeepSpeed : Direct API control, advanced features
Raw DDP : Maximum control, minimal abstraction
Common issues Issue: Wrong device placement
Don't manually move to device:
Issue: Gradient accumulation not working
with accelerator.accumulate(model):
optimizer.zero_grad()
accelerator.backward(loss)
optimizer.step()
Issue: Checkpointing in distributed
if accelerator.is_main_process:
accelerator.save_state('checkpoint/' )
accelerator.load_state('checkpoint/' )
Issue: Different results with FSDP
from accelerate.utils import set_seed
set_seed(42 )
Advanced topics
Hardware requirements
CPU : Works (slow)
Single GPU : Works
Multi-GPU : DDP (default), DeepSpeed, or FSDP
Multi-node : DDP, DeepSpeed, FSDP, Megatron
TPU : Supported
Apple MPS : Supported
DDP : torch.distributed.run (built-in)
DeepSpeed : deepspeed (pip install deepspeed)
FSDP : PyTorch 1.12+ (built-in)
Megatron : Custom setup
Resources