首页 > 其他分享 >Accelerate 1.0.0

Accelerate 1.0.0

时间:2024-09-24 13:44:59浏览次数:6  
标签:1.0 训练 Accelerator API Accelerate accelerate

Accelerate 发展概况

在三年半以前、项目发起之初时,Accelerate 的目标还只是制作一个简单框架,通过一个低层的抽象来简化多 GPU 或 TPU 训练,以此替代原生的 PyTorch 训练流程:

Sylvain’s tweet announcing accelerate

自此,Accelerate 开始不断扩展,逐渐成为一个有多方面能力的代码库。当前,像 Llama 这样的模型已经达到了 405B 参数的量级,而 Accelerate 也致力于应对大模型和大规模训练所面临的诸多难题。这其中的贡献包括:

  • 灵活、低层的训练 API: 支持在六种不同硬件设备 (CPU、GPU、TPU、XPU、NPU、MLU) 上训练,同时在代码层面保持 99% 原有训练代码不必改动。
  • 简单易用的 命令行界面: 致力于在不同硬件上进行配置,以及运行训练脚本。
  • Big Model Inference 功能,或者说是 device_map="auto" : 这使得用户能够在多种不同硬件设备上进行大模型推理,同时现在可以通过诸如高效参数微调 (PEFT) 等技术以较小计算量来训练大模型。

这三方面的贡献,使得 Accelerate 成为了 几乎所有 Hugging Face 代码库 的基础依赖,其中包括 transformersdiffuserspefttrl

在 Accelerate 开发趋于稳定将近一年后的今天,我们正式发布了 Accelerate 1.0.0 —— Accelerate 的第一个发布候选版本。

本文将会详细说明以下内容:

  1. 为什么我们决定开发 1.0 版本?
  2. Accelerate 的未来发展,怎样结合 PyTorch 一同发展?
  3. 新版本有哪些重大改变?如何迁移代码到新版本?

为什么要开发 1.0

发行这一版本的计划已经进行了一年多。Acceelerate 的 API 集中于 Accelerator 一侧,配置简单,代码扩展性强。但是,我们仍然认识到 Accelerate 还存在诸多有待完成的功能,这包括:

通过在 1.0 版本中作出的改动,Accelerate 已经有能力在不改变用户 API 接口的情况下不断融入新的技术能力了。

Accelerate 的未来发展

在 1.0 版本推出以后,我们将重点关注技术社区里的新技术,并寻找方法去融合进 Accelerate 中。可以预见,一些重大的改动将会不久发生在 PyTorch 生态系统中:

  • 作为支持 DeepSpeed 多模型的一部分,我们发现虽然当前的 DeepSpeed 方案还能正常工作,但后续可能还是需要大幅度改动整体的 API。因为我们需要为任意多模型训练场景去制作封装类。
  • 由于 torchaotorchtitan 逐渐变得受欢迎,可以推测将来 PyTorch 可能会将这些集成进来成为一个整体。为了致力于更原生的 FP8 训练、新的分布式分片 API,以及支持新版 FSDP (FSDPv2),我们推测 Accelerate 内部和通用的很多 API 也将会更改 (希望改动不大)。
  • 借助 torchao /FP8,很多新框架也带来了不同的理念和实现方法,来使得 FP8 训练有效且稳定 (例如 transformer_enginetorchaoMS-AMPnanotron )。针对 Accelerate,我们的目标是把这些实现都集中到一个地方,使用简单的配置方法让用户探索和试用每一种方法,最终我们希望形成稳定灵活的代码架构。这个领域发展迅速,尤其是 NVidia 的 FP4 技术即将问世。我们希望不仅能够支持这些方法,同时也为不同方法提供可靠的基准测试,来和原生的 BF16 训练对比,以显示技术趋势。

我们也对 PyTorch 社区分布式训练的发展感到期待,希望 Accelerate 紧跟步伐,为最近技术提供一个低门槛的入口。也希望社区能够继续探索实验、共同学习,让我们寻找在复杂计算系统上训练、扩展大模型的最佳方案。

如何使用 1.0 版本

如想使用 1.0 版本,需要先使用如下方法获取 Accelerate:

  • pip:
pip install --pre accelerate
  • Docker:
docker pull huggingface/accelerate:gpu-release-1.0.0rc1

可用的版本标记有:

  • gpu-release-1.0.0rc1
  • cpu-release-1.0.0rc1
  • gpu-fp8-transformerengine-release-1.0.0rc1
  • gpu-deepspeed-release-1.0.0rc1

代码迁移指南

下面是关于弃用 API 的详细说明:

  • Accelerator() 传递 dispatch_batchessplit_batcheseven_batchesuse_seedable_sampler 参数的这种方式已经被弃用。新的方法是创建一个 accelerate.utils.DataLoaderConfiguration() 然后传给 Accelerator() (示例: Accelerator(dataloader_config=DataLoaderConfiguration(...)) )。
  • Accelerator().use_fp16AcceleratorState().use_fp16 已被移除。新的替代方式是检查 accelerator.mixed_precision == "fp16"
  • Accelerator().autocast() 不再接收 cache_enabled 参数。该参数被包含在 AutocastKwargs() 里 (示例: Accelerator(kwargs_handlers=[AutocastKwargs(cache_enabled=True)]) )。
  • accelerate.utils.is_tpu_availableaccelerate.utils.is_torch_xla_available 替代。
  • accelerate.utils.modeling.shard_checkpoint 应被 huggingface_hub 里的 split_torch_state_dict_into_shards 替代。
  • accelerate.tqdm.tqdm() 的第一个参数不再是 True /Falsemain_process_only 需要以命名参数的形式传参。
  • ACCELERATE_DISABLE_RICH 不再是一个有效的环境变量。用户需通过设置 ACCELERATE_ENABLE_RICH=1 手动启动详细的回溯 (traceback) 信息。
  • FSDP 中的 fsdp_backward_prefetch_policy 已被 fsdp_backward_prefetch 代替。

总结

首先感谢使用 Accelerate,看到一个小的想法转变成一个总下载量超过一亿、日均下载量接近三十万的项目还是很令人惊叹的。

通过本版发行,我们希望社区能够踊跃尝试,尽快在官方发行版出现前迁移到 1.0 版本。

请大家持续关注,及时追踪我们 GitHub社交软件 上的最新信息。


英文原文: https://hf.co/blog/accelerate-v1

原文作者: Zachary Mueller, Marc Sun, Benjamin Bossan

译者: hugging-hoi2022

标签:1.0,训练,Accelerator,API,Accelerate,accelerate
From: https://www.cnblogs.com/huggingface/p/18428997

相关文章

  • Creo 11.0百度云资源中文版+详细安装教程下载
    如大家所熟悉的,Creo是一款计算机辅助设计(CAD)应用程序,由PTC开发。该套件由应用程序组成,每个应用程序都为产品开发中的用户角色提供一组独特的功能。Creo在Windows系统上运行并兼容,提供用于3DCAD参数化特征实体建模、3D直接建模、2D正交视图、有限元分析和仿真、原理图设计......
  • 【PLW003】设备器材云端管理平台v1.0(SpringBoot+Mybatis+NodeJS+MySQL前后端分离)
    设备器材云端管理平台是一种专为各种设备(如教育行业中的实验设备、建筑行业中的施工设备等)租赁或共享孵化的数字化管理工具,旨在融合数字化手段,提高各种设备器材的管理效率、确保设备的安全稳定运行,并优化资源使用及配置效率。随着高新技术的不断发展和应用(如大数据、人工智能等新......
  • mysql安装(windows-mysql-8.1.0-winx64.zip安装)
    1、官网下载,解压缩2、配置环境变量3、新增my.ini文件,根据电脑环境修改配置 #设置mysql的安装目录 basedir #设置mysql数据库的数据的存放目录 datadirmy.ini文件内容如下:[mysqld]#设置3306端口port=3306#设置mysql的安装目录basedir=D:\kaifa\mysql-8.1.0-winx6......
  • 民宿酒店预订系统V1.0.9
    多门店民宿酒店预订管理系统,快速部署属于自己民宿酒店的预订小程序,包含预订、退房、WIFI连接、吐槽、周边信息等功能。提供全部无加密源代码,支持私有化部署。V1.0.9优化微信支付宝插件V3支付优化模板变量渲染输出......
  • 企业培训考试系统v1.0.9
    企业培训考试系统,包含章节练习、历年真题、错题记录、模拟考试和正式考试等模块。v1.0.9修复php7,4环境下BUG1.修复插件在php7.4环境下激活码异常BUG2.修复下载考卷未答题时的报错问题3.更新下载考卷显示答题结果......
  • 企业培训考试课堂​V1.0.2
    企业内部培训与考试课堂系统,支持丰富课程类型,还拥有全面的题型体系,并能自动评分。应用具备响应式设计,加之学习进度跟踪与评论功能,打造互动式学习环境,是现代企业提升员工技能的理想工具。提供全部无加密源代码,支持私有化部署。V1.0.2插件规范优化修复:1、视图 变量 输出时正确使用......
  • 多平台租房系统V1.0.3
    多平台(目前适配H5,微信小程序)租房系统,支持多城市、出租房、预约看房等功能。提供全部无加密源码,支持私有化部署。V1.0.3插件开发规范优化系统,使系统更加符合插件开发规范标准......
  • C++猫国建设者1.0.0.1
    最近我游玩猫国建设者游戏,让我灵感打发,于是用C++做了一个以后会慢慢更新代码如下:#include<iostream>#include<cstdio>#include<string>#include<algorithm>#include<cmath>#include<cstdlib>#include<ctime>#include<windows.h>#include&l......
  • 优校管理系统V1.0.9
    优校管理系统(简称优校管)是中小学信息化管理系统,拥有PC版、UniAPP版(高级授权)。支持微信小程序、H5网页等多平台,主要用于信息管理、教学管理、素养评价。V1.0.9更稳定的版本,更好的体验1、学生端(标准版端和高级版均支持)增加请销假功能,同时在管理员端增加审核学生提交的请销假记录......
  • 第六章,数组1.0
    第六章,数组例6.1对10个数组元素赋值0-9,按要求逆序输出#define_CRT_SECURE_NO_WARNINGS#include<stdio.h>intmain(){   intstr[10];   for(inti=0;i<10;i++){//下标0-9      str[i]=i;   }   for(intj=9;j>=0;j--){/......