從實驗室到工廠,模型部署中的幾個重要問題及解決方案
編者按:
現在公眾號有置頂功能了,大家把微信更新到最新版本,點開「大數據實驗室」公眾號。點「置頂公眾號」鍵,就可以置頂了,這樣。不管我們什麼時候更新,您都能容易找到。
選自kdnuggets
作者:Mauricio Vacas
機器之心編譯
參與:Quantum Cheese、微胖
在這篇文章中,我們會討論在模型管理和部署中如何避免糟糕模型情景的方法。
在我們的產業中,很多關注都集中在開發分析模型來解決關鍵商業問題以及預測消費者行為上。但是,當數據科學家研發完模型,需要部署模型以供更大的組織使用時,會發生什麼情況?
沒有嚴格流程就部署模型會引發後患,看一下這個金融服務業的實例就知道了。
擁有自己的高頻貿易演算法的 Knight 曾是美國最大的股票貿易商,在紐約證券交易所(NYSE)有17.3%的市場份額,在納斯達克(NASDAQ)有16.9%的市場佔有率。但是,2012年由於一次計算機交易的小故障,Knight在不到一小時之內蒙受了4.4億美元的損失。那年年底,公司被收購。這充分證明:未經適當測試就輕易部署使用分析模型會有很大風險,那些系統漏洞會給公司帶來嚴重後果。
在這篇博文中,我們將談談如何通過合理的模型管理和部署流程來避免後患。在部署模型之前,有幾個必須解決的問題:
模型結果是如何到達那些會從這一分析中獲益的決策者或者應用程序那裡的?
這個模型能不出問題的自主運行嗎?如何從失敗中恢復運行的?
因為訓練數據是不再相關的歷史數據,模型也因此變得陳舊,會導致什麼後果?
在不阻斷下游消費者的情況下,如何部署和管理新版模型?
我們可以把數據科學的開發和應用看作是兩個不同的流程,但是,這兩個過程又是更大的模型生命周期流程的一部分。下面示例圖說明了這一過程。
國際交易服務
資金第三方存管, 正規國際平台 ,完善風控體系, 多重金融防護, 專業化國際團隊 ,客服實時諮詢
1. 終端用戶與應用程序交互,產生的數據存儲在應用的線上產品資料庫中。
2. 然後這些數據會被傳到一個線下的歷史資料庫中(如 Hadoop 或 S3),由數據科學家進行分析,搞清楚用戶是如何與應用交互的。這些數據也有別的用處,比如構建一個模型,根據用戶在應用中的行為把他們進行分類,這樣我們就可以利用這些信息對用戶進行營銷。
3. 一旦構建出了一個模型,我們可以把它登記到一個模型註冊表中,這時一個治理程序會對模型進行評估,批准其投放產業應用,並對模型部署要求進行評估。
4. 當模型的產業應用被批准後,我們就開始部署模型。為此,我們要搞清楚組織會如何使用這個模型,作出相應調整,確保模型能在特定性能約束下自主端到端運行,同時也要進行測試,以確保在部署之後模型仍與開發出來的一致。一旦完成這些步驟,我們就在投入生產前,再次對模型進行了評估和批准。
5.最後,一旦部署完畢,模型所做出的預測就能服務於應用程序,這些預測的權值都是根據用戶交互行為計算出的。這些信息有助於改進模型,或提出一個新的商業問題,這就又回到了過程(2)。
為了確保周期運行成功,我們需要理解數據科學的開發和部署有著不同的要求,這些要求都需要被滿足。這就是為什麼你需要一個實驗室,同時也需要一個工廠。
實驗室
數據實驗室是數據科學家進行研究的地方,關注點不同於應用產品。最終目標也許是利用數據驅動組織內的決策制定,但是,實現這個之前,我們需要先弄清楚對組織而言,那些假設有意義,並證明其價值。因此,我們主要關注的是創造出一個環境——實驗室,在這裡,數據科學家可以提出問題,構建模型,並用數據進行測試。
正如以下基於CRISP-DM模型的圖表所示,這個過程基本上迭代式的。
我們不會在本文討論太多細節,但是我們有一個深入這個主題的教程。如果你想下載此教程的課件,請訪問https://goo.gl/SwAfWw
在這裡,我們關心的問題是需要實驗室來研發模型,還需要一個工廠,用以部署這個模型並將之自動應用到實時數據,在約束條件下把結果傳送給適當的客戶,並且監管整個過程,以防運行失敗或異常。
工廠
在工廠里,我們要做的是優化價值創造並降低成本,評估穩定性和結構彈性,確保在約束條件下把結果傳送給適當的客戶,同時能監控和管理程序故障。我們需要給模型提供一個結構,根據生產中的情況進行預期。
為了理解工廠的運行過程,我們來看一下如何通過模型註冊表來管理模型,以及部署時需要考慮哪些問題。
模型註冊表
為了給模型一個結構,我們會根據模型的組件進行定義,包括數據依存性,腳本,配置以及文件。另外,我們會捕獲模型上的元數據及其不同版本,提供額外的商業環境和模型特定信息。給模型提供一個結構,接著就能將模型目錄清單存在模型註冊表中,包括了不同模型版本,以及執行過程反饋的關聯結果。下面的圖示解釋了這個概念。
通過註冊表,我們可以:
明確哪個版本的模型正在被使用,並控制它。
查看發布說明,搞清楚某個特定版本發生了什麼變化。
查看與模型相關聯的資產和文件,這對於創建一個已有模型的新版本或管理維護是有用的。
監管模型執行的性能標準,以及什麼程序在使用它。這些信息是在模型執行過程中產生的,會把權值反饋給註冊表。
你同樣也可以選擇在模型某個版本中加入Jupyter Notebook。這可以讓一個審閱者或開發者遍歷此版本原始開發者最初開發時的思維過程和假設。有助於模型維護,也有助於組織探索。
這裡有一個矩陣,解構了一個模型的不同元素:
註冊表需要捕捉到數據、腳本和訓練過的模型對象之間的聯繫,圖中說明了與一個模型特定版本相關的文件。
這對我們的實踐有什麼幫助?
通過收集如何運行一個模型所需的資產和元數據,我們就能驅動一個執行工作流,將模型的特定版本用於實時數據,為終端用戶預測結果。如果這是批量程序的一部分,我們就可以利用這些信息為模型創造一個暫態的執行環境,來提取數據、腳本、運行模型、在目標存貯里保存結果,並在程序完成後關閉環境,在最大化資源的同時將成本最小化。
從監管角度來看,我們可以支持那些決定模型何時被推向產業化的商業工作流,這些工作流負責允許運行中的模型監視程序去做出一些決定,比如,當我們發現模型預測已不再符合現實情況時是否應該重新訓練它。如果你有審計要求,你可能需要跟顧客解釋你是如何得到某個特定結論的。為了做到這一點,你需要去考察在特定時間運行的某個特定版本的模型,並且需要知道復現這個結果用到了什麼樣的數據。
如果我們在一個已有模型中發現了漏洞,我們可以把它標記成不應該使用,修復後發布此模型的新版本。對所有使用漏洞版本的用戶發送通知,他們就可以轉而使用新的修復版。
如果不進行以上這些步驟,我們就有可能讓模型維護變成需要試圖理解原始開發者意圖的冒險行為,部署後的模型不再與那些正在開發中模型相匹配,產生不正確的結果,在已有模型升級後還會擾亂下游用戶的正常使用。
模型部署
一旦模型被批准部署,我們需要通過幾個步驟來確保模型能被部署。要有驗證正確性的測試,還要測試提取原始數據的管道流程、特徵生成,以及分析模型評分以確定模型可以自主運行,以消費者需要的方式產生出結果,滿足行業定義的性能要求。還要確保模型的執行過程處於監控中,以防發生錯誤或模型過時不再產生準確的結果。
在部署之前,我們要確保測試了下面幾項:
部署後的模型是否達到了原始模型開發者的預期。通過採用一個在開發過程中產生有效結果的測試輸入集,我們就能驗證部署的代碼是否與開發中的預期吻合。之前的一篇博文中說明了此過程的必要性(https://goo.gl/LKQbeu)。
部署後的模型是否在多種不同的輸入下都能良好運行,測試輸出的極端情況,以及由於數據質量問題潛在丟失的數值。同時應該有防止這些輸入毀掉模型並最終影響下游顧客的的控制手段。
我們通過兩種方式來最小化部署後模型與開發模型匹配時的風險:1)部署到生產環節之前就運行測試,2)捕獲環境細節,比如特定的語言版本和模型的庫依存性(例如,一個Python requirements.txt 文件)。
一旦部署到生產環節後,我們就想對用戶顯示模型的預測結果。有多少用戶會使用這一模型進行預測?在為模型打分時,提供特徵數據的速度要有多快?比如,欺詐偵測中,如果特徵信息每24小時產生一次,那麼,從事件發生到詐騙偵測模型檢測到此事件之間,會存在嚴重滯後。這就是我們需要解決的一些可擴展性和性能方面的問題。
就一個應用程序來說,最理想的方式是通過網頁服務向用戶展示結果,方式是通過模型實時得分或是以線下批處理過程展示評分結果。或者是,模型需要支持一個商業過程,我們需要把模型的結果放在一個為決策者生成報告並遵照該這些結果予以行事的地方。無論是那種情況,如果沒有模型註冊表,想要知道哪裡可以找到並使用當前模型的結果是很困難的。
另一個應用實例是想要搞清楚模型如何背離實時數據運行,以考察模型是否變得陳舊,或者確定一個新開發的模型性能是否超過舊模型。一個簡單的例子就是用回歸模型來對比預期值和實際值。如果我們沒有監測到模型結果隨時間變化,那麼,我們可能是在根據不再適用於當前情勢的歷史數據在做決策。
結論
這篇文章中,我們遍歷了模型周期,討論了對實驗室和工廠的需要,意在降低部署那些可能影響商業決策(並且還可能帶來高成本)壞模型帶來的風險。另外,註冊表也提供了組織中模型的透明性和可發現性。這有利於通過呈現組織使用的現有技術,來研發新模型,解決相似問題,也有利於現有模型維護或通過澄清模型當前版本、目前相關資產情況等來提升模型。
在 SVDS ,我們正在研發一個架構,它能支持模型管理,把不同模型版本登入註冊表,並管理如何將這些模型版本部署到一個執行引擎中。
亮劍實盤賬戶——獵殺龍頭股秘訓營(漲停戰法)
逃頂系統——如何提前知曉指數頭部,逃過每一波股災及大跌,操盤自信從容;
抄底系統——通過指標敏銳判斷底部從而精準抄底,日內高拋低吸也變得輕鬆簡單;
如何第一時間察覺熱點板塊的爆發並及時布局熱點龍頭;
如何挖掘龍頭股,詳解漲停板戰法的各個重要環節
加微信獲得實盤賬戶截圖全套資料
※騰訊任命俞棟為AI Lab副主任,主管西雅圖實驗室
※加拿大社會實驗:基本收入能買來快樂嗎?
※男子作死把iPhone7倒入硫酸內做實驗,測試後效果驚人
※10大駭人的人體實驗,滅絕人性的十大人體試驗
TAG:實驗 |
※《組合模型》推出了續作,這次你要修復一整個鎮的店鋪
※逆視覺問答任務:一種根據回答與圖像想問題的模型
※從三段中找到電影剪輯的模型規律
※小鼠「臟臟包」,會是更好的實驗模型嗎?
※問答模型真的理解問題嗎:歸因分析可輕鬆構造對抗問題樣本
※從三大案例,看如何用 CV 模型解決非視覺問題
※為何我國在內陸要搭建一個航母模型?它不是簡單的模型,而是樣板
※國產全面屏模型機曝光:用滑蓋設計解決頂部攝像頭問題!
※知乎問題:概率圖模型是否有必要系統地學習
※利用晶體狀態模型尋找自組織的答案
※工作量證明的內部攻擊模型
※標準模型的研究歷史,是怎麼一步步完善標準模型理論的
※超精密飛機模型加工全過程,成品好想要一個
※中國下一代航母不用四代機,官方模型透露重大細節
※從下面4種建築中選擇你最喜歡的,測出你的性格模型
※這國四代機都需要聯合研發,卻直接開啟六代機項目,高調展出模型
※大數據在實際應用的客觀問題與未來的市場模型定位
※知道這個模型,你就可以寫出一篇邏輯清晰的文章
※公司的股份制組織形式將迎來顛覆?OSQ通過通證經濟模型給出解決方案
※內部評級模型驗證方法全解析