基于华为昇腾910B,实战 InternLM2.5-7B-Chat 模型推理

本文将带领大家基于启智平台,使用 LMDeploy 推理框架在华为昇腾 910B 上实现 internlm2_5-7b-chat 模型的推理。

GitHub - InternLM/lmdeploy: LMDeploy is a toolkit for compressing, deploying, and serving LLMs.(欢迎star)

GitHub - InternLM/InternLM: Official release of InternLM2.5 base and chat models. 1M context support(欢迎star)

1.登录启智平台

OpenI - 启智AI开源社区提供普惠算力!

2.创建云脑任务

新建云脑任务

目前启智平台提供 4 种 AI 训练任务(调试任务、训练任务、在线推理、通用任务),这里我们选择调试任务。

所属项目,我们选择一个已经有的项目,没有项目,可以新建,这个就不详细展开。(可以点击右上角)

接下来就是选择算力平台,启智平台目前提供了好几个厂商的算力。(英伟达、昇腾NPU、遂源GCU、寒武纪MLU、海光DCU、天数智芯GPGPU、沐曦GPGPU) ,这里我们选华为昇腾NPU。

资源规格栏,我们选择 D910B 的显卡。(显存 64GB 、CPU24 、内存 192GB)

镜像栏会随着选择的显卡出现相应的模型镜像,这里我们选择 openmind_cann8。

模型这块我们可以根据自己的需要选择。考虑到 LMDeploy 并不是每个模型都是支持的,我们在官方的列表中找到支持的模型 https://lmdeploy.readthedocs.io/en/latest/supported_models/supported_models.html

这里我们选择 internlm2_5-7b-chat 模型,

模型选择后,回到新建模型列表页面,点击新建任务等待服务器创建新任务。

当分配资源完成后,状态变成运行状态,这个时候右边操作会出现调试按钮。

3.模型调试

我们点击调试按钮,进入 jupyterlab 调试代码界面。

3.1 检查挂载模型

这个时候模型挂载在哪个目录下呢?我们使用启智平台提供的 c2net 库访问方式,可以在启动界面找到挂载模型路径。

我们同样也可以在 jupyterlab 界面编写下载模型代码脚本。

start.sh

sh#!/bin/bash#conda install git-lfs -ypip install -U openi -i https://pypi.tuna.tsinghua.edu.cn/simplepip install c2net

zz.py

from c2net.context import prepare#初始化导入数据集和预训练模型到容器内
c2net_context = prepare()#获取预训练模型路径
internlm2_5_7b_chat_path = c2net_context.pretrain_model_path+"/"+"internlm2_5-7b-chat"#输出结果必须保存在该目录
you_should_save_here = c2net_context.output_path
我们可以将脚本和代码上传到 jupyterlab 调试界面里面。

分别执行这 2 段脚本和代码。先执行 start.sh,后执行 zz.py。

bash start.sh

再执行 zz.py

python zz.py

刷新一下当前目录,我们会看到左边代码区 code、dataset、output、pretrainmodel 4 个文件夹。顾名思义,code 是放代码的;dataset 放数据集的;output 模型训练或者微调输出目录;pretrainmodel 就是模型挂载的目录。我们进入 pretrainmodel :

cd pretrainmodel 

可以看到,模型已经挂载到上面截图的目录了。

3.2 支持华为 ascend 国产硬件接入大模型推理框架 dlinfer

这里我们借助一下开源项目 dlinfer,项目地址:https://github.com/DeepLink-org/dlinfer

目前它支持 LMDeploy 部分模型推理,见下表:

安装参考:https://pypi.org/project/dlinfer-ascend/

pip install dlinfer-ascend

3.3 LMDeploy 推理框架安装

接下来我们需要再 code 代码目录下面下载 LMDeploy 推理程序并安装。 安装之前我们需要下载 LMDeploy 源码,

源码中需要删除 LMDeploy 推理框架中 requirements/runtime.txt 中关于 triton 依赖包。

因为 Triton 是 NVIDIA 推出的一款开源推理服务软件,旨在简化深度学习模型在生产环境中的部署和执行。它属于 NVIDIA AI 平台的一部分,能够在基于 GPU 或 CPU 的基础设施(如云、数据中心或边缘设备)上运行。我们在华为平台上部署也用不到它。(如果你安装大概率你是安装不上的,不信你试一试。)

我们修改 requirements/runtime.txt:

cd code
git clone https://github.com/InternLM/lmdeploy.git
如果网络慢可以使用下面的代理:
git clone https://mirror.ghproxy.com//https://github.com/InternLM/lmdeploy.git
cd lmdeploy
pip install -e .
pip install transformers==4.44.1 -U

检查一下 LMDeploy:

pip show lmdeploy

3.4 LMDeploy 推理

接下来我们编写推理代码实现模型推理

inference.py

from lmdeploy import pipeline
from lmdeploy import PytorchEngineConfig
if name == "__main__":pipe = pipeline("/home/ma-user/work/pretrainmodel/internlm2_5-7b-chat",backend_config = PytorchEngineConfig(tp=1, device_type="ascend"))question = ["Shanghai is", "Please introduce China", "How are you?"]response = pipe(question)print(response)

执行推理代码

cd code
python inference.py

我们查看一下显存情况:

npu-smi info

我们使用 lmdeploy chat 来推理:

lmdeploy chat /home/ma-user/work/pretrainmodel/internlm2_5-7b-chat --backend pytorch --device ascend

我们输入问题测试下推理效果:

i

4.总结

LMDeploy 在 0.6.0 这个版本上开始支持华为昇腾NPU。不过官方的文档只包含了 docker 镜像推理的示例,对于非 docker 镜像如何部署安装没有提到,这样对平台的移植性就变差了。

好在启智平台提供了华为的昇腾NPU 运行环境,不过这里我们需要注意:虽然启智平台提供了华为的昇腾 NPU 运行环境,但是 不是每个镜像都能很顺利地跑完,我花了些时间进行测试,结果发现大部分镜像是不能运行的。

下面表格列出了我测试下来的情况,贴出来供大家参考:

测试序号

资源规格

镜像

智算中心

python版本

测试情况

1

NPU: 1*Ascend-D910B(显存: 32GB), CPU: 20, 内存: 60GB

torch-npu-cann8-debug

新疆大学智算中心

3.9.18

swift推理框架可以运行,但是推理速度很慢,基本没有使用NPU加速推理

2

NPU: 1*Ascend-D910B(显存: 64GB), CPU: 24, 内存: 192GB

mindspore_2_3_910b_cann8

武汉智算中心

3.9

swift启动失败缺少`GLIBCXX_3.4.29' not found

3

NPU: 1*Ascend-D910B(显存: 32GB), CPU: 20, 内存: 60GB

mindtorch0.3_mindspore2.3.0_torchnpu2.2.0_cann8.0

新疆大学智算中心

3.9.18

swift启动失败缺少`GLIBCXX_3.4.29' not found

4

NPU: 1*Ascend-D910B(显存: 64GB), CPU: 24, 内存: 192GB

openmind_cann8

武汉智算中心

3.8

swift推理成功、LLaMA-Factory 推理成功、lmdeploy 推理成功

致谢

最后要特别感谢启智平台提供免费的算力,还要感谢书生大模型实战营的学友 JeffDing(微信名)提供的文档思路。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/55217.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Opencv库的安装与vs项目配置

目录 一、下载安装opencv 1、下载 2、减压安装 3、环境变量配置(vs项目不是必须的,看后面) 二、vs项目配置opencv 1、创建vs项目 2、包含opencv头文件 一、下载安装opencv 1、下载 OpenCV - Open Computer Vision Library 2、减压安…

k8s杂记

在node节点内部使用kubectl: rootmultinode-demo-m02:/# ps aux | grep kubelet root 218 3.1 1.6 2066316 62516 ? Ssl 07:35 0:29 /var/lib/minikube/binaries/v1.30.0/kubelet --bootstrap-kubeconfig/etc/kubernetes/bootstrap-kubelet.con…

phpstorm+phpstudy 配置xdebug(无需开启浏览器扩展)

今天又被xdebug折磨了,忘记了以前咋配置了现在百度发现好多都是各种浏览器扩展而且也没有真正的用到项目上的都是测试的地址怎么样的 我就简单写一下自己实战吧 不支持workerman swoole hyperf等这种服务框架 如果你会请教教我 工具版本phpstudy8.1.xphpstorm2021.x…

PAT甲级-1127 ZigZagging on a Tree

题目 题目大意 给出一棵树的中序和后序遍历,要求按层序输出这棵树,但是按照从左到右,再从右到左,再从左到右的顺序。 思路 由中序遍历和后序遍历可以构造出一棵二叉树。观察题目中要求的输出顺序,发现层数为奇数的都…

FineReport 数据集

概念:数据集是指可直接应用于模板设计的数据展现集合。 按其来源范围数据集可以分为 数据库查询内置数据集文件数据集SAP 数据集存储过程多维数据库关联数据集树数据集 1、数据库查询 数据库查询:指从定义好的数据库连接中,就是数据源中使用…

如何提高LabVIEW编程效率

提高LabVIEW编程效率对开发者来说非常重要,尤其是在处理复杂项目或紧迫的开发周期时。以下是一些可以显著提升LabVIEW编程效率的技巧,从代码结构、工具使用到团队协作的多个角度进行详细分析: 1. 模块化设计 模块化设计 是提高代码可维护性和…

树莓派--AI视觉小车智能机器人--1.树莓派系统烧入及WiFi设置并进入jupyterlab

一、Raspberry Pi 系统烧入 使用树莓派,我们是需要有操作系统的。默认情况下,树莓派会在插入的SD卡上查找操作系统。这需要一台电脑将存储设备映像为引导设备,并将存储设备插入该电脑。大多数树莓派用户选择microSD卡作为引导设备。 1.1 下载…

前端的全栈混合之路Meteor篇:容器化开发环境下的meteor工程架构解析

本文主要介绍容器化meteor工程的目录架构解析,之前的文章中浅浅提到过一些:前端的全栈混合之路Meteor篇:开发环境的搭建 -全局安装或使用docker镜像-CSDN博客https://blog.csdn.net/m0_38015699/article/details/142730928?spm1001.2014.300…

【Trulens框架】用TruLens 自动化 RAG 应用项目评估测试

前言: 什么是Trulens TruLens是面向神经网络应用的质量评估工具,它可以帮助你使用反馈函数来客观地评估你的基于LLM(语言模型)的应用的质量和效果。反馈函数可以帮助你以编程的方式评估输入、输出和中间结果的质量,从而…

【动态规划】完全背包问题应用

完全背包问题应用 1.零钱兑换2.零钱兑换 II3.完全平方数 点赞👍👍收藏🌟🌟关注💖💖 你的支持是对我最大的鼓励,我们一起努力吧!😃😃 1.零钱兑换 题目链接: 3…

Github 优质项目推荐(第七期)

文章目录 Github优质项目推荐 - 第七期一、【LangGPT】,5.7k stars - 让每个人都成为提示专家二、【awesome-selfhosted】,198k stars - 免费软件网络服务和 Web 应用程序列表三、【public-apis】,315k stars - 免费 API四、【JeecgBoot】&am…

JVM(HotSpot):直接内存及其使用建议

文章目录 一、什么是直接内存?二、特点三、使用案例四、直接内存的管理 一、什么是直接内存? Direct Memory:系统内存 普通IO,运行原理图 磁盘到系统内存,系统内存到jvm内存。 NIO,运行原理图 划分了一块…

结合seata和2PC,简单聊聊seata源码

当前代码分析基于seata1.6.1 整体描述 整体代码流程可以描述为 TM开启全局事务,会调用TC来获取XID。TC在接收到通知后,会生成XID,然后会将当前全局事务保存到global_table表中,并且返回XID。在获取到XID后,会执行业务…

selenium的IDE插件进行录制和回放并导出为python/java脚本(10)

Selenium IDE:Selenium Suite下的开源Web自动化测试工具,是Firefox或者chrome的一个插件,具有记录和回放功能,无需编程即可创建测试用例,并且可以将用例直接导出为可用的python/java等编程语言的脚本。 我们以chrome浏…

Vue3嵌套导航相对路径问题

有如下的页面设计,页面上方第一次导航,两个菜单,首页和新闻 点击新闻,内容里面嵌套一个左侧和右侧,左侧有4条新闻,点击某一条新闻,右侧显示详情 代码如下: ​ File Path: d:\hello\…

自感式压力传感器结构设计

自感式压力传感器的结构如图2-35 和图 2-36所示,分为变隙式、变面积式和螺管式三种,每种均由线网、铁心和衔铁三部分组成。 图2-35 自感式压力传感器的结构 1-线圈 2-铁心 3-衔铁 图2-36 螺管式 1-线图 2-铁心 3一衔铁 自感式压力传感器按磁路变化可…

QT的核心机制 对话框资源

案例 1、键盘按下w,s,a,d键分别为标签向上,下,左,右移动 鼠标按下获取本地坐标,全局坐标 鼠标双击获取本地坐标,全局坐标 鼠标移动获取本地坐标,全局坐标 让鼠标跟踪…

Midjourney零基础学习

Midjourney学习笔记TOP04 Midjourney的各种参数设置 Midjourney的用户操作界面没有醒目的工具栏、属性栏,所有的操作都是通过调用各种指令和参数进行的。 【MJ Version】 Midjourney在2023年3月份就已经更新到了V5版本,V5版本除了画质有所提升外&#…

interwirelessac9560感叹号,电脑无法连接wifi,无法搜索到wifi

interwirelessac9560感叹号 电脑无法连接wifi,无法搜索到wifi 原因 这可能是wifl模块出现了问题。 解决方案 1、winx 打开,选择【设备管理器】 2、选择网络适配器 右键打开wireless-AC,选择【卸载设备】。 3、关机2分钟后&#xff0c…

SpringBoot智慧外贸平台

专业团队,咨询就送开题报告,欢迎大家私信留言,联系方式在文章底部 摘 要 网络的广泛应用给生活带来了十分的便利。所以把智慧外贸管理与现在网络相结合,利用java技术建设智慧外贸平台,实现智慧外贸的信息化。则对于进…