当前位置: 首页 > news >正文

huggingface笔记 accelerate launch

1 介绍

用正确的参数在分布式系统上启动指定的脚本

用法:

accelerate launch [arguments] {training_script} --{training_script-argument-1} --{training_script-argument-2} ...
{training_script}要并行启动的脚本的路径
{training_script-argument-1}.....训练脚本的参数

2 可选参数

-h, --help显示帮助信息并退出
--config_file CONFIG_FILE用于启动脚本中默认值的配置文件
-m, --module将每个进程更改为将启动脚本解释为Python模块,执行行为与 ‘python -m’ 相同
--debug是否在出错时打印torch.distributed的堆栈跟踪
--no_python

跳过在训练脚本前添加‘python’,直接执行它。

当脚本不是Python脚本时很有用

-q, --quiet

将启动堆栈跟踪中的子进程错误静音,只显示相关的回溯

仅适用于DeepSpeed和单进程配置

3 硬件选择参数

--cpu是否强制在CPU上进行训练
--multi_gpu是否应该启动分布式GPU训练
--tpu是否应该启动TPU训练
--ipex是否应该启动Intel Pytorch Extension (IPEX)训练

4 资源选择参数

--mixed_precision

{no,fp16,bf16}

是否使用混合精度训练。

  • 在FP16和BF16 (bfloat16)训练之间选择。
  • BF16训练仅支持在Nvidia Ampere GPU和PyTorch 1.10或更高版本上。
--num_processes NUM_PROCESSES并行启动的进程总数
--num_machines NUM_MACHINES此训练中使用的机器总数
--num_cpu_threads_per_process NUM_CPU_THREADS_PER_PROCESS

每个进程的CPU线程数。

可以调整以获得最佳性能。

5 训练范式参数

--use_deepspeed是否使用DeepSpeed进行训练
--use_fsdp是否使用FullyShardedDataParallel进行训练
--use_megatron_lm是否使用Megatron-LM进行训练
--use_xpu是否使用IPEX插件在XPU上特别加速训练

6 分布式GPU参数

仅在传递multi_gpu或通过accelerate配置配置了多GPU训练时有用

--gpu_ids在此机器上用于训练的GPU ID,用逗号分隔列表
--same_network所有用于多节点训练的机器是否存在于同一个本地网络上。
--machine_rank MACHINE_RANK启动此脚本的机器的排名
--main_process_ip MAIN_PROCESS_IP排名第0的机器的IP地址。
--main_process_port MAIN_PROCESS_PORT用于与排名第0的机器通信的端口。
-rdzv_backend (str)使用的集结方法,如“static”或“c10d”
--rdzv_conf (str)额外的集结配置(<key1>=<value1>,<key2>=<value2>,…)
--max_restarts (int)在失败前工作组重启的最大次数。
--monitor_interval (float)以秒为单位,监控工作状态的间隔。

7 TPU参数

仅在传递 tpu 或通过 accelerate 配置进行 TPU 训练时有用

--main_training_function MAIN_TRAINING_FUNCTION要在脚本中执行的主函数的名称。
--downcast_bf16当在TPU上使用bf16精度时,是否将float和double张量都转换为bfloat16,或者double张量保持为float32。

8 DeepSpeed 参数

仅在传递 use_deepspeed 或通过 accelerate 配置配置了 deepspeed 时有用

--deepspeed_config_fileDeepSpeed配置文件
--zero_stageDeepSpeed的ZeRO优化阶段
--offload_optimizer_device决定在哪里(none|cpu|nvme)卸载优化器状态
--offload_param_device决定在哪里(none|cpu|nvme)卸载参数
--gradient_accumulation_steps在训练脚本中使用的梯度累积步数。
--gradient_clipping训练脚本中使用的梯度裁剪值。
--zero3_init_flag

决定是否启用 deepspeed.zero.Init 来构建大型模型。

仅适用于DeepSpeed ZeRO Stage-3

--zero3_save_16bit_model

决定在使用ZeRO Stage-3时是否保存16位模型权重。

仅适用于DeepSpeed ZeRO Stage-3。

--deepspeed_hostfile用于配置多节点计算资源的DeepSpeed主机文件
--deepspeed_exclusion_filter使用多节点设置时的DeepSpeed排除过滤器字符串
--deepspeed_inclusion_filter--deepspeed_inclusion_filter
--deepspeed_multinode_launcher使用的DeepSpeed多节点启动器

9 完全分片数据并行参数(FSDP)

以下参数仅在传递 use_fsdp 或通过 accelerate 配置配置了完全分片数据并行(Fully Sharded Data Parallelism, FSDP)时有用

--fsdp_offload_params决定是否(true|false)将参数和梯度卸载到CPU
--fsdp_min_num_paramsFSDP的默认自动包装的最小参数数量
--fsdp_sharding_strategyFSDP的分片策略
--fsdp_auto_wrap_policyFSDP的自动包装策略
--fsdp_transformer_layer_cls_to_wrap要包装的Transformer层类名(区分大小写),例如 BertLayer, GPTJBlock, T5Block 等
--fsdp_backward_prefetch_policyFSDP的后向预取策略
--fsdp_state_dict_typeFSDP的状态字典类型
--fsdp_forward_prefetchFSDP的前向预取
--fsdp_use_orig_params如果为真,允许在FSDP单元中混入非均匀的requires_grad
--fsdp_cpu_ram_efficient_loading

如果为真,只有第一个进程加载预训练的模型检查点,而所有其他进程的权重为空。

使用此功能时,需要设置 --fsdp_sync_module_states 为真

--fsdp_sync_module_states如果为真,每个独立包装的FSDP单元将从0级广播模块参数

10 Megatron-LM 参数

以下参数仅在传递 use_megatron_lm 或通过 accelerate 配置配置了 Megatron-LM 时有用

--megatron_lm_tp_degreeMegatron-LM的张量并行度(TP degree)
--megatron_lm_pp_degreeMegatron-LM的流水线并行度(PP degree)
--megatron_lm_num_micro_batches当PP度大于1时,Megatron-LM的微批次数量
--megatron_lm_sequence_parallelism决定是否(true|false)在TP度大于1时启用序列并行
--megatron_lm_recompute_activations决定是否(true|false)启用选择性激活重计算
--megatron_lm_use_distributed_optimizer决定是否(true|false)使用分布式优化器,该优化器在数据并行(DP)等级间分片优化器状态和梯度
--megatron_lm_gradient_clipping基于全局L2范数的Megatron-LM的梯度裁剪值(0为禁用)

11 AWS SageMaker 参数

以下参数仅在SageMaker训练时有用

--aws_access_key_id AWS_ACCESS_KEY_ID用于启动Amazon SageMaker训练工作的AWS_ACCESS_KEY_ID
--aws_secret_access_key AWS_SECRET_ACCESS_KEY

用于启动Amazon SageMaker训练工作的AWS_SECRET_ACCESS_KEY

相关文章:

  • 学习编程对英语要求高吗?
  • FreeBSD下使用原生虚拟机管理器bhyve
  • KT6368A蓝牙芯片AT命令会被透传出去,指令对为什么会被透传出去
  • PUBG绝地求生卡在初始界面 登不上去 打不开游戏的解决办法
  • Nginx添加访问密码
  • 记录关联(笛卡尔积)——kettle开发24
  • CSS 媒体查询 响应式开发
  • 长度最长的子数组
  • Java Web 应用开发基础 - JSP内置对象
  • Android ANR简介
  • 指纹识别经典图书、开源算法库、开源数据库
  • C语言之指针详解(5)(含有易错笔试题)
  • 达梦授权某个模式给其它用户只读权限
  • ubuntu 22.04 appearance设置没有dock选项
  • 德勤:中国、印度等对ChatGPT等生成式AI应用,处领先地位
  • Elasticsearch 参考指南(升级前重新索引)
  • ES6 学习笔记(一)let,const和解构赋值
  • hadoop集群管理系统搭建规划说明
  • HTTP中的ETag在移动客户端的应用
  • Java编程基础24——递归练习
  • leetcode-27. Remove Element
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • Shadow DOM 内部构造及如何构建独立组件
  • 基于MaxCompute打造轻盈的人人车移动端数据平台
  • 日剧·日综资源集合(建议收藏)
  • 十年未变!安全,谁之责?(下)
  • 【云吞铺子】性能抖动剖析(二)
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • #{} 和 ${}区别
  • #ubuntu# #git# repository git config --global --add safe.directory
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (a /b)*c的值
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (规划)24届春招和25届暑假实习路线准备规划
  • (论文阅读11/100)Fast R-CNN
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • (转)C语言家族扩展收藏 (转)C语言家族扩展
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • (转)创业的注意事项
  • .secret勒索病毒数据恢复|金蝶、用友、管家婆、OA、速达、ERP等软件数据库恢复
  • @Bean注解详解
  • @我的前任是个极品 微博分析
  • [12] 使用 CUDA 进行图像处理
  • [20171106]配置客户端连接注意.txt
  • [Android]Android P(9) WIFI学习笔记 - 扫描 (1)
  • [BZOJ] 1001: [BeiJing2006]狼抓兔子
  • [C++] vector list 等容器的迭代器失效问题
  • [Go 微服务] Kratos 验证码业务
  • [Hive] INSERT OVERWRITE DIRECTORY要注意的问题
  • [Kubernetes]8. K8s使用Helm部署mysql集群(主从数据库集群)
  • [LeetCode][138]【学习日记】深拷贝带有随机指针的链表
  • [Linux] Apache的配置与运用
  • [Linux内存管理-分页机制]—把一个虚拟地址转换为物理地址