Pytorch Distributed 初始化方法

参考文献

https://pytorch.org/docs/master/distributed.html

代码
https://github.com/overfitover/pytorch-distributed
欢迎来star me.

初始化

torch.distributed.init_process_group(backend, init_method='env://', **kwargs)

参数说明

  • backend(str): 后端选择,包括 tcp mpi gloo
  • init_method(str, optional): 用来初始化包的URL, 用来做并发控制的共享方式
  • world_size(int, optional): 参与工作的进程数
  • rank(int, optional): 当前进程的rank
  • group_name(str, optional): 用来标记这组进程。

init_method()

有三种方法:

  • file:// 共享文件系统
  • tcp:// IP组播
  • env:// 环境变量 (默认是这个)

env

#!/usr/bin/env python
import os
import torch
import torch.distributed as dist
from torch.multiprocessing import Process
import timedef run(rank, size):passdef init_processes(rank, size, fn, backend='gloo'):""" Initialize the distributed environment. """os.environ['MASTER_ADDR'] = '162.128.0.22'os.environ['MASTER_PORT'] = '29555'dist.init_process_group(backend, rank=rank, world_size=size)torch.cuda.manual_seed(1)fn(rank, size)print("MM")print(dist.get_rank())print(dist.get_world_size())print(dist.is_available())def main():size = 2processes=[]for i in range(size):p = Process(target=init_processes, args=(i, size, run))p.start()processes.append(p)for p in processes:p.join()if __name__ == "__main__":start_time = time.time()main()end_time = time.time()print("耗时:", end_time-start_time)

注意
将162.128.0.22换成自己的IP地址。

tcp

import torch
import torch.distributed as dist
import argparse
from time import sleep
from random import randint
from torch.multiprocessing import Processdef initialize(rank, world_size, ip, port):dist.init_process_group(backend='tcp', init_method='tcp://{}:{}'.format(ip, port), rank=rank, world_size=world_size)print("MM")def main():parser = argparse.ArgumentParser()parser.add_argument('--ip', type=str, default='162.128.0.22')parser.add_argument('--port', type=str, default='20000')parser.add_argument('--rank', '-r', type=int)parser.add_argument('--world-size', '-s', type=int)args = parser.parse_args()print(args)# initialize(args.rank, args.world_size, args.ip, args.port)size = 2processes = []for i in range(size):p = Process(target=initialize, args=(i, size, args.ip, args.port))p.start()processes.append(p)for p in processes:p.join()if __name__ == '__main__':main()

注意
将162.128.0.22换成自己的IP地址。

共享文件

import argparse
from time import sleep
from random import randint
from torch.multiprocessing import Processdef initialize(rank, world_size):dist.init_process_group(backend='gloo', init_method='file:///home/yxk/Documents/Deeplearningoflidar139/overfitover/share', rank=rank, world_size=world_size)print("MM")def main():size = 2processes = []for i in range(size):p = Process(target=initialize, args=(i, size))p.start()processes.append(p)for p in processes:p.join()if __name__ == '__main__':main()

注意
init_method: 需要以file://开头,包含共享文件系统上不存在的文件(在现有目录中)的路径。如果文件不存在, 文件系统初始化将自动创建该文件,但不会删除该文件。你要在下一个init_process_group调用之前清楚该文件。

Pytorch Distributed 初始化相关推荐

  1. pytorch默认初始化_“最全PyTorch分布式教程”来了!

    前言 本文对使用pytorch进行分布式训练(单机多卡)的过程进行了详细的介绍,附加实际代码,希望可以给正在看的你提供帮助.本文分三个部分展开,分别是: 先验知识 使用过程框架 代码解析 若想学习分布 ...

  2. pytorch默认初始化_PyTorch的初始化

    背景 在使用PyTorch深度学习框架的时候,不管是训练还是测试,代码中引入PyTorch的第一句总是: import torch 在Gemfield前述专栏文章里,我们已经得知,torch/csrc ...

  3. pytorch默认初始化_小白学PyTorch | 9 tensor数据结构与存储结构

    [机器学习炼丹术]的学习笔记分享<> 小白学PyTorch | 8 实战之MNIST小试牛刀 小白学PyTorch | 7 最新版本torchvision.transforms常用API翻 ...

  4. pytorch tensor 初始化_PyTorch简明笔记[1]-Tensor的初始化和基本操作

    听麻麻说,偷偷收藏而不感谢是不礼貌的,至少应该点个赞~我觉得麻麻说的对! 不断地被人安利PyTorch,终于忍不住诱惑决定入坑了. 当初学习TensorFlow的时候,没有系统性地学习.之前TF的英文 ...

  5. pytorch tensor 初始化_Pytorch - nn.init 参数初始化方法

    Pytorch 的参数初始化 - 给定非线性函数的推荐增益值(gain value):nonlinearity 非线性函数gain 增益 Linear / Identity1 Conv{1,2,3}D ...

  6. PyTorch参数初始化和Finetune

    前言 这篇文章算是论坛PyTorch Forums关于参数初始化和finetune的总结,也是我在写代码中用的算是"最佳实践"吧.最后希望大家没事多逛逛论坛,有很多高质量的回答. ...

  7. pytorch默认初始化_Pytorch 实现权重初始化

    pytorch 怎么定义多任务学习中的不同任务的权重 pytorch 怎么定义多任务学习中的不同任务的权重 搜索资料 我来答 分享 微信扫一扫 新浪微博 QQ空间 举报 浏览15 次 本地图片 图片 ...

  8. [深度学习] 分布式Pytorch介绍(三)

    [深度学习] 分布式模式介绍(一) [深度学习] 分布式Tensorflow介绍(二) [深度学习] 分布式Pytorch介绍(三) [深度学习] 分布式Horovod介绍(四)  一  Pytorc ...

  9. 新手手册:Pytorch分布式训练

    文 | 花花@机器学习算法与自然语言处理 单位 | SenseTime 算法研究员 目录 0X01 分布式并行训练概述 0X02 Pytorch分布式数据并行 0X03 手把手渐进式实战 A. 单机单 ...

最新文章

  1. 简述python程序结构_Python程序结构
  2. 3纳米、2纳米、1纳米芯片该如何造?
  3. python大神-python大神教你在最短时间内学会爬取大规模数据
  4. Tomcat 处理 HTTP 请求源码分析(下)【转】
  5. 以列表形式输出_python格式化输出总结
  6. python 网页爬取数据生成文字云图
  7. 前端学习(1542):cdn简介
  8. sass webpack_如何在Visual Studio和Webpack中编译Sass文件
  9. 下拉默认选择_在Excel中制作二级联动下拉菜单,太有用了
  10. web前端开发技术现状与发展_Web前端开发的未来,将会有哪些发展方向?
  11. hive优化--增加减少map数
  12. 我的世界Java种子大全_种子(世界生成)
  13. POI - 读取Excel2003、Excel2007的兼容性问题
  14. 李维看 .net 和 DELPHI 6 (含李维照片) (转)
  15. 李白打酒加强版(dp)
  16. linux区分物理机和虚拟机,如何判断linux服务器是虚拟机还是物理机
  17. 3DMM(3D Morphable Model)原理和实现
  18. 前端大屏页面布局经验
  19. (,)的用法逗号表达式
  20. 3DTank大战总结

热门文章

  1. Ant 风格的路径匹配模式
  2. 如何快速、批量导出谷歌浏览器里的历史记录
  3. 如何在你朋友面前装逼4(程序代码)
  4. 解决阿里云服务器redis连接超时
  5. qnap 备份linux文件夹,如何将 Qsync 文件夹中的文件备份至其他的 QNAP NAS?
  6. 图片转excel表格怎么弄的呢?这三个方法让你实现图片转表格
  7. 才云 Caicloud 步履不停,与云原生先行者携手同行
  8. linux设置用户名密码命令,Linux设置(修改)用户密码命令-passwd | IT运维网
  9. 搭建Samba服务器及遇到问题解决方法--Failed to add entry for user
  10. JPEG编码原理及简易编码器实现