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

部署深度学习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打包多数途径都很靠谱。
在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

预测模型的开发与应用研究

文中代码请大家随意

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值