从专用模型到通用大模型
数据
书生.万卷1.0
- 文本
- 图像-文本
- 视频数据
OpenDataLab开放平台
- 图像:ImageNet
- tokens语料:WikiQA
- 音频
- 视频:MovieNet
- 3D模型
预训练
微调
增量续训
使用场景:让基座模型学习到一些新知识,如某个垂类领域知识
训练数据:文章、书籍、代码等
有监督微调
使用场景:让模型学会理解和遵循各种指令、或者注入少量领域知识
训练数据:高质量对话、问答数据
有监督微调分为
- 全量参数微调
- 部分参数微调:固定模型主干,只对部分参数更新
部署
大语言模型特征
- 内存开销巨大
- 庞大的参数量
- 采用自回归生成token,需要缓存k/v
- 动态Shape
- 请求数不固定
- token逐个生成、且数量不定
- 模型结构相对简单
- transformer结构,大部分是decoder-only
智能体
由于大语言模型的局限性,例如
- 最新信息和知识的获取
- 回复的可靠性
- 数学计算
- 工具使用和交互
因此,需要在LLM的基础上,封装诸多策略和工具,如下图。
轻量智能体框架Lagent
Task1 InternLM-Chat-7B 智能对话 Demo
bash # 请每次使用 jupyter lab 打开终端时务必先执行 bash 命令进入 bash 中
/root/share/install_conda_env_internlm_base.sh internlm-demo
下载过程如下
激活并进入虚拟环境
conda activate internlm-demo
在虚拟环境中安装运行demo所需要的依赖
# 升级pip
python -m pip install --upgrade pippip install modelscope==1.9.5
pip install transformers==4.35.2
pip install streamlit==1.24.0
pip install sentencepiece==0.1.99
pip install accelerate==0.24.1
模型下载或复制
InternStudio 平台的 share
目录下已经为我们准备了全系列的 InternLM
模型,所以我们可以直接复制即可。使用如下命令复制:
mkdir -p /root/model/Shanghai_AI_Laboratory
cp -r /root/share/temp/model_repos/internlm-chat-7b /root/model/Shanghai_AI_Laboratory
代码下载
首先 clone
代码,在 /root
路径下新建 code
目录,然后切换路径, clone 代码.
cd /root/code
git clone https://gitee.com/internlm/InternLM.git
将 /root/code/InternLM/web_demo.py
中 29 行和 33 行的模型更换为本地的 /root/model/Shanghai_AI_Laboratory/internlm-chat-7b
开发机终端运行
我们可以在 /root/code/InternLM
目录下新建一个 cli_demo.py
文件,将以下代码填入其中:
import torch
from transformers import AutoTokenizer, AutoModelForCausalLMmodel_name_or_path = "/root/model/Shanghai_AI_Laboratory/internlm-chat-7b"tokenizer = AutoTokenizer.from_pretrained(model_name_or_path, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(model_name_or_path, trust_remote_code=True, torch_dtype=torch.bfloat16, device_map='auto')
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("User >>> ")input_text = input_text.replace(' ', '')if input_text == "exit":breakresponse, history = model.chat(tokenizer, input_text, history=messages)messages.append((input_text, response))print(f"robot >>> {response}")
在远程终端运行
python /root/code/InternLM/cli_demo.py
1938年,晋西北,秋风萧瑟,草木凋零。一座小村庄里,住着一位名叫王老汉的老人。他年过六旬,膝下只有一女,名叫小红。小红从小便被王老汉养大,两人相依为命,过着平淡而幸福的生活。
然而,日本侵略者的到来打破了这种平静。1937年,日本鬼子突然袭击了王老汉的村庄,村民们纷纷逃窜,王老汉也因此失去了小红。他悲痛欲绝,发誓要为小红报仇雪恨。
经过几年的准备,王老汉终于等来了复仇的机会。他带领自己的部队,开始了游击战争,与日本鬼子展开了激烈的战斗。在这场战争中,王老汉不惧生死,勇往直前,最终带领部队成功地打败了日本鬼子。
小红得知后,感激不已,但她却选择了与王老汉分开,前往山区继续开展游击战争。虽然两人的联系已经断绝,但他们之间的感情却更加坚定。最终,王老汉带着胜利的喜悦,带着对小红的思念,离开了人世。
王老汉的牺牲,让人们更加深刻地认识到侵略者的不义,也让人们更加珍视和平与安宁。他的故事,将永远流传下去。
web demo运行
继续在虚拟环境中运行
streamlit run web_demo.py --server.address 127.0.0.1 --server.port 6006
要想在本地浏览器中打开web页面,还需要配置端口映射,即在本地生成ssh密钥对,将公钥配置到开发机中,配置完成后在本地终端输入端口映射命令。最后的开发机端口点击ssh连接进行查看。
ssh -CNg -L 6006:127.0.0.1:6006 root@ssh.intern-ai.org.cn -p xxxxx
Lagent
加载模型成功
huggingface-cli下载
1.安装依赖
pip install -U huggingface_hub
2.众所周知的原因,需要将镜像源换为国内
export HF_ENDPOINT=https://hf-mirror.com
reference
如何快速下载huggingface模型——全方法总结
Huggingface 镜像站