有鑑於原本使用的機器學習框架Lua Torch社群支援度降低,推特負責機器學習的團隊Cortex決定,把內部使用的深度學習平臺Deepbird,其底層機器學習框架從Lua Torch轉移到TensorFlow上。不只工程師有更豐富的視覺化工具,幫助訓練機器學習模型,在x86-64系統架構上執行的也更加快速。

推特在2014年併購了Madbits,獲取該公司的深度學習技術,用於理解推特的圖片內容,而該公司在2015年中,轉為內部團隊Cortex。Cortex一開始的任務是為推特的產品加入人工智慧功能,但在2016年中開始,團隊目標轉為服務推特工程師,提供更好且一致性人工智慧使用經驗,因此他們建立了機器學習平臺DeepBird。

DeepBird主要用於時間軸的排序上,而隨著機器學習應用的規模擴大,Cortex團隊也隨之成長,加入了TellApart、Gnip以及Magic Pony等併購的公司。DeepBird原本是基於開源機器學習函式庫Lua Torch,但是由於Torch社群慢慢把專案重心從Lua轉移到了Python,並開始降低對Lua Torch的支援,Cortex只好開始另尋替代方案,經過比較PyTorch和TensorFlow,他們認為TensorFlow對生產階段的模型支援度更好,而TensorFlow支援HDFS,原本就有許多文件以及大型社群參與貢獻,有更完整的開發生態系。因此在2017年中,他們毅然決然的轉換DeepBird的機器學習框架。

要將DeepBird從第一版的Lua Torch轉移到第二版的TensorFlow上,Cortex花了不少心力,早期團隊為了讓原本就存在的機器學習框架,方便過渡到DeepBird上,因此其配置也同樣使用YAML,但就在Cortex決定轉移DeepBird的機器學習框架後,隨即放棄了YAML,不過,大多數資料儲存格式仍然沿用推特內部自定義的DataRecord,而訓練腳本則使用TensorFlow與自訂義的擴充套件組合編寫而成。

Cortex提到,人工智慧系統系統轉移到第二版的DeepBird有幾個步驟,首先要針對生產階段伺服器評估基準,使用來自生產服務的暗流量,驗證推測的正確性並測量預測延遲,確保系統在高負載下還能維持推測服務的穩定性以及效能。再來,就是要比對第一版與第二版DeepBird的推測以及訓練品質。另外,撰寫詳細的文件以及教學也非常重要,能幫助使用者更輕易的轉換到新平臺。

DeepBird訓練模型的流程就5個階段,首先釐清問題,針對哪部分最佳化?什麼作為輸入或是特徵?第二針對應用準備資料集,第三撰寫訓練腳本來最佳化模型,第四並在不同的資料集上評估,第五就定義超級參數組,並在Aurora Mesos上執行腳本。重複步驟3到5,直到取得需要的結果。

第二版DeepBird的API在測試版發布後一季,已經進入了穩定版,而在這過程他們也對TensorFlow的Estimator API有了更深入的理解,並開始嘗試在一些多階段訓練等非典型案例使用,並且進一步簡化整併Estimator API到自有的Trainer API中。

框架的改變帶來了許多正向影響,Cortex提到,工程師的生產力提高了,由於透過使用Tensorboard或是像Model Repo這樣的內部視覺化工具,工程師可以簡單的觀察模型收斂的情況,並進行調整取得更好的結果,而且加強過的模型度量方法,工程師可以更加掌握模型狀態。

而DeepBird服務的易用性提升,除了增加許多新功能外,與推特原本的系統也有良好的整合,自訂易的指標以及減化的訓練流程,讓工程師更容易進行試驗。而在系統的執行效能也獲得提升,第二版的DeepBird在x86-64架構執行的也更有效率。


Advertisement

更多 iThome相關內容