0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

機器學習部署的難點

汽車玩家 ? 來源: AI公園 ? 作者:Alexandre Gonfalonier ? 2020-05-04 12:05 ? 次閱讀

導讀

根據(jù)我作為顧問的經(jīng)驗,只有非常少的機器學習項目能夠投入生產(chǎn)。一個人工智能項目可能會因為多種原因而失敗,其中之一就是部署。

在做了幾個人工智能項目之后,我意識到,對于那些愿意通過人工智能創(chuàng)造價值的公司來說,大規(guī)模部署機器學習(ML)模型是最重要的挑戰(zhàn)之一。

根據(jù)我作為顧問的經(jīng)驗,只有非常少的機器學習項目能夠投入生產(chǎn)。一個人工智能項目可能會因為多種原因而失敗,其中之一就是部署。對于每個決策者來說,完全理解部署是如何工作的,以及在達到這一關鍵步驟時如何降低失敗的風險是非常關鍵的。

部署的模型可以定義為無縫集成到生產(chǎn)環(huán)境中的任何代碼單元,并且可以接收輸入并返回輸出。

我曾經(jīng)看到,為了將他們的工作投入生產(chǎn),數(shù)據(jù)科學家通常必須將他或她的數(shù)據(jù)模型進行工程實現(xiàn)。在這一步中,出現(xiàn)了一些最常見的數(shù)據(jù)科學問題。

挑戰(zhàn)

機器學習有一些獨特的特性,使得大規(guī)模部署變得更加困難。這是我們正在處理的一些問題:

管理數(shù)據(jù)科學語言

你可能知道,機器學習應用程序通常由使用不同的編程語言編寫組成。它們之間的相互作用并不是很好。我曾多次看到,機器學習pipeline從R開始,在Python中繼續(xù),并以另一種語言結束。

一般來說,Python和R是機器學習應用程序中最流行的語言,但我注意到,由于各種原因(包括速度),很少使用這些語言部署生產(chǎn)模型。將Python或R模型移植到像c++Java這樣的生產(chǎn)語言中是很復雜的,并且通常會降低原始模型的性能(速度、準確性等)。

當軟件的新版本發(fā)布時,R包可能會崩潰。此外,R速度慢,無法高效地處理大數(shù)據(jù)。

對于原型設計來說,它是一種很棒的語言,因為它允許簡單的交互和解決問題,但是需要將它翻譯成Python或c++或Java來進行生產(chǎn)。

諸如Docker之類的容器化技術可以解決由大量工具引入的不兼容性和可移植性挑戰(zhàn)。然而,自動依賴項檢查、錯誤檢查、測試和構建工具將不能解決跨越語言障礙的問題。

可復現(xiàn)性也是一個挑戰(zhàn)。實際上,數(shù)據(jù)科學家可以使用不同的編程語言、庫或同一庫的不同版本來構建模型的多個版本。手動跟蹤這些依賴關系很困難。為了解決這些挑戰(zhàn),需要一個機器學習生命周期工具,它可以在訓練階段自動跟蹤并記錄這些依賴項,并將它們作為代碼的配置,然后將它們與訓練的模型一起打包到一個隨時可以部署的工件中。

我建議你使用一種工具或平臺,它可以立即將代碼從一種語言轉換為另一種語言,或者允許你的數(shù)據(jù)科學團隊在API背后部署模型,以便在任何地方集成它們。

計算能力和GPU

神經(jīng)網(wǎng)絡通常會非常深,這意味著訓練和使用它們進行推理需要大量的計算能力。通常,我們希望我們的算法運行得更快,對于很多用戶來說,這可能是一個障礙。

此外,現(xiàn)在許多生產(chǎn)上的機器學習都依賴于GPU。然而,它們既稀缺又昂貴,這很容易給機器學習的擴展任務增加另一層復雜性。

可移植性

模型部署的另一個有趣的挑戰(zhàn)是缺乏可移植性。我注意到這通常是遺留分析系統(tǒng)的問題。由于缺乏將軟件組件輕松遷移到另一個主機環(huán)境并在那里運行的能力,組件可能會被鎖定在特定的平臺上。這可能為數(shù)據(jù)科學家在創(chuàng)建和部署模型時制造障礙。

可擴展性

對于許多AI項目來說,可擴展性是一個真正的問題。實際上,你需要確保你的模型能夠擴展并滿足生產(chǎn)中性能和應用程序需求的增長。在項目開始時,我們通常依賴于可管理范圍內的相對靜態(tài)數(shù)據(jù)。隨著模型進入生產(chǎn)環(huán)境,它通常會接觸到大量的數(shù)據(jù)和數(shù)據(jù)傳輸模式。你的團隊將需要一些工具來監(jiān)視和解決性能和可擴展性方面的問題,這些問題將隨著時間的推移而出現(xiàn)。

我認為,可擴展性問題可以通過采用一致的、基于微服務的方法來進行生產(chǎn)分析來解決。團隊應該能夠通過簡單的配置更改快速地將模型從批處理遷移到隨需應變的流處理。類似地,團隊應該有擴展計算和內存占用的選項,以支持更復雜的工作負載。

機器學習峰值計算

一旦你的算法被訓練好了,它們并不是時時刻刻被使用——你的用戶只會在需要的時候調用它們。

這可能意味著你只需要支持上午8:00時的100個API調用,而在8:30時需要支持10,000個API調用。

根據(jù)我的經(jīng)驗,我可以告訴你,使用動態(tài)擴大或縮小你的服務來確保不為你不需要的服務器付費是一個挑戰(zhàn)

由于所有這些原因,只有少數(shù)數(shù)據(jù)科學項目最終真正進入生產(chǎn)系統(tǒng)。

模型的穩(wěn)定和魯棒

我們總是花很多時間準備模型。我們需要把原型變得穩(wěn)定和魯棒,這樣它就可以實際服務于大量的用戶,這通常需要大量的工作。

在許多情況下,整個模型需要用一種適合體系結構的語言重新編碼。僅這一點往往就會導致大量痛苦的工作,從而導致幾個月的部署延遲。完成之后,必須將其集成到公司的IT體系結構中,包括前面討論的所有庫問題。此外,在生產(chǎn)環(huán)境中訪問數(shù)據(jù)也常常是一項困難的任務。

更多的挑戰(zhàn)

在做項目的過程中,我也注意到了以下問題:

如果我們改變了一個輸入特征,那么其余特征的重要性、權重或使用可能也會改變。機器系統(tǒng)必須設計得易于跟蹤特征工程和選擇更改。

當模型被不斷迭代和微妙地改變時,跟蹤配置更新同時保持配置的清晰性和靈活性將成為額外的負擔。

有些數(shù)據(jù)輸入可能隨時間而改變。我們需要一種方法來理解和跟蹤這些變化,以便能夠完全理解我們的系統(tǒng)。

在機器學習應用程序中會出現(xiàn)一些傳統(tǒng)的單元/集成測試無法識別的錯誤。部署錯誤的模型版本、忘記某個特征以及在過時的數(shù)據(jù)集上進行訓練只是其中的幾個例子。

測試和驗證的問題

正如你可能已經(jīng)知道的,模型由于數(shù)據(jù)更改、新方法等而不斷發(fā)展。因此,每次發(fā)生這樣的變化時,我們都必須重新驗證模型的性能。這些驗證步驟引入了幾個挑戰(zhàn):

除了在離線測試中驗證模型外,評估生產(chǎn)模型的性能也非常重要。通常,我們在部署策略和監(jiān)視部分對此進行規(guī)劃。

與常規(guī)軟件應用程序相比,機器學習模型需要更頻繁地更新。

自動化機器學習平臺

有些人可能聽說過自動化機器學習平臺。這可能是一個快速生成模型的好方法。此外,該平臺可以支持多個模型的開發(fā)和比較,因此企業(yè)可以選擇最適合其預測準確性、延遲和計算資源需求的模型。

多達90%的企業(yè)機器學習模型可以自動開發(fā)。數(shù)據(jù)科學家可以與業(yè)務人員合作,開發(fā)目前自動化無法實現(xiàn)的一小部分模型

許多模型經(jīng)歷了漂移(性能隨時間降低)。因此,需要監(jiān)視已部署的模型。每個部署的模型都應該記錄所有的輸入、輸出和異常。模型部署平臺需要提供日志存儲和模型性能可視化。密切關注模型性能是有效管理機器學習模型生命周期的關鍵。

必須通過部署平臺監(jiān)視的關鍵元素

發(fā)布策略

探索許多不同的方式來部署你的軟件,“shadow mode”和“Canary”部署對機器學習應用程序特別有用。在“shadow mode”中,你捕獲生產(chǎn)中新模型的輸入和預測,而實際上并不服務于這些預測。相反,你可以自由地分析結果,如果檢測到錯誤,則不會產(chǎn)生重大后果。

當你的體系結構成熟時,請考慮啟用漸進的或“Canary”版本。這種做法是指你可以向一小部分客戶發(fā)布產(chǎn)品,而不是“要么全部發(fā)布,要么什么都不發(fā)布”。這需要更成熟的工具,但它可以最小化錯誤。

總結

機器學習仍處于初級階段。實際上,軟件和硬件組件都在不斷發(fā)展,以滿足機器學習的當前需求。

Docker/Kubernetes和微服務體系結構可以用來解決異構性和基礎設施方面的挑戰(zhàn)。現(xiàn)有的工具可以單獨地極大地解決一些問題。我認為,將所有這些工具結合起來以使ML運作化是當今最大的挑戰(zhàn)。

部署機器學習是并且將繼續(xù)是困難的,這只是組織將需要處理的一個現(xiàn)實。值得慶幸的是,一些新的架構和產(chǎn)品正在幫助數(shù)據(jù)科學家。此外,隨著越來越多的公司擴展數(shù)據(jù)科學操作,他們也在實現(xiàn)使模型部署更容易的工具。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 機器學習
    +關注

    關注

    66

    文章

    8325

    瀏覽量

    132211
收藏 人收藏

    評論

    相關推薦

    人工智能、機器學習和深度學習存在什么區(qū)別

    人工智能指的是在某種程度上顯示出類似人類智能的設備。AI有很多技術,但其中一個很大的子集是機器學習——讓算法從數(shù)據(jù)中學習。
    發(fā)表于 10-24 17:22 ?2373次閱讀
    人工智能、<b class='flag-5'>機器</b><b class='flag-5'>學習</b>和深度<b class='flag-5'>學習</b>存在什么區(qū)別

    如何快速設計和部署 IIoT 就緒型機器

    作者:Jeff Shepard 投稿人:DigiKey 北美編輯 2024-08-14 快速設計和部署可直接集成到工業(yè)物聯(lián)網(wǎng) (IIoT) 的機器并非易事。IIoT 就緒型機器必須能為機器
    的頭像 發(fā)表于 10-02 15:51 ?202次閱讀
    如何快速設計和<b class='flag-5'>部署</b> IIoT 就緒型<b class='flag-5'>機器</b>

    【「時間序列與機器學習」閱讀體驗】+ 簡單建議

    這本書以其系統(tǒng)性的框架和深入淺出的講解,為讀者繪制了一幅時間序列分析與機器學習融合應用的宏偉藍圖。作者不僅扎實地構建了時間序列分析的基礎知識,更巧妙地展示了機器學習如何在這一領域發(fā)揮巨
    發(fā)表于 08-12 11:21

    深度學習算法在嵌入式平臺上的部署

    隨著人工智能技術的飛速發(fā)展,深度學習算法在各個領域的應用日益廣泛。然而,將深度學習算法部署到資源受限的嵌入式平臺上,仍然是一個具有挑戰(zhàn)性的任務。本文將從嵌入式平臺的特點、深度學習算法的
    的頭像 發(fā)表于 07-15 10:03 ?981次閱讀

    機器學習算法原理詳解

    機器學習作為人工智能的一個重要分支,其目標是通過讓計算機自動從數(shù)據(jù)中學習并改進其性能,而無需進行明確的編程。本文將深入解讀幾種常見的機器學習
    的頭像 發(fā)表于 07-02 11:25 ?561次閱讀

    深度學習與傳統(tǒng)機器學習的對比

    在人工智能的浪潮中,機器學習和深度學習無疑是兩大核心驅動力。它們各自以其獨特的方式推動著技術的進步,為眾多領域帶來了革命性的變化。然而,盡管它們都屬于機器
    的頭像 發(fā)表于 07-01 11:40 ?979次閱讀

    機器學習的經(jīng)典算法與應用

    關于數(shù)據(jù)機器學習就是喂入算法和數(shù)據(jù),讓算法從數(shù)據(jù)中尋找一種相應的關系。Iris鳶尾花數(shù)據(jù)集是一個經(jīng)典數(shù)據(jù)集,在統(tǒng)計學習機器學習領域都經(jīng)常被
    的頭像 發(fā)表于 06-27 08:27 ?1497次閱讀
    <b class='flag-5'>機器</b><b class='flag-5'>學習</b>的經(jīng)典算法與應用

    鴻蒙實戰(zhàn)開發(fā)-本地部署、SmartPerf 編譯部署指導文檔

    telnet [部署機器ip地址] 9000。 如果顯示端口連接失敗 可能是防火墻未對9000 端口放開即可。 最后 如果大家覺得這篇內容對學習鴻蒙開發(fā)有幫助,我想邀請大家?guī)臀胰齻€小忙: 點贊,轉發(fā),有
    發(fā)表于 05-09 14:23

    機器學習8大調參技巧

    今天給大家一篇關于機器學習調參技巧的文章。超參數(shù)調優(yōu)是機器學習例程中的基本步驟之一。該方法也稱為超參數(shù)優(yōu)化,需要搜索超參數(shù)的最佳配置以實現(xiàn)最佳性能。
    的頭像 發(fā)表于 03-23 08:26 ?527次閱讀
    <b class='flag-5'>機器</b><b class='flag-5'>學習</b>8大調參技巧

    NVIDIA TAO工具套件功能與恩智浦eIQ機器學習開發(fā)環(huán)境的集成

    恩智浦半導體宣布與NVIDIA合作,將NVIDIA經(jīng)過訓練的人工智能模型通過eIQ機器學習開發(fā)環(huán)境部署到恩智浦廣泛的邊緣處理產(chǎn)品組合中。
    的頭像 發(fā)表于 03-22 09:11 ?896次閱讀

    微軟推出ONNX Runtime Web,利用WebGPU優(yōu)化瀏覽器機器學習性能

    作為微軟的 JavaScript 庫,ONNX Runtime Web 使得網(wǎng)絡開發(fā)者能在瀏覽器環(huán)境下部署機器學習模型,并提供多種硬件加速的后端支持。
    的頭像 發(fā)表于 03-05 14:23 ?896次閱讀

    如何使用TensorFlow構建機器學習模型

    在這篇文章中,我將逐步講解如何使用 TensorFlow 創(chuàng)建一個簡單的機器學習模型。
    的頭像 發(fā)表于 01-08 09:25 ?874次閱讀
    如何使用TensorFlow構建<b class='flag-5'>機器</b><b class='flag-5'>學習</b>模型

    Docker部署遷移實戰(zhàn)

    由于公司內部機器要做遷移,原系統(tǒng)機器部署在阿里云,要向亞馬遜云遷移,由于之前的服務實在windows遠程機器部署,并且有些項目因為打包問題,
    的頭像 發(fā)表于 12-12 14:22 ?845次閱讀
    Docker<b class='flag-5'>部署</b>遷移實戰(zhàn)

    淺析機器學習的基本步驟

    機器學習中,機器學習的效率在很大程度上取決于它所提供的數(shù)據(jù)集,數(shù)據(jù)集的大小和豐富程度也決定了最終預測的結果質量。目前在算力方面,量子計算能超越傳統(tǒng)二進制的編碼系統(tǒng),利用量子的糾纏與疊
    發(fā)表于 10-30 11:13 ?353次閱讀
    淺析<b class='flag-5'>機器</b><b class='flag-5'>學習</b>的基本步驟

    TDK機器學習解決方案促進邊緣人工智能前景大幅擴展

    物聯(lián)網(wǎng)技術的進步為大量設備帶來了互聯(lián)網(wǎng)連接能力。此外,邊緣計算的發(fā)展如今還為邊緣設備提供機器學習*1,將人工智能的版圖從云端擴展到外圍。本文將深入介紹一款突破性軟件解決方案,該方案將從根本上簡化部署,在邊緣設備上輕松實現(xiàn)
    的頭像 發(fā)表于 10-27 12:18 ?330次閱讀
    TDK<b class='flag-5'>機器</b><b class='flag-5'>學習</b>解決方案促進邊緣人工智能前景大幅擴展