Michael Berthold
當(dāng)前將數(shù)據(jù)科學(xué)部署到生產(chǎn)中仍然是一個(gè)巨大的挑戰(zhàn)。不僅需要頻繁地更新已部署的數(shù)據(jù)科學(xué),而且可用的數(shù)據(jù)源和類型也會(huì)迅速發(fā)生變化。與此同時(shí),用于數(shù)據(jù)分析的方法也會(huì)迅速變化。這種可能性的不斷增長(zhǎng)使得其只能依靠精心設(shè)計(jì)和商定的標(biāo)準(zhǔn),或是在專用工具的框架內(nèi)工作。
KNIME(Konstanz Information Miner,是一個(gè)用戶友好、智能的,并有豐富開(kāi)源的數(shù)據(jù)集成、數(shù)據(jù)處理、數(shù)據(jù)分析和數(shù)據(jù)勘探平臺(tái))一直致力于提供一個(gè)開(kāi)放平臺(tái),數(shù)據(jù)科學(xué)家可通過(guò)添加擴(kuò)展套件或帶有新數(shù)據(jù)源和工具的套件來(lái)集成最新的數(shù)據(jù)科學(xué)發(fā)展成果。這樣一來(lái),數(shù)據(jù)科學(xué)家就可以不受特定軟件供應(yīng)商的限制,訪問(wèn)和整合所有可用的數(shù)據(jù)存儲(chǔ)庫(kù),并且還使用自己偏愛(ài)的工具。在使用KNIME工作流進(jìn)行生產(chǎn)時(shí),數(shù)據(jù)科學(xué)家可以訪問(wèn)相同的數(shù)據(jù)源和算法。和許多其他工具一樣,從數(shù)據(jù)科學(xué)創(chuàng)建到數(shù)據(jù)科學(xué)生產(chǎn)的過(guò)渡涉及一些中間步驟。
在本文中,我們將介紹KNIME工作流引擎的最新功能。新的功能允許直接在數(shù)據(jù)科學(xué)創(chuàng)建工作流中捕捉生產(chǎn)所需的東西,從而使部署實(shí)現(xiàn)完全自動(dòng)化,同時(shí)在數(shù)據(jù)科學(xué)創(chuàng)建期間每個(gè)模塊仍被允許使用。
乍一看,將數(shù)據(jù)科學(xué)投入生產(chǎn)似乎很容易,只需在生產(chǎn)服務(wù)器或選定的設(shè)備上運(yùn)行它們即可。但是如果仔細(xì)觀察,我們會(huì)清楚地發(fā)現(xiàn),在數(shù)據(jù)科學(xué)創(chuàng)建過(guò)程中所搭建的東西與投入到生產(chǎn)當(dāng)中的東西是不一樣的。
我想將其與米其林星級(jí)餐廳的廚師進(jìn)行比較,后者在自己的實(shí)驗(yàn)廚房中設(shè)計(jì)菜譜。通往完美菜譜的途徑包括嘗試新的食材、優(yōu)化數(shù)量和烹飪時(shí)間等。只有在滿意后,最終結(jié)果(食材清單、數(shù)量、備菜程序)才能寫入菜譜中。這一菜譜就是“投入生產(chǎn)”的過(guò)程,即讓數(shù)百萬(wàn)購(gòu)買菜譜的家庭廚師能夠使用它們。
這與提出數(shù)據(jù)科學(xué)問(wèn)題的解決方案非常相似。在數(shù)據(jù)科學(xué)創(chuàng)建期間,不同的數(shù)據(jù)源將會(huì)被調(diào)查。數(shù)據(jù)經(jīng)過(guò)混合、匯總和轉(zhuǎn)換。然后,具有多種可能參數(shù)設(shè)置的各種模型(甚至是模型組合)都將被嘗試和優(yōu)化。我們投入生產(chǎn)的并不是實(shí)驗(yàn)和參數(shù)/模型優(yōu)化的全部,而是所選數(shù)據(jù)轉(zhuǎn)換與最佳學(xué)習(xí)模型的組合。
雖然聽(tīng)起來(lái)很容易,但是這往往是問(wèn)題最大的地方。大多數(shù)工具只允許導(dǎo)出可能模型的子集。許多人甚至完全忽略了預(yù)處理。通常,導(dǎo)出的東西甚至都沒(méi)有做好使用準(zhǔn)備,而僅僅是模型表示或庫(kù),其需要先使用或封裝到另一個(gè)工具中,然后才能投入生產(chǎn)。因此,數(shù)據(jù)科學(xué)家或模型操作團(tuán)隊(duì)需要手動(dòng)添加選定的數(shù)據(jù)融合和轉(zhuǎn)換,將其與模型庫(kù)捆綁在一起,然后將其全部封裝到另一個(gè)應(yīng)用程序中,以便能夠被作為即用型服務(wù)或應(yīng)用程序投入生產(chǎn)當(dāng)中。但是很多細(xì)節(jié)會(huì)在在轉(zhuǎn)換過(guò)程中被丟失。
對(duì)于我們上面提到的米其林大廚來(lái)說(shuō),手動(dòng)轉(zhuǎn)換并不是一個(gè)大問(wèn)題。她每隔一年才會(huì)制作或更新一個(gè)菜譜,并且可以花上一天的時(shí)間將她的實(shí)驗(yàn)成果轉(zhuǎn)換成可以在傳統(tǒng)家庭廚房中使用的菜譜。但是對(duì)于我們的數(shù)據(jù)科學(xué)團(tuán)隊(duì)來(lái)說(shuō),這是一個(gè)非常大的問(wèn)題,因?yàn)樗麄兿M軌蛟谛枰獣r(shí)(每天、甚至是每小時(shí))輕松地更新模型,部署新工具以及使用新的數(shù)據(jù)源。在兩者之間添加手動(dòng)步驟,不僅會(huì)減慢處理速度,而且還會(huì)導(dǎo)致許多額外的錯(cuò)誤。
下圖顯示了數(shù)據(jù)科學(xué)的創(chuàng)建和生產(chǎn)化是如何交織在一起的。雖然該流程受到了經(jīng)典CRISP-DM周期的啟發(fā),但是其更強(qiáng)調(diào)數(shù)據(jù)科學(xué)部署的連續(xù)性和對(duì)包括持續(xù)監(jiān)視、自動(dòng)更新以及業(yè)務(wù)方面不斷改進(jìn)和優(yōu)化的反饋在內(nèi)的需求。它們可以更清楚地區(qū)分兩種活動(dòng):創(chuàng)建數(shù)據(jù)科學(xué)和將產(chǎn)生的數(shù)據(jù)科學(xué)過(guò)程投入到生產(chǎn)當(dāng)中。
通常,當(dāng)人們談?wù)摗岸说蕉藬?shù)據(jù)科學(xué)”時(shí),他們實(shí)際上僅指的是左側(cè)的循環(huán):一種涵蓋了從數(shù)據(jù)提取、轉(zhuǎn)換和建模到編寫某種模型等方方面面的綜合方法。實(shí)際使用這一模型還需要其他的環(huán)境,并且在持續(xù)監(jiān)視和更新模型時(shí),工具會(huì)變得更加分散。在許多情況下,維護(hù)和優(yōu)化也是非常繁重的手動(dòng)任務(wù)。
集成部署使得數(shù)據(jù)科學(xué)家能夠捕捉部署所需的過(guò)程部分,從而使數(shù)據(jù)科學(xué)家能夠在同一環(huán)境中對(duì)創(chuàng)建和生產(chǎn)進(jìn)行建模,從而消除了數(shù)據(jù)科學(xué)創(chuàng)建與數(shù)據(jù)科學(xué)生產(chǎn)之間的差距。因此,只要在數(shù)據(jù)科學(xué)創(chuàng)建中進(jìn)行了更改,這些更改都會(huì)自動(dòng)反映在已部署的摘錄中。從概念上講這很簡(jiǎn)單,但實(shí)際上做起來(lái)卻非常困難。
如果數(shù)據(jù)科學(xué)環(huán)境是一種編程或腳本語(yǔ)言,那么數(shù)據(jù)科學(xué)家將不得不痛苦地詳細(xì)介紹如何為整個(gè)過(guò)程的各個(gè)方面創(chuàng)建合適的子例程,并且還要確保在兩個(gè)代碼庫(kù)之間正確傳遞了所需的參數(shù),這些子例程可能對(duì)部署有用。實(shí)際上,數(shù)據(jù)科學(xué)家必須同時(shí)編寫兩個(gè)程序,以確保兩個(gè)程序之間的所有依賴關(guān)系能夠始終被觀察到。正應(yīng)用模型所需的少量數(shù)據(jù)轉(zhuǎn)換或參數(shù)則非常容易被遺漏。
使用可視化數(shù)據(jù)科學(xué)環(huán)境可使這一過(guò)程變得更加直觀。KNIME的新集成部署節(jié)點(diǎn)擴(kuò)展套件允許部署中需要的那些工作流被捕捉。之所以如此簡(jiǎn)單,是因?yàn)檫@些天生是創(chuàng)建工作流的一部分。首先,在模型訓(xùn)練期間需要完全相同的轉(zhuǎn)換部分。其次,在微調(diào)期間需要對(duì)模型進(jìn)行評(píng)估。上圖為一個(gè)簡(jiǎn)單示例。
紫色方框中為部署所需的部分?jǐn)?shù)據(jù)科學(xué)創(chuàng)建流程。我們不必拷貝它們,也不必執(zhí)行明確的“導(dǎo)出模型”步驟,現(xiàn)在只需添加Capture-Start/Capture-End節(jié)點(diǎn)來(lái)搭建相關(guān)部分,然后使用工作流合成器將這些部分放在一起。自動(dòng)生成的工作流如本頁(yè)下圖所示。
Workflow-Writer節(jié)點(diǎn)具有不同的形狀,可用于所有可能的部署方式。正如名稱所暗示的那樣:寫出工作流供其他人用作起點(diǎn)。更強(qiáng)大的是其能夠使用Workflow-Deploy節(jié)點(diǎn),該節(jié)點(diǎn)可自動(dòng)將生成的工作流作為REST服務(wù)或分析應(yīng)用程序上載到KNIME Server或?qū)⑵渥鳛槿萜鬟M(jìn)行部署,前提是使用適當(dāng)?shù)腤orkflow-Deploy節(jié)點(diǎn)。
許多數(shù)據(jù)科學(xué)解決方案都承諾了端到端的數(shù)據(jù)科學(xué)、完整的模型操作以及不同形式的“完全部署”。以下列表涵蓋了一些常見(jiàn)的限制。
·你是否能夠混合和匹配R、Python、Spark、TensorFlow、云、內(nèi)部部署等技術(shù),或是僅局限于一個(gè)特定的技術(shù)/環(huán)境?
·你是否能夠在創(chuàng)建和部署設(shè)置過(guò)程中使用同一套工具,還是兩者之間僅彼此覆蓋對(duì)方的一個(gè)子集?
·你是否能夠?qū)?shù)據(jù)科學(xué)自動(dòng)部署到服務(wù)(例如REST)、應(yīng)用程序或計(jì)劃的任務(wù)中,還是僅部署需要內(nèi)置在其他位置的庫(kù)/模型?
·部署是全自動(dòng)的還是需要(手動(dòng))中間步驟?
·你能否自動(dòng)回滾到數(shù)據(jù)科學(xué)創(chuàng)建流程和生產(chǎn)中模型的先前版本?
·你能否在同時(shí)運(yùn)行創(chuàng)建和生產(chǎn)流程數(shù)年后保證所有結(jié)果都向后兼容性?
·經(jīng)過(guò)修訂的數(shù)據(jù)科學(xué)流程能否在不到一分鐘的時(shí)間內(nèi)被部署?
本文的目的不是為了詳細(xì)介紹技術(shù)。但是我們?nèi)匀恍枰赋?,這種捕捉和部署機(jī)制適用于KNIME中的所有節(jié)點(diǎn)。其中既包括提供對(duì)本機(jī)數(shù)據(jù)轉(zhuǎn)換和建模技術(shù)訪問(wèn)權(quán)的節(jié)點(diǎn),也包括封裝了如TensorFlow、R、Python、Weka、Spark等庫(kù)和由KNIME、社區(qū)或合作伙伴網(wǎng)絡(luò)提供的所有第三方擴(kuò)展套件的節(jié)點(diǎn)。
通過(guò)新的集成部署擴(kuò)展,KNIME工作流變成了一個(gè)完整的數(shù)據(jù)科學(xué)創(chuàng)建和生產(chǎn)環(huán)境。建立工作流以驗(yàn)證內(nèi)置或封裝技術(shù)的數(shù)據(jù)科學(xué)家可以捕捉工作流并將其直接部署在相同工作流中。這是第一次使得直接從用于創(chuàng)建該過(guò)程的環(huán)境中即時(shí)部署完整的數(shù)據(jù)科學(xué)流程成為了可能。
本文作者M(jìn)ichael Berthold為開(kāi)源數(shù)據(jù)分析公司KNIME的首席執(zhí)行官兼聯(lián)合創(chuàng)始人。Michael在數(shù)據(jù)科學(xué)領(lǐng)域擁有超過(guò)25年的經(jīng)驗(yàn),在Konstanz大學(xué)(德國(guó))擔(dān)任教授之前曾在加利福尼亞大學(xué)(伯克利分校)和卡內(nèi)基梅隆大學(xué)擔(dān)任過(guò)教授,并曾在英特爾的神經(jīng)網(wǎng)絡(luò)小組、Utopy和Tripos公司從事過(guò)研究工作。此外,Michael還在數(shù)據(jù)分析、機(jī)器學(xué)習(xí)和人工智能方面發(fā)表了大量著作。
原文網(wǎng)址
https://www.infoworld.com/article/3541230/how-to-move-data-science-into-production.html