第二节简单的进行了一些demo的体验。
目录
作业截图
1.使用 InternLM2-Chat-1.8B 模型生成 300 字的小故事
2.和书生·浦语对话
3.熟悉 huggingface 下载功能
4.完成 浦语·灵笔2 的 图文创作 及 视觉问答 部署
5.Lagent 工具调用 数据分析 Demo 部署
前两个任务笔记
因为指导笔记都写的听清楚的,一步一步按着来就好,就不赘述具体步骤了,也没涉及什么代码。其重要粘的代码如下:
1.download_mini.py
这个主要是下载模型,snapshot_download可以下载的模型应该是魔搭模型库里的模型都可以下载。
import os
from modelscope.hub.snapshot_download import snapshot_download
# 创建保存模型目录
os.system("mkdir /root/models")
# save_dir是模型保存到本地的目录
save_dir="/root/models"
snapshot_download("Shanghai_AI_Laboratory/internlm2-chat-1_8b",
cache_dir=save_dir,
revision='v1.1.0')
除了snapshot_download,还有其他两个方法使用模型,参考模型库介绍。
2. cli_demo.py
cli_demo就是实现了一个在命令行里交互的demo。
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
model_name_or_path = "/root/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)
stream_chat是流式生成,可参考模型库该模型的介绍:
进阶任务笔记
Lagent 运行 InternLM2-Chat-7B 模型
ln -s /root/share/new_models/Shanghai_AI_Laboratory/internlm2-chat-7b /root/models/internlm2-chat-7b
具体来说,这条命令的作用是创建一个名为internlm2-chat-7b的符号链接,位于/root/models/目录下,它指向/root/share/new_models/Shanghai_AI_Laboratory/目录下的同名文件或目录。
使用符号链接的好处是,你可以在不同的目录中引用同一个文件或目录,而不需要复制文件本身,这样可以节省存储空间,并且在更新源文件时,所有通过符号链接访问该文件的地方都会看到更新后的内容。
然后更改value='/root/models/internlm2-chat-7b’时,这个模型位置就是上面的软连接。
我们使用数据分析插件计算公式时,会给出python代码,不使用时就是如下图算式。
因为数据分析的prompt是这样滴:
INTERPRETER_CN = ('你现在已经能够在一个有状态的 Jupyter 笔记本环境中运行 Python 代码。'
'当你向 python 发送含有 Python 代码的消息时,它将在该环境中执行。'
'这个工具适用于多种场景,如数据分析或处理(包括数据操作、统计分析、图表绘制),'
'复杂的计算问题(解决数学和物理难题),编程示例(理解编程概念或特性),'
'文本处理和分析(比如文本解析和自然语言处理),'
'机器学习和数据科学(用于展示模型训练和数据可视化),'
'以及文件操作和数据导入(处理CSV、JSON等格式的文件)。')
来自lagent/agents/internlm2_agent.py文件
所以如果想更改prompt内容除了直接在页面内左侧框框改,也可以在文件里改。如果想要简单在demo基础上进行自己功能的更改可以添加或更改插件prompt即可。
熟悉 huggingface 下载功能
先安装huggingface_hub
pip install -U huggingface_hub
huggingface_hub本地下载模型
import os
from huggingface_hub import hf_hub_download # Load model directly
hf_hub_download(repo_id="internlm/internlm2-7b", filename="config.json")
也可参照官网使用其他下载方法:https://huggingface.co/docs/hub/models-downloading
Gradio or Streamlit?
刚好这些任务里,非常巧的,两个可视化页面是用的Streamlit两个是Gradio,这两个也是目前快速生成 AI 应用的框架中应用的最为广泛的。截至我写这篇笔记(2024/06/07),Gradio在github 30.1k,Streamlit是32.6k,基本差别不大。因为还没用过Streamlit,只用过Gradio,所以不好评价谁好谁不好。
这里找了一些其他人对两者的比较:
快速生成 AI 应用的框架对比:Gradio、Streamlit 和 Dash
ps.但我个人用Gradio时感觉还是挺便利的,想实现比较复杂点的可以参考魔搭里的官方游戏demo学习。