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

相关文章
|
2月前
|
SQL Java 数据库
2025 年 Java 从零基础小白到编程高手的详细学习路线攻略
2025年Java学习路线涵盖基础语法、面向对象、数据库、JavaWeb、Spring全家桶、分布式、云原生与高并发技术,结合实战项目与源码分析,助力零基础学员系统掌握Java开发技能,从入门到精通,全面提升竞争力,顺利进阶编程高手。
431 0
|
5月前
|
机器学习/深度学习 编解码 文字识别
小米又放大招!MiMo-VL 多模态大模型开源,魔搭推理微调全面解读来了!
今天,小米开源发布两款 7B 规模视觉-语言模型 MiMo-VL-7B-SFT 和 MiMo-VL-7B-RL。
851 9
|
存储 安全 Java
SpringBoot异步任务获取HttpServletRequest
通过上述方法,我们可以在Spring Boot应用中的异步任务获取 `HttpServletRequest`,从而实现更为灵活和高效的异步处理逻辑。
757 64
|
10月前
|
存储 前端开发 Java
Harry技术添加存储(minio、aliyun oss)、短信sms(aliyun、模拟)、邮件发送等功能
### SpringBoot3 + Vue3 前后端分离的Java快速开发框架更新 本次更新主要包含以下内容: 1. **端口修改**:为避免与Minio存储服务冲突,后端启动端口从9000改为9999。 2. **添加存储支持**:集成Minio和阿里云OSS对象存储服务,详细配置请参考相关文档。 3. **短信服务**:接入阿里云短信服务,并增加模拟发送功能,方便本地测试。 4. **邮件发送**:引入邮件发送功能,支持简单文本邮件和带附件邮件。 5. **完善个人中心**:优化个人中心页面,提升用户体验。
361 85
Harry技术添加存储(minio、aliyun oss)、短信sms(aliyun、模拟)、邮件发送等功能
|
JSON 文字识别 算法
使用InternVL、LMDeploy和GTE搭建多模态RAG系统
如何将视觉大模型(VLM)与 多模态RAG 结合起来,创建服装搜索和搭配推荐!本文展示了InternVL模型在分析服装图像和提取颜色、款式和类型等关键特征方面的强大功能。
|
10月前
|
人工智能 编解码 测试技术
Mini-InternVL:轻量级多模态大模型,4B 参数量媲美 InternVL2-76B
Mini-InternVL 是上海AI Lab联合清华等机构推出的轻量级多模态大模型,支持高效推理、跨领域适应和动态分辨率输入,适用于多种场景。
635 12
Mini-InternVL:轻量级多模态大模型,4B 参数量媲美 InternVL2-76B
|
10月前
|
机器学习/深度学习 存储 人工智能
【科普向】模型蒸馏和模型量化到底是什么???
在数字化快速发展的时代,人工智能(AI)技术已广泛应用,但大型深度学习模型对计算资源的需求日益增长,增加了部署成本并限制了其在资源有限环境下的应用。为此,研究人员提出了模型蒸馏和模型量化两种关键技术。 模型蒸馏通过将大型教师模型的知识传递给小型学生模型,利用软标签指导训练,使学生模型在保持较高准确性的同时显著减少计算需求,特别适用于移动设备和嵌入式系统。 模型量化则是通过降低模型权重的精度(如从32位浮点数到8位整数),大幅减少模型大小和计算量,提高运行速度,并能更好地适应低配置设备。量化分为后训练量化和量化感知训练等多种方法,各有优劣。
|
11月前
|
存储 消息中间件 设计模式
缓存数据一致性策略如何分类?
数据库与缓存数据一致性问题的解决方案主要分为强一致性和最终一致性。强一致性通过分布式锁或分布式事务确保每次写入后数据立即一致,适合高要求场景,但性能开销大。最终一致性允许短暂延迟,常用方案包括Cache-Aside(先更新DB再删缓存)、Read/Write-Through(读写穿透)和Write-Behind(异步写入)。延时双删策略通过两次删除缓存确保数据最终一致,适用于复杂业务场景。选择方案需根据系统复杂度和一致性要求权衡。
337 0
|
缓存 UED 网络架构
网站404该怎么解决
网站404错误通常表示用户尝试访问的网页不存在或无法找到
1711 0
Axure 自定义元件库
Axure 自定义元件库
380 0
Axure 自定义元件库