8G 显存玩转书生大模型 Demo
本关任务主要包括:
- InternLM2-Chat-1.8B 模型的部署(基础任务)
- InternLM-XComposer2-VL-1.8B 模型的部署(进阶任务)
- InternVL2-2B 模型的部署(进阶任务)
任务打卡:
任务1.1:Cli Demo 部署 InternLM2-Chat-1.8B 模型
步骤:创建开发机——>环境配置——>Cli Demo 部署 InternLM2-Chat-1.8B 模型
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)
运行代码后效果展示如下:
结果分析:
效果展示如上图,我们问了两个问题,回答基本还行的,但是第二个回答Q:如何学习大模型?A:出现了“大大模型”这个词,结果还需要改善。
任务1.2:Streamlit Web Demo 部署 InternLM2-Chat-1.8B 模型
这里需要使用端口映射,然后浏览器访问 http://localhost:6006
来启动我们的 Demo。
效果展示如下:
结果分析:
问了两个问题,Q1:请介绍一下自己?Q2:请生成一个300字的童话小故事。
回答看上去还行,但仔细看生成的故事,就会发现整个故事的细节逻辑丰富性等还是不够的。
任务2:LMDeploy 部署 InternLM-XComposer2-VL-1.8B 模型
InternLM-XComposer2 是一款基于 InternLM2 的视觉语言大模型,其擅长自由形式的文本图像合成和理解。
LMDeploy 是一个用于压缩、部署和服务 LLM 的工具包,由 MMRazor 和 MMDeploy 团队开发。
部署步骤:首先激活环境和依赖;接下来,我们使用 LMDeploy 启动一个与 InternLM-XComposer2-VL-1.8B 模型交互的 Gradio 服务。然后就可以上传图片,我们输入 Instruction 后按下回车,便可以看到模型的输出。
效果展示如下:
结果分析:
基本可以完成我的指令,美中不足的是,这个默认输出的是英文。
任务3:LMDeploy 部署 InternVL2-2B 模型
InternVL2 是上海人工智能实验室推出的新一代视觉-语言多模态大模型,是首个综合性能媲美国际闭源商业模型的开源多模态大模型。
基本步骤同前一个任务。
效果展示如下:
结果分析:
很好的理解了我的问题,默认生成了一段中文的描述,对图片的描述比之前的InternLM-XComposer2-VL-1.8B效果要好。
一些补充知识:
本次任务主要是8G 显存玩转书生大模型 Demo,相关的一些知识补充如下:
LMDeploy 提供了一个命令行工具(CLI)来简化语言模型的部署过程。通常包括如下步骤:1)安装 LMDeploy;2)准备模型;3)使用 LMDeploy CLI 部署模型;4)运行 CLI Demo。
Streamlit 是一个用于快速构建和分享数据科学应用程序的开源框架。要使用 Streamlit 部署 InternLM2-Chat-1.8B 模型并创建一个 Web Demo。需要编写一个 Streamlit 应用来加载模型,并提供一个界面让用户与模型互动。
端口映射是网络配置中非常基础且重要的概念,了解其工作原理有助于更好地管理和保护网络环境。
LMDeploy 是一个用于快速部署语言模型的服务框架,它可以帮助你轻松地将大型语言模型部署到各种环境中。
主要特点:
- 模型支持:支持多种常见的模型格式,如 PyTorch 和 ONNX。
- 量化:支持多种量化策略来减少模型大小和加速推理速度,例如 4 位量化。
- 命令行工具:提供 CLI 工具简化模型的部署和管理。
- 高性能:优化了模型推理过程以提高性能。
- 缓存管理:支持缓存机制以减少重复计算的时间开销。
- 多设备支持:可以在 CPU 或 GPU 上运行模型。
timm
(TimM)是一个 PyTorch 的模型库,它提供了大量的预训练图像模型,包括经典的 CNN(卷积神经网络)架构以及最新的研究进展。
Gradio 是一个用于快速创建和分享机器学习模型的交互式 Web 应用的开源库。它允许开发者仅通过几行代码就能将模型包装成一个用户友好的界面,从而轻松地展示模型的能力和功能。
喜欢的小伙伴,点赞关注收藏吧,谢谢。