网站首页 互联网 > 正文
2022年1月6日整理发布:Heroku 云在Web开发人员和机器学习爱好者中颇负盛名。该平台提供了部署和维护Web应用程序的简易方法,但如果您不熟悉部署深度学习应用程序,可能会遇到棘手的存储和依赖问题。本文将使您的部署过程更顺畅,以便您能专注于创建出色的Web应用程序。我们将学习DVC集成、基于Git和CLI的部署、错误代码H10、使用Python软件包以及优化存储。
一、基于Git和CLI的部署
Streamlit应用程序可以使用Git、GitHub集成或使用Docker加以部署。基于Git的方法是在Heroku服务器上部署任何数据应用程序的更快速更简单的方法。
基于Git的简单方法
Streamlit应用程序可使用以下命令来部署:
git remote add heroku https://heroku:$HEROKU_API_KEY@git.heroku.com/.git
git push -f heroku HEAD:master
为此,您需要:
Heroku API 密钥
Heroku 应用程序:通过CLI或访问网站。
基于Git的项目
配置文件
基于CLI的方法
基于CLI的部署很基本,且易于学习。
1. 在此处创建一个免费的Heroku帐户。
2. 使用该链接,安装Heroku CLI。
3. 克隆远程存储库或使用git init。
4. 输入heroku login和heroku create dagshub-pc-app。这将使您登录到服务器,并在Web服务器上创建一个应用程序。
5. 现在创建含有运行应用程序的命令的Procfile: web: streamlit run --server.port $PORT streamlit_app.py
6. 最后,提交并推送代码到heroku服务器git push heroku master。
二、PORT
如果您使用streamlit run app.py运行应用程序,它将生成错误代码 H10,这意味着Streamlit应用程序未使用服务器分配的$PORT。
您需要:
使用Heroku CLI设置PORT。
heroku config:set PORT=8080
在Procfile中进行更改,并在参数中添加服务器端口。
web:streamlit run --server.port $PORT app.py
三、调整Python软件包
这部分花了我2天的时间来调试,因为Heroku云有500MB的限制,而新的TensorFlow软件包是489.6MB。为了避免依赖项和存储问题,我们需要在requirements.txt文件中进行更改:
1. 添加tensorflow-cpu而不是tensorflow,这将我们的slug大小从765MB缩减到400MB。
2. 添加opencv-python-headless而不是opencv-python,以避免安装外部依赖项。这将解决所有cv2错误。
3. 删除所有不必要的软件包,numpy、Pillow 和streamlit除外。
四、DVC集成
从DVC服务器成功提取数据需要几个步骤:
1. 首先,我们允许通过使用Heroku API来安装 apt-files的buildpack:
heroku buildpacks:add --index 1 heroku-community/apt
2. 创建文件名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服务器。部署成功后,应用程序会自动从DVC服务器拉取数据。
五、优化存储
优化存储的方式有多种,最常见的就是使用Docker。通过使用Docker方法,您可以绕过500MB的限制,还可以自由安装任何第三方集成或软件包。想进一步了解如何使用Docker,请查看本指南。
为了优化存储:
在requiremnets.txt中仅添加模型推理python库。
我们可以通过使用以下命令从DVC提取选择性数据:
dvc pull {model} {sample_data1} {sample_data2}..
我们只需要一个模型推理文件,因此将其余文件添加到.slugignore,其工作方式与.gitignore类似。想了解更多信息,请查看Slug编译器(https://devcenter.heroku.com/articles/slug-compiler#ignoring-files-with-slugignore)。
从服务器成功拉取数据后,删除.dvc目录和.apt/usr/lib/dvc目录。
六、结果
最初的slug大小为850MB,但通过存储和软件包优化,最终的slug大小缩减到400MB。我们用一个简单的命令解决了错误代码H10,并添加opencv-python-headless软件包来解决依赖问题。本文旨在克服初学者在Heroku服务器上面临的一些常见问题。
基于Docker的部署可以解决很多存储问题,但也带来了复杂性和缓慢的部署过程。可以使用heroku container:push web,但在此之前,需要先构建Docker并测试它,在本地解决所有问题后才能推送它。这种方法是高级Heroku用户所青睐的。
下一个挑战是使用Webhook部署您的Web应用程序。这将使我们可以从任何平台自动化整个机器学习生态系统。自动化过程将需要创建一台简单的Flask Web服务器,该服务器将运行shell命令。
版权说明: 本文由用户上传,如有侵权请联系删除!
- 上一篇: excel是办公软件中唯一一个表格专业户文件
- 下一篇: 现阶段虚拟人主要运用在泛领域
猜你喜欢:
- 2022-10-04 七彩铁长的快吗(七彩铁开花吗 带你深入了解它)
- 2022-10-04 做梦梦到黑猪是什么意思周公解梦(周公解梦梦见黑猪和针 梦见针和黑猪是什么意思)
- 2022-10-04 洋白蜡是速生白蜡吗(白蜡和洋白蜡的区别 你区分出来吗)
- 2022-10-04 硫酸镁泡水的作用(用硫酸镁泡手有什么.效果 硫酸镁是什么)
- 2022-10-04 怎么在苹果电脑上安装steam(如何在苹果电脑上安装steam 只要四步即可安装)
- 2022-10-04 麻是怎么做的(麻椭的做法 你会做吗)
- 2022-10-04 驴肉丸子汤的家常做法窍门(驴肉丸子汤的做法 驴肉丸子汤怎么做)
- 2022-10-04 纸天鹅的方法很简单天鹅是怎么折叠的
最新文章:
- 2023-07-01 挑选生姜的方法(挑选优质生姜 挑选优质生姜方法有哪些)
- 2023-07-01 科技公司主要是做什么的?(科技公司是做什么的 关于科技公司是做什么的)
- 2023-07-01 早上激励自己努力奋斗的语录(激励自己奋斗的句子)
- 2023-07-01 高考加油的祝福语四字成语(高考加油的祝福语)
- 2023-07-01 燃气地上管道的检漏方法有哪三种(捡地上的头发有什么好方法)
- 2023-07-01 墨镜如何辨别好坏(墨镜好坏怎么区分 墨镜好坏区分方法)
- 2023-07-01 清洗鱼缸服务(新买的鱼缸怎么清洗 新买的鱼缸如何清洗)
- 2023-07-01 宝宝爬行垫(新买的爬行垫怎么清洗 新买的爬行垫清洁的方法)
- 2023-07-01 汽车上斑斑点点怎么去除(汽车表面斑点怎么清洗 汽车表面斑点如何清洗)
- 2023-07-01 挂杯的好坏是评价一款葡萄酒品质优劣的直接标准(怎么区分葡萄酒的好坏 区分葡萄酒的好坏方法)
- 2023-07-01 鹿场新鲜鹿茸怎么保存方法(新鲜的鹿茸怎样长期保存 如何保存鹿茸才新鲜)
- 2023-07-01 衣物除菌液有必要使用吗(衣物除菌液有必要用吗)
- 2023-07-01 住房公积金是要交多少(住房公积金要交多少 住房公积金要交多少合适)
- 2023-07-01 公积金买多久才可以用来贷款买房(住房公积金怎么用来买房 住房公积金如何用来买房)
- 2023-07-01 办理公积金冻结需要什么手续(办公积金冻结需要的材料 办公积金冻结需要的材料有哪些)
- 2023-07-01 如何使用公积金最划算(住房公积金怎么用划算 住房公积金如何用划算)