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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

機(jī)器學(xué)習(xí)模型部署到ML項(xiàng)目的過(guò)程

汽車(chē)玩家 ? 來(lái)源:AI公園 ? 作者:Rahul Agarwal ? 2020-05-04 11:56 ? 次閱讀

導(dǎo)讀

為什么我們的機(jī)器學(xué)習(xí)項(xiàng)目會(huì)失???

創(chuàng)造一個(gè)大的機(jī)器學(xué)習(xí)系統(tǒng)是一門(mén)藝術(shù)。

在構(gòu)建一個(gè)大的機(jī)器學(xué)習(xí)系統(tǒng)時(shí),有很多事情需要考慮。但作為數(shù)據(jù)科學(xué)家,我們常常只擔(dān)心項(xiàng)目的某些部分。

但是我們是否考慮過(guò)一旦我們擁有了模型,我們將如何部署它們?

我見(jiàn)過(guò)許多 ML 項(xiàng)目,其中許多項(xiàng)目注定要失敗,因?yàn)樗鼈儚囊婚_(kāi)始就沒(méi)有一個(gè)固定的生產(chǎn)計(jì)劃。

這篇文章是關(guān)于一個(gè)成功的 ML 項(xiàng)目的過(guò)程需求 —— 一個(gè)進(jìn)入生產(chǎn)的項(xiàng)目。

1. 在開(kāi)始的時(shí)候建立基線(xiàn)

你并不需要用模型來(lái)獲得基線(xiàn)結(jié)果。

假設(shè)我們將使用 RMSE 作為我們的時(shí)間序列模型的評(píng)估指標(biāo)。我們?cè)跍y(cè)試集上對(duì)模型進(jìn)行了評(píng)估,RMSE 為 3.64。

3.64 是個(gè)好 RMSE 嗎?我們?cè)趺粗溃课覀冃枰粋€(gè)基線(xiàn) RMSE。

這可能來(lái)自當(dāng)前使用的用于相同任務(wù)的模型?;蛘呤褂靡恍┓浅:?jiǎn)單的啟發(fā)式。對(duì)于時(shí)間序列模型,需要打敗的基線(xiàn)是最后一天的預(yù)測(cè)。即,預(yù)測(cè)前一天的數(shù)字。

如果是圖像分類(lèi)任務(wù),取 1000 個(gè)有標(biāo)簽的樣本。而人類(lèi)的準(zhǔn)確性可以作為你的基線(xiàn)。如果一個(gè)人不能在任務(wù)中獲得 70%的預(yù)測(cè)精度,那么如果你的模型達(dá)到類(lèi)似的水平,你總是可以考慮將流程自動(dòng)化。

學(xué)習(xí):在你創(chuàng)建模型之前,試著了解你將要得到的結(jié)果。設(shè)定一些不切實(shí)際的期望只會(huì)讓你和你的客戶(hù)失望。

2. 持續(xù)集成是前進(jìn)的方向

你現(xiàn)在已經(jīng)創(chuàng)建了你的模型。它在本地測(cè)試數(shù)據(jù)集上的性能比基線(xiàn)/當(dāng)前模型要好。我們應(yīng)該繼續(xù)前進(jìn)嗎?

我們有兩個(gè)選擇:

進(jìn)一步改進(jìn)我們的模型,這是一個(gè)無(wú)止境的循環(huán)。

在生產(chǎn)環(huán)境中測(cè)試我們的模型,得到更多關(guān)于可能出錯(cuò)的信息,然后使用持續(xù)集成來(lái)改進(jìn)我們的模型。

我支持第二種方法。Andrew Ng 在 Coursera 上的第三門(mén)課,“Deep Learning Specialization”中的“Structuring Machine learning”中說(shuō):

“不要一開(kāi)始就試圖設(shè)計(jì)和構(gòu)建完美的系統(tǒng)。相反,應(yīng)該快速地建立和訓(xùn)練一個(gè)基本的系統(tǒng) —— 也許只需要幾天的時(shí)間。即使基本的系統(tǒng)遠(yuǎn)遠(yuǎn)不是你能建立的“最好”的系統(tǒng),檢查基本的系統(tǒng)是有價(jià)值的:你會(huì)很快找到一些線(xiàn)索,告訴你在哪些方面最值得投入你的時(shí)間。

完成比完美更好。

學(xué)習(xí):如果你的新模型比當(dāng)前生產(chǎn)中的模型更好,或者你的新模型比基線(xiàn)更好,那么等待投入生產(chǎn)是沒(méi)有意義的。

3. 你的模型可能會(huì)進(jìn)入生產(chǎn)

你的模型是否優(yōu)于基線(xiàn)?它在本地測(cè)試數(shù)據(jù)集上表現(xiàn)得更好,但是它真的能在整體上工作得很好嗎?

為了測(cè)試你的模型優(yōu)于現(xiàn)有模型的假設(shè)的有效性,你可以設(shè)置一個(gè)A/B 測(cè)試。一些用戶(hù)(測(cè)試組)看到來(lái)自你的模型的預(yù)測(cè),而一些用戶(hù)(控制組)看到來(lái)自前一個(gè)模型的預(yù)測(cè)。

事實(shí)上,這是部署模型的正確方式。你可能會(huì)發(fā)現(xiàn)你的模型并沒(méi)有看起來(lái)那么好。

錯(cuò)了并不是真的錯(cuò),錯(cuò)的是沒(méi)有預(yù)料到我們可能會(huì)錯(cuò)。

很難指出你的模型在生產(chǎn)環(huán)境中表現(xiàn)不佳的真正原因,但一些原因可能是:

你可能會(huì)看到實(shí)時(shí)的數(shù)據(jù)與訓(xùn)練數(shù)據(jù)有很大的不同。

或者你沒(méi)有正確地完成預(yù)處理 pipeline。

或者你沒(méi)有正確地衡量 performance。

或者你的實(shí)現(xiàn)中有一個(gè) bug。

學(xué)習(xí):不要全面投入生產(chǎn)。A/B 測(cè)試永遠(yuǎn)是前進(jìn)的好方法。準(zhǔn)備一些可以依靠的東西(可能是一個(gè)更老的模型)??傆幸恍〇|西會(huì)出問(wèn)題,這是你無(wú)法預(yù)料的。

4. 你的模型可能不會(huì)投入生產(chǎn)中

我創(chuàng)建了這個(gè)令人印象深刻的 ML 模型,它提供了 90%的準(zhǔn)確性,但它需要大約 10 秒鐘來(lái)獲取預(yù)測(cè)。

**這樣可接受嗎?**對(duì)于某些用例可能是,但實(shí)際上不是。

在過(guò)去,有許多 Kaggle 競(jìng)賽的獲勝者最終創(chuàng)造了非常大的模型集成,占據(jù)了排行榜的榜首。下面是一個(gè)例子模型,它曾在 Kaggle 上贏得 Otto 分類(lèi)挑戰(zhàn):

在Level1上用了33個(gè)模型和8種特征工程

另一個(gè)例子是 Netflix 百萬(wàn)美元推薦引擎挑戰(zhàn)。由于涉及的工程成本,Netflix 團(tuán)隊(duì)最終沒(méi)有使用獲獎(jiǎng)解決方案。

那么,如何讓你的模型在機(jī)器上既準(zhǔn)確又簡(jiǎn)單呢?

機(jī)器學(xué)習(xí)模型部署到ML項(xiàng)目的過(guò)程

Teacher — Student模型

這就引出了 Teacher-Student 模型或“知識(shí)蒸餾”的概念。在知識(shí)蒸餾中,我們?cè)谝粋€(gè)更大的已經(jīng)訓(xùn)練好的教師模型上訓(xùn)練一個(gè)更小的學(xué)生模型。

這里我們使用來(lái)自教師模型的軟標(biāo)簽/概率,并將其作為學(xué)生模型的訓(xùn)練數(shù)據(jù)。

關(guān)鍵是,老師輸出類(lèi)別概率 —— “軟標(biāo)簽”而不是“硬標(biāo)簽”。例如,一個(gè)水果分類(lèi)器可能會(huì)說(shuō)“Apple 0.9, Pear 0.1”而不是“Apple 1.0, Pear 0.0”。為什么要這樣呢?因?yàn)檫@些“軟標(biāo)簽”比原來(lái)的標(biāo)簽信息更豐富——告訴學(xué)生,是的,這個(gè)蘋(píng)果確實(shí)有點(diǎn)像梨。學(xué)生模型通??梢苑浅=咏處熕降谋憩F(xiàn),即使參數(shù)少了 1-2 個(gè)數(shù)量級(jí)!

學(xué)習(xí):有時(shí),我們的預(yù)測(cè)時(shí)間很有限,所以我們想要一個(gè)更輕的模型。我們可以嘗試構(gòu)建更簡(jiǎn)單的模型,或者嘗試對(duì)這樣的用例使用知識(shí)蒸餾。

5. 周期性的維護(hù)和反饋

世界不是恒定的,你的模型權(quán)重也不是恒定的

我們周?chē)氖澜缯谘杆僮兓?,兩個(gè)月前可能適用的東西現(xiàn)在可能已經(jīng)不適用了。在某種程度上,我們建立的模型是對(duì)世界的反映,如果世界在變化,我們的模型應(yīng)該能夠反映這種變化。

機(jī)器學(xué)習(xí)模型部署到ML項(xiàng)目的過(guò)程

模型性能通常隨時(shí)間而下降。

由于這個(gè)原因,我們必須在一開(kāi)始就考慮將我們的模型升級(jí)作為維護(hù)的一部分

維護(hù)周期的頻率完全取決于你試圖解決的業(yè)務(wù)問(wèn)題。在一個(gè)廣告預(yù)測(cè)系統(tǒng)中,用戶(hù)往往變化無(wú)常,購(gòu)買(mǎi)模式不斷出現(xiàn),需要相當(dāng)高的頻率。而在評(píng)論情緒分析系統(tǒng)中,由于語(yǔ)言本身的結(jié)構(gòu)變化不是很大,所以頻率不需要那么高。

機(jī)器學(xué)習(xí)模型部署到ML項(xiàng)目的過(guò)程

我還必須要承認(rèn)反饋回路在機(jī)器學(xué)習(xí)系統(tǒng)中的重要性。假設(shè)你用貓狗分類(lèi)器預(yù)測(cè)了一個(gè)的圖像是狗,但是概率很低。我們能從這些低置信度的例子中學(xué)到什么嗎?你可以將其發(fā)送到手動(dòng)檢查,以檢查它是否可以用于重新訓(xùn)練模型。通過(guò)這種方式,我們可以在它不確定的樣本上訓(xùn)練分類(lèi)器。

學(xué)習(xí):在考慮生產(chǎn)時(shí),提出使用反饋來(lái)維護(hù)和改進(jìn)模型的計(jì)劃。

總結(jié)

在考慮將模型投入生產(chǎn)之前,我發(fā)現(xiàn)這些事情是很重要的。

雖然這并不是你需要考慮的事情和可能出錯(cuò)的事情的詳盡列表,但它無(wú)疑可以作為你下次創(chuàng)建機(jī)器學(xué)習(xí)系統(tǒng)時(shí)的思想食糧。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    AI大模型與深度學(xué)習(xí)的關(guān)系

    AI大模型與深度學(xué)習(xí)之間存在著密不可分的關(guān)系,它們互為促進(jìn),相輔相成。以下是對(duì)兩者關(guān)系的介紹: 一、深度學(xué)習(xí)是AI大模型的基礎(chǔ) 技術(shù)支撐 :深度學(xué)習(xí)
    的頭像 發(fā)表于 10-23 15:25 ?140次閱讀

    AI大模型與傳統(tǒng)機(jī)器學(xué)習(xí)的區(qū)別

    多個(gè)神經(jīng)網(wǎng)絡(luò)層組成,每個(gè)層都包含大量的神經(jīng)元和權(quán)重參數(shù)。 傳統(tǒng)機(jī)器學(xué)習(xí)模型規(guī)模相對(duì)較小,參數(shù)數(shù)量通常只有幾千幾百萬(wàn)個(gè),模型結(jié)構(gòu)相對(duì)簡(jiǎn)單
    的頭像 發(fā)表于 10-23 15:01 ?145次閱讀

    構(gòu)建語(yǔ)音控制機(jī)器人 - 線(xiàn)性模型機(jī)器學(xué)習(xí)

    2024-07-31 |Annabel Ng 在該項(xiàng)目的[上一篇博客文章]中,我介紹了運(yùn)行機(jī)器人電機(jī)、處理音頻信號(hào)和調(diào)節(jié)電壓所需的電路的基礎(chǔ)知識(shí)。然而,機(jī)器人還沒(méi)有完全完成!盡管機(jī)器
    的頭像 發(fā)表于 10-02 16:31 ?128次閱讀
    構(gòu)建語(yǔ)音控制<b class='flag-5'>機(jī)器</b>人 - 線(xiàn)性<b class='flag-5'>模型</b>和<b class='flag-5'>機(jī)器</b><b class='flag-5'>學(xué)習(xí)</b>

    深度學(xué)習(xí)模型量化方法

    深度學(xué)習(xí)模型量化是一種重要的模型輕量化技術(shù),旨在通過(guò)減少網(wǎng)絡(luò)參數(shù)的比特寬度來(lái)減小模型大小和加速推理過(guò)程,同時(shí)盡量保持
    的頭像 發(fā)表于 07-15 11:01 ?415次閱讀
    深度<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>模型</b>量化方法

    pycharm如何訓(xùn)練機(jī)器學(xué)習(xí)模型

    PyCharm是一個(gè)流行的Python集成開(kāi)發(fā)環(huán)境(IDE),它提供了豐富的功能,包括代碼編輯、調(diào)試、測(cè)試等。在本文中,我們將介紹如何在PyCharm中訓(xùn)練機(jī)器學(xué)習(xí)模型。 一、安裝PyCharm
    的頭像 發(fā)表于 07-11 10:14 ?562次閱讀

    PyTorch神經(jīng)網(wǎng)絡(luò)模型構(gòu)建過(guò)程

    PyTorch,作為一個(gè)廣泛使用的開(kāi)源深度學(xué)習(xí)庫(kù),提供了豐富的工具和模塊,幫助開(kāi)發(fā)者構(gòu)建、訓(xùn)練和部署神經(jīng)網(wǎng)絡(luò)模型。在神經(jīng)網(wǎng)絡(luò)模型中,輸出層是尤為關(guān)鍵的部分,它負(fù)責(zé)將
    的頭像 發(fā)表于 07-10 14:57 ?381次閱讀

    深度學(xué)習(xí)模型訓(xùn)練過(guò)程詳解

    深度學(xué)習(xí)模型訓(xùn)練是一個(gè)復(fù)雜且關(guān)鍵的過(guò)程,它涉及大量的數(shù)據(jù)、計(jì)算資源和精心設(shè)計(jì)的算法。訓(xùn)練一個(gè)深度學(xué)習(xí)模型,本質(zhì)上是通過(guò)優(yōu)化算法調(diào)整
    的頭像 發(fā)表于 07-01 16:13 ?817次閱讀

    鴻蒙實(shí)戰(zhàn)開(kāi)發(fā)-本地部署、SmartPerf 編譯部署指導(dǎo)文檔

    install 在項(xiàng)目目錄下運(yùn)行命令: npm run build 編譯成功后會(huì)有main 可執(zhí)行文件生成。 項(xiàng)目部署 直接運(yùn)行 ./main 可執(zhí)行程序,完成項(xiàng)目的部署
    發(fā)表于 05-09 14:23

    深入探討機(jī)器學(xué)習(xí)的可視化技術(shù)

    機(jī)器學(xué)習(xí)可視化(簡(jiǎn)稱(chēng)ML可視化)一般是指通過(guò)圖形或交互方式表示機(jī)器學(xué)習(xí)模型、數(shù)據(jù)及其關(guān)系的
    發(fā)表于 04-25 11:17 ?344次閱讀
    深入探討<b class='flag-5'>機(jī)器</b><b class='flag-5'>學(xué)習(xí)</b>的可視化技術(shù)

    基于 Renesas 的 RA8M1 實(shí)現(xiàn) AI 和 ML 部署

    作者:Kenton Williston 人工智能 (AI)、機(jī)器學(xué)習(xí) (ML) 和其他計(jì)算密集型工作負(fù)載在物聯(lián)網(wǎng)?(IoT) 網(wǎng)絡(luò)邊緣的興起,給微控制器 (MCU) 帶來(lái)了額外的處理負(fù)載。處理這些
    的頭像 發(fā)表于 04-23 15:04 ?1090次閱讀
    基于 Renesas 的 RA8M1 實(shí)現(xiàn) AI 和 <b class='flag-5'>ML</b> <b class='flag-5'>部署</b>

    機(jī)器學(xué)習(xí)ML)推理主要計(jì)算之存內(nèi)計(jì)算芯片

    機(jī)器學(xué)習(xí)ML)應(yīng)用已經(jīng)在汽車(chē)、醫(yī)療保健、金融和技術(shù)等各個(gè)領(lǐng)域變得無(wú)處不在。這導(dǎo)致對(duì)高性能、高能效 ML 硬件解決方案的需求不斷增加。
    發(fā)表于 04-07 10:48 ?946次閱讀
    <b class='flag-5'>機(jī)器</b><b class='flag-5'>學(xué)習(xí)</b>(<b class='flag-5'>ML</b>)推理主要計(jì)算之存內(nèi)計(jì)算芯片

    使用CUBEAI部署tflite模型STM32F0中,模型創(chuàng)建失敗怎么解決?

    看到CUBE_AI已經(jīng)支持STM32F0系列芯片,就想拿來(lái)入門(mén)嵌入式AI。 生成的模型很小,是可以部署F0上的,但是一直無(wú)法創(chuàng)建成功。 查閱CUBE AI文檔說(shuō)在調(diào)用create
    發(fā)表于 03-15 08:10

    英特爾CPU部署Qwen 1.8B模型過(guò)程

    本文介紹了在英特爾 13 代酷睿 CPU i5 - 13490F 設(shè)備上部署 Qwen 1.8B 模型過(guò)程,你需要至少 16GB 內(nèi)存的機(jī)器來(lái)完成這項(xiàng)任務(wù),我們將使用英特爾的大
    的頭像 發(fā)表于 01-12 10:28 ?2462次閱讀

    如何使用TensorFlow構(gòu)建機(jī)器學(xué)習(xí)模型

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

    如何使用OpenVINO C++ API部署FastSAM模型

    FastSAM 模型 | 開(kāi)發(fā)者實(shí)戰(zhàn)》,在該文章中我們向大家展示了基于 OpenVINO Python API 的基本部署流程。在實(shí)際部署過(guò)程中會(huì)考慮到由效率問(wèn)題,使得我們可能更傾向
    的頭像 發(fā)表于 11-17 09:53 ?788次閱讀
    如何使用OpenVINO C++ API<b class='flag-5'>部署</b>FastSAM<b class='flag-5'>模型</b>