基于香橙派AI PRO的千问大模型适配实战分享
@[TOC]
基于香橙派AI PRO的千问大模型适配实战分享
随着大模型技术的迅速发展,越来越多的开发者希望将这些强大的模型部署到各类硬件平台上。在本文中,我们将分享如何在 **香橙派AI PRO(基于昇腾310B1芯片)**上适配并运行通义千问大模型的完整流程。该适配过程不仅可以帮助开发者了解从模型导出到推理部署的全流程,还可以为在类似硬件平台上的模型部署提供参考。
1. 环境准备与基础设置
在开始适配之前,首先需要确保开发环境已经搭建好,主要包括安装 CANN 环境及其他依赖。官方的 CANN 文档提供了详细的安装步骤,建议开发者根据需求进行相应的配置。在下载好项目代码和相关模型后,将模型文件存放在项目中的 download
目录下。
可以选择通过 Docker 进行开发环境的构建和运行,特别是对于开发自定义模型和芯片的场景,使用 Docker 会更加便捷。
git clone https://github.com/Tlntin/qwen-ascend-llm.git
docker build . -t qwen_ascend_llm
通过 Docker 部署,可以避免环境安装中的许多细节问题,并加快调试和部署的速度。
2. 模型编译与适配
接下来是对模型进行编译和适配的步骤。以 Qwen2-1.5B-Instruct 模型为例,首先需要将 Huggingface 上下载的模型导出为 ONNX 格式,默认的 kv-cache 长度设置为 1024。导出模型后,可以使用 Python 脚本来验证 ONNX 文件是否能够正常推理。
python3 export/export_onnx.py --hf_model_dir="./download/Qwen2-1.5B-Instruct" --onnx_model_path="./output/onnx/qwen2_1.5b_chat.onnx" --kv_cache_length=1024
3. ONNX 转 OM 模型
通过 ATC 工具将修改后的 ONNX 模型转换为 OM 模型,这是适配过程中关键的一步。设置动态 shape
能够有效降低推理过程中的延迟,尤其是在处理大规模输入数据时,动态 shape
可以提升首字节延迟性能。
python3 export/onnx2om.py --onnx_model_path="./output/onnx2/qwen2_1.5b_chat.onnx" --om_model_path="./output/model/qwen2_1.5b_chat" --kv_cache_length=1024 --max_prefill_length=8
该步骤生成的 OM 文件将在部署过程中使用。
4. 部署与推理
使用 OM 模型完成推理任务时,可以直接运行相关脚本来启动推理服务。可以选择流式或者非流式的推理方式,开发者根据实际需求灵活切换。
python3 ./cli_chat.py --om_model_path="./output/model/qwen2_1.5b_chat.om" --max_prefill_length=8
流式推理能够在用户输入后立刻返回响应,非流式推理则需要等待模型完成整个推理过程后再返回结果。
5. 动态 shape 的性能优化
为了进一步优化推理速度,开发者可以使用动态 shape 来适应不同长度的输入数据。通过设置若干个不同的档位,例如 [1, 2, 4, 8],可以在推理时根据输入长度自动匹配最合适的档位,从而减少不必要的计算开销。
6. 结束与总结
适配千问大模型到香橙派 AI PRO 的过程展示了如何将大模型部署到小型设备上,并且充分利用了昇腾 310B1 的硬件能力。通过 Docker 容器的快速部署和动态 shape 的性能优化,开发者能够有效减少环境搭建时间并提高模型推理效率。
这个适配过程不仅适用于千问大模型,还为其他类似的模型部署提供了有价值的参考。未来可以进一步探索模型量化等技术,以提升模型的运行效率。
- 点赞
- 收藏
- 关注作者
评论(0)