基础岛 - 8G显存验证书生·浦语大模型的Demo

news2024/9/27 21:26:32

因为以前用过LMDeploy,所以本章的内容相对熟悉。
另外,因为教程写的很详细保姆级,所以大多数情况直接复制执行命令即可。开发机的创建略过。

总体验证结论:

  • LMDeploy的模型加载有点慢,但推理速度快,符合预期
  • 新一代视觉-语言多模态大模型InternVL2-2B模型的能力出乎意料的好,作为2B参数模型相当出色
  • Streamlit和Gradio简单高效,配合LLM运用做原型开发很合适,LMDeploy内置支持Gradio

Python环境的准备

/root/share/pre_envs 中配置好了预置环境 icamp3_demo
可以通过如下指令进行激活:
conda activate /root/share/pre_envs/icamp3_demo

Cli Demo 部署 InternLM2-Chat-1.8B 模型

首先,创建一个目录,用于存放我们的代码。并创建一个 cli_demo.py

mkdir -p /root/demo
touch /root/demo/cli_demo.py

然后,我们将下面的代码复制到 cli_demo.py 中。

import torch
from transformers import AutoTokenizer, AutoModelForCausalLM


model_name_or_path = "/root/share/new_models/Shanghai_AI_Laboratory/internlm2-chat-1_8b"

tokenizer = AutoTokenizer.from_pretrained(model_name_or_path, trust_remote_code=True, device_map='cuda:0')
model = AutoModelForCausalLM.from_pretrained(model_name_or_path, trust_remote_code=True, torch_dtype=torch.bfloat16, device_map='cuda:0')
model = model.eval()

system_prompt = """You are an AI assistant whose name is InternLM (书生·浦语).
- InternLM (书生·浦语) is a conversational language model that is developed by Shanghai AI Laboratory (上海人工智能实验室). It is designed to be helpful, honest, and harmless.
- InternLM (书生·浦语) can understand and communicate fluently in the language chosen by the user such as English and 中文.
"""

messages = [(system_prompt, '')]

print("=============Welcome to InternLM chatbot, type 'exit' to exit.=============")

while True:
    input_text = input("\nUser  >>> ")
    input_text = input_text.replace(' ', '')
    if input_text == "exit":
        break

    length = 0
    for response, _ in model.stream_chat(tokenizer, input_text, messages):
        if response is not None:
            print(response[length:], flush=True, end="")
            length = len(response)

接下来,我们便可以通过 python /root/demo/cli_demo.py 来启动我们的 Demo。
模型加载的的速度有点慢,大约60s后,可以看到输入提示符。

输入问题后,即可以看到回答。提问了如下问题:

  • “请介绍一下你自己”
  • “以乒乓球直拍横打为主题,生成一个300字的小故事”

总的来说,以1.8B参数的能力,还是中规中矩的。
详细如下图:
image.png

Streamlit Web Demo 部署 InternLM2-Chat-1.8B 模型

本章实际是在上一章的基础上,用Streamlit(为什么不用Gradio?)包裹了一层UI,来使用模型。
在模型的使用上没有本质的区别。
执行如下代码来把本教程仓库 clone 到本地,以执行后续的代码。

cd /root/demo
git clone https://github.com/InternLM/Tutorial.git

然后,执行如下代码来启动一个 Streamlit 服务。

cd /root/demo
streamlit run /root/demo/Tutorial/tools/streamlit_demo.py --server.address 127.0.0.1 --server.port 6006

接下来,将端口映射到本地。
ssh -CNg -L 6006:127.0.0.1:6006 root@ssh.intern-ai.org.cn -p <远程端口号>
在完成端口映射后,我们便可以通过浏览器访问 http://localhost:6006 来启动我们的 Demo。

把Temp调整到1.0,来激发最大的灵感,还是输入同样的两个问题,看看回答

  • “请介绍一下你自己”
  • “以乒乓球直拍横打为题,生成一个300字的小故事”

效果如下图所示:
image.png

LMDeploy 部署 InternLM-XComposer2-VL-1.8B 模型

InternLM-XComposer2 是一款基于 InternLM2 的视觉语言大模型,其擅长自由形式的文本图像合成和理解。其主要特点包括:

  • 自由形式的交错文本图像合成:InternLM-XComposer2 可以根据大纲、详细文本要求和参考图像等不同输入,生成连贯且上下文相关,具有交错图像和文本的文章,从而实现高度可定制的内容创建。
  • 准确的视觉语言问题解决:InternLM-XComposer2 基于自由形式的指令准确地处理多样化和具有挑战性的视觉语言问答任务,在识别,感知,详细标签,视觉推理等方面表现出色。
  • 令人惊叹的性能:基于 InternLM2-7B 的InternLM-XComposer2 在多个基准测试中位于开源多模态模型第一梯队,而且在部分基准测试中与 GPT-4V 和 Gemini Pro 相当甚至超过它们。

LMDeploy 是一个用于压缩、部署和服务 LLM 的工具包,由 MMRazor 和 MMDeploy 团队开发。它具有以下核心功能:

  • 高效的推理:LMDeploy 通过引入持久化批处理、块 KV 缓存、动态分割与融合、张量并行、高性能 CUDA 内核等关键技术,提供了比 vLLM 高 1.8 倍的推理性能。
  • 有效的量化:LMDeploy 支持仅权重量化和 k/v 量化,4bit 推理性能是 FP16 的 2.4 倍。量化后模型质量已通过 OpenCompass 评估确认。
  • 轻松的分发:利用请求分发服务,LMDeploy 可以在多台机器和设备上轻松高效地部署多模型服务。
  • 交互式推理模式:通过缓存多轮对话过程中注意力的 k/v,推理引擎记住对话历史,从而避免重复处理历史会话。
  • 优秀的兼容性:LMDeploy支持 KV Cache Quant,AWQ 和自动前缀缓存同时使用。

LMDeploy 已经支持了 InternLM-XComposer2 系列的部署,但值得注意的是 LMDeploy 仅支持了 InternLM-XComposer2 系列模型的视觉对话功能。
使用 LMDeploy 启动一个与 InternLM-XComposer2-VL-1.8B 模型交互的 Gradio 服务。(这次没用Streamlit)。

conda activate /root/share/pre_envs/icamp3_demo
lmdeploy serve gradio /share/new_models/Shanghai_AI_Laboratory/internlm-xcomposer2-vl-1_8b --cache-max-entry-count 0.1

在使用 Upload Image 上传图片后,我们输入 Instruction 后按下回车,便可以看到模型的输出。

原图为:
200612283440801.jpg

识别速度很快,输出是:

这张图片描绘了一座雄伟的高山,它的雪白山顶和周围白雪皑皑的景象,构成了一幅壮丽的雪景。山脚下有一片翠绿的草地,与山势形成鲜明的对比。
在山腰处,有一些树木和建筑物,它们与周围的环境融为一体,构成一幅宁静而美丽的自然风景。

嗯,第一句非常棒。后面只能说还是有点幻觉的。不过1.8B的模型不能要求太高。

实际的执行图:
image.png

LMDeploy 部署 InternVL2-2B 模型

InternVL2 是上海人工智能实验室推出的新一代视觉-语言多模态大模型,是首个综合性能媲美国际闭源商业模型的开源多模态大模型。InternVL2 系列从千亿大模型到端侧小模型全覆盖,通专融合,支持多种模态。
LMDeploy 也已经支持了 InternVL2 系列模型的部署,使用 LMDeploy 部署 InternVL2-2B 模型。
通过下面的命令来启动 InternVL2-2B 模型的 Gradio 服务。

conda activate /root/share/pre_envs/icamp3_demo
lmdeploy serve gradio /share/new_models/OpenGVLab/InternVL2-2B --cache-max-entry-count 0.1

在完成端口映射后,便可以通过浏览器访问 http://localhost:6006 来启动我们的 Demo。
在使用 Upload Image 上传图片后,我们输入 Instruction 后按下回车,便可以看到模型的输出。

上传了一章中同样的图片,这次的输出相比InternLM-XComposer2-VL-1.8B效果明显好很多。
试了两次,各个部分的细节内容描述非常准确,用语简洁明快。而且还能察觉出整体感(壮丽、雄伟)。
更强的是连右下角的水印都识别并分析出来了。相当厉害,出乎意料。

回答1:
这张图片展示了一座雄伟的山峰,山峰覆盖着厚厚的积雪,山顶呈现出尖锐的锥形。山峰的轮廓清晰,从画面底部延伸到顶部,显示出其高耸入云的气势。
背景是一片蓝天,天空中有些许云彩,云层稀疏,阳光照射在雪山上,使得雪面反射出明亮的光芒。山峰的底部有一些深色的岩石和山脉,
与白雪形成鲜明对比。图片的右下角有文字“WWW.THESI.COM”,表明这张图片可能来源于该网站。

回答2:
这张图片展示了一座雄伟的山峰,山峰覆盖着厚厚的积雪,山顶尖锐而陡峭。山峰的轮廓清晰,从画面底部延伸到顶部,显示出其高耸入云的气势。
背景是一片蓝天,天空中有些许云彩,云层稀疏,阳光照射在雪山上,使得雪面反射出明亮的光芒。山峰的底部有一些深色的岩石和山脉,
与白雪形成鲜明对比。图片的右下角有文字“WWW.THESI.COM”,表明这张图片可能来源于该网站。整体画面给人一种壮丽和雄伟的感觉。

实际执行图:
image.png

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

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

相关文章

将tsx引入vue

按钮 vue <cl-batch-btn >新增批量</cl-batch-btn> import batch from "//modules/ad/components/ uploading/batch.vue" import ClBatchBtn from "/~/crud/src/components/batch-btn"; tsx

从困境到突破,EasyMR 集群迁移助力大数据底座信创国产化

在大数据时代&#xff0c;企业对数据的依赖程度越来越高。然而&#xff0c;随着业务的不断发展和技术的快速迭代&#xff0c;大数据平台的集群迁移已成为企业数据中台发展途中无法回避的需求。在大数据平台发展初期&#xff0c;国内数据中台市场主要以国外开源 CDH、商业化 CDP…

JVM(十二)细谈JVM类加载的各个过程以及如何修改Java原生API

本文深入探讨了Java虚拟机&#xff08;JVM&#xff09;的类加载机制&#xff0c;包括类的加载、验证、准备、解析和初始化等过程。文章首先通过几个高级面试问题引入主题&#xff0c;然后详细解释了JVM类加载的五个阶段及其重要性。接着&#xff0c;介绍了Java的三个主要类加载…

普通话测试前如何抱佛脚拿高分

全国普通话水平测试对很多大学生而言是最好拿证的考试&#xff0c;当然了对于某些专业的考生也会有更高的拿证要求&#xff0c;例如对于需要考教师资格证的同学而言。希望这篇文章可以帮助到各位考生在普通话水平测试中取得高分。 首先我们需要知道考试考什么 一、测试内容 …

M.2接口

接口分类 key-a key-b key-e key-m接口图片

图吧工具箱:硬件检测的一站式解决方案,好用到让同行都点赞!

前言 嘿&#xff0c;各位硬件迷们&#xff0c;小江湖又来啦&#xff01;今天&#xff0c;我手里可是攥着个宝贝&#xff0c;一个能让你们眼前一亮的神秘工具箱&#xff1b;别急着问是啥&#xff0c;我先卖个关子&#xff0c;就说这工具箱啊&#xff0c;简直是硬件界的“八卦炉”…

8.C基础_指针基础

指针概述 指针存放的都是首地址。 1、定义与初始化 形式&#xff1a;<数据类型>* <变量名> <地址>; int a 10; int *p &a; 指针的类型不同&#xff0c;p时的偏移地址量不同&#xff0c;偏移地址 sizeof(类型)Byte 注意点&#xff1a; 指针的…

LMS4124R-13000S01激光测距仪使用方法【sick LMS4124R-13000S01】

1、下载SOPAS&#xff1a; 点击下载SOPAS 1 SOPAS 自动搜索设备 正常上电及网络连接&#xff0c;打开 SOPAS 自动搜索到 LMS41XXX&#xff0c;并且可以看到其版本号&#xff0c; SN,IP 信息&#xff0c;产品默认 IP 为 192.168.0.1. 2 搜索设备 鼠标双击“LMS41XXX(SN 18460…

15.DMDIS 工具优化

文章目录 前言一、安装部署安装数据源转换作业监控 二、性能优化问题 1 &#xff1a;DMETL 卡顿问题问题 2 &#xff1a;DM -> HIVE 的迁移速度慢问题 3 &#xff1a;ORACLE -> DM 的迁移速度慢问题 4 &#xff1a;GP -> DM 的迁移速度慢问题 5 &#xff1a;DM -> …

AI芯片成本压力影响利润

Supermicro&#xff08;SMCI&#xff09;近日公布的季度业绩低于预期&#xff0c;主要因其生产的最新人工智能&#xff08;AI&#xff09;芯片服务器成本高企&#xff0c;导致经调整后的毛利率未能达到分析师的预期水平。这一消息使得其股价在盘后交易中急剧下跌14%&#xff0c…

江科大/江协科技 STM32学习笔记P19

文章目录 TIM编码器接口编码器接口简介正交编码器编码器接口电路、基本结构工作模式 TIM编码器接口 改写旋转编码器计次程序&#xff0c;通过定时器的编码器接口自动计次&#xff0c;与之前触发外部中断手动计次相比&#xff0c;节约软件资源&#xff0c;当有电机高速旋转时&a…

邮件推送接口如何集成以提升用户通知效率?

邮件推送接口的优化策略有哪些&#xff1f;如何设计邮件API接口&#xff1f; 邮件推送接口的集成在这一过程中发挥了重要作用&#xff0c;能够显著提升用户通知效率。AokSend将探讨如何通过集成邮件推送接口来优化用户通知机制&#xff0c;从而为企业和用户带来更高的价值。 …

Java并发—ReetrantLock详解

目录 一、ReetrantLock的特性 1、非阻塞获取锁 2、带超时的锁获取: 3、锁的公平性 4、锁的可中断性 5、Condition条件变量 6、锁的可重入性 可重入锁 不可重入锁 7、性能优化 二、ReentrantLock和Synchronized的区别 1、语法和使用方式 2、锁的获取和释放 3、高级…

量化方法介绍

一、定义 分类模型量化接口进阶量化支持的模式/流/硬件 二、实现 分类 模型量化接口进阶 https://pytorch.org/docs/stable/quantization-support.html 2.1 算子融合 定义&#xff1a; 将多个算子融合到一起&#xff0c;运算时可以加快运行速度。 import torch # define a…

三星和Nvidia在HBM3E芯片领域的竞争与合作

引言 近期&#xff0c;全球半导体市场的焦点逐渐聚焦在了高带宽内存&#xff08;HBM&#xff09;芯片领域&#xff0c;尤其是三星电子和Nvidia之间的竞争与合作。这两家科技巨头正在为下一代人工智能&#xff08;AI&#xff09;处理器的高性能需求而竞相研发先进的HBM3E存储解决…

模拟面试题1

目录 一、JVM的内存结构&#xff1f; 二、类加载器分为哪几类&#xff1f; 三、讲一下双亲委派机制 为什么要有双亲委派机制&#xff1f; 那你知道有违反双亲委派的例子吗&#xff1f; 四、IO 有哪些类型&#xff1f; 五、Spring Boot启动机制 六、Spring Boot的可执行…

基于MindFormers实现GPT2模型的推理

前言 针对MindFormers的安装&#xff0c;可参考本专栏里的另一篇博客 安装MindFormers&#xff08;昇腾910&#xff09;-CSDN博客 pipeline方式 from mindformers import pipeline from mindformers import GPT2LMHeadModel, GPT2Config, GPT2Tokenizer tok GPT2Tokenizer…

Kafka安装部署+go整合

1、Kafka的安装 1、下载与安装Kafka Kafka官网https://Kafka.apache.org/downloads 所以这里推荐的版本是 : https://archive.apache.org/dist/kafka/2.7.2/kafka_2.12-2.7.2.tgz 将下载下来的安装包直接解压到一个路径下即可完成Kafka的安装&#xff0c;这里统一将Kafka安装…

4种防止模态框弹出时页面滚动的方法

1. Overflow:hidden — 经典方法 overflow:hidden CSS 属性是一种久经考验的防止滚动的方法。只需将一个类&#xff08;例如&#xff0c;no-scroll&#xff09;添加到 <body> 标签&#xff0c;并将其链接到带有 overflow:hidden 的 CSS 规则。 .no-scroll {overflow: h…

地表最强?免费!AI画图模型:Stable Diffusion 3 来了!

前言 Stability AI终于推出了备受期待的Stable Diffusion 3 API。经过几个月技术报告的酝酿&#xff0c;现在用户终于可以实际体验这个模型啦。 虽然完全开源的SD3模型仍在开发中&#xff0c;Stability AI已承诺对普通用户免费开放。用户现在可以通过Fireworks AI平台访问SD3 …