1. 前言
在开发深度学习应用时,部署的方式有本地部署和远程部署。远程部署一般是将深度学习模型部署为一个web服务,可以通过web请求来使用深度学习模型进行推理。对性能要求不高时,可以直接简单使用flask或者faskapi,但是当对性能有要求时,就需要使用更强大更高性能的部署工具。
高性能部署深度学习模型时,一般需要考虑以下方面:
- 分布式部署。多机多卡部署同一个模型,通过将访问请求分发到不同的机器上,可以提高推理的速度。
- 异步支持。异步IO,减少等待时间,也是提高性能的关键
已经有许多的部署框架可供选择,比如tensorstream,或者Kserve。这些工具虽然非常强大,但是配置复杂,上手难度陡峭,容易使人望而却步。在思考了功能性和易用性间的平衡之后,自己开发设计了一个深度学习模型部署框架:
Easy-serve一个简单又强大的深度学习模型部署框架https://github.com/cosimo17/easy-serve
2. 介绍
特性:
- 基于aiohttp,支持高性能的异步并发
- 支持多进程多实例,可以最大化GPU利用率
- 通过与Nginx结合,可以很方便地实现多机多GPU分布式部署
2.1 安装
git clone https://github.com/cosimo17/easy-serve.git
cd easy-serve
pip install -r requirements.txt
2.2 运行示例
下载示例onnx模型
https://github.com/onnx/models/blob/main/Computer_Vision/resnet18_Opset18_timm/resnet18_Opset18.onnx
启动easy-serve服务器
python src/app.py -c configs/imagenet_resnet18.yaml
使用客户端访问推理服务进行测试
python src/sample_client.py
更多介绍及如何部署个人自定义的模型,请参考github主页和示例代码。