文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

在Heroku云上部署深度学习Web应用程序的要点和技巧

2024-12-02 10:08

关注

一、基于Git和CLI的部署

Streamlit应用程序可以使用Git、GitHub集成或使用Docker加以部署。基于Git的方法是在Heroku服务器上部署任何数据应用程序的更快速更简单的方法。

基于Git的简单方法

Streamlit应用程序可使用以下命令来部署:

  1. git remote add heroku https://heroku:$HEROKU_API_KEY@git.heroku.com/.git 
  2.  
  3. git push -f heroku HEAD:master 

为此,您需要:

基于CLI的方法

基于CLI的部署很基本,且易于学习。

此处创建一个免费的Heroku帐户。

使用该链接,安装Heroku CLI。

克隆远程存储库或使用git init。

输入heroku login和heroku create dagshub-pc-app。这将使您登录到服务器,并在Web服务器上创建一个应用程序。

现在创建含有运行应用程序的命令的Procfile: web: streamlit run --server.port $PORT streamlit_app.py

最后,提交并推送代码到heroku服务器git push heroku master。

二、PORT

如果您使用streamlit run app.py运行应用程序,它将生成错误代码 H10,这意味着Streamlit应用程序未使用服务器分配的$PORT。

您需要:

  1. heroku config:set PORT=8080 
  1. web:streamlit run --server.port $PORT app.py 

三、调整Python软件包

这部分花了我2天的时间来调试,因为Heroku云有500MB的限制,而新的TensorFlow软件包是489.6MB。为了避免依赖项和存储问题,我们需要在requirements.txt文件中进行更改:

添加tensorflow-cpu而不是tensorflow,这将我们的slug大小从765MB缩减到400MB。

添加opencv-python-headless而不是opencv-python,以避免安装外部依赖项。这将解决所有cv2错误。

删除所有不必要的软件包,numpy、Pillow 和streamlit除外。

四、DVC集成

从DVC服务器成功提取数据需要几个步骤:

首先,我们允许通过使用Heroku API来安装 apt-files的buildpack:

  1. heroku buildpacks:add --index 1 heroku-community/apt 

创建文件名Aptfile,并添加最新的DVC版本https://github.com/iterative/dvc/releases/download/2.8.3/dvc_2.8.3_amd64.deb

在您的app.py文件中添加额外的代码行:

  1. import os 
  2. if "DYNO" in os.environ and os.path.isdir(".dvc"): 
  3.     os.system("dvc config core.no_scm true"
  4.     if os.system(f"dvc pull") != 0: 
  5.         exit("dvc pull failed"
  6.     os.system("rm -r .dvc .apt/usr/lib/dvc"

之后提交您的代码,并将其推送到Heroku服务器。部署成功后,应用程序会自动从DVC服务器拉取数据。

五、优化存储

优化存储的方式有多种,最常见的就是使用Docker。通过使用Docker方法,您可以绕过500MB的限制,还可以自由安装任何第三方集成或软件包。想进一步了解如何使用Docker,请查看本指南

为了优化存储:

  1. dvc pull {model} {sample_data1} {sample_data2}.. 

六、结果

最初的slug大小为850MB,但通过存储和软件包优化,最终的slug大小缩减到400MB。我们用一个简单的命令解决了错误代码H10,并添加opencv-python-headless软件包来解决依赖问题。本文旨在克服初学者在Heroku服务器上面临的一些常见问题。

基于Docker的部署可以解决很多存储问题,但也带来了复杂性和缓慢的部署过程。可以使用heroku container:push web,但在此之前,需要先构建Docker并测试它,在本地解决所有问题后才能推送它。这种方法是高级Heroku用户所青睐的。

下一个挑战是使用Webhook部署您的Web应用程序。这将使我们可以从任何平台自动化整个机器学习生态系统。自动化过程将需要创建一台简单的Flask Web服务器,该服务器将运行shell命令。

原文Tips & Tricks of Deploying Deep Learning Webapp on Heroku Cloud,作者:Abid Ali Awan

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】

 

来源:51CTO内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯