公共API

davincirunsdk.init_rank_table() Dict[源代码]

SDK,训练作业中用户应使用此函数转换hccl v0.1 -> v1.0

返回

设置后的环境变量, False则为未找到rank_table,跳过设置

返回类型

Dict or False

davincirunsdk.set_random_ms_cache_dir()[源代码]

用于暂时设置MindSpore compiler缓存文件夹,用完自动销毁;

这个方法允许你在启动分布式训练后做一些额外的工作,如果不需要,可以使用start_and_wait_distributed_train

示例

>>> with set_random_ms_cache_dir():
>>>    manager = start_distributed_train(train_command)
>>>    ... # do some extra work
>>>    wait_distributed_train(manager)

Returns:

davincirunsdk.start_and_wait_distributed_train(command, work_dir='./', log_dir='./log', *, output_notebook=False, random_cache_dir=True, destroy_when_finished=True, raise_exception=True)[源代码]

启动并等待分布式训练完成

参数
  • command (List) -- command list,用于启动训练脚本

  • work_dir (Path-like string) -- 工作目录,如果command存在相对路径,需要确保从工作目录访问相对路径正确

  • log_dir (Path-like string) -- 日志输出目录

  • output_notebook -- 默认为False,当为True时,将自动输出日志到notebook中;如果在非notebook环境中打开,不应当有任何作用

  • random_cache_dir -- 默认为True,是否使用随机缓存目录,避免在工作目录下生成大量算子缓存

  • destroy_when_finished -- 默认为True,是否在结束时销毁所有子进程;通常及时销毁可以帮助释放NPU资源,除非你想深入进程细节

  • raise_exception -- 默认为True,是否在子进程失败时raise exception,以确保外部得到exception提示,这在流水线中判断执行结果很有用

示例

>>> start_and_wait_distributed_train(train_command)
返回

状态码,0为正常结束,1为异常

抛出

DistributedRuntimeError -- 分布式训练失败,raise_exception=True 可抛出.

davincirunsdk.start_distributed_train(command, work_dir='./', log_dir='./log', *, output_notebook=False)[源代码]

启动分布式训练任务

参数
  • command (List) -- command list,用于启动训练脚本

  • work_dir -- 工作目录,如果command存在相对路径,需要确保从工作目录访问相对路径正确

  • log_dir -- 日志输出目录

  • output_notebook -- 默认为False,当为True时,将自动输出日志到notebook中;如果在非notebook环境中打开,不应当有任何作用

示例

>>> with set_random_ms_cache_dir():
>>>    manager = start_distributed_train(train_command)
>>>    ... # do some extra work
>>>    wait_distributed_train(manager)
返回

FMKManager

davincirunsdk.wait_distributed_train(fmk_manager, destroy_when_finished=True, raise_exception=True)[源代码]

等待分布式训练完成

参数
  • fmk_manager -- FMKManager, 通常是使用start_distributed_train的返回

  • destroy_when_finished -- 默认为True,是否在结束时销毁所有子进程;通常及时销毁可以帮助释放NPU资源,除非你想深入进程细节

  • raise_exception -- 默认为True,是否在子进程失败时raise exception,以确保外部得到exception提示,这在流水线中判断执行结果很有用

返回

状态码,0为正常结束,1为异常

抛出

DistributedRuntimeError -- 分布式训练失败,raise_exception=True 可抛出.