Web Analytics

pytorch-accelerated

⭐ 192 stars Simplified Chinese by Chris-hughes10

pytorch-accelerated

pytorch-accelerated 是一个轻量级库,旨在通过提供一个简洁但可扩展的训练循环来加速 PyTorch 模型的训练过程——封装在单个 Trainer 对象中——该对象足够灵活,可处理大多数用例,并且能够利用不同的硬件选项,无需更改代码。

pytorch-accelerated 提供了精简的功能集,并非常强调 简单性透明性,使用户能够准确了解底层发生的情况,而无需自己编写和维护样板代码!

主要特性包括:

投入了大量精力确保库的每个部分——包括内部和外部组件——都尽可能清晰简单,便于定制、调试,并准确理解每一步背后的实际操作;训练器的大部分行为都包含在一个类中! 秉承 Python 精神,所有内容都不隐藏,全部可访问。

pytorch-accelerated 自豪且透明地构建在 Hugging Face Accelerate 之上,后者负责设备间数据移动和训练配置的启动。在定制训练器或启动训练时,建议用户查阅 Accelerate 文档 以了解所有可用选项;Accelerate 提供了便捷的函数用于如张量收集和梯度裁剪等操作,其使用示例可见于 pytorch-acceleratedexamples 文件夹!

想了解更多关于该库的动机及详细入门指南,请查看这篇博客文章

安装

pytorch-accelerated 可通过 pip 使用以下命令安装:

pip install pytorch-accelerated
为了使软件包尽可能精简,运行示例所需的软件包默认不包括在内。要包含这些软件包,您可以使用以下命令:

pip install pytorch-accelerated[examples]

快速开始

要开始,只需导入并使用pytorch加速的Trainer,如下面的代码片段所示, 然后使用下面描述的 accelerate CLI 启动训练。

# examples/core/train_mnist.py
import os

from torch import nn, optim from torch.utils.data import random_split from torchvision import transforms from torchvision.datasets import MNIST

from pytorch_accelerated import Trainer

class MNISTModel(nn.Module): def __init__(self): super().__init__() self.main = nn.Sequential( nn.Linear(in_features=784, out_features=128), nn.ReLU(), nn.Linear(in_features=128, out_features=64), nn.ReLU(), nn.Linear(in_features=64, out_features=10), )

def forward(self, input): return self.main(input.view(input.shape[0], -1))

def main(): dataset = MNIST(os.getcwd(), download=True, transform=transforms.ToTensor()) train_dataset, validation_dataset, test_dataset = random_split(dataset, [50000, 5000, 5000]) model = MNISTModel() optimizer = optim.SGD(model.parameters(), lr=0.001, momentum=0.9) loss_func = nn.CrossEntropyLoss()

trainer = Trainer( model, loss_func=loss_func, optimizer=optimizer, )

trainer.train( train_dataset=train_dataset, eval_dataset=validation_dataset, num_epochs=8, per_device_batch_size=32, )

trainer.evaluate( dataset=test_dataset, per_device_batch_size=64, ) if __name__ == "__main__": main()

要使用accelerate CLI启动训练, 在你的机器上运行:

accelerate config --config_file accelerate_config.yaml

并回答所提出的问题。这将生成一个配置文件,用于在执行

accelerate launch --config_file accelerate_config.yaml train.py [--training-args]

时正确设置默认选项。

注意:使用accelerate CLI是完全可选的,训练也可以通过以下常规方式启动:

python train.py / python -m torch.distributed ...

这取决于你的基础设施配置,适合希望对启动命令进行更细粒度控制的用户。

更复杂的训练示例可以在示例文件夹中查看 这里

或者,如果你更愿意先了解核心概念,可以在文档中找到。

使用说明

pytorch-accelerated的目标用户是谁?

什么时候不应该使用pytorch-accelerated?

并帮助你选择模型、优化器或损失函数,你可能更适合使用 fastaipytorch-accelerated仅专注于训练过程,其他所有 方面由用户自行负责。 你可能更适合直接使用Accelerate!虽然可以自定义Trainer的每个部分,训练循环本质上被拆分为多个

不同的方法你可能需要重写。但是,在你开始之前,编写那些 for 循环真的重要到值得再次从头开始写吗😉。

并且想要在你选择的硬件上榨取每一丝性能,那么你最好坚持使用原生 PyTorch;任何高级 API 在高度专业化的情况下都会成为负担!

致谢

pytorch-accelerated 的设计和功能的许多方面都深受一些优秀库和框架的启发,比如 fastaitimmPyTorch-lightningHugging Face Accelerate。这些工具 对本库和机器学习社区都产生了巨大影响,其影响力不可言喻!

pytorch-accelerated 只是从这些工具中汲取灵感,所有包含的功能都是从零开始实现的,以适应本库的需求。唯一的例外是 examples 文件夹中的一些脚本,这些脚本采用并修改了现有资源以展示 pytorch-accelerated 的功能; 这些情况都有明确标记,并对原作者给予了致谢。

--- Tranlated By Open Ai Tx | Last indexed: 2026-02-23 ---