Categories
程式開發

Spotify開源Terraform:用於在GKE上運行Kubeflow


Spotify開源了自研的Terraform模塊,用於在Google Kubernetes Engine(GKE)上運行機器學習流水線軟件Kubeflow。通過將企業內部機器學習平台轉換至Kubeflow,Spotify工程師縮短了上市時間,將運行的實驗規模擴大為原平台的7倍。

在Spotify的最新博客帖子中,產品經理Josh Baer和機器學習工程師Samuel Ngahane介紹了Spotify在為機器學習“鋪平道路”(Paved Road)上的做法。 “基於我們推薦的基礎架構,使用經慎重考慮過的產品和配置,部署端到端的機器學習解決方案”。通過執行此標準,Spotify的機器學習工程師得以專注於開展機器學習實驗,無需費心基礎架構的構建和維護。該平台自2019年中旬啟動以來,得到約100個內部用戶的採用,並已運行了18000多項實驗。

Spotify長期使用機器學習技術,為用戶自動生成定制的播放列表。例如,“每週發現”(Discover Weekly)頻道可為用戶推薦新的音樂。企業最初的策略是允許各團隊自己選擇工具和框架。不少現有的基礎架構採用了Scala語言,並使用了包括Scio在內的多個由Spotify開源的自定義庫。 Scio是一種Apache Beam數據處理庫,但其在擴展性上存在問題,使得團隊需要支持多種框架,導致從概念原型到生產系統之間的迭代時間延長。此外,許多工程師“完全不考慮在基於Python的工作流中添加Scala”。上述問題促使Spotify重新考慮自身的框架選取問題,並由此提出了“鋪平道路”(Paved Road)這一理念。

“鋪平道路”意在解決端到端機器學習工作流中存在的問題。工作流定義了機器學習模型開發和部署的各個階段,其中包括:

  • 數據預處理
  • 特徵轉換
  • 模型訓練
  • 模型評估
  • 模型上線

具體而言,Spotify聚焦於各階段間的數據接口問題,選擇採用谷歌TensorFlow Extended (TFX)機器學習平台定義的TFRecord格式和tf.Example類 。團隊通過對現有工具構建TFX連接器,實現向通用框架的遷移。團隊正致力於使用Tensorflow Data Validation(TFDV)等TFX組件,支持開發人員檢測偏斜分佈和錯誤值等數據問題。但其中依然存在一些挑戰。例如,現有工具尚未解決端到端的編排框架問題。

最終,團隊決定遷移到開源機器學習工作流平台Kubeflow Pipelines(KFP)。該平台上的工作流的組件,將打包為受Kubernetes管理的Docker容器。 KFP為TFX提供開箱即用的支持,因此團隊無需再去學習新的框架。 KFP SDK的另一個優點是預先打包了許多常用任務,支持代碼共享和重用。 Spotify實現了共享Kubeflow集群的部署和管理,使得開發人員得以專注於機器學習實驗本身,不必操心基礎架構管理的細節。群集託管在Google Kubernetes Engine(GKE)上,使用Terraform配置。

KFP是一類機器學習全生命週期管理工具。此類工具多由一些大型企業開源提供。例如,Databricks的MLFlow,以及Uber的Michaelangelo。最近,AWS也新發布了幾項Sagemaker服務,力圖為機器學習生命週期的各階段提供統一的接口。在KubeCon 2019大會上,Spotify的機器學習工程師Ryan Clough和Dai Keshi介紹了Spotify的平台。此後,Clough發瞭如下推文:

如果要說參與KubeCon大會的最大收益,那就是我們同樣面對著類似的問題,這些問題會由於各自企業的不同環境而表現各異。儘管我們一直在努力去提供最好的產品,但是沒人能獨自解決所有的問題。是的,沒有人。

Spotify在GitHub上維護了多個開源項目,其中包括TensorFlow helpers等機器學習的相關類庫。

原文鏈接:

Spotify Open-Sources Terraform Module for Kubeflow ML Pipelines