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

相关文章
|
26天前
|
数据采集 人工智能 编解码
书生·万象InternVL 2.5:上海 AI Lab 开源的多模态大语言模型,超越了目前许多商业模型
书生·万象InternVL 2.5是由上海AI实验室OpenGVLab团队推出的开源多模态大语言模型系列。该模型在多模态理解基准(MMMU)上表现优异,超越了许多商业模型,适用于图像和视频分析、视觉问答、文档理解和多语言处理等多个领域。
81 7
书生·万象InternVL 2.5:上海 AI Lab 开源的多模态大语言模型,超越了目前许多商业模型
|
4月前
|
机器学习/深度学习 人工智能 自然语言处理
社区供稿 | 元象发布255B大规模MoE开源大模型,落地应用登顶港台榜
元象XVERSE发布 中国最大MoE开源模型:XVERSE-MoE-A36B,加速AI应用低成本部署,将国产开源提升至国际领先水平。
社区供稿 | 元象发布255B大规模MoE开源大模型,落地应用登顶港台榜
|
5月前
|
人工智能 Swift 决策智能
社区供稿 | 面向多样应用需求,书生·浦语2.5开源超轻量、高性能多种参数版本
在 2024 年 7 月 4 日的 WAIC 科学前沿主论坛上,上海人工智能实验室推出了书生·浦语系列模型的全新版本——InternLM2.5。
|
5月前
|
人工智能 API 异构计算
震惊AI界!DeepSeek挑战GPT-4o霸主地位,发布超低价开源大模型
震惊AI界!DeepSeek挑战GPT-4o霸主地位,发布超低价开源大模型
228 2
|
7月前
|
人工智能 自然语言处理 API
人工智能大模型之开源大语言模型汇总(国内外开源项目模型汇总)
人工智能大模型之开源大语言模型汇总(国内外开源项目模型汇总)
人工智能大模型之开源大语言模型汇总(国内外开源项目模型汇总)
|
6月前
|
编解码 文字识别 计算机视觉
寒武纪1号诞生:谢赛宁Yann LeCun团队发布最强开源多模态LLM
【7月更文挑战第10天】【寒武纪1号】- 谢赛宁、Yann LeCun团队发布开源多模态LLM,含8B至34B规模模型,创新空间视觉聚合器(SVA)提升视觉-语言集成,建立新基准CV-Bench及大规模训练数据集Cambrian-7M。在多模态任务中表现出色,尤其在高分辨率图像处理上,但面临高分辨率信息处理和部分视觉任务评估的局限。[链接](https://arxiv.org/pdf/2406.16860)
138 1
|
6月前
|
人工智能 自然语言处理 数据可视化
书生·浦语2.5开源,推理能力再创新标杆,怎么玩都在这里了!
上海人工智能实验室秉持“以持续的高质量开源赋能创新”理念,在为社区始终如一地提供高质量开源模型的同时,也将继续坚持免费商用授权。
|
人工智能 自然语言处理 IDE
人手一个编程助手!北大代码大模型CodeShell-7B开源,魔搭社区最佳实践来了!
CodeShell是北京大学知识计算实验室联合四川天府银行AI团队研发的多语言代码大模型基座。
|
8月前
|
机器学习/深度学习 人工智能 算法
开源vs闭源大模型如何塑造技术的未来?开源模型的优劣势&未来发展方向
开源vs闭源大模型如何塑造技术的未来?开源模型的优劣势&未来发展方向
1345 0
|
人工智能 自然语言处理 搜索推荐
40多位学者联合发布基础模型工具学习综述,开源BMTools平台(1)
40多位学者联合发布基础模型工具学习综述,开源BMTools平台
325 0