[![docs](https://img.shields.io/badge/docs-latest-blue)](https://lmdeploy.readthedocs.io/en/latest/) [![codecov](https://codecov.io/gh/open-mmlab/lmdeploy/branch/main/graph/badge.svg)](https://codecov.io/gh/open-mmlab/lmdeploy) [![license](https://img.shields.io/github/license/open-mmlab/lmdeploy.svg)](https://github.com/open-mmlab/mmdeploy/tree/main/LICENSE) [![issue resolution](https://img.shields.io/github/issues-closed-raw/open-mmlab/lmdeploy)](https://github.com/open-mmlab/lmdeploy/issues) [![open issues](https://img.shields.io/github/issues-raw/open-mmlab/lmdeploy)](https://github.com/open-mmlab/lmdeploy/issues) [English](README.md) | 简体中文
## 简介 LMDeploy 由 [MMDeploy](https://github.com/open-mmlab/mmdeploy) 和 [MMRazor](https://github.com/open-mmlab/mmrazor) 团队联合开发,是涵盖了 LLM 任务的全套轻量化、部署和服务解决方案。 这个强大的工具箱提供以下核心功能: - **高效推理引擎 TurboMind**:基于 [FasterTransformer](https://github.com/NVIDIA/FasterTransformer),我们实现了高效推理引擎 TurboMind,它支持 LLaMA 及其变体模型在 NVIDIA GPU 上的推理。 - **交互推理方式**:通过缓存多轮对话过程中 attention 的 k/v,记住对话历史,从而避免重复处理历史会话。
- **多 GPU 部署和量化**:我们提供了全面的模型部署和量化支持,已经在 7~100B 模型上完成验证。 - **persistent batch 推理**:进一步优化模型执行效率。 ![PersistentBatchInference](https://github.com/open-mmlab/lmdeploy/assets/25839884/8f8b57b8-42af-4b71-ad74-e75f39b10694) ## 快速上手 ### 安装 ```shell conda create -n open-mmlab python=3.8 conda activate open-mmlab git clone https://github.com/open-mmlab/lmdeploy.git cd lmdeploy pip install -e . ``` ### 编译 下载 docker image `openmmlab/lmdeploy:latest`,挂载 lmdeploy 的数据卷,启动 container,在 container 内执行以下命令: ```shell mkdir build && cd build ../generate.sh make -j$(nproc) && make install ``` ### 部署 [LLaMA](https://github.com/facebookresearch/llama) 服务 请填写[这张表](https://docs.google.com/forms/d/e/1FAIpQLSfqNECQnMkycAp2jP4Z9TFX0cGR4uf7b_fBxjY_OjhJILlKGA/viewform),获取 LLaMA 模型权重。 执行如下命令,可以把 LLaMA 模型部署到 NVIDIA GPU Server:
7B ```shell python3 lmdeploy/serve/turbomind/deploy.py llama-7B /path/to/llama-7b llama \ --tokenizer_path /path/to/tokenizer/model bash workspace/service_docker_up.sh --lib-dir $(pwd)/build/install/backends/turbomind ```
13B ```shell python3 lmdeploy/serve/turbomind/deploy.py llama-13B /path/to/llama-13b llama \ --tokenizer_path /path/to/tokenizer/model --tp 2 bash workspace/service_docker_up.sh --lib-dir $(pwd)/build/install/backends/turbomind ```
### 部署 [Vicuna](https://lmsys.org/blog/2023-03-30-vicuna/) 服务
7B ```shell python3 -m pip install fschat python3 -m fastchat.model.apply_delta \ --base-model-path /path/to/llama-7b \ --target-model-path /path/to/vicuna-7b \ --delta-path lmsys/vicuna-7b-delta-v1.1 python3 lmdeploy/serve/turbomind/deploy.py vicuna-7B /path/to/vicuna-7b hf bash workspace/service_docker_up.sh --lib-dir $(pwd)/build/install/backends/turbomind ```
13B ```shell python3 -m pip install fschat python3 -m fastchat.model.apply_delta \ --base-model-path /path/to/llama-13b \ --target-model-path /path/to/vicuna-13b \ --delta-path lmsys/vicuna-13b-delta-v1.1 python3 lmdeploy/serve/turbomind/deploy.py vicuna-13B /path/to/vicuna-13b hf bash workspace/service_docker_up.sh --lib-dir $(pwd)/build/install/backends/turbomind ```
## 通过命令行推理 ```shell python3 lmdeploy/serve/client.py {server_ip_addresss}:33337 ``` ## 使用浏览器推理 ```shell python3 lmdeploy/app.py {server_ip_addresss}:33337 {model_name} ``` ## 量化部署 在 fp16 模式下,可以开启 kv_cache int8 量化,单卡可服务更多用户。 首先执行量化脚本,量化参数存放到 `deploy.py` 转换的 weight 目录下。 然后调整 `config.ini` - `use_context_fmha` 改为 0,表示关闭 - `quant_policy` 设置为 4。此参数默认为 0,表示不开启 这里是[量化测试结果](./docs/zh_cn/quantization.md)。 ## 贡献指南 我们感谢所有的贡献者为改进和提升 LMDeploy 所作出的努力。请参考[贡献指南](.github/CONTRIBUTING.md)来了解参与项目贡献的相关指引。 ## 致谢 - [FasterTransformer](https://github.com/NVIDIA/FasterTransformer) ## License 该项目采用 [Apache 2.0 开源许可证](LICENSE)。