Michael Berthold

當前將數據科學部署到生產中仍然是一個巨大的挑戰。不僅需要頻繁地更新已部署的數據科學,而且可用的數據源和類型也會迅速發生變化。與此同時,用于數據分析的方法也會迅速變化。這種可能性的不斷增長使得其只能依靠精心設計和商定的標準,或是在專用工具的框架內工作。
KNIME(Konstanz Information Miner,是一個用戶友好、智能的,并有豐富開源的數據集成、數據處理、數據分析和數據勘探平臺)一直致力于提供一個開放平臺,數據科學家可通過添加擴展套件或帶有新數據源和工具的套件來集成最新的數據科學發展成果。這樣一來,數據科學家就可以不受特定軟件供應商的限制,訪問和整合所有可用的數據存儲庫,并且還使用自己偏愛的工具。在使用KNIME工作流進行生產時,數據科學家可以訪問相同的數據源和算法。和許多其他工具一樣,從數據科學創建到數據科學生產的過渡涉及一些中間步驟。
在本文中,我們將介紹KNIME工作流引擎的最新功能。新的功能允許直接在數據科學創建工作流中捕捉生產所需的東西,從而使部署實現完全自動化,同時在數據科學創建期間每個模塊仍被允許使用。
乍一看,將數據科學投入生產似乎很容易,只需在生產服務器或選定的設備上運行它們即可。但是如果仔細觀察,我們會清楚地發現,在數據科學創建過程中所搭建的東西與投入到生產當中的東西是不一樣的。
我想將其與米其林星級餐廳的廚師進行比較,后者在自己的實驗廚房中設計菜譜。通往完美菜譜的途徑包括嘗試新的食材、優化數量和烹飪時間等。只有在滿意后,最終結果(食材清單、數量、備菜程序)才能寫入菜譜中。這一菜譜就是“投入生產”的過程,即讓數百萬購買菜譜的家庭廚師能夠使用它們。
這與提出數據科學問題的解決方案非常相似。在數據科學創建期間,不同的數據源將會被調查。數據經過混合、匯總和轉換。然后,具有多種可能參數設置的各種模型(甚至是模型組合)都將被嘗試和優化。我們投入生產的并不是實驗和參數/模型優化的全部,而是所選數據轉換與最佳學習模型的組合。
雖然聽起來很容易,但是這往往是問題最大的地方。大多數工具只允許導出可能模型的子集。許多人甚至完全忽略了預處理。通常,導出的東西甚至都沒有做好使用準備,而僅僅是模型表示或庫,其需要先使用或封裝到另一個工具中,然后才能投入生產。因此,數據科學家或模型操作團隊需要手動添加選定的數據融合和轉換,將其與模型庫捆綁在一起,然后將其全部封裝到另一個應用程序中,以便能夠被作為即用型服務或應用程序投入生產當中。但是很多細節會在在轉換過程中被丟失。
對于我們上面提到的米其林大廚來說,手動轉換并不是一個大問題。她每隔一年才會制作或更新一個菜譜,并且可以花上一天的時間將她的實驗成果轉換成可以在傳統家庭廚房中使用的菜譜。但是對于我們的數據科學團隊來說,這是一個非常大的問題,因為他們希望能夠在需要時(每天、甚至是每小時)輕松地更新模型,部署新工具以及使用新的數據源。在兩者之間添加手動步驟,不僅會減慢處理速度,而且還會導致許多額外的錯誤。
下圖顯示了數據科學的創建和生產化是如何交織在一起的。雖然該流程受到了經典CRISP-DM周期的啟發,但是其更強調數據科學部署的連續性和對包括持續監視、自動更新以及業務方面不斷改進和優化的反饋在內的需求。它們可以更清楚地區分兩種活動:創建數據科學和將產生的數據科學過程投入到生產當中。
通常,當人們談論“端到端數據科學”時,他們實際上僅指的是左側的循環:一種涵蓋了從數據提取、轉換和建模到編寫某種模型等方方面面的綜合方法。實際使用這一模型還需要其他的環境,并且在持續監視和更新模型時,工具會變得更加分散。在許多情況下,維護和優化也是非常繁重的手動任務。


集成部署使得數據科學家能夠捕捉部署所需的過程部分,從而使數據科學家能夠在同一環境中對創建和生產進行建模,從而消除了數據科學創建與數據科學生產之間的差距。因此,只要在數據科學創建中進行了更改,這些更改都會自動反映在已部署的摘錄中。從概念上講這很簡單,但實際上做起來卻非常困難。
如果數據科學環境是一種編程或腳本語言,那么數據科學家將不得不痛苦地詳細介紹如何為整個過程的各個方面創建合適的子例程,并且還要確保在兩個代碼庫之間正確傳遞了所需的參數,這些子例程可能對部署有用。實際上,數據科學家必須同時編寫兩個程序,以確保兩個程序之間的所有依賴關系能夠始終被觀察到。正應用模型所需的少量數據轉換或參數則非常容易被遺漏。
使用可視化數據科學環境可使這一過程變得更加直觀。KNIME的新集成部署節點擴展套件允許部署中需要的那些工作流被捕捉。之所以如此簡單,是因為這些天生是創建工作流的一部分。首先,在模型訓練期間需要完全相同的轉換部分。其次,在微調期間需要對模型進行評估。上圖為一個簡單示例。
紫色方框中為部署所需的部分數據科學創建流程。我們不必拷貝它們,也不必執行明確的“導出模型”步驟,現在只需添加Capture-Start/Capture-End節點來搭建相關部分,然后使用工作流合成器將這些部分放在一起。自動生成的工作流如本頁下圖所示。
Workflow-Writer節點具有不同的形狀,可用于所有可能的部署方式。正如名稱所暗示的那樣:寫出工作流供其他人用作起點。更強大的是其能夠使用Workflow-Deploy節點,該節點可自動將生成的工作流作為REST服務或分析應用程序上載到KNIME Server或將其作為容器進行部署,前提是使用適當的Workflow-Deploy節點。
許多數據科學解決方案都承諾了端到端的數據科學、完整的模型操作以及不同形式的“完全部署”。以下列表涵蓋了一些常見的限制。
·你是否能夠混合和匹配R、Python、Spark、TensorFlow、云、內部部署等技術,或是僅局限于一個特定的技術/環境?
·你是否能夠在創建和部署設置過程中使用同一套工具,還是兩者之間僅彼此覆蓋對方的一個子集?
·你是否能夠將數據科學自動部署到服務(例如REST)、應用程序或計劃的任務中,還是僅部署需要內置在其他位置的庫/模型?
·部署是全自動的還是需要(手動)中間步驟?
·你能否自動回滾到數據科學創建流程和生產中模型的先前版本?
·你能否在同時運行創建和生產流程數年后保證所有結果都向后兼容性?
·經過修訂的數據科學流程能否在不到一分鐘的時間內被部署?
本文的目的不是為了詳細介紹技術。但是我們仍然需要指出,這種捕捉和部署機制適用于KNIME中的所有節點。其中既包括提供對本機數據轉換和建模技術訪問權的節點,也包括封裝了如TensorFlow、R、Python、Weka、Spark等庫和由KNIME、社區或合作伙伴網絡提供的所有第三方擴展套件的節點。
通過新的集成部署擴展,KNIME工作流變成了一個完整的數據科學創建和生產環境。建立工作流以驗證內置或封裝技術的數據科學家可以捕捉工作流并將其直接部署在相同工作流中。這是第一次使得直接從用于創建該過程的環境中即時部署完整的數據科學流程成為了可能。
本文作者Michael Berthold為開源數據分析公司KNIME的首席執行官兼聯合創始人。Michael在數據科學領域擁有超過25年的經驗,在Konstanz大學(德國)擔任教授之前曾在加利福尼亞大學(伯克利分校)和卡內基梅隆大學擔任過教授,并曾在英特爾的神經網絡小組、Utopy和Tripos公司從事過研究工作。此外,Michael還在數據分析、機器學習和人工智能方面發表了大量著作。

原文網址
https://www.infoworld.com/article/3541230/how-to-move-data-science-into-production.html