书生·浦语 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)

相关文章
|
7月前
|
人工智能
微软靠“想象力”解决大语言模型调用工具两大难题!方法已开源
【2月更文挑战第24天】微软靠“想象力”解决大语言模型调用工具两大难题!方法已开源
70 1
微软靠“想象力”解决大语言模型调用工具两大难题!方法已开源
|
7月前
|
物联网 机器人 Swift
|
2天前
|
自然语言处理 测试技术
社区供稿 | 引入隐式模型融合技术,中山大学团队推出 FuseChat-3.0
在大语言模型(LLM)领域,结合多个模型的优势以提升单个模型的能力已成为一大趋势。然而,以往的模型融合方法例如 FuseLLM[1], FuseChat-1.0/2.0[2] 等存在词表对齐困难、效率低下等问题。
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
社区供稿 | 元象发布255B大规模MoE开源大模型,落地应用登顶港台榜
元象XVERSE发布 中国最大MoE开源模型:XVERSE-MoE-A36B,加速AI应用低成本部署,将国产开源提升至国际领先水平。
社区供稿 | 元象发布255B大规模MoE开源大模型,落地应用登顶港台榜
|
5月前
|
人工智能
ACM最新论文戳破大公司开源谎言,GenAI时代到底如何定义开源模型
【7月更文挑战第2天】ACM论文揭示GenAI开源真相,指出开源模型常缺乏开放数据集、完整代码与功能,质疑大公司仅借开源名义吸引利益。论文倡导重新定义开源,提议全面评估框架、加强监管及教育,确保真开源,促进领域健康发展。[链接:https://dl.acm.org/doi/3630106.3659005]
87 16
|
5月前
|
人工智能 自然语言处理 数据可视化
书生·浦语2.5开源,推理能力再创新标杆,怎么玩都在这里了!
上海人工智能实验室秉持“以持续的高质量开源赋能创新”理念,在为社区始终如一地提供高质量开源模型的同时,也将继续坚持免费商用授权。
|
7月前
|
人工智能 安全 算法
【平衡点:解锁中国大模型开源闭源的新时代】关于大模型是否开源的分析
本文探讨了开源与闭源软件在大模型技术发展中的角色,深入比较了两者在质量、安全、产业化、适应性和可靠性等方面的优缺点。开源软件得益于全球开发者社区,通常在创新和适应性上表现出色,但安全性和质量可能因分散的开发而有所波动。闭源软件则在代码质量和安全性上有一定优势,但可能限制了产业的协作与创新。 在商业模式方面,开源通常依赖服务和支持盈利,闭源则通过软件授权和订阅服务获利。开源模式的市场竞争更激烈,闭源模式则更注重市场份额和控制。企业需要根据自身情况选择合适的战略,有些可能会采用
246 1
|
7月前
|
数据采集 人工智能 自然语言处理
中科院国产多语言大模型-YAYI2开源!家族AI应用场景全覆盖!
中科院国产多语言大模型-YAYI2开源!家族AI应用场景全覆盖!
109 1
|
7月前
|
机器学习/深度学习 自然语言处理 算法
浅谈开源和闭源的认知
浅谈开源和闭源的认知
|
人工智能 自然语言处理 IDE
人手一个编程助手!北大代码大模型CodeShell-7B开源,魔搭社区最佳实践来了!
CodeShell是北京大学知识计算实验室联合四川天府银行AI团队研发的多语言代码大模型基座。
下一篇
DataWorks