系统约束与限制
- 该文档仅配套TensorFlow 1.15版本使用,当前版本同时支持TensorFlow 2.6版本的模型迁移,具体请参考《TensorFlow 2.6.5网络模型迁移和训练指南》。
-
Atlas 训练系列产品
Atlas A2 训练系列产品
- 当前版本不支持float64/complex64/complex128/DT_VARIANT数据类型。
- 目前系统支持的format主要有NCHW、NHWC、NC、HWCN、CN。
- 如果用户原始脚本中已经实现了手动混合精度功能(比如显式调用cast算子转换计算精度),系统的默认精度处理方式是优先保持原图精度,即当算子不支持float32数据类型时,直接降低精度到float16。
- 条件分支、循环分支只支持tf.cond、tf.while_loop、tf.case。
- 多P训练时,NPURunconfig不支持save_checkpoints_secs。
- 多卡训练时,不支持仅保存单卡的Summary信息。
- iterations_per_loop>1的场景下,save_checkpoints_steps必须大于或等于iterations_per_loop,且是iterations_per_loop的整数倍,否则不会按照save_checkpoints_steps配置的值保存数据。iterations_per_loop>1的场景下,可能无法按照save_summary_steps和log_step_count_steps配置的值保存信息,请参考Log/Summary实现信息保存。
- 仅summary/log/data算子支持String类型。
- 针对Atlas 训练系列产品,算子不支持inf/nan输入。
- 集合通信约束:
- 分布式训练场景下,HCCL会使用Host服务器的部分端口进行集群信息收集,需要操作系统预留该部分端口。默认情况下,HCCL使用60000-60015端口,若通过环境变量HCCL_IF_BASE_PORT指定了Host网卡起始端口,则需要预留以该端口起始的16个端口。
操作系统端口号预留示例:sysctl -w net.ipv4.ip_local_reserved_ports=60000-60015
- 针对Atlas 训练系列产品:server内只支持1/2/4/8P粒度的分配。
- allreduce和reduce_scatter仅支持int8、int32、int64、float16和float32数据类型。
- 针对Atlas A2 训练系列产品:allreduce和reduce_scatter仅支持int8、int16、 int32、int64、 float16, float32,bfp16数据类型。
- 分布式训练场景下,HCCL会使用Host服务器的部分端口进行集群信息收集,需要操作系统预留该部分端口。默认情况下,HCCL使用60000-60015端口,若通过环境变量HCCL_IF_BASE_PORT指定了Host网卡起始端口,则需要预留以该端口起始的16个端口。
- 数据预处理约束:
- 只支持使用tf.data.make_initializable_iterator进行getnext算子下沉。
- 当前不支持queue方式读取数据,仅支持dataset和placeholder方式。
- 如果使用python的多进程包multiprocessing创建多进程,请不要使用fork方法,建议使用forkserver方法。
父主题: 入门学习