中卫网站设计,做外贸怎样浏览国外网站,电子商务网站的设计与开发,二级域名网址查询大全书生浦语大模型全链路开源体系-第5课 书生浦语大模型全链路开源体系-第5课相关资源LMDeploy基础配置LMDeploy运行环境下载internlm2-chat-1_8b模型使用Transformer来直接运行InternLM2-Chat-1.8B模型使用LMDeploy以命令行方式与InternLM2-Chat-1.8B模型对话设置KV Cache最大占用… 书生·浦语大模型全链路开源体系-第5课 书生·浦语大模型全链路开源体系-第5课相关资源LMDeploy基础配置LMDeploy运行环境下载internlm2-chat-1_8b模型使用Transformer来直接运行InternLM2-Chat-1.8B模型使用LMDeploy以命令行方式与InternLM2-Chat-1.8B模型对话设置KV Cache最大占用比例为0.4 设置KV Cache最大占用比例为0.4开启W4A16量化以命令行方式与模型对话。使用W4A16量化模型设置KV Cache最大占用比例为0.4以命令行方式与模型对话 以API Server方式启动 lmdeploy开启W4A16量化调整KV Cache的占用比例为0.4使用命令行客户端与模型对话使用网页方式与模型对话使用Gradio网页客户端与模型对话 使用Python代码集成的方式运行使用 LMDeploy 运行视觉多模态大模型 llava通过命令行方式运行视觉多模态大模型 llava通过Gradio运行视觉多模态大模型 llava 书生·浦语大模型全链路开源体系-第5课 为了推动大模型在更多行业落地应用让开发人员更高效地学习大模型的开发与应用上海人工智能实验室重磅推出书生·浦语大模型实战营为开发人员提供大模型学习和开发实践的平台。 本文是书生·浦语大模型全链路开源体系-第5课的课程实战。 相关资源
InternLM项目地址
https://github.com/InternLM/InternLM
https://github.com/InternLM/LMDeploy
InternLM2技术报告
https://arxiv.org/pdf/2403.17297.pdf
书生·万卷 数据
https://opendatalab.org.cn/
课程链接
https://www.bilibili.com/video/BV1tr421x75B/
LMDeploy基础
配置LMDeploy运行环境
执行命令创建一个新的虚拟环境安装必要的库。
studio-conda -t lmdeploy -o pytorch-2.1.2conda activate lmdeploypip install lmdeploy[all]0.3.0创建conda环境。 安装lmdeploy库指定版本0.3.0。 下载internlm2-chat-1_8b模型
执行命令下载模型。在InternLM的开发机上可以通过以下命令直接创建软链接来下载模型。
ln -s /root/share/new_models/Shanghai_AI_Laboratory/internlm2-chat-1_8b /root/models/internlm2-chat-1_8b使用Transformer来直接运行InternLM2-Chat-1.8B模型
创建路径/root/code/lmdeploy并在该目录下创建脚本文件pipeline_transformer.py。
mkdir -p /root/code/lmdeploy cd /root/code/lmdeployvi pipeline_transformer.pycat pipeline_transformer.py文件内容为
import torch
from transformers import AutoTokenizer, AutoModelForCausalLMtokenizer AutoTokenizer.from_pretrained(/root/models/internlm2-chat-1_8b, trust_remote_codeTrue)# Set torch_dtypetorch.float16 to load model in float16, otherwise it will be loaded as float32 and cause OOM Error.
model AutoModelForCausalLM.from_pretrained(/root/models/internlm2-chat-1_8b, torch_dtypetorch.float16, trust_remote_codeTrue).cuda()
model model.eval()inp hello
print([INPUT], inp)
response, history model.chat(tokenizer, inp, history[])
print([OUTPUT], response)inp please provide three suggestions about time management
print([INPUT], inp)
response, history model.chat(tokenizer, inp, historyhistory)
print([OUTPUT], response)文件创建好后执行命令运行脚本可以看到模型的输出结果。
python pipeline_transformer.py使用LMDeploy以命令行方式与InternLM2-Chat-1.8B模型对话
使用LMDeploy与模型进行对话的通用命令格式为
lmdeploy chat [HF格式模型路径/TurboMind格式模型路径]直接输入命令开始进行对话。
lmdeploy chat /root/models/internlm2-chat-1_8b对模型进行提问。 此时可以看到显存占用 7856 MB。
如果想了解lmdeploy chat的更多参数信息可以执行命令
lmdeploy chat -h设置KV Cache最大占用比例为0.4
KV Cache是一种缓存技术通过存储键值对的形式来复用计算结果以达到提高性能和降低内存消耗的目的。在大规模训练和推理中KV Cache可以显著减少重复计算量从而提升模型的推理速度。理想情况下KV Cache全部存储于显存以加快访存速度。当显存空间不足时也可以将KV Cache放在内存通过缓存管理器控制将当前需要使用的数据放入显存。
模型在运行时占用的显存可大致分为三部分模型参数本身占用的显存、KV Cache占用的显存以及中间运算结果占用的显存。LMDeploy的KV Cache管理器可以通过设置--cache-max-entry-count参数控制KV缓存占用剩余显存的最大比例。默认的比例为0.8。
这里我们将参数--cache-max-entry-count设置为0.4。
执行命令
lmdeploy chat /root/models/internlm2-chat-1_8b --cache-max-entry-count 0.4与模型进行对话。 此时可以看到显存占用降低为 6192 MB。
设置KV Cache最大占用比例为0.4开启W4A16量化以命令行方式与模型对话。
使用W4A16量化模型
LMDeploy使用AWQ算法实现模型4bit权重量化。推理引擎TurboMind提供了非常高效的4bit推理cuda kernel性能是FP16的2.4倍以上。它支持以下NVIDIA显卡
图灵架构sm7520系列、T4安培架构sm80,sm8630系列、A10、A16、A30、A100Ada Lovelace架构sm9040 系列
运行前首先安装一个依赖库。
pip install einops0.7.0然后运行命令对模型进行量化量化后的模型输出到/root/models/internlm2-chat-1_8b-4bit。
lmdeploy lite auto_awq /root/models/internlm2-chat-1_8b --calib-dataset ptb --calib-samples 128 --calib-seqlen 1024 --w-bits 4 --w-group-size 128 --work-dir /root/models/internlm2-chat-1_8b-4bit设置KV Cache最大占用比例为0.4以命令行方式与模型对话
执行命令设置KV Cache最大占用比例为0.4以命令行方式与量化后的模型对话。
lmdeploy chat /root/models/internlm2-chat-1_8b-4bit --model-format awq --cache-max-entry-count 0.4此时可以看到显存占用进一步降低为 4936 MB。
有关LMDeploy的lite功能的更多参数可通过-h命令查看。
lmdeploy lite -h以API Server方式启动 lmdeploy开启W4A16量化调整KV Cache的占用比例为0.4
通过以下命令启动API服务器推理量化后的internlm2-chat-1_8b-4bit模型
lmdeploy serve api_server /root/models/internlm2-chat-1_8b-4bit --model-format awq --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使用网页方式与模型对话
建立本地端口与开发机的端口映射后通过浏览器访问相关端口打开API页面。 在接口/v1/chat/comletions中设置相应的参数调用接口与模型对话。 使用Gradio网页客户端与模型对话
使用Gradio作为前端启动网页客户端。
lmdeploy serve gradio http://localhost:23333 --server-name 0.0.0.0 --server-port 6006在本地打开浏览器访问Gradio界面与模型进行对话。 使用Python代码集成的方式运行
首先创建一个文件pipeline_kv.py。
mkdir -p /root/code/lmdeploy cd /root/code/lmdeployvi pipeline_kv.pycat pipeline_kv.py在文件pipeline_kv.py中输入代码设置cache_max_entry_count0.4。
from lmdeploy import pipeline, TurbomindEngineConfig# 调低 k/v cache内存占比调整为总显存的 20%
backend_config TurbomindEngineConfig(cache_max_entry_count0.4)pipe pipeline(/root/models/internlm2-chat-1_8b,backend_configbackend_config)
response pipe([Hi, pls intro yourself, 成都是])
print(response)执行命令运行代码。
python pipeline_kv.py使用 LMDeploy 运行视觉多模态大模型 llava
在conda虚拟环境中安装必要的依赖库。
pip install githttps://github.com/haotian-liu/LLaVA.git4e2277a060da264c4f21b364c867cc622c945874切换到24GB显存的开发机。
通过命令行方式运行视觉多模态大模型 llava
创建文件pipeline_llava.py。
mkdir -p /root/code/lmdeploy cd /root/code/lmdeployvi pipeline_llava.pycat pipeline_llava.py在文件pipeline_llava.py中输入代码。
from lmdeploy.vl import load_image
from lmdeploy import pipeline, TurbomindEngineConfigbackend_config TurbomindEngineConfig(session_len8192) # 图片分辨率较高时请调高session_len
# pipe pipeline(liuhaotian/llava-v1.6-vicuna-7b, backend_configbackend_config) 非开发机运行此命令
pipe pipeline(/share/new_models/liuhaotian/llava-v1.6-vicuna-7b, backend_configbackend_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 pipeline_llava.py通过Gradio运行视觉多模态大模型 llava
创建文件 gradio_llava.py。
mkdir -p /root/code/lmdeploy cd /root/code/lmdeployvi gradio_llava.pycat gradio_llava.py在文件 gradio_llava.py中输入代码。
import gradio as gr
from lmdeploy import pipeline, TurbomindEngineConfigbackend_config TurbomindEngineConfig(session_len8192) # 图片分辨率较高时请调高session_len
# pipe pipeline(liuhaotian/llava-v1.6-vicuna-7b, backend_configbackend_config) 非开发机运行此命令
pipe pipeline(/share/new_models/liuhaotian/llava-v1.6-vicuna-7b, backend_configbackend_config)def model(image, text):if image is None:return [(text, 请上传一张图片。)]else:response pipe((text, image)).textreturn [(text, response)]demo gr.Interface(fnmodel, inputs[gr.Image(typepil), gr.Textbox()], outputsgr.Chatbot())
demo.launch()运行代码。
python gradio_llava.py打开浏览器访问Gradio界面选择图片进行对话。
图片描述。 营销文案。