书生·浦语第二期实战营(初夏专场)-作业5
基础作业(结营必做)
完成以下任务,并将实现过程记录截图:
- 配置 LMDeploy 运行环境
conda create -n lmdeploy -y python=3.10
conda activate lmdeploy
pip install lmdeploy[all]==0.3.0
- 以命令行方式与 InternLM2-Chat-1.8B 模型对话
conda activate lmdeploy
#lmdeploy chat [HF格式模型路径/TurboMind格式模型路径]
lmdeploy chat /root/internlm2-chat-1_8b
#输入“exit”并按两下回车,可以退出对话
进阶作业
完成以下任务,并将实现过程记录截图:
题目一
- 设置KV Cache最大占用比例为0.4,开启W4A16量化,以命令行方式与模型对话
lmdeploy chat /root/models/internlm2-chat-1_8b --cache-max-entry-count 0.4
题目二
- 以API Server方式启动 lmdeploy,开启 W4A16量化,调整KV Cache的占用比例为0.4,分别使用命令行客户端与Gradio网页客户端与模型对话
启动API服务
conda activate lmdeploy
lmdeploy serve api_server \
/root/models/internlm2-chat-1_8b \
--model-format hf \
--quant-policy 0 \
--server-name 0.0.0.0 \
--server-port 23333 \
--tp 1 \
--cache-max-entry-count 0.4
命令行连接
#运行客户端
lmdeploy serve api_client http://localhost:23333
网页客户端连接
#使用Gradio作为前端,启动网页客户端
lmdeploy serve gradio http://localhost:23333 \
--server-name 0.0.0.0 \
--server-port 6006
题目三
- 使用W4A16量化,调整KV Cache的占用比例为0.4,使用Python代码集成的方式运行internlm2-chat-1.8b模型。
from lmdeploy import pipeline, TurbomindEngineConfig
# 调低 k/v cache内存占比调整为总显存的 40%
backend_config = TurbomindEngineConfig(cache_max_entry_count=0.4)
pipe = pipeline('/root/internlm2-chat-1_8b',
backend_config=backend_config)
response = pipe(['Hi, pls intro yourself', '上海是'])
print(response)
运行代码
python /root/pipeline_kv.py
题目四
- 使用 LMDeploy 运行视觉多模态大模型 llava gradio demo
#首先激活conda环境
conda activate lmdeploy
#安装llava依赖库
pip install git+https://github.com/haotian-liu/LLaVA.git@4e2277a060da264c4f21b364c867cc622c945874
touch /root/pipeline_llava.py
写入代码
from lmdeploy.vl import load_image
from lmdeploy import pipeline, TurbomindEngineConfig
backend_config = TurbomindEngineConfig(session_len=8192) # 图片分辨率较高时请调高session_len
# pipe = pipeline('liuhaotian/llava-v1.6-vicuna-7b', backend_config=backend_config) 非开发机运行此命令
pipe = pipeline('/share/new_models/liuhaotian/llava-v1.6-vicuna-7b', backend_config=backend_config)
image = load_image('https://raw.githubusercontent.com/open-mmlab/mmdeploy/main/tests/data/tiger.jpeg')
response = pipe(('describe this image', image))
print(response)
保存后运行
python /root/pipeline_llava.py
也可以通过Gradio来运行llava模型。新建python文件gradio_llava.py
。
touch /root/gradio_llava.py
打开文件,填入以下内容:
import gradio as gr
from lmdeploy import pipeline, TurbomindEngineConfig
backend_config = TurbomindEngineConfig(session_len=8192) # 图片分辨率较高时请调高session_len
# pipe = pipeline('liuhaotian/llava-v1.6-vicuna-7b', backend_config=backend_config) 非开发机运行此命令
pipe = pipeline('/share/new_models/liuhaotian/llava-v1.6-vicuna-7b', 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()
运行python
python /root/gradio_llava.py
通过ssh转发一下7860端口
ssh -CNg -L 7860:127.0.0.1:7860 root@ssh.intern-ai.org.cn -p <你的ssh端口>
通过浏览器访问http://127.0.0.1:7860
- 将 LMDeploy Web Demo 部署到 Openlab