全文共2751字,預計學習時長8分鐘
全文共2751字,預計學習時長8分鐘
來源:Pexels
Notebook是數據科學家最好的朋友,也可能是工作上的一大噩夢。對于習慣于使用現代集成開發環境(IDEs)的人來說,使用Notebook感覺就像回到了幾十年前。此外,現代Notebook運行環境大多受限于Python程序,并且缺乏其他編程語言的一流支持。
但幾天前,Netflix開源了Polynote,這是一個全新的Notebook環境,可以應對其中的一些挑戰。 Polynote的出現是為了實現加速Netflix數據科學實驗的需求。多年來,Netflix建立了世界一流的機器學習平臺,該平臺主要基于Scala等JVM語言。Jupyter Notebooks等主流技術對這些語言的支持從根本上來說是基礎,因此需要更好的解決方案。Polynote的出現是為了滿足這一基本要求,但它汲取了在數據科學領域中搭建最具雄心的Notebook實驗平臺時所獲得的經驗教訓。
Netflix的Notebook驅動器內部架構
在過去的幾年中,Netflix轉變了數據科學Notebook的使用方式,從實驗制品轉變成了機器學習解決方案中生命周期的關鍵組成部分。最初,Netflix將Jupyter Notebooks作為數據探索和分析的工具。但是,工程團隊很快意識到Jupyter在運行時間抽象化、可擴展性、代碼的可解釋性和調試方面有著明顯的優勢,如果使用得當,可能會對數據科學工作量產生重大影響。為了擴大Jupyter在數據科學運行時間方面的使用,Netflix團隊需要解決一些主要挑戰:
- 代碼輸出不匹配:Notebook經常需要更換,在很多情況下,在運行環境中看到的輸出與當前代碼并不對應。
- 服務器要求:Notebook通常需要Notebook服務器運行,這在Notebook大規模使用時會帶來架構上的挑戰。
- 計劃:大多數數據科學模型需要定期執行,但是用于計劃Notebook的工具仍然相當有限。
- 參數化:Notebook是相當靜態的代碼環境,傳遞輸入參數的過程絕非易事。
- 集成測試:Notebook是孤立的代碼環境,眾所周知,它很難與其他Notebook相互集成。因此,使用Notebook時,集成測試等任務將是一大噩夢。
為了滿足這些要求,Netflix建立了一個雄心勃勃的架構,可以使Jupyter Notebooks投入運營。最初可以實現包括諸如“Papermill”之類的技術,該技術可實現Notebook的參數化。
盡管Netflix最初的Notebook架構確實雄心勃勃,但也限制了Python程序,但現在改進后,可以進一步延伸了。
進入Polynote
Polynote是一個多語言Notebook實驗環境。除了Python,當前版本還支持SQL,Vega(visualizations),當然還有Scala等語言。該平臺還與數據科學基礎架構(例如ApacheSpark)集成在一起。Polynote的核心包括以下功能:
a)改進的編輯經驗:Polynote嘗試讓編輯體驗更接近現代IDE。
b)多國語言支持:Polynote提供對Scala和數據科學環境中其他語言的一流支持。
c)數據可視化方面的改進:Polynote無需添加大量代碼即可將本機數據可視化,并集成到Notebook的數據集中。
d)配置和依賴項管理:諸如Scala之類的語言在程序中需要復雜的程序包依賴項。Polynote將包依賴項配置保存在Notebook中,以解決JVM開發人員在該領域遇到的一些常見問題。
e)可重復性:將代碼、數據和執行結果組合到一個文檔中,可以使Notebook功能更加強大,但也難以復制。Polynote的可重復性是框架的一流功能。
a)改進的編輯經驗
Polynote包含IDE中的常見功能,例如代碼自動補全或語法錯誤高亮顯示,從而改進了數據科學家和研究人員新建Notebook的體驗。更多的編輯功能由Monaco編輯器提供,該編輯器可以支持Visual Studio Code的體驗。
b)多國語言支持:
Polynote不僅對多種語言提供支持,而且還可將這些語言組合在一個程序中。在Polynote中,每個單元(cell)可以基于不同的語言。運行單元時,內核會向單元的語言解釋器提供可用的類型化輸入值,而解釋器將結果輸入的輸出值返回到內核。這讓PolynoteNotebook中的單元可以在相同的情境中運行。下面的示例呈現了一個Python庫,用于計算使用Scala生成的數據集的保序回歸(isotonic regression)。
c)數據可視化方面的改進:
數據可視化是大多數Notebook運行環境中的常見組件。但是,Polynote通過把可視化價值主張包含在平臺的本機組件中,將可視化價值主張提升到另一層次,該平臺不需要開發人員編寫任何代碼即可直觀地探索數據集。
d)配置和依賴項管理
大多數時候,使用Notebook的數據科學家都可以享受Python程序包管理模型中處理程序依賴項的高效率。但是,在像Scala這樣的JVM語言中,依賴項管理可能會是一大噩夢。Polynote通過將配置和依賴項直接存儲在Notebook中而無需依賴外部文件,可以解決這一挑戰。此外,Polynote還提供了一個用戶友好型的“配置”部分,用戶可以在其中為每個Notebook設置依賴項。
e)可重復性
借助Polynote,Netflix有一個新的代碼解釋模塊,而無需像傳統Notebook那樣依賴REPL模型。新解釋模型的一個關鍵功能就是消除了隱藏狀態,這使數據科學家可以在Notebook中復制單元而無需從先前位置引入任何狀態。 Polynote是雄心勃勃的數據科學Notebook競爭中的一個新版本,但它有自己的優點。基于JVM語言的支持可讓使Polynote成為致力于Spark基礎結構開發人員的最愛。同樣,編輯和可重復性功能無疑是對傳統Notebook環境的增強。
Polynote可以在Github上找到,也可以關注該項目的網站。
留言 點贊 關注
我們一起分享AI學習與發展的干貨
如轉載,請后臺留言,遵守轉載規范


