项目介绍:InternLM2-Base-7B
InternLM2 是浦语模型的第二代版本,更具创新性和适应性。该模型包括两种规模,即7B和20B参数量的模型,并开源了4种版本。这些版本具有各自的特点,适合不同的应用需求。
模型版本详解
-
internlm2-base:这是基础版本,被设计成一个高质量且高度可塑的模型基础,为深度领域适配提供了一个优秀的起点。
-
internlm2(推荐):该版本在基础模型的基础上,进行了更深层次的特定领域语料预训练。在各种评测中表现出色,同时也保持了广泛的通用语言能力,是大多数应用场景中的推荐选择。
-
internlm2-chat-sft:从基础模型出发,进行了有监督的人类对齐训练,旨在增强模型的人机交互能力。
-
internlm2-chat(推荐):在 internlm2-chat-sft 的基础上,通过RLHF(通过人类反馈进行强化学习)进行优化,特别擅长指令遵循、共情聊天和调用工具等任务。
技术特点
-
超长上下文支持:能够几乎完美地处理多达20万字符的超长输入,这在长文本任务,如 LongBench 和 L-Eval 中表现尤为突出。
-
多维性能提升:与前代模型相比,在推理、数学、代码等多个能力维度上都有显著的提升。
性能评测
InternLM2-Base-7B 使用开源评测工具 OpenCompass 进行了多项重要基准测试。评测集包括 MMLU、AGIEval、BBH、GSM8K、MATH、HumanEval 和 MBPP (Sanitized)。部分评测结果如下:
评测集 | InternLM2-7B | InternLM2-Chat-7B | InternLM2-20B | InternLM2-Chat-20B | ChatGPT | GPT-4 |
---|---|---|---|---|---|---|
MMLU | 65.8 | 63.7 | 67.7 | 66.5 | 69.1 | 83.0 |
AGIEval | 49.9 | 47.2 | 53.0 | 50.3 | 39.9 | 55.1 |
BBH | 65.0 | 61.2 | 72.1 | 68.3 | 70.1 | 86.7 |
GSM8K | 70.8 | 70.7 | 76.1 | 79.6 | 78.2 | 91.4 |
MATH | 20.2 | 23.0 | 25.5 | 31.9 | 28.0 | 45.8 |
HumanEval | 43.3 | 59.8 | 48.8 | 67.1 | 73.2 | 74.4 |
MBPP(Sanitized) | 51.8 | 51.4 | 63.0 | 65.8 | 78.9 | 79.0 |
请注意,数据会因OpenCompass 版本更新而有所变化。
加载模型
可以通过 Transformers 库加载 InternLM2-Base-7B 模型。以下是加载模型的代码示例:
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("internlm/internlm2-base-7b", trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained("internlm/internlm2-base-7b", torch_dtype=torch.float16, trust_remote_code=True).cuda()
model = model.eval()
inputs = tokenizer(["来到美丽的大自然"], return_tensors="pt")
for k,v in inputs.items():
inputs[k] = v.cuda()
gen_kwargs = {"max_length": 128, "top_p": 0.8, "temperature": 0.8, "do_sample": True, "repetition_penalty": 1.0}
output = model.generate(**inputs, **gen_kwargs)
output = tokenizer.decode(output[0].tolist(), skip_special_tokens=True)
print(output)
开源许可证
本项目的代码以 Apache-2.0 协议开源。模型权重对学术研究完全开放,并且支持免费的商业使用授权申请。其他问题或合作可通过邮箱 internlm@pjlab.org.cn 联系团队。
总体而言,InternLM2-Base-7B 为各类语言任务提供了强大而灵活的基础支持,对于有需要的开发者和研究人员,是一个非常宝贵的资源。