概述
init_process_group(backend,
init_method=None,
timeout=default_pg_timeout,
world_size=-1,
rank=-1,
store=None,
group_name=''):
初始化默认的分布式进程组,这也将初始化分布式包。
有两种主要的方法来初始化进程组:
1。显式指定store、rank和world_size。
2。指定init_method(一个URL字符串),它指示在哪里/如何发现对等体。可以选择指定rank和world_size,或者在URL中编码所有必需的参数(此时不必再单独指定这些参数)。
如果两者都没有指定,init_method将被假定为"env://"。
参数:
- backend (str or Backend): 要使用的backend。根据构建时的配置,有效值包括“mpi”、“gloo”和“nccl”。这个字段应该以小写字符串的形式给出(例如,"gloo"),它也可以通过后端属性访问(例如,Backend.gloo)。如果在每台机器上使用多个进程,并使用nccl后端,每个进程必须独占访问它使用的每个GPU,因为在进程之间共享GPU可能会导致死锁。
- init_method (str, optional):指定如何初始化进程组的URL。如果没有指定init_method或store,默认为"env://"。与store互斥。
- world_size (int, optional):参与任务的进程数。如果指定了“store”,则为必需。
- rank (int, optional):当前进程的rank。如果指定了“store”,则为必需。
- store(Store, optional):所有worker都可以访问的键/值存储,用于交换连接/地址信息。与init_method互斥。
- timeout (timedelta, optional): 对进程组执行操作超时。默认为30分钟。这适用于' ' gloo ' '后端。对于' ' nccl ' ',这只适用于环境变量' ' NCCL_BLOCKING_WAIT ' '或' ' NCCL_ASYNC_ERROR_HANDLING ' '设置为1的情况。当设置' ' NCCL_BLOCKING_WAIT ' '时,这是进程将阻塞并等待集合在抛出异常之前完成的持续时间。当设置' ' NCCL_ASYNC_ERROR_HANDLING ' '时,这是集合将被异步中止并且进程将崩溃的持续时间。' ' NCCL_BLOCKING_WAIT ' '将向用户提供可以捕获和处理的错误,但由于它的阻塞特性,它有性能开销。另一方面,' ' NCCL_ASYNC_ERROR_HANDLING ' '的性能开销很小,但一旦出现错误就会使进程崩溃。这样做是因为CUDA执行是异步的,并且继续执行用户代码不再安全,因为失败的异步NCCL操作可能导致后续CUDA操作在损坏的基础上运行。
- group_name (str, optional, deprecated):组名。
启用``backend == Backend.MPI`,PyTorch需要在支持MPI的系统上从源代码构建。
最后
以上就是聪明蜜粉为你收集整理的init_process_group函数 解释的全部内容,希望文章能够帮你解决init_process_group函数 解释所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复