书生.浦语大模型实战一

2024-01-10 06:35:06

从专用模型到通用大模型

数据

书生.万卷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 pip

pip 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, AutoModelForCausalLM


model_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":
        break
    response, 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 镜像站

文章来源:https://blog.csdn.net/L1142456160/article/details/135491993
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。