项目介绍
Mosec是一款高性能且灵活的模型服务框架,设计用于构建启用ML模型的后端和微服务。它能够有效地将已经训练好的机器学习模型与在线服务API连接起来,从而实现高效的模型服务。
项目特点
- 高性能:Mosec的网络层和任务协调是由Rust语言构建的,该编程语言以速度快而著称,同时采用了异步I/O,确保高效的CPU利用。
- 易用性:使用者界面完全基于Python,用户可以以无关具体机器学习框架的方式来服务于其模型,这与离线测试中使用的代码是一致的。
- 动态批处理:Mosec能够为批量推理聚合来自不同用户的请求,并分发结果。
- 管道化阶段:它可以为管道化阶段生成多个进程,以处理CPU/GPU/IO混合工作负载。
- 支持云端:Mosec被设计用于云环境,支持模型预热、平滑关闭以及Prometheus监控度量,很容易通过Kubernetes或其他容器编排系统管理。
- 专注在线服务:项目主要专注于在线服务,用户可以更关注于模型优化和业务逻辑。
安装指南
Mosec需要Python 3.7或更高版本。用户可以通过以下命令在Linux x86_64或macOS x86_64/ARM64上安装最新的PyPI包:
pip install -U mosec
# 或通过conda安装
conda install conda-forge::mosec
如果需要从源代码构建,需要安装Rust并运行以下命令:
make package
用法示例
Mosec提供了简便的方法来将预训练的模型服务化。例如,可以利用Mosec在服务中托管一个稳定的扩散模型。需要首先安装diffusers
和transformers
。
实例展示
Mosec提供了一系列实用的示例,适用于不同的应用场景,包括管道、请求验证、多路径服务等。用户可以通过官方示例学习如何在实际场景中应用Mosec。
配置
Mosec支持动态批处理功能,用户可根据系统需求配置最大批处理大小和最大等待时间等参数,以优化服务性能。
部署建议
Mosec的部署在云环境中非常高效,并不强制需要Gunicorn或NGINX,用户可以根据需要配置进程监控或指标收集工具来提升服务的稳定性和可用性。
性能调优
用户在使用Mosec时,可以通过优化批处理参数、划分CPU与GPU阶段、调整阶段内工作进程数量等方式来提高模型服务的整体性能。
采用者
多个知名公司和个人用户已经在使用Mosec,包括Modelz、MOSS、腾讯云、TensorChord以及OAT等。
引用
如果Mosec对您的研究有帮助,欢迎在您的研究中引用它。
贡献方式
项目开放任何形式的贡献。用户可以通过提交问题或在Discord上讨论来提供反馈,或者直接贡献代码进行拉取请求。