深度學習的最佳實踐在磚上
本文包含小貼士深度學習在磚和內置的工具和庫的信息設計優化深度學習工作負載如以下:
磚機器學習提供了預構建的深度學習機器學習與數據磚運行時基礎設施,其中包括最常見的深度學習圖書館像TensorFlow PyTorch, Keras。它還內置,預配置的GPU支持包括司機和支持庫。
磚運行時毫升還包括磚的功能空間,如集群創建和管理,圖書館和環境管理、代碼管理與磚回購,自動化支持包括磚工作和api,並集成MLflow模型開發跟蹤和模型部署和服務。
資源和環境管理
磚能幫助你定製你的深度學習的環境和保持環境一致的用戶。
定製開發環境
與磚運行時,您可以定製您的開發環境在筆記本,集群,和工作水平。
使用notebook-scoped Python庫或notebook-scoped R庫使用一組特定集群或版本的庫,而不影響其他用戶。
安裝集群級別的圖書館為一個團隊或一個項目規範版本。
建立一個磚工作確保重複任務運行在一個一致的、不變的環境。
使用集群政策
您可以創建集群政策指導正確選擇數據科學家,比如使用單個節點集群的發展和使用一個集群自動定量大的工作。
考慮A100 gpu深度學習工作負載
A100 gpu是一種有效的選擇對於許多深度學習任務,如培訓和調優大型語言模型、自然語言處理、目標檢測和分類,推薦引擎。
在所有雲磚支持A100 gpu。支持GPU類型的完整列表,請參閱支持實例類型。
A100 gpu通常是有限的可用性。請聯係您的雲提供商資源分配,或者提前考慮保留能力。
加載數據的最佳實踐
雲數據存儲通常不優化I / O,這可能是一個挑戰,需要大型數據集的深度學習模型。磚運行時毫升包括三角洲湖和Petastorm深度學習應用程序來優化數據吞吐量。
磚建議使用三角洲湖表數據存儲。三角洲湖有效地簡化了ETL和允許您訪問數據。特別是對於圖像、三角洲湖有助於優化攝入對培訓和推理。的參考圖像應用的解決方案提供了一個示例ETL優化的圖像使用三角洲湖。
Petastorm提供api,讓你準備拚花格式的數據供TensorFlow使用,Keras或PyTorch。SparkConverter API提供了火花DataFrame集成。Petastorm也為分布式處理提供數據分片。看到使用Petastorm加載數據獲取詳細信息。
培訓深度學習的最佳實踐模型
磚推薦使用機器學習運行時和MLflow跟蹤和autologging所有模型的訓練。
從單個節點集群
一個單獨的節點(司機)GPU集群為深度學習模型通常是最快和最有效的發展。一個節點4 GPU可能更快的深度學習培訓,每個4工人節點1 GPU。這是因為分布式訓練帶來網絡通信開銷。
單個節點集群是一個很好的選擇在快速迭代開發和培訓對中小規模數據模型。如果您的數據集很大足以讓訓練慢在單個機器上,考慮搬到multi-GPU甚至分布式計算。
使用TensorBoard和集群指標監控培訓過程
TensorBoard預裝在磚運行時毫升。你可以用它在筆記本或在一個單獨的標簽。看到TensorBoard獲取詳細信息。
集群指標在所有磚運行時可用。您可以檢查網絡、處理器和內存使用情況檢查的瓶頸。看到集群指標獲取詳細信息。
深度學習的優化性能
你可以,也應該,使用深度學習在磚性能優化技術。
早期停止
早期停止監控指標的價值計算驗證集和訓練時度量停止改善。這是一個更好的方法比猜測在一個好時代完成的數量。每個深度學習庫提供的本機API早期停止;例如,看到EarlyStopping調apiTensorFlow / Keras和PyTorch閃電。例如筆記本,看到的開始使用TensorFlow Keras磚。
批量大小調整
批量大小調整有助於優化GPU的利用率。如果批處理大小太小,不能充分利用GPU的計算能力。您可以使用集群指標查看GPU指標。
調整批大小與學習速度。一個好的經驗法則是,當你增加n的批量大小,增加sqrt (n)的學習速率。當手動調整,嚐試改變批量大小2或0.5倍。然後繼續調整優化性能,手動或通過測試各種hyperparameters使用自動化工具Hyperopt。
轉移學習
遷移學習,你從以前開始訓練模型,並根據需要修改它為您的應用程序。轉移學習可以大大減少所需的時間來訓練和優化新模型。看到Featurization轉移學習為更多的信息和一個例子。
搬到分布式訓練
包括HorovodRunner磚運行時毫升、spark-tensorflow-distributor
,TorchDistributor Hyperopt促進從單節點分布式訓練。
HorovodRunner
Horovod是一個開源項目,鱗片深度學習培訓multi-GPU或分布式計算。HorovodRunner,由磚和磚中包括運行時的ML,是Horovod包裝,提供火花兼容性。API允許您擴展單節點代碼以最小的變化。HorovodRunner TensorFlow, Keras, PyTorch。
spark-tensorflow-distributor
spark-tensorflow-distributor
是一個開源本地包TensorFlow分布式訓練與TensorFlow火花集群。看到例如筆記本電腦。
TorchDistributor
TorchDistributor PySpark模塊是一個開源,積極促進分布式訓練與PyTorch火花集群,允許您啟動PyTorch培訓工作引發的工作。看到分布式訓練TorchDistributor。
Hyperopt
Hyperopt提供了機器學習適應性hyperparameter調優。SparkTrials類,您可以迭代優化參數深度學習在一個集群上並行模型。
最佳實踐推理
本節包含一般建議使用模型推理與磚。
盡量減少成本,同時考慮cpu和inference-optimized gpu如Amazon EC2 G4和G5實例。沒有明確的建議,作為最好的選擇取決於模型的大小,數據維度,和其他變量。
使用MLflow為了簡化部署和服務模式。MLflow可以登錄任何深度學習模型,包括定製的預處理和後處理邏輯。模型注冊MLflow模型注冊可以部署為批處理、流媒體或網絡推理。
批處理和流推理
批處理和流媒體評分支持高吞吐量,低成本的得分在延遲低至幾分鍾。有關更多信息,請參見離線預測。
如果你希望訪問數據推理不止一次,考慮創建一個ETL數據預處理工作湖成三角洲表在運行推理工作之前。這種方式,攝取的成本和準備數據分布在多個數據的讀取。分離預處理從推理還允許您為每個工作優化選擇不同的硬件成本和性能。例如,您可能使用ETL cpu和gpu推理。
使用火花熊貓udf在一個集群規模批處理和流推理。
當你從磚,日誌模型MLflow自動提供推理代碼應用模型作為熊貓UDF。
您還可以進一步優化你的推理管道,特別是大型深度學習模型。看到參考圖像ETL解決方案了一個例子。