【基础】8G 显存玩转书生大模型 Demo

任务 任务描述
基础任务 使用 LMDeploy 完成 InternLM2-Chat-1.8B 模型的部署,并生成 300 字小故事,记录复现过程并截图
进阶任务1 使用 LMDeploy 完成 InternLM-XComposer2-VL-1.8B 的部署,并完成一次图文理解对话,记录复现过程并截图
进阶任务2 使用 LMDeploy 完成 InternVL2-2B 的部署,并完成一次图文理解对话,记录复现过程并截图

lmdeploy主页:https://github.com/InternLM/lmdeploy/blob/main/README_zh-CN.md
lmdeploy快速上手:https://github.com/InternLM/lmdeploy/blob/main/docs/zh_cn/get_started.md


配置conda环境

# LMDeploy的预编译包默认是基于 CUDA 12 编译的
conda create -n demo python==3.10 -y
conda activate demo
conda install pytorch==2.2.2 torchvision==0.17.2 torchaudio==2.2.2 pytorch-cuda=12.1 -c pytorch -c nvidia

image

基础任务

使用 LMDeploy 完成 InternLM2-Chat-1.8B 模型的部署,并生成 300 字小故事,记录复现过程并截图

1.启动InternLM2-Chat-1.8B

# 安装依赖
pip install lmdeploy

# 启动
lmdeploy chat internlm/internlm2-chat-1_8b

等待模型加载完成,键入内容示例:

你好,请创作一个 300 字左右的小故事

image

使用gradio进行可视化对话

# 安装依赖
pip install lmdeploy[serve]

# 启动
lmdeploy serve gradio internlm/internlm2-chat-1_8b

打开 http://localhost:6006 键入内容示例如下:

image

进阶任务

1.图片理解 (InternLM-XComposer2-VL-1.8B)

使 LMDeploy 完成 InternLM-XComposer2-VL-1.8B 的部署,并完成一次图文理解对话,记录复现过程并截图

# lmdeploy chat internlm/internlm-xcomposer2-vl-1_8b

lmdeploy serve gradio internlm/internlm-xcomposer2-vl-1_8b

打开 http://localhost:6006 (上传图片后) 键入内容示例如下:

请分析一下图中内容

image

2.图片理解 (InternVL2-2B)

使用 LMDeploy 完成 InternVL2-2B 的部署,并完成一次图文理解对话,记录复现过程并截图

下载模型脚本:

import os
os.makedirs('/root/models', exist_ok=True)

#验证SDK token
from modelscope.hub.api import HubApi
api = HubApi()
api.login(your_sdk_token) # your_sdk_token
# https://modelscope.cn/models/OpenGVLab/InternVL2-2B/

#模型下载
from modelscope import snapshot_download
model_dir = snapshot_download('OpenGVLab/InternVL2-2B', cache_dir='/root/models')

部署脚本:

# lmdeploy serve gradio internlm/internvl2-2b

import gradio as gr
from lmdeploy import pipeline, TurbomindEngineConfig


backend_config = TurbomindEngineConfig(session_len=2048) # 图片分辨率较高时请调高session_len

pipe = pipeline('/root/models/OpenGVLab/InternVL2-2B', backend_config=backend_config)


def model(image, text):
    if image is None:
        return [(text, "请上传一张图片。")]
    else:
        response = pipe((text, image)).text
        return [(text, response)]

demo = gr.Interface(fn=model, inputs=[gr.Image(type="pil"), gr.Textbox()], outputs=gr.Chatbot())
demo.launch()

打开 http://localhost:7860 (上传图片后) 键入内容示例如下:

请描述一下图中内容

image

出现显存不足问题
image

posted @ 2024-07-10 11:50  红豆の布丁  阅读(109)  评论(0)    收藏  举报