DeepSpeed-MII(Model Implementations for Inference)是 DeepSpeed 团队推出的开源 Python 库,目标是让强大的模型推理更易用,并重点优化高吞吐、低延迟和成本效益。
用途与定位 MII 用于加速模型推理,由 DeepSpeed-Inference 提供底层支持,会依据模型架构、模型大小、批大小和可用硬件资源,自动应用合适的系统优化组合,以最小化延迟并最大化吞吐量。
主要能力 MII 面向高吞吐文本生成提供四项关键技术:Blocked KV Caching、Continuous Batching、Dynamic SplitFuse、High Performance CUDA Kernels。此前 MII 还引入过低延迟服务场景的相关优化,包括面向 Transformers 的 DeepFusion、基于 Tensor-Slicing 的多 GPU 推理、面向资源受限系统的 ZeRO-Inference 以及编译器优化。
模型支持 MII 当前支持八种主流模型架构下的超过 37,000 个模型,并计划在近期增加更多模型。所有当前模型均在后端借助 Hugging Face 提供模型权重和对应的 tokenizer。MII Legacy APIs 支持超过 50,000 个不同模型,包括 BERT、RoBERTa、Stable Diffusion,以及 Bloom、GPT-J 等文本生成模型。
使用方式 用户可以通过 DeepSpeed-MII 的 PyPI 版本快速开始,使用非持久化管道(non-persistent pipeline)或持久化部署(persistent deployment)。非持久化管道仅在当前运行的 Python 脚本期间存在,完整部署示例只有 4 行代码;其调用返回 Response 对象列表,可访问 generated_text、prompt_length、generated_length、finish_reason 等字段,并可通过 destroy 方法释放设备内存并销毁管道。持久化部署适合长期运行和生产应用,使用轻量级 GRPC 服务器,可同时被多个客户端查询,完整示例为 5 行代码,并可通过任意客户端关闭服务器。
并行与扩展 在多 GPU 系统上,使用 deepspeed 启动器时,张量并行由 --num_gpus 标志自动控制。持久化部署支持通过 mii.serve 的 tensor_parallel 参数进行模型并行,也可设置多个模型副本并由 DeepSpeed-MII 提供负载均衡,模型并行与副本可组合使用以适配更多 GPU 的系统。模型并行与模型副本之间的选择取决于硬件、模型和工作负载特性:小模型使用模型副本可能获得最低平均请求延迟,大模型在使用模型并行时可能获得更高整体吞吐。
RESTful API 与部署选项 创建持久化 MII 部署时可设置 enable_restful_api=True 以启用 RESTful API,请求地址为 http://{HOST}:{RESTFUL_API_PORT}/mii/{DEPLOYMENT_NAME}。mii.serve() 提供 model_name_or_path(必填)、max_length、deployment_name、tensor_parallel、replica_num、enable_restful_api、restful_api_port 等选项;mii.client() 通过模型名或 deployment_name 获取客户端。生成参数可针对单个 prompt 控制,例如 max_length、min_new_tokens、max_new_tokens、ignore_eos、top_p、top_k、temperature、do_sample、return_full_text。
安装与依赖 最快的上手方式是通过 DeepSpeed-MII 的 PyPI 版本安装。为便于使用并减少编译时间,项目通过 DeepSpeed-Kernels 提供覆盖多数自定义内核的预编译 Python wheel,该库在 NVIDIA GPU(compute capabilities 8.0+,即 Ampere+)、CUDA 11.6+、Ubuntu 20+ 环境中具有良好可移植性,通常作为 DeepSpeed-MII 的依赖自动安装;如需手动编译内核,可参考高级安装文档。
限制与说明 关于具体收费、价格、平台支持范围、效果保证等信息,资料中暂未提供。