accelerate

GitHub
9.6k 1.3k 简单 1 次阅读 今天Apache-2.0开发框架
AI 解读 由 AI 自动生成,仅供参考

Accelerate 是由 Hugging Face 推出的开源库,旨在帮助开发者轻松地在各种硬件配置上运行 PyTorch 模型。无论是单台 CPU、单张 GPU、多卡分布式训练,还是使用 TPU,Accelerate 都能让同一份代码无缝适配,无需针对不同环境反复修改。

它主要解决了深度学习训练中繁琐的“样板代码”问题。传统模式下,开发者需要手动编写大量逻辑来处理设备放置、混合精度(如 fp16、bf16 乃至最新的 fp8)以及复杂的分布式策略(如 FSDP 和 DeepSpeed)。而 Accelerate 通过极简的 API 抽象了这些底层细节,用户只需在原有训练脚本中增加几行代码,即可自动完成模型、优化器和数据加载器的准备与加速,大幅降低了多设备训练的门槛。

这款工具特别适合习惯手写 PyTorch 训练循环的研究人员和工程师。如果你希望专注于模型算法本身,而不愿被底层基础设施的兼容性所困扰,Accelerate 是理想的选择。其核心亮点在于“一次编写,到处运行”:同样的代码既可在本地笔记本上调试,也能直接部署到大型集群进行大规模训练,真正实现了开发效率与运行性能的平衡。

使用场景

某初创公司的算法工程师团队正试图在有限的算力资源下,快速复现并微调一个大型语言模型,以适配垂直领域的客服场景。

没有 accelerate 时

  • 环境适配痛苦:代码硬编码了单卡逻辑,一旦需要切换到多卡分布式训练或 TPU 环境,必须重写大量设备管理和进程启动代码。
  • 混合精度配置繁琐:手动编写 AMP(自动混合精度)逻辑极易出错,且难以灵活切换 fp16、bf16 或最新的 fp8 格式,导致显存利用率低或训练不稳定。
  • 调试与部署割裂:本地调试用的单 CPU/单 GPU 脚本无法直接用于生产环境的分布式集群,维护两套代码增加了出错风险和时间成本。
  • 大模型训练门槛高:想要使用 DeepSpeed 或 FSDP 进行大模型训练,需要深入理解复杂的并行策略配置,普通开发者难以上手。

使用 accelerate 后

  • 一次编写,随处运行:仅需在原有 PyTorch 脚本中插入 5 行 accelerate 代码,即可无缝在单卡、多卡、TPU 及不同混合精度模式间切换,无需修改核心逻辑。
  • 智能资源管理:accelerate 自动处理设备放置和梯度反向传播,原生支持 fp8 等先进精度,显著降低显存占用并提升训练速度。
  • 开发流程统一:同一套代码既可在本地笔记本上快速调试,也能直接提交到大规模集群进行全量训练,彻底消除环境差异带来的维护负担。
  • 大模型训练平民化:通过简单的配置文件即可启用 DeepSpeed 或 FSDP 支持,让团队无需成为分布式系统专家也能高效训练参数量巨大的模型。

accelerate 将开发者从繁琐的底层基础设施代码中解放出来,让 PyTorch 模型训练真正实现了“关注模型本身,而非运行环境”。

运行环境要求

操作系统
  • 未说明
GPU
  • 非必需
  • 支持单 CPU、单 GPU、多 GPU 及 TPU 环境
  • 若使用 GPU,需兼容 PyTorch 的 NVIDIA GPU(具体型号和显存取决于模型大小),支持混合精度训练 (fp8, fp16, bf16)
内存

未说明

依赖
notes该工具是一个轻量级封装库,旨在让用户无需大幅修改代码即可在多种硬件配置(CPU/GPU/TPU/多卡)上运行原生 PyTorch 训练脚本。支持通过 'accelerate config' 命令行工具配置环境,也支持 DeepSpeed 集成(实验性)和 MPI 多 CPU 启动。若在 Notebook(如 Colab/Kaggle)中运行,提供专用的 notebook_launcher 函数。
python未说明
torch
PyTorch
accelerate hero image

快速开始



许可证 文档 GitHub 发布 贡献者公约

在任何类型的设备上运行您的原始 PyTorch 训练脚本

易于集成

🤗 Accelerate 是为那些喜欢自己编写 PyTorch 模型训练循环,但又不愿编写和维护多 GPU/TPU/fp16 所需样板代码的 PyTorch 用户而设计的。

🤗 Accelerate 只抽象与多 GPU/TPU/fp16 相关的样板代码,而保持您的其余代码不变。

以下是一个示例:

  import torch
  import torch.nn.functional as F
  from datasets import load_dataset
+ from accelerate import Accelerator

+ accelerator = Accelerator()
- device = 'cpu'
+ device = accelerator.device

  model = torch.nn.Transformer().to(device)
  optimizer = torch.optim.Adam(model.parameters())

  dataset = load_dataset('my_dataset')
  data = torch.utils.data.DataLoader(dataset, shuffle=True)

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

  model.train()
  for epoch in range(10):
      for source, targets in data:
          source = source.to(device)
          targets = targets.to(device)

          optimizer.zero_grad()

          output = model(source)
          loss = F.cross_entropy(output, targets)

-         loss.backward()
+         accelerator.backward(loss)

          optimizer.step()

正如您在此示例中看到的那样,只需向任何标准的 PyTorch 训练脚本添加 5 行代码,您就可以在任何单机或分布式节点环境中运行它(单 CPU、单 GPU、多 GPU 和 TPU),并且可以使用或不使用混合精度(fp8、fp16、bf16)。

特别是,相同的代码无需修改即可在您的本地机器上用于调试,也可以在您的训练环境中运行。

🤗 Accelerate 甚至会为您处理设备放置问题(这需要对您的代码进行一些额外的更改,但通常更安全),因此您可以进一步简化训练循环:

  import torch
  import torch.nn.functional as F
  from datasets import load_dataset
+ from accelerate import Accelerator

- device = 'cpu'
+ accelerator = Accelerator()

- model = torch.nn.Transformer().to(device)
+ model = torch.nn.Transformer()
  optimizer = torch.optim.Adam(model.parameters())

  dataset = load_dataset('my_dataset')
  data = torch.utils.data.DataLoader(dataset, shuffle=True)

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

  model.train()
  for epoch in range(10):
      for source, targets in data:
-         source = source.to(device)
-         targets = targets.to(device)

          optimizer.zero_grad()

          output = model(source)
          loss = F.cross_entropy(output, targets)

-         loss.backward()
+         accelerator.backward(loss)

          optimizer.step()

想了解更多?请查看 文档 或浏览我们的 示例

启动脚本

🤗 Accelerate 还提供了一个可选的命令行工具,允许您在启动脚本之前快速配置和测试训练环境。无需记住如何使用 torch.distributed.run,也不必为 TPU 训练编写特定的启动器!只需在您的机器上运行:

accelerate config

并回答相关问题。这将生成一个配置文件,该文件将在执行以下操作时自动用于正确设置默认选项:

accelerate launch my_script.py --args_to_my_script

例如,以下是在仓库根目录下运行 MRPC 任务的 GLUE 示例的方法:

accelerate launch examples/nlp_example.py

此命令行工具是可选的,您仍然可以根据需要使用 python my_script.pypython -m torchrun my_script.py

如果您不想运行 accelerate config,也可以直接将原本传递给 torchrun 的参数作为 accelerate launch 的参数传递。例如,以下是在两块 GPU 上启动的方式:

accelerate launch --multi_gpu --num_processes 2 examples/nlp_example.py

要了解更多信息,请查阅此处提供的 CLI 文档:加速包参考 CLI

或者查看配置模板库:配置 YAML 模板

使用 MPI 启动多 CPU 运行

🤗 以下是另一种使用 MPI 启动多 CPU 运行的方式。您可以在此页面上了解如何安装 Open MPI。您也可以使用 Intel MPI 或 MVAPICH。 一旦您的集群上设置了 MPI,只需运行:

accelerate config

回答相关问题,选择以多 CPU 方式运行,并在被问及是否希望 Accelerate 启动 mpirun 时回答“是”。然后,使用 accelerate launch 运行您的脚本,例如:

accelerate launch examples/nlp_example.py

或者,您也可以直接使用 mpirun,而不通过命令行工具,例如:

mpirun -np 2 python examples/nlp_example.py

使用 DeepSpeed 启动训练

🤗 Accelerate 支持使用 DeepSpeed 在单个或多个 GPU 上进行训练。要使用它,您无需更改训练代码中的任何内容;只需通过 accelerate config 即可完成所有设置。不过,如果您希望从 Python 脚本中调整与 DeepSpeed 相关的参数,我们提供了 DeepSpeedPlugin

from accelerate import Accelerator, DeepSpeedPlugin

# deepspeed 需要提前知道您的梯度累积步数,因此请务必传递该参数
# 请记住,您仍然需要自行执行梯度累积操作,就像在不使用 deepspeed 的情况下一样
deepspeed_plugin = DeepSpeedPlugin(zero_stage=2, gradient_accumulation_steps=2)
accelerator = Accelerator(mixed_precision='fp16', deepspeed_plugin=deepspeed_plugin)

# 如何保存您的 🤗 Transformer?
accelerator.wait_for_everyone()
unwrapped_model = accelerator.unwrap_model(model)
unwrapped_model.save_pretrained(save_dir, save_function=accelerator.save, state_dict=accelerator.get_state_dict(model))

注意:目前 DeepSpeed 支持仍处于实验阶段。如果您遇到任何问题,请提交 issue。

从笔记本中启动训练

🤗 Accelerate 还提供了一个 notebook_launcher 函数,您可以在笔记本中使用它来启动分布式训练。这对于具有 TPU 后端的 Colab 或 Kaggle 笔记本尤其有用。只需在 training_function 中定义您的训练循环,然后在最后一行添加:

from accelerate import notebook_launcher

notebook_launcher(training_function)

示例可在此笔记本中找到。在 Colab 中打开

为什么应该使用 🤗 Accelerate?

当您希望在不放弃对训练循环完全控制的情况下,轻松地在分布式环境中运行训练脚本时,就应使用 🤗 Accelerate。它并不是 PyTorch 之上的高级框架,而是一个轻量级封装,因此您无需学习新的库。事实上,🤗 Accelerate 的整个 API 都集中在 Accelerator 类中。

为什么不使用 🤗 Accelerate?

如果您不想自己编写训练循环,则不应使用 🤗 Accelerate。PyTorch 之上有许多高级库可以为您提供这一功能,而 🤗 Accelerate 并不属于此类。

使用 🤗 Accelerate 的框架

如果您喜欢 🤗 Accelerate 的简洁性,但更倾向于在其功能之上构建更高层次的抽象,以下是一些基于 🤗 Accelerate 构建的框架和库:

  • Amphion 是一个用于音频、音乐和语音生成的工具包。其目标是支持可重复的研究,并帮助初级研究人员和工程师入门音频、音乐和语音生成领域的研究与开发。
  • Animus 是一个极简的机器学习实验框架。Animus 强调机器学习实验中的常见“断点”,并在 IExperiment 中为这些断点提供统一的接口。
  • Catalyst 是一个用于深度学习研究与开发的 PyTorch 框架。它专注于可重复性、快速实验和代码重用,以便您可以创造新东西,而不是再写一个训练循环。Catalyst 提供一个 Runner 来连接实验的所有部分:硬件后端、数据变换、模型训练和推理逻辑。
  • fastai 是一个简化了现代最佳实践下快速准确神经网络训练的 PyTorch 深度学习框架。fastai 提供一个 Learner 来处理深度学习算法的训练、微调和推理。
  • Finetuner 是一项服务,使模型能够为语义搜索、视觉相似性搜索、跨模态文本<->图像搜索、推荐系统、聚类、重复检测、异常检测或其他用途创建更高质量的嵌入。
  • InvokeAI 是 Stable Diffusion 模型的创意引擎,提供行业领先的 WebUI 和终端使用支持,并作为许多商业产品的基础。
  • Kornia 是一个可微分库,允许将经典计算机视觉集成到深度学习模型中。Kornia 提供一个 Trainer 专门用于训练和微调库中支持的深度学习算法。
  • Open Assistant 是一个基于聊天的助手,能够理解任务、与其各方系统交互,并动态获取信息以完成任务。
  • pytorch-accelerated 是一个轻量级训练库,其精简的功能集围绕通用的 Trainer 展开,非常强调简单性和透明度;使用户能够清楚地了解底层正在发生的事情,而无需自己编写和维护样板代码!
  • Stable Diffusion web UI 是一个基于 Gradio 库的开源浏览器界面,专为 Stable Diffusion 设计,易于使用。
  • torchkeras 是一种以 Keras 风格训练 PyTorch 模型的简单工具,在笔记本中会提供动态且美观的图表来监控损失或指标。
  • transformers 作为帮助在 PyTorch、TensorFlow 和 JAX 中训练最先进机器学习模型的工具。(Accelerate 是 PyTorch 部分的后端)。

安装

本仓库已在 Python 3.8+ 和 PyTorch 1.10.0+ 环境下测试通过。

您应在 虚拟环境 中安装 🤗 Accelerate。如果您不熟悉 Python 虚拟环境,请参阅 用户指南

首先,创建一个使用您计划使用的 Python 版本的虚拟环境,并激活它。

接着,您需要安装 PyTorch:请参考 官方安装页面,根据您的平台选择合适的安装命令。然后,您可以使用 pip 安装 🤗 Accelerate,命令如下:

pip install accelerate

支持的集成

  • 仅 CPU
  • 单节点多 CPU
  • 多节点多 CPU
  • 单 GPU
  • 单节点多 GPU
  • 多节点多 GPU
  • TPU
  • FP16/BFloat16 混合精度
  • 使用 Transformer EngineMS-AMP 的 FP8 混合精度
  • DeepSpeed 支持(实验性)
  • PyTorch 全量分片数据并行(FSDP)支持(实验性)
  • Megatron-LM 支持(实验性)

引用 🤗 Accelerate

如果您在论文或其他出版物中使用了 🤗 Accelerate,请使用以下 BibTeX 条目进行引用。

@Misc{accelerate,
  title =        {Accelerate: Training and inference at scale made simple, efficient and adaptable.},
  author =       {Sylvain Gugger and Lysandre Debut and Thomas Wolf and Philipp Schmid and Zachary Mueller and Sourab Mangrulkar and Marc Sun and Benjamin Bossan},
  howpublished = {\url{https://github.com/huggingface/accelerate}},
  year =         {2022}
}

版本历史

v1.13.02026/03/04
v1.12.02025/11/21
v1.11.02025/10/20
v1.10.12025/08/25
v1.10.02025/08/07
v1.9.02025/07/16
v1.8.12025/06/20
v1.8.02025/06/19
v1.7.02025/05/15
v1.6.02025/04/01
v1.5.22025/03/14
v1.5.02025/03/12
v1.4.02025/02/17
v1.3.02025/01/17
v1.2.12024/12/13
v1.2.02024/12/13
v1.1.02024/11/01
v1.0.12024/10/12
v1.0.02024/10/07
v0.34.12024/09/05

常见问题

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|1周前
Agent开发框架图像

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|1周前
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

159.6k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

108.3k|★★☆☆☆|1周前
开发框架图像Agent

gemini-cli

gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。

100.8k|★★☆☆☆|1周前
插件Agent图像

markitdown

MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器

93.4k|★★☆☆☆|1周前
插件开发框架