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.
الانتقال إلى التثبيت سوق المهارات اكتشف واستكشف مهارات الذكاء الاصطناعي التي بناها المجتمع.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
نسخ Promptعرض تفاصيل Prompt يتجاوز الأمر المباشر Prompt المخصّص للمراجعة. افحص المصدر قبل تشغيله.
npx skills add https://github.com/dabit3/sonic-agent --skill huggingface-accelerateيبقى الأمر في سطر واحد. مرّر أفقيًا لمراجعته كاملًا قبل النسخ.
تفضّل نسخة محلية؟ نزّل الملفات المتاحة حاليًا لدى SkillsMP.
تحميل Zip جاري التحميل... المهن ذات الصلة SOC
استنادا إلى تصنيف SOC المهني
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