做者:Carsten Jacobsen,開源開發者倡導者@Uberhtml
摘錄:Horovod在最新版本中支持更多框架,並引入了新功能以提升通用性和生產力。python
Horovod是由Uber建立的分佈式深度學習框架,它使分佈式深度學習變得快速,且易於使用。Horovod使用TensorFlow、Keras、PyTorch和Apache MXNet改進訓練機器學習(ML)模型的速度、規模和資源分配。LF Deep Learning是支持和維持人工智能和機器學習開源創新的Linux基金會項目,於2018年12月接受了Horovod做爲其託管項目之一。該項目被託管之後,Uber之外的額外貢獻和協做因爲LF DL的中立環境、開放式治理和基金會爲項目提供的一系列推進因素而出現。linux
最新版本中的更新以三個關鍵方式改進了Horovod:爲更多框架添加支持和集成,改進現有功能,以及爲TensorFlow 2.0帶來的變化準備。綜合起來,這些新功能和能力使Horovod更容易、更快速、更靈活、適用於不斷增加的用戶羣,包括NVIDIA和Oak Ridge National Laboratory。Horovod還與各類深度學習生態系統集成,包括AWS、Google、Azure和IBM Watson。git
在此版本中,添加了許多用於Horovod的新用例,目的是使框架成爲培訓深度學習模型的更通用工具。隨着集成和支持框架的增長,用戶能夠利用Horovod加速大量開源模型,並在多個框架中使用相同的技術。github
Apache Spark可以處理大量數據,可用於許多機器學習環境。易用性、內存處理功能、近實時分析以及豐富的集成選項,如Spark MLlib和Spark SQL,使Spark成爲一種受歡迎的選擇。算法
鑑於其可擴展性和易用性,Horovod獲得了更普遍的基於Python的機器學習社區的興趣,包括Apache Spark。隨着PySpark支持和集成的發佈,Horovod對更普遍的用戶變得有用。編程
在Horovod以前,PySpark的典型工做流程,是在PySpark中進行數據準備,將結果保存在中間存儲中,使用不一樣的羣集解決方案運行不一樣的深度學習培訓工做,導出訓練的模型,並在PySpark中運行評估。Horovod與PySpark的集成容許在同一環境中執行全部這些步驟。api
爲了平滑Spark集羣中PySpark和Horovod之間的數據傳輸,Horovod依賴於Petastorm,這是一個由Uber Advanced Technologies Group(ATG)開發的深度學習開源數據訪問庫。Petastorm於2018年9月開源,可直接從多TB數據集,進行單機或分佈式培訓,以及深度學習模型的評估。網絡
典型的Petastorm用例須要在PySpark中預處理數據,將其寫入Apache Parquet中的存儲,這是一種高效的列式存儲格式,並使用Petastorm讀取TensorFlow或PyTorch中的數據。session
Apache Spark和Petastorm也在Uber內部的某些應用程序中使用,所以擴展Horovod對PySpark和Petastorm的支持一直是使Horovod成爲更多通用工具的過程當中的天然步驟。
Apache MXNet(孵化)是一個開源深度學習框架,能夠促進更靈活、更有效的神經網絡培訓。亞馬遜是Horovod和MXNet的重要貢獻者,而且在Amazon EC2 P3實例和Amazon SageMaker上原生支持這兩個框架。
就像最近對PySpark的支持同樣,Horovod與MXNet的整合是將Horovod提供給更普遍社區的更大努力的一部分,進一步擴大了對更快更輕鬆的模型培訓。
最新版本的第三次更新是Horovod推出自動調節的alpha版本。在此版本中,自動調整是可選的,但在未來的版本中它將默認打開。
Horovod支持許多內部參數,能夠調整這些參數以提升硬件和模型架構變化的性能。這些參數包括融合緩衝門檻
(fusion buffer threshold),用於肯定能夠將多個張量(tensor)一塊兒批量合併爲單個allreduce、用於控制allreduce批次的頻率的循環時間、以及當主機數量變得很是大時,做爲單環allreduce的替代方案的分層allreduce 。
找到這些參數的正確值,可使性能提升多達30%。可是,手動嘗試不一樣的參數是一種耗時的反覆試驗。
Horovod的自動調節系統,經過使用貝葉斯(Bayesian),優化動態探索和選擇最佳內部參數值來消除猜想。
自動調節會自動化手動過程,執行嘗試不一樣選項和參數值,以肯定最佳配置,若是硬件、比例或模型發生變化,必須重複這些配置。因爲自動化,自動調節使參數優化更有效,能夠加快模型培訓速度。
嵌入一般用於涉及天然語言處理(NLP)和從表格(tabular)數據學習的機器學習用例。在Uber的數據存儲區,Uber旅程數據存儲爲表格數據,這些數據具備一些分類界限。在像Uber這樣的用例中,嵌入的數量和嵌入的大小將會擴展。在最新版本中,Horovod加強了其擴展深度學習模型的能力,這些模型大量使用嵌入式設備,例如Transformer和BERT。
此外,這些嵌入改進更快地促進了大嵌入梯度(gradient),以及小嵌入梯度的融合,容許更多數量的嵌入更快地處理操做。
熱切執行(Eager execution)將是TensorFlow 2.0中的默認模式。熱切執行容許開發者在命令式編程環境中建立模型,其中當即評估操做,並將結果做爲實際值返回。熱切執行消除了建立會話(session)和使用圖形的須要。
憑藉對動態模型的熱切執行支持,模型評估和調試變得更加容易和快捷。對於缺少經驗的開發者而言,熱切執行也使得TensorFlow更直觀。
在過去,運行Horovod的熱切執行,意味着按順序計算全部工人(worker)的每一個張量梯度(tensor gradient),沒有任何張量批處理或並行性。在最新版本中,徹底支持熱切執行。在咱們的實驗中,使用熱切執行的Tensor批處理,可將性能提升6倍以上。此外,用戶如今可使用TensorFlow的GradientTape的分佈式實現來記錄自動區分(differentiation)操做。
混合精度是在計算方法中組合使用不一樣的數值精度。使用低於FP32的精度,能夠經過使用更小的張量來減小內存需求,從而容許部署更大的網絡。此外,數據傳輸花費的時間更少,計算性能也大幅提高。具備Tensor Core的GPU支持混合精度,使用戶可以充分利用更低內存使用率和更快數據傳輸的優點。
深度神經網絡的混合精確訓練實現了兩個主要目標:
在過去,混合精確訓練一般打斷Horovod的融合邏輯,由於FP16張量的序列將常常被FP32張量打斷,而且不一樣精度的張量不能參與單個融合事務。
在最新版本中,NVIDIA對張量融合邏輯作出了改進,容許FP16和FP32張量序列經過前瞻機制獨立處理。經過這種變化,咱們已經看到高達26%的性能提高。
想知道Horovod如何讓你的模型訓練更快,更具可擴展性?查看這些更新,並親自試用該框架,並確保加入Deep Learning Foundation的Horovod公告和技術討論郵件列表。
KubeCon + CloudNativeCon + Open Source Summit大會日期:
KubeCon + CloudNativeCon + Open Source Summit贊助方案
KubeCon + CloudNativeCon + Open Source Summit多元化獎學金現正接受申請
KubeCon + CloudNativeCon和Open Source Summit即將首次合體落地中國
KubeCon + CloudNativeCon + Open Source Summit購票窗口,當即購票!
CNCF邀請你加入最終用戶社區