项目介绍:InternLM2-20B
InternLM2-20B 是 InternLM 模型的第二代产品,它在7B和20B两个规模上展开,为用户和研究者提供了多版本的模型选择。这样一来,无论是基础模型还是针对特定任务优化的版本,用户都可以找到最适合的选项。
模型版本
InternLM2 提供了四种版本,每个版本都具备独特的优化和用途:
- internlm2-base: 这是一个基础模型,质量高且适应性强,是深入特定领域应用的良好起点。
- internlm2(推荐): 在基础模型的基础上进一步预训练而成,评测表现优异,适用于大多数应用场景。
- internlm2-chat-sft: 基于基础模型,通过人类监督对齐训练进行了优化。
- internlm2-chat(推荐): 通过强化学习进行对话交互优化,具备优秀的交流能力。
技术特点
InternLM2-20B 具备以下技术优势:
- 支持超长上下文: 能处理多达20万字的超长文本输入,擅长在长文中找出关键点。
- 全面性能提升: 推理、数学、以及编程能力比上一代产品显著提升。
性能评测
InternLM2-20B 在多个重要的评测集中表现出色,其中一些评测包括:
- MMLU、AGIEval、BBH等评测基准。
- 与 ChatGPT 和 GPT-4 等模型相比,在某些任务中具有竞争力。
评测过程依托于开源工具 OpenCompass,具体结果可以参考 OpenCompass 的评测榜单。
局限性
尽管模型经过细心设计与训练,InternLM2-20B 可能仍会产生不符合预期的输出,如含有偏见或不当内容。用户在使用中需要注意这些风险,并对生成内容进行适当筛选。
模型加载方法
用户可以通过如下代码,使用 Transformers 加载 InternLM2-20B 模型来进行文本生成:
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("internlm/internlm2-20b", trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained("internlm/internlm2-20b", 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)
开源许可证
InternLM2-20B 的代码采用 Apache-2.0 协议开源,模型权重可供学术研究使用,也可申请免费的商业许可。
引用
用户如果在研究中使用了该模型,建议引用 InternLM2 的技术报告,以尊重和支持开发者的工作:
@misc{cai2024internlm2,
title={InternLM2 Technical Report},
author={众多作者列表},
year={2024},
eprint={2403.17297},
archivePrefix={arXiv},
primaryClass={cs.CL}
}
总之,InternLM2-20B 是一款功能强大的文本生成模型,适用于各类自然语言处理任务,其开放性和高性能使其成为学术研究和实际应用的理想选择。