分布式訓練TorchDistributor
本文描述如何執行分布式訓練PyTorch毫升模型使用TorchDistributor。
TorchDistributor PySpark開源模塊,幫助用戶做分布式訓練PyTorch火花集群,這允許您啟動PyTorch培訓工作引發的工作。底層,它初始化環境和員工之間的溝通渠道,充分利用了CLI命令torch.distributed.run
工作者節點運行分布式訓練。
的TorchDistributor API支持方法如下表所示。
方法和簽名 |
描述 |
---|---|
|
TorchDistributor創建一個實例。 |
|
通過調用運行分布式訓練 |
開發工作流程為筆記本電腦
如果模型創建和訓練過程完全從你的本地機器或筆記本磚的筆記本,你隻需要準備你的代碼進行少量更改為分布式訓練。
準備單獨的節點代碼:準備和測試單一節點代碼PyTorch, PyTorch閃電,或其他框架基於PyTorch / PyTorch閃電,HuggingFace教練API。
準備代碼標準分布式訓練:你需要單流程培訓轉化成分布式訓練。這種分布式代碼都包含在一個訓練函數,您可以使用
TorchDistributor
。移動進口在訓練函數:添加必要的進口,如
進口火炬
在培訓的功能。這樣做可以讓你避免常見的酸洗錯誤。此外,device_id
模型和數據的聯係是由:device_id=int(操作係統。環境(“LOCAL_RANK”])
啟動分布式訓練:實例化
TorchDistributor
所需的參數和調用.run (* args)
啟動培訓。
以下是培訓代碼示例:
從pyspark.ml.torch.distributor進口TorchDistributordef火車(learning_rate,use_gpu):進口火炬進口torch.distributed作為經銷進口torch.nn.parallel.DistributedDataParallel作為DDP從torch.utils.data進口DistributedSampler,DataLoader後端=“nccl”如果use_gpu其他的“gloo”經銷。init_process_group(後端)設備=int(操作係統。環境(“LOCAL_RANK”])如果use_gpu其他的“cpu”模型=DDP(createModel(),* *kwargs)取樣器=DistributedSampler(數據集)加載程序=DataLoader(數據集,取樣器=取樣器)輸出=火車(模型,加載程序,learning_rate)經銷。清理()返回輸出經銷商=TorchDistributor(num_processes=2,local_mode=假,use_gpu=真正的)經銷商。運行(火車,1 e - 3,真正的)
從外部存儲庫遷移訓練
如果你有一個現有的分布式訓練程序存儲在外部存儲庫中,您可以很容易地遷移到磚做的以下幾點:
導入庫:導入外部存儲庫是一個磚回購。
創建一個新的筆記本初始化一個新的庫中的數據磚的筆記本。
啟動分布式訓練筆記本電池,電話
TorchDistributor
如下:
從pyspark.ml.torch.distributor進口TorchDistributortrain_file=“/道路/ / train.py”arg遊戲=(“——learning_rate = 0.001”,”——batch_size = 16 "]經銷商=TorchDistributor(num_processes=2,local_mode=假,use_gpu=真正的)經銷商。運行(train_file,*arg遊戲)