基于华为昇腾910B,实战InternVL2-8B模型推理

基于华为昇腾910B,实战InternVL2-8B模型推理

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

https://github.com/OpenGVLab/InternVL

https://github.com/InternLM/lmdeploy

1.登录启智平台

https://openi.pcl.ac.cn/

在这里插入图片描述

2.创建云脑任务

我们新建云脑任务

在这里插入图片描述

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

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

在这里插入图片描述

在这里插入图片描述

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

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

在这里插入图片描述

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

在这里插入图片描述

在这里插入图片描述

点击新建任务等待服务器创建新任务,创建完成系统会进入服务器资源分配等待列表中。

在这里插入图片描述

当分配资源完成后,状态变成运行状态,这个时候右边操作会出现调试按钮。
在这里插入图片描述

3.模型调试

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

在这里插入图片描述

3.1 下载模型

我们在 jupyterlab 界面编写下载模型代码脚本。

start.sh

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

model_download.sh

#!/bin/bash# 定义变量
model_user_name="FoundationModel/OpenGVLab"
model_name="InternVL2-8B"
save_path="/home/ma-user/work/pretrainmodel/InternVL2-8B"# 检查保存路径是否存在,如果不存在则创建
if [ ! -d "$save_path" ]; thenmkdir -p "$save_path"
fi# 调用 openi 命令下载模型
openi model download $model_user_name $model_name --save_path $save_path 

checkmodel.py

from c2net.context import prepare#初始化导入数据集和预训练模型到容器内
c2net_context = prepare()#获取预训练模型路径
InternVL2_8B_v1_path = c2net_context.pretrain_model_path+"/"+"InternVL2-8B"print(InternVL2_8B_v1_path)

我们可以将脚本和代码上传到 jupyterlab 调试界面里面。

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

分别执行以上脚本和代码,先执行 start.sh,再执行 model_download.sh。

bash start.sh

在这里插入图片描述

在这里插入图片描述

再执行 model_download.sh 下载模型

bash model_download.sh

在这里插入图片描述

当模型下载完成后,我们执行 checkmodel.py 检查模型并初始化 代码目录、数据集、模型输出、模型预训练目录。

python checkmodel.py

在这里插入图片描述

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

我们进入 pretrainmodel:

cd /home/ma-user/work/pretrainmodel/InternVL2-8B

在这里插入图片描述

我们已经可以看到下载好的模型权重文件了。

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

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

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

在这里插入图片描述

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

pip install dlinfer-ascend==0.1.0.post1

在这里插入图片描述

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 -b v0.6.1 https://mirror.ghproxy.com//https://github.com/InternLM/lmdeploy.git
cd lmdeploy
pip install -e .
# 升级pillow 到11.0.0 版本
pip install --upgrade pillow
# 使用transformers4.44.1 版本,不要升级到最新版本
pip install transformers==4.44.1 -U

在这里插入图片描述

检查一下 LMDeploy

pip show lmdeploy

在这里插入图片描述

注意:这里我们需要注意 LMDeploy 版本必须要大于 0.6.0 版本。

3.4 LMDeploy 推理

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

inference.py

from lmdeploy import pipeline, PytorchEngineConfig
from lmdeploy.vl import load_image
if name == "__main__":pipe = pipeline('/home/ma-user/work/pretrainmodel/InternVL2-8B',backend_config=PytorchEngineConfig(tp=1, device_type='ascend'))image = load_image('https://raw.githubusercontent.com/open-mmlab/mmdeploy/main/tests/data/tiger.jpeg')response = pipe(('describe this image', image))print(response)

执行如下命令

cd code
touch inference.py

复制以上代码到 inference.py 代码中

在这里插入图片描述

执行推理代码

python inference.py

在这里插入图片描述

我们查看一下这张原图

https://raw.githubusercontent.com/open-mmlab/mmdeploy/main/tests/data/tiger.jpeg

在这里插入图片描述

从模型推理来看回答的是正确的。通过简单的推理代码就可以完成多模态模型的推理,效果还是不错的。

我们查看一下显存情况

npu-smi info

在这里插入图片描述

LMDeploy 默认使用 0.9 的缓存参数设置,这里我们没有修改默认参数,所以模型推理后剩余的显存都分配给模型缓存使用了,所以占用的显存比较大。这里就不详细展开技术细节了。想了解这块知识可以参加书生大模型实战营,学习关于模型量化相关的知识。

我们使用 lmdeploy chat 来推理。

lmdeploy chat /home/ma-user/work/pretrainmodel/InternVL2-8B --backend pytorch --device ascend

在这里插入图片描述

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

在这里插入图片描述

4.总结

在 0.6.0这个版本上开始支持华为昇腾NPU,本文主要讲述了如何使用 LMDeploy 推理框架在华为昇腾 910B 上实现 InternVL2-8B 模型的推理。

LMDeploy 目前支持 InternVL1.5 和 InternVL2 系列的多模态模型,因为时间关系我这里只做了 2B 和 8B 模型的推理,其他模型没有做过测试。感兴趣的小伙伴也可以根据文档实现其它模型的推理和适配,我们也期待 LMDeploy推理框架支持更多更好用的多模态大模型。

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

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

相关文章

私有化视频平台EasyCVR视频汇聚平台接入RTMP协议推流为何无法播放?

私有化视频平台EasyCVR视频汇聚平台兼容性强、支持灵活拓展,平台可提供视频远程监控、录像、存储与回放、视频转码、视频快照、告警、云台控制、语音对讲、平台级联等视频能力。 有用户反馈,项目现场使用RTMP协议接入EasyCVR平台,但是视频却不…

Kong Gateway 指南

Kong Gateway 是一个轻量、快速、灵活的云原生API网关,其本质是一个运行在 Nginx中的Lua应用程序。 概述 Kong是Mashape开源的高性能高可用的API网关,可以水平扩展。它通过前置的负载均衡配置把请求分发到各个server,来应对大批量的网络请求…

简单的kafkaredis学习之kafka

简单的kafka&redis学习整理之kafka 1. kafka 1.1 什么是消息队列 在学习Kafka之前我们先来看一下什么是消息队列,消息队列(Message Queue):可以简称为MQ 例如:Java中的Queue队列,也可以认为是一个消息队列 消息队列&#x…

AprilTag在相机标定中的应用简介

1. AprilTag简介 相机标定用的标靶类型多样,常见的形式有棋盘格标靶和圆形标靶。今天要介绍的AprilTag比较特别,它是一种编码形式的标靶。其官网为AprilTag,它是一套视觉基准系统,包含标靶编解码方法(Tag生成)和检测算法(Tag检测),可用于AR、机器人、相机标定等领域。…

java开发等一些问题,持续更新

微服务和单服务的区别 微服务(Microservices)和单体服务(Monolithic Architecture)是两种不同的软件架构风格,各有其特点和适用场景。 微服务架构: 模块化: 微服务架构将应用程序分解为一系列小…

分类算法——XGBoost 详解

XGBoost 的底层原理与实现 XGBoost(eXtreme Gradient Boosting)是一种高效的梯度提升算法(Gradient Boosting),它通过组合多个弱学习器(通常是决策树)来构建强大的模型。XGBoost 在算法层面上优…

C语言 | Leetcode C语言题解之第523题连续的子数组和

题目&#xff1a; 题解&#xff1a; struct HashTable {int key, val;UT_hash_handle hh; };bool checkSubarraySum(int* nums, int numsSize, int k) {int m numsSize;if (m < 2) {return false;}struct HashTable* hashTable NULL;struct HashTable* tmp malloc(sizeo…

在MacOS玩RPG游戏 - RPGViewerPlus

背景知识 由于我一直使用Mac电脑&#xff0c;所以一直对Mac如何玩RPGMV/RPGMZ游戏的方式有进一步的想法。 网上能给出的方案都是自行启动一个HTTP服务进行&#xff0c;进行服务加载。这个方法有效&#xff0c;但兼容性较差。涉及到自定义功能模块的游戏&#xff0c;都会有报错…

【算法】【优选算法】双指针(上)

目录 一、双指针简介1.1 对撞指针&#xff08;左右指针&#xff09;1.2 快慢指针 二、283.移动零三、1089.复写零3.1 双指针解题3.2 暴力解法 四、202.快乐数4.1 快慢指针4.2 暴力解法 五、11.盛最多⽔的容器5.1 左右指针5.2 暴力解法 一、双指针简介 常⻅的双指针有两种形式&…

集成学习(2)

AdaBoost 基本概念 AdaBoost&#xff08;Adaptive Boosting&#xff0c;自适应增强&#xff09;&#xff0c;其自适应在于&#xff1a;前一个基本分类器分错的样本会得到加强&#xff0c;加权后的全体样本再次被用来训练下一个基本分类器。同时&#xff0c;在每一轮中加入一个…

多线程案例---单例模式

单例模式 什么是设计模式呢&#xff1f; 设计模式就好比棋手中的棋谱。在日常开发中&#xff0c;会会遇到很多常见的“问题场景”&#xff0c;针对这些问题场景&#xff0c;大佬们就设计了一些固定套路&#xff0c;按照这些固定套路来实现代码或应对这些问题场景&#xff0c;也…

第十九章 Vue组件之data函数

目录 一、引言 二、示例代码 2.1. 工程结构图 2.2. main.js 2.3. App.vue 2.4. BaseCount.vue 三、运行效果 一、引言 在Vue CLI脚手架中一个组件的data选项必须是一个函数&#xff0c;以此保证每个组件实例&#xff0c;维护独立的一份数据对象。每次创建新的组件实…

mabtisx突然不起作用:mapper跳转不到xml

解决&#xff1a;进入官方下载&#xff1a;JetBrains Marketplace 选择和你idea对应的版本号 切内网下载

ComfyUI正式版来袭!一键安装无需手动部署!支持所有电脑系统

ComfyUI V1重磅发布&#xff1a;迈向AI图像处理新时代 近日&#xff0c;ComfyUI团队正式推出了备受期待的ComfyUI V1版本&#xff0c;为图像生成和处理的AI用户带来了全新的生态体验。这一版本不仅彻底解决了以往版本中繁琐的安装和兼容问题&#xff0c;还大幅提升了易用性&…

pycharm设定代码模板

1、在文件点击设置 ​​​​​​​ ​​​​​​​ 2、点击编辑器--实时模板--找到需要插入模板的位置如我要插入HTML的模板---选择--点击实时模板 3、如图&#xff1a; 4、添加模板内容&#xff0c;如果模板有变量可以在编辑变量处点击编辑 5、编辑变量 6、点…

蘑菇书(EasyRL)学习笔记(2)

1、序列决策 1.1、智能体和环境 如下图所示&#xff0c;序列决策过程是智能体与环境之间的交互&#xff0c;智能体通过动作影响环境&#xff0c;环境则返回观测和奖励。智能体的目标是从这些反馈中学习出能最大化长期奖励的策略&#xff0c;这一过程通过不断试错和调整实现强化…

SQL进阶技巧:如何利用三次指数平滑模型预测商品零售额?

目录 0 问题背景 1 数据准备 2 问题解决 2.1 模型构建 &#xff08;1&#xff09;符号规定 &#xff08;2&#xff09;基本假设 &#xff08;3&#xff09;模型的分析与建立 2.2 模型求解 3 小结 0 问题背景 1960年—1985年全国社会商品零售额如图1 所示 表1全国社…

Rsync远程同步详细介绍

一、rsync介绍 rsync是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份的优秀工具。并且可以不进行改变原有数据的属性信息&#xff0c;实现数据的备份迁移特性。 rsync软件支持跨平台&#xff0c;适用于unix/ linux/windows等多种操作系统平台。rsyn…

无人机之自动控制原理篇

一、飞控系统 无人机飞控是指无人机的飞行控制系统&#xff0c;是无人机的大脑。飞控系统通过传感器、控制器和执行机构三部分实现对无人机的自动控制。 传感器&#xff1a;传感器负责收集无人机的姿态、速度、高度等信息。常见的传感器包括陀螺仪、加速度计、磁力计、气压计、…

得物App获评新奖项,正品保障夯实供应链创新水平

近日&#xff0c;得物App再度获评新奖项——“2024上海市供应链创新与应用优秀案例”。 本次奖项为上海市供应链领域最高奖项&#xff0c;旨在评选出在供应链创新成效上处于领先地位、拥有成功模式和经验的企业。今年以来&#xff0c;得物App已接连获得“上海市质量金奖”、“科…