该平台提供了一种部署和维护Web应用程序的简便方法,但如果您不熟悉部署深度学习应用程序,您可能会遇到棘手的存储和依赖性问题。本文将使您的部署过程更加顺畅,以便您可以专注于创建出色的Web应用程序。我们将了解DVC集成、基于Git和CLI的部署、错误代码H10、使用Python包和优化存储。1、基于Git和CLI的部署Streamlit应用程序可以使用Git、GitHub集成或使用Docker进行部署。基于Git的方法是在Heroku服务器上部署任何数据应用程序的更快、更简单的方法。可以使用以下命令部署基于Git的简单Streamlit应用程序:gitremoteaddherokuhttps://heroku:$HEROKU_API_KEY@git.heroku.com/.gitgitpush-fherokuHEAD:master为此,您需要:HerokuAPI密钥通过CLI或通过访问该网站。基于Git的项目配置文件基于CLI的方法基于CLI的部署是基础且易于学习的。1.在这里创建一个免费的Heroku帐户。2.使用此链接安装HerokuCLI。3.克隆远程存储库或使用gitinit。4.输入herokulogin和herokucreatedagshub-pc-app。这将使您登录到服务器,并在Web服务器上创建一个应用程序。5.现在使用运行应用程序的命令创建Procfile:web:streamlitrun--server.port$PORTstreamlit_app.py6.最后,将代码提交并推送到heroku服务器gitpushherokumaster。2.PORT如果你用streamlitrunapp.py运行应用程序,它会产生错误代码H10,这意味着Streamlit应用程序没有使用服务器分配的$PORT。您需要:使用HerokuCLI设置端口。在Procfile中更改herokuconfig:setPORT=8080并在参数中添加服务器端口。web:streamlitrun--server.port$PORTapp.py3.调整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之外的所有不需要的包。4.DVC集成从DVC服务器成功提取数据需要几个步骤:1.首先,我们允许使用HerokuAPI安装apt文件的构建包:herokubuildpacks:add--index1heroku-community/apt2。创建文件名Aptfile,并添加最新的DVC版本https://github.com/iterative/dvc/releases/download/2.8.3/dvc_2.8.3_amd64.deb3。在您的app.py文件中添加这行额外的代码:importosif"DYNO"inos.environandos.path.isdir(".dvc"):os.system("dvcconfigcore.no_scmtrue")ifos.system(f"dvcpull")!=0:exit("dvcpullfailed")os.system("rm-r.dvc.apt/usr/lib/dvc")并将您的代码推送到Heroku服务器。部署成功后,应用会自动从DVC服务器拉取数据。5.优化存储优化存储的方法有很多,最常见的一种是使用Docker。通过使用Docker方法,您可以绕过500MB的限制,还可以自由安装任何第三方集成或包。要了解有关如何使用Docker的更多信息,请查看本指南。为了优化存储:在requiremnets.txt中仅添加模型推理python库。我们可以使用以下命令从DVC中提取选择性数据:dvcpull{model}{sample_data1}{sample_data2}..我们只需要一个模型推理文件,所以将其余部分添加到.slugignore,其工作方式类似于.gitignore。有关详细信息,请查看Slug编译器(https://devcenter.heroku.com/articles/slug-compiler#ignoring-files-with-slugignore)。从服务器拉取数据成功后,删除.dvc目录和.apt/usr/lib/dvc目录。6.结果初始slug大小为850MB,但通过存储和软件包优化,最终slug大小减小到400MB。我们通过简单的命令解决了错误代码H10,并添加了opencv-python-headless包来解决依赖问题。本文旨在克服初学者在Heroku服务器上面临的一些常见问题。基于Docker的部署可以解决很多存储问题,但也带来了复杂性和部署过程的缓慢。可以使用herokucontainer:pushweb,但是在此之前需要先搭建Docker并进行测试,本地解决所有问题后才能进行push。这种方法受到高级Heroku用户的青睐。下一个挑战是使用Webhook部署Web应用程序。这将使我们能够从任何平台自动化整个机器学习生态系统。自动化该过程需要创建一个简单的FlaskWeb服务器来运行shell命令。原标题:Tips&TricksofDeployingDeepLearningWebapponHerokuCloud,作者:AbidAliAwan
