部署深度学习APP的经历(docker,streamlit cloud,nuitka)

news/2024/11/7 14:48:19/

部署深度学习APP的经历

在这里插入图片描述
最近,接到一个部署深度学习APP的需求,这个APP使用torch、monai和pydicom等库构建了一个识别CT图像中皮下脂肪、内脏脂肪和骨骼肌,输入是CT图像,输出是识别的图像和相关数据。接手的时候,核心的算法已经制作完成,仅是需要我构建GUI并将其部署到某种途径上,实现其应用。

一、Docker

背景知识:

Docker是一种容器化技术,其中最核心的概念是Docker镜像(Docker image)和Docker容器(Docker container)。Docker镜像是一个只读的模板,它包括了软件运行所需要的所有文件和配置。可以把Docker镜像理解为一个“应用程序的代码库”,它可以被用来创建多个Docker容器。Docker镜像使用“分层”的方式构建,每个分层都是一个文件系统的修改,因此Docker镜像的构建和推送可以大大加速。Docker容器是Docker镜像的运行实例,也就是容器化的应用程序。每个Docker容器包含了一个完整的运行时环境,包括应用程序、运行时库、系统工具和系统环境变量等。Docker容器可以被创建、启动、停止、删除等,它的生命周期跟随着应用程序的需要而改变。Docker容器中的文件系统是“可写”的,所以应用程序可以在容器内进行修改和保存数据。总的来说,Docker镜像是应用程序的静态部分,而Docker容器是应用程序的动态部分。Docker镜像可以被共享、推送、拉取,而Docker容器是可以运行、停止和删除的。

Docker 的分享应该不是问题,但是用户的机器上需要安装docker等支持软件,还是比软件复杂一些。

部署过程:

1.使用的是pysimplegui 来构建的用户界面。输入是图片的路径,输出是标记的图片和计算的指标(数字)。
2. 安装并设置X11 图形服务器,windows的是xming和VcXsrv,后者是免费的,下载安装即可,设置上情况保持默认即可,有一个需要注意的地方是需要勾选“Disable access control”,允许其他软件连接。
3. 安装docker并制作image:撰写Dockerfile (没有后缀),requirements.txt 将需要安装的python库都安装到里面, 然后就能打包。
4. 运行image,运行的时候需要额外的参数,以便使docker 于X11连接,实现图形显示。

部署结果:

软件可以运行,中文显示为乱码,尺寸较大8G,运行流畅。

顺利程度:

非常顺利

二、streamlit cloud

背景知识:

Streamlit是一个基于Python的开源框架,可以帮助数据科学家快速地搭建数据应用程序。Streamlit不需要编写HTML、CSS或JavaScript,因为它提供了一个Python库,可以让用户通过编写Python代码来构建数据应用程序。Streamlit还提供了一个简单易用的Web界面,可以让数据科学家直接在浏览器中查看和使用他们的应用程序。

Streamlit可以用于快速原型设计或生成交互式仪表板。它的特点是易于学习、易于使用、快速调试和交互式应用开发。Streamlit的应用范围非常广泛,可以用于构建数据分析、机器学习、自然语言处理、计算机视觉等各种类型的应用程序。

部署过程

对照官网的说明文档,建立github文件夹,添加requirements.txt写明需要导入的库,因为之前有一些基础(曾经部署过一个简单的APP),几乎没有遇见什么问题,编译过程也非常快,期间落了一个itk库,仅修改了requirements.txt,重新打开APP即可,最终成功在本地运行并部署到streamlit cloud上。

部署结果

运行速度可以,编译迅速,容易维护修改,也便于传播。

顺利程度

非常顺利

三、打包成本地运行的软件

1. pyinstaller

背景知识

PyInstaller是一个用于将Python应用程序打包成单个可执行文件的工具。它可以自动检测应用程序所依赖的库和模块,并将它们全部打包进可执行文件中,从而使得应用程序在不同的机器上运行时不需要再安装依赖项。PyInstaller支持Windows、Linux和Mac OS X等平台,并支持各种Python版本(包括Python 2和Python 3)。

使用PyInstaller可以轻松地将Python编写的应用程序打包成单个可执行文件,这使得应用程序的部署和分发变得更加方便。另外,PyInstaller还支持各种高级功能,如加密、压缩、自定义图标、自定义启动脚本等。因此,在开发和分发Python应用程序时,PyInstaller是一个非常有用的工具。

部署过程

pyinstaller 是最先接触的一个python打包软件,之前也有过成功打包的经验。使用conda新建立一个新的虚拟环境,安装必要的库并保证程序在本地可运行。打包。

部署结果

打包过程虽然可以完成,但是库导入的问题,软件不能启动,连个影都没有,可以通过concole来观察哪里报错,编译时间较长,最后遇到一个不能解决的问题。

顺利程度

未完成,已经放弃

2. nuitka

背景知识

Nuitka是一种用于Python的优化编译器,它将Python代码转换为本地C代码,并通过C编译器将其编译为本地可执行文件。这使得Python程序的性能得到大幅提升,通常可以比原始Python代码快3到5倍。而且,由于生成的代码是本地C语言,因此它可以与任何C/C++库集成,并且可以通过静态链接或动态链接库的方式进行部署。

除了增强Python程序的性能和可扩展性之外,Nuitka还提供了对Python 2.6,2.7,3.2,3.3,3.4,3.5,3.6,3.7和3.8的完全支持。此外,它还支持Python的标准库和第三方库,可以与其它Python工具和框架无缝集成,如Django,Flask,NumPy等。由于其高性能和易用性,Nuitka正成为越来越多Python开发者的选择。

部署过程

类似于pyinstaller,命令行中几个需要注意添加的参数, 导入外部文件的命令,像图片,模型,自己编写的库(.py);导入某些库的命令,可以根据错误提示进行; tk-inter plugin,这里使用pysimple构建的GUI,需要导入这个。

部署结果

成功打包软件,大小约4G。

顺利程度

基本顺利,没有遇到不明所以的问题。

总结,python打包多数途径都很靠谱。
在这里插入图片描述


http://www.ppmy.cn/news/699045.html

相关文章

2021年煤气考试内容及煤气考试技巧

题库来源:安全生产模拟考试一点通公众号小程序 2021年煤气考试内容为正在备考煤气操作证的学员准备的理论考试专题,每个月更新的煤气考试技巧祝您顺利通过煤气考试。 1、【单选题】煤气净化运行时,净化设施与罗茨风机压差过大异常时,应首先判断设施内有…

2021年煤气最新解析及煤气考试总结

题库来源:安全生产模拟考试一点通公众号小程序 煤气最新解析是由公众号安全生产模拟考试一点通提供,煤气证模拟考试题库是根据煤气最新版教材汇编出煤气仿真模拟考试。2021年煤气最新解析及煤气考试总结 1、【判断题】5VOD与RH-KTB等真空吹氧脱碳精炼装…

2021年煤气考试总结及煤气理论考试

题库来源:安全生产模拟考试一点通公众号小程序 2021年煤气考试总结为正在备考煤气操作证的学员准备的理论考试专题,每个月更新的煤气理论考试祝您顺利通过煤气考试。 1、【单选题】铁合金煤气回收时,严禁随意打开( )观察炉内情况。( B &am…

2021年煤气找解析及煤气考试技巧

题库来源:安全生产模拟考试一点通公众号小程序 安全生产模拟考试一点通:2021年煤气找解析为正在备考煤气操作证的学员准备的理论考试专题,每个月更新的煤气考试技巧祝您顺利通过煤气考试。 1、【单选题】政府职能部门应当在( )小时内向上一…

2020年煤气考试资料及煤气新版试题

题库来源:安全生产模拟考试一点通公众号小程序 2020年煤气考试资料及煤气新版试题,包含煤气考试资料答案和解析及煤气新版试题练习。由安全生产模拟考试一点通公众号结合国家煤气考试最新大纲及煤气考试真题汇总,有助于煤气模拟考试题考前练…

给shinelon安装ubuntu 系统

这里只是记录一下我在真机上安装ubuntu16.04的过程,总的来说分为以下几个步骤: 1、下载ubuntu镜像 2、制作U盘启动镜像 3、电脑开机设置bios从U盘启动 4、通过U盘安装ubuntu 5、安装完成之后的一些配置(为了更好的使用) 注&…

2023年【煤气】考试报名及煤气证考试

题库来源:安全生产模拟考试一点通公众号小程序 煤气考试报名考前必练!安全生产模拟考试一点通每个月更新煤气证考试题目及答案!多做几遍,其实通过煤气考试试题很简单。 1、【单选题】CO气体属于无机有毒气体,其检测原理首选( )&…

2021年煤气考试题库及煤气操作证考试

题库来源:安全生产模拟考试一点通公众号小程序 煤气考试题库是安全生产模拟考试一点通总题库中生成的一套煤气操作证考试,安全生产模拟考试一点通上煤气作业手机同步练习。2021年煤气考试题库及煤气操作证考试 1、【单选题】煤气管道的排水器之间的距离…