日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

flask 部署_只需10分钟!就能用Flask,Docker和Jenkins部署机器学习模型

發(fā)布時(shí)間:2025/3/11 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 flask 部署_只需10分钟!就能用Flask,Docker和Jenkins部署机器学习模型 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

摘要: 一杯茶的功夫部署完成機(jī)器學(xué)習(xí)模型!

在生產(chǎn)環(huán)境中部署機(jī)器學(xué)習(xí)模型是數(shù)據(jù)工程中經(jīng)常被忽視的領(lǐng)域。網(wǎng)上的大多數(shù)教程/博客都側(cè)重于構(gòu)建、訓(xùn)練和調(diào)整機(jī)器學(xué)習(xí)模型。如果它不能用于實(shí)際的預(yù)測,那么它又有什么用呢? 接下來了解一下有哪些部署選項(xiàng)吧:

評估選項(xiàng)

在生產(chǎn)中部署機(jī)器學(xué)習(xí)模型時(shí),有多種選擇。其中一種流行的方法是使用Azure Machine Learning Studio等云服務(wù)設(shè)計(jì)和訓(xùn)練模型,這些服務(wù)具有使用拖放工具構(gòu)建和訓(xùn)練模型的能力。此外,將這些模型作為Web服務(wù)發(fā)布只需點(diǎn)擊幾下即可。此類設(shè)置的附加優(yōu)勢在于,該部署會(huì)隨著應(yīng)用程序使用量的增加而自動(dòng)擴(kuò)展。

雖然短時(shí)間看起來很方便,但從長遠(yuǎn)來看,這種設(shè)置可能會(huì)有問題。當(dāng)我們想要將應(yīng)用程序從第三方云平臺(tái)遷移并將其部署在我們的服務(wù)器上時(shí),就有難度了。由于這些工具與其各自的云平臺(tái)緊密集成,因此這種設(shè)置不可移植。此外,隨著應(yīng)用程序的擴(kuò)展,云計(jì)算的成本可能是一個(gè)令人望而卻步的因素。

如果我們構(gòu)建自定義REST-API作為機(jī)器學(xué)習(xí)模型的終點(diǎn),則可以避免這些問題。特別是,本文將使用基于Python的Flask Web框架來為模型構(gòu)建API,然后將這個(gè)flask應(yīng)用程序整齊地集成到Docker映像中來進(jìn)行部署。Docker顯然適合解決這個(gè)問題,因?yàn)閼?yīng)用程序的所有依賴項(xiàng)都可以打包在容器中,并且可以通過必要時(shí)刻簡單地部署更多容器來實(shí)現(xiàn)可伸縮性。這種部署架構(gòu)本質(zhì)上是可擴(kuò)展的、成本有效的和便攜的。

Docker:Docker是一種開源的容器化技術(shù),允許開發(fā)人員將應(yīng)用程序與依賴庫打包在一起,并將其與底層操作系統(tǒng)隔離開來。與VM不同,docker不需要每個(gè)應(yīng)用程序的Guest虛擬機(jī)操作系統(tǒng),因此可以維護(hù)輕量級資源管理系統(tǒng)。與容器相比,虛擬機(jī)更重量級,因此容器可以相對快速地旋轉(zhuǎn),同時(shí)具有較低的內(nèi)存占用,這有助于將來我們的應(yīng)用程序和模型的可伸縮性。

Jenkins:Jenkins可能是最受歡迎的持續(xù)集成和持續(xù)交付工具,大約擁有1400個(gè)插件,可自動(dòng)構(gòu)建和部署項(xiàng)目。Jenkins提供了一個(gè)在其管道中添加GitHub web-hook的規(guī)定,這樣每次開發(fā)人員將更改推送到GitHub存儲(chǔ)庫時(shí),它都會(huì)自動(dòng)開始為修改后的模型運(yùn)行驗(yàn)證測試,并構(gòu)建docker鏡像來進(jìn)行部署。

ngrok:ngrok是一個(gè)免費(fèi)工具,可將公共URL傳送到本地運(yùn)行的應(yīng)用程序它會(huì)生成一個(gè)可以在GitHub web-hook中用于觸發(fā)推送事件的URL。

Flask:Flask是一個(gè)用Python編寫的開源Web框架,內(nèi)置開發(fā)服務(wù)器和調(diào)試器。雖然有許多可以替代Web框架來創(chuàng)建REST API,但Flask的簡單性備受青睞。

部署

你可能想知道“我進(jìn)入了什么樣的環(huán)狀土地?”但我保證接下來的步驟將變得簡單實(shí)用。到目前為止,我們已經(jīng)了解了部署體系結(jié)構(gòu)中的不同組件以及每個(gè)組件的功能的簡要說明。在本節(jié)中,將介紹部署模型的詳細(xì)步驟。

部署過程可以暫時(shí)分為四個(gè)部分:構(gòu)建和保存模型、使用REST API公開模型,將模型打包在容器內(nèi)以及配置持續(xù)集成工具。

在繼續(xù)下一步之前,使用以下命令將GitHub存儲(chǔ)庫復(fù)制到本地計(jì)算機(jī)。 此存儲(chǔ)庫包含所有代碼文件,可用作部署自定義模型的參考。

git clone git@github.com:EkramulHoque/docker-jenkins-flask-tutorial.git

注:雖然以上提到的步驟適用于Windows操作系統(tǒng),但修改這些命令以在Mac或Unix系統(tǒng)上運(yùn)行應(yīng)該是很簡單的。

訓(xùn)練和保存模型

在本例中,使用來自scikit-learn的鳶尾花數(shù)據(jù)集來構(gòu)建我們的機(jī)器學(xué)習(xí)模型。在加載數(shù)據(jù)集后,提取用于模型訓(xùn)練的特征(x)和目標(biāo)(y)。為了進(jìn)行預(yù)測,先創(chuàng)建一個(gè)名為“l(fā)abels”的字典,其中包含目標(biāo)的標(biāo)簽名稱,這里將決策樹分類器用作模型。你可以在sklearn隨意嘗試其他分類器 ,通過調(diào)用模型上的方法來生成測試數(shù)據(jù)的預(yù)測標(biāo)簽。

我們使用pickle庫將模型導(dǎo)出為pickle文件,并將模型保存在磁盤上。從文件加載模型后,我們將樣本數(shù)據(jù)作為模型的輸入并預(yù)測其目標(biāo)變量。

#!/usr/bin/env python# coding: utf-8import picklefrom sklearn import datasetsiris=datasets.load_iris()x=iris.datay=iris.target#labels for iris datasetlabels ={ 0: "setosa 創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的flask 部署_只需10分钟!就能用Flask,Docker和Jenkins部署机器学习模型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。