首页 > 其他分享 >书生浦语夏令营——8G 显存玩转书生大模型 Demo

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

时间:2024-07-30 21:28:01浏览次数:6  
标签:显存 6006 0.1 Demo screen 书生 python demo model

书生浦语夏令营——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, 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)

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

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 [email protected] -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 [email protected] -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

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

标签:显存,6006,0.1,Demo,screen,书生,python,demo,model
From: https://www.cnblogs.com/xjh-buaa/p/18333385

相关文章

  • 简单零配置的本地 HTTPS 签名证书生成工具
    大家好,又见面了,我是GitHub精选君! 背景介绍开发人员在本地测试网站时,常常需要确保与线上环境一致的安全连接(HTTPS)。然而,使用真正的证书颁发机构(CA)颁发的证书来进行本地开发不仅存在安全隐患,而且对于一些特殊域名(比如example.test、localhost或127.0.0.1)来说,甚至是不可能的......
  • 前端实现【 批量任务调度管理器 】demo优化
    一、前提介绍我在前文实现过一个【批量任务调度管理器】的demo,能实现简单的任务批量并发分组,过滤等操作。但是还有很多优化空间,所以查找一些优化的库,主要想优化两个方面,上篇提到的:针对3,其实可以自己手写一个,也可以依靠如什么来实现。针对2,最难的是根据【当前系统负......
  • Qt+OpenCascade开发笔记(二):windows开发环境搭建(二):Qt引入occ库,搭建基础工程模板Demo和发
    前言  OpenCASCADE是由OpenCascadeSAS公司开发和支持的开源软件开发平台,旨在为特定领域快速开发程序而设计。它是一个面向对象的C++类库,提供了丰富的几何造型、数据交换和可视化等功能,成为许多CAD软件的核心组件。  本篇描述搭建Qt开发occ环境过程。 Demo  ......
  • 代码大全中保持松散耦合的demo
    Q:假设你有一段子程序,通过输入雇用日期和工作级别来查询员工每年获得的休假数量。这段子程序被命名为LookupVacationBenefit()。假设在另一个模块里已经有了一个employee对象,其中包含了雇用日期和工作级别,以及其他一些信息,该模块把这种对象传给LookupVacationBenefit()。按照其他......
  • 七夕特献:用代码编织爱情的浪漫,程序员的专属爱情证书生成器
    文章目录1.背景介绍2.**为什么是爱情证书生成器?**3.**功能亮点**4.**技术实现**5.**如何获取?**6.总结1.背景介绍在这个数字化的时代,程序员们用代码编织世界,创造无限可能。七夕将至,一个充满古老传说和浪漫气息的东方情人节,我们何不用自己最擅长的方式,来表达内......
  • rust wasm sycamore demo
    Cargo.toml:[package]name="wasmdemo"version="0.1.0"edition="2021"[dependencies]sycamore="0.9.0-beta.2"src/main.rs:usesycamore::prelude::*;#[component]fnApp<G:Html>()->View<G>......
  • 8G 显存玩转书生大模型 Demo-任务一
    使用LMDeploy完成InternLM2-Chat-1.8B模型的部署,并生成300字小故事,记录复现过程并截图。详细步骤1.编写python文件2.执行(下载模型并运行)3.已命令行交互式运行4.生成300字小故事......
  • python cobs协议编解码算法demo
    1.SummaryCOBS(ConsistentOverheadByteStuffing)是一种算法,直译为一致的开销字节填充。简而言之,无论数据包的内容如何,都能通过产生高效可靠明确的数据包帧,从而使接受端能够从损坏的包中恢复。通常使用0x00来作为数据包的分隔符,即切割数据包的片分隔符。当使用0x00作为......
  • 【微信小程序开发】从0-1注册、下载、安装、开发保姆篇教程(附Demo源码)
    文章目录前期准备注册登陆下载安装创建项目项目结构版本管理程序页面生命周期新增页面功能实现本篇小结更多相关内容可查看前期准备要有前端开发基础,已安装NodeJS,若未安装请参考NodeJS安装并生成Vue脚手架(保姆级)可参考小程序开发官方文档进行学习,本文也是参考......
  • webpack入门最简单的demo
    1、在空文件夹下npminit-y2、npminstall--save-devwebpack3、新建src文件夹,在src里新建index.html,写入:<!DOCTYPEhtml><htmllang="en"><head><metacharset="utf-8"><title>WebpackDemo</title></hea......