網(wǎng)站首頁 互聯(lián)網(wǎng) > 正文
2022年1月6日整理發(fā)布:Heroku 云在Web開發(fā)人員和機(jī)器學(xué)習(xí)愛好者中頗負(fù)盛名。該平臺(tái)提供了部署和維護(hù)Web應(yīng)用程序的簡易方法,但如果您不熟悉部署深度學(xué)習(xí)應(yīng)用程序,可能會(huì)遇到棘手的存儲(chǔ)和依賴問題。本文將使您的部署過程更順暢,以便您能專注于創(chuàng)建出色的Web應(yīng)用程序。我們將學(xué)習(xí)DVC集成、基于Git和CLI的部署、錯(cuò)誤代碼H10、使用Python軟件包以及優(yōu)化存儲(chǔ)。
一、基于Git和CLI的部署
Streamlit應(yīng)用程序可以使用Git、GitHub集成或使用Docker加以部署?;贕it的方法是在Heroku服務(wù)器上部署任何數(shù)據(jù)應(yīng)用程序的更快速更簡單的方法。
基于Git的簡單方法
Streamlit應(yīng)用程序可使用以下命令來部署:
git remote add heroku https://heroku:$HEROKU_API_KEY@git.heroku.com/.git
git push -f heroku HEAD:master
為此,您需要:
Heroku API 密鑰
Heroku 應(yīng)用程序:通過CLI或訪問網(wǎng)站。
基于Git的項(xiàng)目
配置文件
基于CLI的方法
基于CLI的部署很基本,且易于學(xué)習(xí)。
1. 在此處創(chuàng)建一個(gè)免費(fèi)的Heroku帳戶。
2. 使用該鏈接,安裝Heroku CLI。
3. 克隆遠(yuǎn)程存儲(chǔ)庫或使用git init。
4. 輸入heroku login和heroku create dagshub-pc-app。這將使您登錄到服務(wù)器,并在Web服務(wù)器上創(chuàng)建一個(gè)應(yīng)用程序。
5. 現(xiàn)在創(chuàng)建含有運(yùn)行應(yīng)用程序的命令的Procfile: web: streamlit run --server.port $PORT streamlit_app.py
6. 最后,提交并推送代碼到heroku服務(wù)器git push heroku master。
二、PORT
如果您使用streamlit run app.py運(yùn)行應(yīng)用程序,它將生成錯(cuò)誤代碼 H10,這意味著Streamlit應(yīng)用程序未使用服務(wù)器分配的$PORT。
您需要:
使用Heroku CLI設(shè)置PORT。
heroku config:set PORT=8080
在Procfile中進(jìn)行更改,并在參數(shù)中添加服務(wù)器端口。
web:streamlit run --server.port $PORT app.py
三、調(diào)整Python軟件包
這部分花了我2天的時(shí)間來調(diào)試,因?yàn)镠eroku云有500MB的限制,而新的TensorFlow軟件包是489.6MB。為了避免依賴項(xiàng)和存儲(chǔ)問題,我們需要在requirements.txt文件中進(jìn)行更改:
1. 添加tensorflow-cpu而不是tensorflow,這將我們的slug大小從765MB縮減到400MB。
2. 添加opencv-python-headless而不是opencv-python,以避免安裝外部依賴項(xiàng)。這將解決所有cv2錯(cuò)誤。
3. 刪除所有不必要的軟件包,numpy、Pillow 和streamlit除外。
四、DVC集成
從DVC服務(wù)器成功提取數(shù)據(jù)需要幾個(gè)步驟:
1. 首先,我們?cè)试S通過使用Heroku API來安裝 apt-files的buildpack:
heroku buildpacks:add --index 1 heroku-community/apt
2. 創(chuàng)建文件名Aptfile,并添加最新的DVC版本https://github.com/iterative/dvc/releases/download/2.8.3/dvc_2.8.3_amd64.deb
3. 在您的app.py文件中添加額外的代碼行:
import os
if "DYNO" in os.environ and os.path.isdir(".dvc"):
os.system("dvc config core.no_scm true")
if os.system(f"dvc pull") != 0:
exit("dvc pull failed")
os.system("rm -r .dvc .apt/usr/lib/dvc")
之后提交您的代碼,并將其推送到Heroku服務(wù)器。部署成功后,應(yīng)用程序會(huì)自動(dòng)從DVC服務(wù)器拉取數(shù)據(jù)。
五、優(yōu)化存儲(chǔ)
優(yōu)化存儲(chǔ)的方式有多種,最常見的就是使用Docker。通過使用Docker方法,您可以繞過500MB的限制,還可以自由安裝任何第三方集成或軟件包。想進(jìn)一步了解如何使用Docker,請(qǐng)查看本指南。
為了優(yōu)化存儲(chǔ):
在requiremnets.txt中僅添加模型推理python庫。
我們可以通過使用以下命令從DVC提取選擇性數(shù)據(jù):
dvc pull {model} {sample_data1} {sample_data2}..
我們只需要一個(gè)模型推理文件,因此將其余文件添加到.slugignore,其工作方式與.gitignore類似。想了解更多信息,請(qǐng)查看Slug編譯器(https://devcenter.heroku.com/articles/slug-compiler#ignoring-files-with-slugignore)。
從服務(wù)器成功拉取數(shù)據(jù)后,刪除.dvc目錄和.apt/usr/lib/dvc目錄。
六、結(jié)果
最初的slug大小為850MB,但通過存儲(chǔ)和軟件包優(yōu)化,最終的slug大小縮減到400MB。我們用一個(gè)簡單的命令解決了錯(cuò)誤代碼H10,并添加opencv-python-headless軟件包來解決依賴問題。本文旨在克服初學(xué)者在Heroku服務(wù)器上面臨的一些常見問題。
基于Docker的部署可以解決很多存儲(chǔ)問題,但也帶來了復(fù)雜性和緩慢的部署過程??梢允褂胔eroku container:push web,但在此之前,需要先構(gòu)建Docker并測試它,在本地解決所有問題后才能推送它。這種方法是高級(jí)Heroku用戶所青睞的。
下一個(gè)挑戰(zhàn)是使用Webhook部署您的Web應(yīng)用程序。這將使我們可以從任何平臺(tái)自動(dòng)化整個(gè)機(jī)器學(xué)習(xí)生態(tài)系統(tǒng)。自動(dòng)化過程將需要?jiǎng)?chuàng)建一臺(tái)簡單的Flask Web服務(wù)器,該服務(wù)器將運(yùn)行shell命令。
版權(quán)說明: 本文由用戶上傳,如有侵權(quán)請(qǐng)聯(lián)系刪除!
猜你喜歡:
- 2022-10-04 七彩鐵長的快嗎(七彩鐵開花嗎 帶你深入了解它)
- 2022-10-04 做夢(mèng)夢(mèng)到黑豬是什么意思周公解夢(mèng)(周公解夢(mèng)夢(mèng)見黑豬和針 夢(mèng)見針和黑豬是什么意思)
- 2022-10-04 洋白蠟是速生白蠟嗎(白蠟和洋白蠟的區(qū)別 你區(qū)分出來嗎)
- 2022-10-04 硫酸鎂泡水的作用(用硫酸鎂泡手有什么.效果 硫酸鎂是什么)
- 2022-10-04 怎么在蘋果電腦上安裝steam(如何在蘋果電腦上安裝steam 只要四步即可安裝)
- 2022-10-04 麻是怎么做的(麻橢的做法 你會(huì)做嗎)
- 2022-10-04 驢肉丸子湯的家常做法竅門(驢肉丸子湯的做法 驢肉丸子湯怎么做)
- 2022-10-04 紙?zhí)禊Z的方法很簡單天鵝是怎么折疊的
最新文章:
- 2023-07-01 挑選生姜的方法(挑選優(yōu)質(zhì)生姜 挑選優(yōu)質(zhì)生姜方法有哪些)
- 2023-07-01 科技公司主要是做什么的?(科技公司是做什么的 關(guān)于科技公司是做什么的)
- 2023-07-01 早上激勵(lì)自己努力奮斗的語錄(激勵(lì)自己奮斗的句子)
- 2023-07-01 高考加油的祝福語四字成語(高考加油的祝福語)
- 2023-07-01 燃?xì)獾厣瞎艿赖臋z漏方法有哪三種(撿地上的頭發(fā)有什么好方法)
- 2023-07-01 墨鏡如何辨別好壞(墨鏡好壞怎么區(qū)分 墨鏡好壞區(qū)分方法)
- 2023-07-01 清洗魚缸服務(wù)(新買的魚缸怎么清洗 新買的魚缸如何清洗)
- 2023-07-01 寶寶爬行墊(新買的爬行墊怎么清洗 新買的爬行墊清潔的方法)
- 2023-07-01 汽車上斑斑點(diǎn)點(diǎn)怎么去除(汽車表面斑點(diǎn)怎么清洗 汽車表面斑點(diǎn)如何清洗)
- 2023-07-01 掛杯的好壞是評(píng)價(jià)一款葡萄酒品質(zhì)優(yōu)劣的直接標(biāo)準(zhǔn)(怎么區(qū)分葡萄酒的好壞 區(qū)分葡萄酒的好壞方法)
- 2023-07-01 鹿場新鮮鹿茸怎么保存方法(新鮮的鹿茸怎樣長期保存 如何保存鹿茸才新鮮)
- 2023-07-01 衣物除菌液有必要使用嗎(衣物除菌液有必要用嗎)
- 2023-07-01 住房公積金是要交多少(住房公積金要交多少 住房公積金要交多少合適)
- 2023-07-01 公積金買多久才可以用來貸款買房(住房公積金怎么用來買房 住房公積金如何用來買房)
- 2023-07-01 辦理公積金凍結(jié)需要什么手續(xù)(辦公積金凍結(jié)需要的材料 辦公積金凍結(jié)需要的材料有哪些)
- 2023-07-01 如何使用公積金最劃算(住房公積金怎么用劃算 住房公積金如何用劃算)