书生浦语夏令营——8G 显存玩转书生大模型 Demo

news/2024/11/16 5:51:57/文章来源:https://www.cnblogs.com/xjh-buaa/p/18333385

书生浦语夏令营——8G 显存玩转书生大模型 Demo

配置环境

按照教程来即可

conda create -n demo python=3.10 -y
conda activate demo
conda install pytorch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 pytorch-cuda=12.1 -c pytorch -c nvidia -y
# 这里合并成一个命令
pip install transformers==4.38 sentencepiece==0.1.99 einops==0.8.0 protobuf==5.27.2 accelerate==0.33.0 streamlit==1.37.0

开发机在高峰时段 I/O 速度非常慢,笔者开始不知道存在该问题,在执行 conda create -n demo python=3.10 -y 时等待了很久认为卡主,Ctrl+C 中断了,导致再次执行时产生以下报错(部分)

CondaVerificationError: The package for python located at /root/.conda/pkgs/python-3.10.14-h955ad1f_1 appears to be corrupted. The path 'lib/python3.10/lib-dynload/_statistics.cpython-310-x86_64-linux-gnu.so'
specified in the package manifest cannot be found.

解决方案是根据提示将所有损坏的包,例如这里使用 rm -rf /root/.conda/pkgs/python-3.10.14-h955ad1f_1 删除

Tips

在使用 conda 或者 pip 安装建议放在后台跑,以防断连接带来不便,笔者更习惯使用 screen,简单的使用方法是

apt install screen -y
# 创建并进入一个 screen
screen -S <screen_name>
# 列出当前的 screen
screen -list
# 进入某个 screen
screen -r <screen_name>
# 进入某个 screen 后按 Ctrl+A+D 来 detach 当前 screen 回到原终端

听说在早上 I/O 会比较快,笔者还没有试过,但是目前部分实验已经在 /share 目录下提供了配置好的环境,可以试试直接用

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

拷贝代码并运行即可

mkdir demo
cd demo
vi cli_demo.py
# 将下面的 python 代码复制到该文件中,然后 Esc + : + x + Enter
python cli_demo.py

cli_demo.py 部分

import torch
from transformers import AutoTokenizer, AutoModelForCausalLMmodel_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":breaklength = 0for response, _ in model.stream_chat(tokenizer, input_text, messages):if response is not None:print(response[length:], flush=True, end="")length = len(response)

运行效果如下(命令行的输入回显似乎对中文有点儿小问题)

image

比较数字开始的一个对了,后来直接不知道在说啥了,无语。。。10+9=19 答对了,抽象一点儿的“主=6”就完全无法理解了,问问命令的用途答的格式还是挺好的,总体表现还行。

下面是生成 300 字小故事的结果,效果挺好的,甚至还有总结升华部分

image

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

克隆代码并执行即可

# 开发机运行
cd ~/demo
git clone https://github.com/InternLM/Tutorial.git
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 <开发机ssh连接端口号>

image

然后本地浏览器输入 127.0.0.1:6006 访问即可

试了下用英语问比较数字,结果完全理解错了,我试着用代码来具体化问题,但还是比较错了

image

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

还在之前的虚拟环境下,pip 安装下新的包

pip install lmdeploy[all]==0.5.1 timm==1.0.7

然后用 LMDeploy 部署

# 开发机
lmdeploy serve gradio /share/new_models/Shanghai_AI_Laboratory/internlm-xcomposer2-vl-1_8b --cache-max-entry-count 0.1# 本地
ssh -CNg -L 6006:0.0.0.1:6006 root@ssh.intern-ai.org.cn -p <开发机ssh连接端口号>

终端部分截图

image

可以看到需要通过 0.0.0.0:6006 来访问,因此在本地使用 ssh 做端口映射时,需要将 6006:127.0.0.1:6006 改为 6006:0.0.0.0:6006

Round 1

这里投喂了一张 Stable Diffusion 生成的猫猫图

image

对话如下

image

image

感觉描述的并不是很丰富,但内容正确

Round 2

第二轮测试使用了一张之前对话的截图,测试让它提取文字

输入图片

image

对话

image

image

提取文字满分,表现出乎意料

LMDeploy 部署 InternVL2-2B 模型

启动命令(还是在原来的虚拟环境 demo 下)

lmdeploy serve gradio /share/new_models/OpenGVLab/InternVL2-2B --cache-max-entry-count 0.1

端口映射同上

投喂的图片还是上面的猫猫图,对话如下

image

image

这个模型图片描述地更好,升级了一下问题,让他编一段小说,结构有问题,但是内容还是挺有想象力挺不错的

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

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

相关文章

GPT1-3及BERT的模型概述

GPT1-3及BERT的模型概述(2020年5月之前LLMs主流模型)GPT-1(2018年6月) 📄 Paper: Improving Language Understanding by Generative Pre-Training 🌟 Highlights在NLP领域,GPT-1 开始使用大量无标签文本数据进行预训练 (Pre-training),然后通过标签文本数据针对不同的…

工时管理系统对比指南:找到适合你的

国内外主流的10款工时管理平台对比:PingCode、Worktile、Todoist、ClickUp、滴答清单、专注清单、一木清单、NarTick、Tweek、朝暮计划。在选择合适的工时管理平台时,你是否感到挑战重重?市场上的各种选项似乎都声称能够提升效率和减轻管理负担,但是真正适合你团队的系统究…

如何选择合适的待办事项软件?全面解析

国内外主流的10款待办事项软件对比:PingCode、Worktile、Teambition、Tower、阿里钉钉、飞书、Asana、Trello、Evernote、Microsoft To Do。在寻找合适的待办事项软件时,你是否感到选择众多、难以决断?一个好的待办事项工具可以大大提升你的工作效率和日常生活的组织性,但在…

FP分数规划在无线通信中的应用

更多精彩内容请关注微信公众号 ‘优化与算法’ 前言 在数学优化中,分数规划是线性分式规划的推广。分数规划中的目标函数是两个函数的比值,这两个函数通常是非线性的。要优化的比值通常描述系统的某种效率。 1. Concave-convex FP问题 1.1 基本形式 一维问题。符号说明:用R表…

MCMS-5.2.8代码审计

IDEA设置下载了导入的依赖库源码后才能对库中代码进行搜索和跳转SQL注入在源文件中,多处出现 include 引用 sqlwhere而sqlwhere的foreach语句中存在着sql注入,如果传入的集合sqlWhereList的el属性为eq,则可以控制field属性来写入恶意sql语句搜索发现有好几处条件查询引用了s…

05HTML+CSS

今日学习了CSS样式中的其他东西。 复合选择器 定义:由两个或多个基础选择器,通过不同的方式组合而成。 作用:更准确、更高效的选择目标元素(标签)。 后代选择器 后代选择器:选中某元素的后代元素。 选择器写法:父选择器 子选择器 { CSS 属性},父子选择器之间用空格隔开…

Java基础知识分享(二)

前面的编程里学会了吗?学会了快来看看新的知识吧!写在前面 昨天给了十题编程题,如果你能有思路很快速地完成它,说明你的Java数据类型、运算符、选择语句、循环语句部分的基础知识很好,接下来就来看看后面的方法、数组以及他们在JVM中的内存划分知识吧! 方法 语句定义格式…

C 语言指针学习

C 语言指针学习 目标:复习软考 + 阅读代码 + 理解数据结构; 1. 指针定义 内存区域中的每个字节都对应一个编号,这个编号就是地址。如果在程序中定义了一个变量,那么在对程序中进行编译时,系统就会给这个变量分配内存单元。按变量地址存取值的方式称为直接访问,如printf(&q…

环形表示进度 css+js+svg

先看看我做出来的效果人狠话不多 直接上代码 html部分 <div id="box"></div>css部分#box{width: 400px;height: 400px;background-color: #00E8D7;display: flex;}.circleBox{width: 33.333%;display: flex;flex-direction: column;align-items: center;…

卡特兰数(Catalan)

1.简介: 卡特兰数是组合数学中一个常出现于各种计数问题中的数列。 十以内的卡特兰数,方便打表找规律,稍微记记。 1 2 5 14 42 132 429 1430 4862 16796 2.catalan递推式子 (1)点击查看代码 #include<bits/stdc++.h> using namespace std;#define int long long con…