pytorch1.7 win10 兩張titan x pascal
一、torch.nn.parallel.distributeddataparallel
1、接收並行呼叫傳入的引數
parser = argparse.argumentparser()
parser.add_argument("--local_rank", type=int)
args = parser.parse_args()
2、設定當前程序gpu
torch.cuda.set_device(args.local_rank)
3、通訊初始化,windows pytorch 1.7所用版本不支援nccl,所以用gloo,world_size代表程序數量
torch.distributed.init_process_group(backend.gloo, init_method='file:///sharefile', rank=args.local_rank, world_size=2)
4、dataset
train_dataset = datasets.cifar100('./data/cifar100', train=true, download=true, transform=transforms.compose([
transforms.totensor(), transforms.normalize((0.1307,), (0.3081,))]))
test_dataset = datasets.cifar100('./data/cifar100', train=false, transform=transforms.compose([
transforms.totensor(), transforms.normalize((0.1307,), (0.3081,))]))
5、sampler
train_sampler = torch.utils.data.distributed.distributedsampler(train_dataset)
test_sampler = torch.utils.data.distributed.distributedsampler(test_dataset)
6、loader
train_loader = torch.utils.data.dataloader(train_dataset, batch_size=500, shuffle=false, num_workers=2, sampler=train_sampler)
test_loader = torch.utils.data.dataloader(test_dataset, 500, shuffle=false, num_workers=2, sampler=test_sampler)
7、device
device = torch.device("cuda", args.local_rank)
8、model
model = digitalnet().to(device)
model = torch.nn.parallel.distributeddataparallel(model, device_ids=[args.local_rank], output_device=args.local_rank)
9、呼叫,nproc_per_node程序數量,nnodes機子數量
python -m torch.distributed.launch --nproc_per_node=2 --nnodes=1 digitalnetparallel.py
10、結果
cifar100資料集
雙卡,batch=500 num_workers=2時,相當於batch=1000,10個epoch用時123.25秒
單卡,batch=1000 num_workers=0時,10個epoch用時174.05秒
雙卡,gpu1占用視訊記憶體6939mb,gpu2占用視訊記憶體5006mb。
單卡,gpu占用視訊記憶體8703mb。
雙卡速度比單卡快速了41%。
二、torch.nn.dataparallel
cifar100資料集
在使用更簡單資料並行torch.nn.dataparallel,速度沒有提公升,小批量還會慢幾秒。
if torch.cuda.device_count() > 1:
model = torch.nn.dataparallel(model, device_ids=[0, 1])
ubuntu 18.4同樣硬體條件
通訊使用nccl
雙卡,batch=500 num_workers=2時,相當於batch=1000,10個epoch用時63.33秒
單卡,batch=1000 num_workers=0時,10個epoch用時136.43秒
linux下速度更快。
書單 機器學習 深度學習
機器學習實踐 有原始碼 統計學習 李航 機器學習 周志華 白面機器學習 深度學習 goodfellow等 凸優化 pattern recognition and machine learning the elements of statistical learning 台大機器學習基石 cs231,...
深度學習多模態融合 深度學習用於多模態語義學習簡述
由於深度學習具有通過逐層抽象來形成良好特徵的能力,因此可利用該方法來形成不同型別資料的聯合特徵表示。具體方法有深度典範相關分析 deep caconical correlation analysis,deep cca 多模態深度學習以及多模態玻爾茲曼機等。這些方法的基本思路是通過不同的深層模型 如c...
windows深度學習環境搭建
1.安裝anaconda 國內映象源 正常雙擊安裝,自己更換安裝目錄。安裝後 遇到的問題如下 1 在安裝後測試安裝終端輸入 conda version 得到的結果 conda 不是內部或外部命令,也不是可執行的程式或批處理檔案。這是因為環境變數導致的這個問題。anaconda scripts 目錄到...