notebook.sdk

davincirunsdk.notebook.sdk._set_extra_env(rank_table)[源代码]

训练任务转换hccl V0.1 -> v1.0时,额外适配的环境变量,Example 展示了当前的配置

参数

rank_table -- RankTable,可以是V0或者V1

示例

>>> os.environ['RANK_START'] = str(rank_start)
>>> os.environ['RANK_SIZE'] = str(rank_table.get_device_num())

Returns:

davincirunsdk.notebook.sdk.generate_rank_table()[源代码]

训练作业时用于hccl v0.1 -> v1.0转换

如果当前已经有了v1.0的hccl文件,直接使用get_rank_table

返回

RankTable, 可能是RankTableV0或RankTableV1

davincirunsdk.notebook.sdk.get_rank_table()[源代码]

读入环境变量中的RANK_TABLE

返回

RankTableV1

davincirunsdk.notebook.sdk.init_rank_table() Dict[源代码]

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

返回

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

返回类型

Dict or False

davincirunsdk.notebook.sdk.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.notebook.sdk.set_rank_env(rank_table)[源代码]

这里重新设置了hccl文件的地址,主要是针对V0.1转换为V1.0转换的场景

参数

rank_table -- RankTable,可以是V0或者V1

Returns:

davincirunsdk.notebook.sdk.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.notebook.sdk.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.notebook.sdk.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 可抛出.