书生·浦语 2.0 开源!回归语言建模本质,综合性能领先开源社区,魔搭最佳实践来啦!

简介: 1月17日,上海人工智能实验室与商汤科技联合香港中文大学和复旦大学正式发布新一代大语言模型书生·浦语2.0(InternLM2),模型开源可商用,魔搭社区作为首发平台,支持大家第一时间下载体验。

导读

1月17日,上海人工智能实验室与商汤科技联合香港中文大学和复旦大学正式发布新一代大语言模型书生·浦语2.0(InternLM2),模型开源可商用,魔搭社区作为首发平台,支持大家第一时间下载体验。

InternLM2 的核心理念在于回归语言建模的本质,致力于通过提高语料质量及信息密度,实现模型基座语言建模能力获得质的提升,进而在数理、代码、对话、创作等各方面都取得长足进步,综合性能达到同量级开源模型的领先水平。

InternLM2是在2.6万亿token的高质量语料上训练得到的。沿袭第一代书生·浦语(InternLM)的设定,InternLM2包含7B及20B两种参数规格及基座、对话等版本,满足不同复杂应用场景需求,分别是:

  • Internlm2-base: 高质量和具有很强可塑性的模型基座,是模型进行深度领域适配的高质量起点;
  • Internlm2: 在internlm2-base基础上,在多个能力方向进行了强化,在评测中成绩优异,同时保持了很好的通用语言能力,是我们推荐的在大部分应用中考虑选用的优秀基座;
  • Internlm2-sft:在Base基础上,进行有监督的人类对齐训练;
  • Internlm2-chat:在internlm2-sft基础上,经过RLHF,面向对话交互进行了优化,具有很好的指令遵循、共情聊天和调用工具等的能力。

InternLM2 的基础模型具备以下的技术特点:

  • 有效支持20万字超长上下文:模型在20万字长输入中几乎完美地实现长文“大海捞针”,而且在 LongBench 和 L-Eval 等长文任务中的表现也达到开源模型中的领先水平。

InternLM2准确总结“联合国2023年10月2日召开的联合国贸易和发展会议会议记录”

  • 综合性能全面提升:各能力维度相比上一代模型全面进步,在推理、数学、代码等方面的能力提升显著。

InternLM2设计的课程大纲精准遵循用户要求(比如格式、数量、内容等)

image.png

InternLM2能够在对话中与用户“共情”

image.png

InternLM2在100以内的简单数学运算上能够做到接近100%的准确率

image.png


InternLM2能够完成积分求解等高等数学题目

魔搭社区围绕InternLM2推出了一站式最佳实践教程,提前跑通模型的部署、推理和微调流程,供各开发者们参考。

模型链接和下载

书⽣·浦语2.0(InternLM2)系列模型现已在魔搭ModelScope社区开源,包括:

书生·浦语2-7B:https://www.modelscope.cn/models/Shanghai_AI_Laboratory/internlm2-7b/summary

书生·浦语2-对话-7B:https://www.modelscope.cn/models/Shanghai_AI_Laboratory/internlm2-chat-7b/summary

书生·浦语2-基座-7B:https://www.modelscope.cn/models/Shanghai_AI_Laboratory/internlm2-base-7b/summary

书生·浦语2-对话-7B-SFT:https://www.modelscope.cn/models/Shanghai_AI_Laboratory/internlm2-chat-7b-sft/summary

书生·浦语2-基座-20B:https://www.modelscope.cn/models/Shanghai_AI_Laboratory/internlm2-base-20b/summary

书生·浦语2-20B:https://www.modelscope.cn/models/Shanghai_AI_Laboratory/internlm2-20b/summary

书生·浦语2-对话-20B:https://www.modelscope.cn/models/Shanghai_AI_Laboratory/internlm2-chat-20b/summary

书生·浦语2-对话-20B-SFT:https://www.modelscope.cn/models/Shanghai_AI_Laboratory/internlm2-chat-20b-sft/summary

社区支持直接下载模型的repo:

#模型下载
from modelscope import snapshot_download
model_dir = snapshot_download('Shanghai_AI_Laboratory/internlm2-7b')

模型推理

推理代码:

以internlm2-chat-7b为例,模型推理代码:

from modelscope import snapshot_download, AutoTokenizer, AutoModelForCausalLM
import torch
model_dir = snapshot_download("Shanghai_AI_Laboratory/internlm2-chat-7b")
tokenizer = AutoTokenizer.from_pretrained(model_dir, device_map="auto", trust_remote_code=True)
# Set `torch_dtype=torch.float16` to load model in float16, otherwise it will be loaded as float32 and might cause OOM Error.
model = AutoModelForCausalLM.from_pretrained(model_dir, device_map="auto",  trust_remote_code=True, torch_dtype=torch.float16)
model = model.eval()
response, history = model.chat(tokenizer, "你好", history=[])
print(response)
# Hello! How can I help you today?
response, history = model.chat(tokenizer, "请给我3个时间管理的建议", history=history)
print(response)

模型流式推理代码:

from modelscope import snapshot_download, AutoTokenizer, AutoModelForCausalLM
import torch
model_dir = snapshot_download("Shanghai_AI_Laboratory/internlm2-chat-7b")
tokenizer = AutoTokenizer.from_pretrained(model_dir, device_map="auto", trust_remote_code=True)
# Set `torch_dtype=torch.float16` to load model in float16, otherwise it will be loaded as float32 and might cause OOM Error.
model = AutoModelForCausalLM.from_pretrained(model_dir, device_map="auto",  trust_remote_code=True, torch_dtype=torch.float16)
model = model.eval()
length = 0
for response, history in model.stream_chat(tokenizer, "你好", history=[]):
    print(response[length:], flush=True, end="")
    length = len(response)

资源消耗:

image.png

模型微调和微调后推理

微调代码开源地址:

https://github.com/modelscope/swift

我们使用dureader-robust-zh数据集进行微调,对应的任务是根据上下文和答案来生成对应的问题.

环境准备:

# 安装ms-swift
git clone https://github.com/modelscope/swift.git
cd swift
pip install -e .[llm]

微调脚本:

# Experimental environment: A10
# 22GB GPU memory
CUDA_VISIBLE_DEVICES=0 \
swift sft \
    --model_type internlm2-7b-sft-chat \
    --model_revision master \
    --sft_type lora \
    --tuner_backend swift \
    --template_type AUTO \
    --dtype AUTO \
    --output_dir output \
    --ddp_backend nccl \
    --dataset dureader-robust-zh \
    --train_dataset_sample 20000 \
    --num_train_epochs 1 \
    --max_length 2048 \
    --system 'You are a helpful assistant.' \
    --check_dataset_strategy warning \
    --lora_rank 8 \
    --lora_alpha 32 \
    --lora_dropout_p 0.05 \
    --lora_target_modules DEFAULT \
    --gradient_checkpointing true \
    --batch_size 1 \
    --weight_decay 0.01 \
    --learning_rate 1e-4 \
    --gradient_accumulation_steps 16 \
    --max_grad_norm 0.5 \
    --warmup_ratio 0.03 \
    --eval_steps 100 \
    --save_steps 100 \
    --save_total_limit 2 \
    --logging_steps 10 \
    --neftune_noise_alpha 5 \
    --use_flash_attn false \

训练过程也支持本地数据集,需要指定如下参数:

--custom_train_dataset_path xxx.jsonl \
--custom_val_dataset_path yyy.jsonl \

自定义数据集的格式可以参考:

https://github.com/modelscope/swift/blob/main/docs/source/LLM/自定义与拓展.md#注册数据集的方式

微调后推理脚本: (这里的ckpt_dir需要修改为训练生成的checkpoint文件夹)

# Experimental environment: A10
CUDA_VISIBLE_DEVICES=0 \
swift infer \
    --ckpt_dir "output/internlm2-7b-sft-chat/vx_xxx/checkpoint-xxx" \
    --load_dataset_config true \
    --max_length 2048 \
    --max_new_tokens 2048 \
    --temperature 0.5 \
    --top_p 0.7 \
    --repetition_penalty 1. \
    --stream false \
    --do_sample true \
    --merge_lora_and_save false \

训练loss可视化:

image.png

微调后生成样例:

[PROMPT] <s> [UNUSED_TOKEN_146]system
You are a helpful assistant.[UNUSED_TOKEN_145] 
[UNUSED_TOKEN_146]user
Task: Question Generation
Context: 我个人感觉是吕颂贤版,剧情和原著差别不大,虽然TVB演员颜值和风光没有大陆的好。但是香港特区人口和地域的限制,只能注重在演员的演技方面发挥很出色,楼主看过大陆排《笑傲江湖》吧!在台词上表现的很生硬没有香港的注重神色配台词,比如杜燕歌把吕颂贤表情和性格几乎和原著差别不大。武打几乎沿用徐克和程小东动作的风格很注重实际技巧,没有大陆版的在武打场面依靠电脑特效表现的太夸张了。李亚鹏版的武打动作和导演还是香港的元彬,大陆毕竟还是在武侠剧起步的比较晚,主要是还是靠明星大腕压阵而香港却是恰恰相反。
Answer: 吕颂贤版
Question:[UNUSED_TOKEN_145]
[UNUSED_TOKEN_146]assistant
[OUTPUT]笑傲江湖哪个版本最好看[UNUSED_TOKEN_145]
[LABELS]笑傲江湖哪个版本好看
--------------------------------------------------
[PROMPT] <s> [UNUSED_TOKEN_146]system
You are a helpful assistant.[UNUSED_TOKEN_145] 
[UNUSED_TOKEN_146]user
Task: Question Generation
Context: 防水作为目前高端手机的标配,特别是苹果也支持防水之后,国产大多数高端旗舰手机都已经支持防水。虽然我们真的不会故意把手机放入水中,但是有了防水之后,用户心里会多一重安全感。那么近日最为火热的小米6防水吗?小米6的防水级别又是多少呢? 小编查询了很多资料发现,小米6确实是防水的,但是为了保持低调,同时为了不被别人说防水等级不够,很多资料都没有标注小米是否防水。根据评测资料显示,小米6是支持IP68级的防水,是绝对能够满足日常生活中的防水需求的。
Answer: IP68级
Question:[UNUSED_TOKEN_145]
[UNUSED_TOKEN_146]assistant
[OUTPUT]小米6防水级别[UNUSED_TOKEN_145]
[LABELS]小米6防水等级

点击直达书生·浦语2.0开源模型列表

组织详情 · 魔搭社区 (modelscope.cn)

相关文章
|
3月前
|
物联网 机器人 Swift
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
【人工智能技术专题】「入门到精通系列教程」打好AI基础带你进军人工智能领域的全流程技术体系(机器学习知识导论)(一)
【人工智能技术专题】「入门到精通系列教程」打好AI基础带你进军人工智能领域的全流程技术体系(机器学习知识导论)
78 1
|
2月前
|
机器学习/深度学习 人工智能 运维
【人工智能技术专题】「入门到精通系列教程」打好AI基础带你进军人工智能领域的全流程技术体系(机器学习知识导论)(二)
【人工智能技术专题】「入门到精通系列教程」打好AI基础带你进军人工智能领域的全流程技术体系(机器学习知识导论)
60 1
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
【人工智能技术专题】「入门到精通系列教程」零基础带你进军人工智能领域的全流程技术体系和实战指南(LLM、AGI和AIGC都是什么)(一)
【人工智能技术专题】「入门到精通系列教程」零基础带你进军人工智能领域的全流程技术体系和实战指南(LLM、AGI和AIGC都是什么)
51 0
|
13天前
|
数据采集 机器学习/深度学习 存储
性能提升30%!中国电信进一步开源12B星辰大模型TeleChat-12B!魔搭社区最佳实践来啦!
中国电信人工智能研究院开源12B参数规模星辰语义大模型TeleChat-12B,相较1月开源7B版本,内容、性能和应用等方面整体效果提升30%,其中,多轮推理、安全问题等领域提升超40%。在C-eval、MMLU、AGIEVAL等国际权威榜单上,排名处于国内同级别参数开源模型的前列,进一步促进大模型开源生态繁荣,助力AI产业加速高质量发展。另据悉,中国电信人工智能研究院将于年内开源千亿级参数大模型。
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
【人工智能技术专题】「入门到精通系列教程」零基础带你进军人工智能领域的全流程技术体系和实战指南(LLM、AGI和AIGC都是什么)(二)
【人工智能技术专题】「入门到精通系列教程」零基础带你进军人工智能领域的全流程技术体系和实战指南(LLM、AGI和AIGC都是什么)
44 0
|
4月前
|
机器学习/深度学习 人工智能 Cloud Native
助力 AI 技术共享,蚂蚁开源又一核心技术“因果学习系统 OpenASCE”
技术开源是蚂蚁集团的重要技术战略,我们希望通过开源建立起开放、包容的技术生态,让更多人共享技术红利。
助力 AI 技术共享,蚂蚁开源又一核心技术“因果学习系统 OpenASCE”
|
12月前
|
机器学习/深度学习 人工智能 搜索推荐
40多位学者联合发布基础模型工具学习综述,开源BMTools平台(2)
40多位学者联合发布基础模型工具学习综述,开源BMTools平台
163 0
|
12月前
|
人工智能 自然语言处理 搜索推荐
40多位学者联合发布基础模型工具学习综述,开源BMTools平台(1)
40多位学者联合发布基础模型工具学习综述,开源BMTools平台
169 0
|
12月前
|
机器学习/深度学习 人工智能 自然语言处理
业界首个支持9种语言的文图生成模型!智源AltDiffusion开源技术解读
业界首个支持9种语言的文图生成模型!智源AltDiffusion开源技术解读
103 0