Python 著名 AI 框架 PyTorch 1.11 已釋出。此版本由自 1.10 以來的 3300 多個提交組成, TorchData 和 functorch 的 beta 版本亦伴隨釋出。
版本概括:
- TorchData 是一個用於通用模組化資料載入原語的新庫,用於輕鬆構建靈活和高效能的資料管道。。
- functorch 是一個將可組合函數轉換新增到 PyTorch 的庫,現已推出 beta 版。。
- 分散式資料並行 (DDP) 靜態圖優化穩定可用。
TorchData 介紹
TorchData 是一個通用模組化資料載入原語庫,用於輕鬆構建靈活且高效能的資料管道。現有的 DataLoader 將太多的功能捆綁在一起,難以擴充套件,此外,不同的用例通常必須一遍又一遍地重寫相同的資料載入實用程式。TorchData 的目標是通過稱為「 DataPipes 」的 Iterable 樣式和 Map 樣式的構建塊啟用可組合的資料載入,這些構建塊與 PyTorch 的 DataLoader 開箱即用。
目前已經實現了 50 多個提供不同核心功能的 DataPipes,例如開啟檔案、解析文字、轉換樣本、快取、混洗和批次處理。在此版本中,一些 PyTorch 域庫已遷移其資料集以使用 DataPipes。在 TorchText 中,庫提供的流行資料集是使用 DataPipes 實現的,其 SST-2 二進位制文字分類教學的一部分演示瞭如何使用 DataPipes 為模型預處理資料。
TorchData 的現已上線,包含介紹、以及。中描述了與 DataLoader 相關的常見問題解答和未來計劃。
functorch 介紹
受Google JAX 的極大啟發,functorch 是一個向 PyTorch 新增可組合函數轉換的庫。它旨在提供可組合的 vmap(向量化)和 autodiff 轉換,可與 PyTorch 模組和 PyTorch autograd 一起使用,並具有良好的渴望模式效能。
可組合的函數轉換可以幫助解決當今在 PyTorch 中難以實現的許多用例:
- 計算每樣本梯度(或其他每樣本數量)
- 在單臺機器上執行模型集合
- 在 MAML 的內迴圈中有效地將任務批次處理在一起
- 有效地計算雅可比矩陣和黑森矩陣以及批次矩陣
組合 vmap(向量化)、vjp(反向模式 AD)和 jvp(正向模式 AD)轉換能夠輕鬆地表達上述內容,而無需為每個轉換設計單獨的庫。有關 functorch 的詳細資訊,請參閱、和。
分散式訓練
(穩定)DDP 靜態圖
DDP 靜態圖假設您的模型在每次迭代中都使用相同的一組已使用/未使用的引數,因此它可以確定性地瞭解狀態,例如哪些 hooks 將觸發、hooks 將觸發多少次以及第一次迭代後的梯度計算就緒順序。
靜態圖在第一次迭代中快取了這些狀態,因此它可以支援 DDP 在以前的版本中無法支援的功能,例如,支援在相同引數上的多個啟用檢查點,無論是否有未使用的引數。當存在未使用的引數時,靜態圖功能還應用效能優化,例如,它避免遍歷圖以在每次迭代中搜尋未使用的引數,並啟用動態分桶順序。
DDP 靜態圖中的這些優化為一些推薦模型帶來了 10% 的 QPS 增益。
要啟用靜態圖,只需在 DDP API 中設定 static_graph=True
,如下所示:
ddp_model = DistributedDataParallel(model, static_graph=True)
有關更多詳細資訊,請參閱和。
更新公告: