Pytorch Distributed 初始化
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 初始化相关推荐
- pytorch默认初始化_“最全PyTorch分布式教程”来了!
前言 本文对使用pytorch进行分布式训练(单机多卡)的过程进行了详细的介绍,附加实际代码,希望可以给正在看的你提供帮助.本文分三个部分展开,分别是: 先验知识 使用过程框架 代码解析 若想学习分布 ...
- pytorch默认初始化_PyTorch的初始化
背景 在使用PyTorch深度学习框架的时候,不管是训练还是测试,代码中引入PyTorch的第一句总是: import torch 在Gemfield前述专栏文章里,我们已经得知,torch/csrc ...
- pytorch默认初始化_小白学PyTorch | 9 tensor数据结构与存储结构
[机器学习炼丹术]的学习笔记分享<> 小白学PyTorch | 8 实战之MNIST小试牛刀 小白学PyTorch | 7 最新版本torchvision.transforms常用API翻 ...
- pytorch tensor 初始化_PyTorch简明笔记[1]-Tensor的初始化和基本操作
听麻麻说,偷偷收藏而不感谢是不礼貌的,至少应该点个赞~我觉得麻麻说的对! 不断地被人安利PyTorch,终于忍不住诱惑决定入坑了. 当初学习TensorFlow的时候,没有系统性地学习.之前TF的英文 ...
- pytorch tensor 初始化_Pytorch - nn.init 参数初始化方法
Pytorch 的参数初始化 - 给定非线性函数的推荐增益值(gain value):nonlinearity 非线性函数gain 增益 Linear / Identity1 Conv{1,2,3}D ...
- PyTorch参数初始化和Finetune
前言 这篇文章算是论坛PyTorch Forums关于参数初始化和finetune的总结,也是我在写代码中用的算是"最佳实践"吧.最后希望大家没事多逛逛论坛,有很多高质量的回答. ...
- pytorch默认初始化_Pytorch 实现权重初始化
pytorch 怎么定义多任务学习中的不同任务的权重 pytorch 怎么定义多任务学习中的不同任务的权重 搜索资料 我来答 分享 微信扫一扫 新浪微博 QQ空间 举报 浏览15 次 本地图片 图片 ...
- [深度学习] 分布式Pytorch介绍(三)
[深度学习] 分布式模式介绍(一) [深度学习] 分布式Tensorflow介绍(二) [深度学习] 分布式Pytorch介绍(三) [深度学习] 分布式Horovod介绍(四) 一 Pytorc ...
- 新手手册:Pytorch分布式训练
文 | 花花@机器学习算法与自然语言处理 单位 | SenseTime 算法研究员 目录 0X01 分布式并行训练概述 0X02 Pytorch分布式数据并行 0X03 手把手渐进式实战 A. 单机单 ...
最新文章
- 简述python程序结构_Python程序结构
- 3纳米、2纳米、1纳米芯片该如何造?
- python大神-python大神教你在最短时间内学会爬取大规模数据
- Tomcat 处理 HTTP 请求源码分析(下)【转】
- 以列表形式输出_python格式化输出总结
- python 网页爬取数据生成文字云图
- 前端学习(1542):cdn简介
- sass webpack_如何在Visual Studio和Webpack中编译Sass文件
- 下拉默认选择_在Excel中制作二级联动下拉菜单,太有用了
- web前端开发技术现状与发展_Web前端开发的未来,将会有哪些发展方向?
- hive优化--增加减少map数
- 我的世界Java种子大全_种子(世界生成)
- POI - 读取Excel2003、Excel2007的兼容性问题
- 李维看 .net 和 DELPHI 6 (含李维照片) (转)
- 李白打酒加强版(dp)
- linux区分物理机和虚拟机,如何判断linux服务器是虚拟机还是物理机
- 3DMM(3D Morphable Model)原理和实现
- 前端大屏页面布局经验
- (,)的用法逗号表达式
- 3DTank大战总结
热门文章
- Ant 风格的路径匹配模式
- 如何快速、批量导出谷歌浏览器里的历史记录
- 如何在你朋友面前装逼4(程序代码)
- 解决阿里云服务器redis连接超时
- qnap 备份linux文件夹,如何将 Qsync 文件夹中的文件备份至其他的 QNAP NAS?
- 图片转excel表格怎么弄的呢?这三个方法让你实现图片转表格
- 才云 Caicloud 步履不停,与云原生先行者携手同行
- linux设置用户名密码命令,Linux设置(修改)用户密码命令-passwd | IT运维网
- 搭建Samba服务器及遇到问题解决方法--Failed to add entry for user
- JPEG编码原理及简易编码器实现