基于香橙派AI PRO的千问大模型适配实战分享

news/2024/10/3 20:11:42 标签: 人工智能

在这里插入图片描述
在这里插入图片描述

文章目录

    • 基于香橙派AI PRO的千问大模型适配实战分享
        • 1. 环境准备与基础设置
        • 2. 模型编译与适配
        • 3. ONNX 转 OM 模型
        • 4. 部署与推理
        • 5. 动态 shape 的性能优化
        • 6. 结束与总结

基于香橙派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 的性能优化,开发者能够有效减少环境搭建时间并提高模型推理效率。

这个适配过程不仅适用于千问大模型,还为其他类似的模型部署提供了有价值的参考。未来可以进一步探索模型量化等技术,以提升模型的运行效率。
在这里插入图片描述


http://www.niftyadmin.cn/n/5688919.html

相关文章

提升效率的秘密武器选择与使用指南

在忙碌且高速运转的工作环境中,每一个高效的编程工具都能被视作提高效率的秘密武器。它不仅仅是一款用于开发应用程序的机器或工具,而是一种能在各个层面上助力开发者的神器。本篇文章旨在分析那些能帮助开发者工作更加顺畅,提升编程效率和自…

Overview of Transformer

写在开头 在学习 Transformer 之前,需要对卷积神经网络和循环神经网络,以及 GRU 和 LSTM 有所了解。推荐吴恩达在 Coursera 平台的课程【深度学习专项】,B 站有搬运版 https://www.bilibili.com/video/BV12E411a7Xn/?spm_id_from333.337.sea…

02SQLite

文章目录 索引创建索引删除索引索引优点及缺点?避免使用索引 视图创建视图删除视图 事务事务控制命令通过事务方式对数据库进行访问优势: 索引 创建索引 索引(Index)是一种特殊查找表,数据库搜索引擎用来加速数据检索…

【重学 MySQL】五十一、更新和删除数据

【重学 MySQL】五十一、更新和删除数据 更新数据删除数据注意事项 在MySQL中,更新和删除数据是数据库管理的基本操作。 更新数据 为了更新(修改)表中的数据,可使用UPDATE语句。UPDATE语句的基本语法如下: UPDATE ta…

基于Springboot+Vue的小区停车场管理系统登录(含源码数据库)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 在这个…

MySQL高阶2010-职员招聘人数2

目录 题目 准备数据 分析数据 总结 题目 一家公司想雇佣新员工。公司的工资预算是 $70000 。公司的招聘标准是: 继续雇佣薪水最低的高级职员,直到你不能再雇佣更多的高级职员。用剩下的预算雇佣薪水最低的初级职员。继续以最低的工资雇佣初级职员&…

docker的安装与启动——配置国内Docker源

移除旧版本docker sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine 配置docker yum源。 sudo yum install -y yum-utils sudo yum-config-manager –add-repo ht…

C/C++进阶(一)--内存管理

更多精彩内容..... 🎉❤️播主の主页✨😘 Stark、-CSDN博客 本文所在专栏: 学习专栏C语言_Stark、的博客-CSDN博客 其它专栏: 数据结构与算法_Stark、的博客-CSDN博客 ​​​​​​项目实战C系列_Stark、的博客-CSDN博客 座右铭&a…