InternLM 书生:上海 AI 实验室的实用级大模型
初识 InternLM 书生
InternLM 是由上海人工智能实验室(Shanghai AI Laboratory)推出的一系列实用级大语言模型,中文名称为“书生”。它不仅仅是一个用于聊天的模型,更是一个面向实际应用场景、注重工具使用与知识增强的开源模型家族。InternLM 提供从轻量级到大规模、从通用对话到专用工具的完整模型矩阵,适合学术研究、个人学习、企业部署等多种需求。
为什么选择 InternLM
- 实用导向:InternLM 从一开始就强调模型“能用、好用”,在多种中文评测基准上表现优异,尤其擅长代码生成、长文本理解与工具调用。
- 完整生态:项目提供数据、训练、微调、评测、部署的全流程工具链,极大降低使用门槛。
- 开放开源:模型权重、训练框架(InternEvo)、对话平台(Lagent)等均以开放许可证发布,允许商用。
- 多尺寸选择:涵盖 7B、20B、102B 等参数量,满足从移动端到云端的不同部署需求。
模型家族一览
InternLM 系列目前包含以下几个主要版本,建议初学者从最新的 InternLM3 开始了解。
InternLM3
最新一代模型,在推理、代码、工具使用上全面增强,支持更长的上下文窗口(最高 1M tokens),提供 8B 和 68B 两个尺寸。
InternLM2.5
在 InternLM2 基础上进行中间版本迭代,引入“数据仓库”理念,强化了数理推理与工具调用能力,发布 1.8B、7B、20B 等多种规格。
InternLM-XComposer2
专注于视觉-语言多模态理解的模型,支持高分辨率图像输入、图文交错生成,可直接用于创建演示文稿、报告等富文本内容。
InternVL(ViT-Intern)
融合视觉与语言的联合模型,在图文问答、文档理解等场景达到业界领先水平。
环境准备与快速开始
安装依赖
使用 pip 安装核心依赖时,推荐在 Python 3.10 环境下操作。以下为最小安装示例:
pip install transformers>=4.38.0 torch>=2.0.0 accelerate sentencepiece
若需要完整训练与微调工具,可克隆官方仓库:
git clone https://github.com/InternLM/InternLM
cd InternLM && pip install -e .
加载模型并使用(Hugging Face 格式)
InternLM3 的模型权重已上传至 Hugging Face Hub,可直接通过 from_pretrained 加载:
from transformers import AutoTokenizer, AutoModelForCausalLM
model_name = "internlm/internlm3-8b-instruct"
tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(model_name, torch_dtype="auto", device_map="auto", trust_remote_code=True)
messages = [{"role": "user", "content": "用 Python 写一个冒泡排序"}]
inputs = tokenizer.apply_chat_template(messages, add_generation_prompt=True, return_tensors="pt").to(model.device)
output = model.generate(inputs, max_new_tokens=512)
print(tokenizer.decode(output[0], skip_special_tokens=True))
对话与工具调用
使用 Lagent 构建智能体
Lagent 是 InternLM 团队推出的轻量级智能体框架,支持模型调用搜索引擎、计算器、代码解释器等外部工具。
安装 Lagent:
pip install lagent
示例:创建一个能搜索的对话智能体
from lagent.agents import Internlm2Agent
from lagent.actions import BingSearch, PythonInterpreter
agent = Internlm2Agent(
model_name_or_path="internlm/internlm3-8b-instruct",
tools=[PythonInterpreter(), BingSearch(api_key="your-bing-key")]
)
response = agent.chat("查找今天上海的天气,然后用 Python 计算 1024 的平方根")
print(response)
代码解释器能力
InternLM3 可直接生成并执行代码,解决数学运算、数据可视化等任务。在 Lagent 或原生推理中,模型会输出带有 ````python` 标记的代码块,若环境允许执行,则会返回执行结果。
模型微调与自定义训练
InternLM 提供了 InternEvo 训练框架,支持全参数微调(SFT)与 LoRA/QLoRA 等高效微调。
准备微调数据
数据应为 JSON Lines 格式,每行包含 conversation 字段,格式示例:
{"conversation": [{"from": "user", "value": "你好"}, {"from": "assistant", "value": "有什么可以帮你的?"}]}
使用 XTuner 进行高效微调
XTuner 是 InternLM 官方推荐的微调工具,一行命令即可启动 LoRA 微调:
xtuner train internlm3_8b_instruct_qlora_oasst1_512.py --deepspeed deepspeed_zero2
你也可以使用自定义数据集,将数据目录指向你的 JSON Lines 文件。
模型部署与量化
本地推理部署(LMDeploy)
LMDeploy 是高效推理部署工具,支持 TurboMind 引擎和 PyTorch 引擎,可实现高吞吐量、低延迟的对话服务。
安装 LMDeploy:
pip install lmdeploy
启动推理服务:
lmdeploy serve api_server internlm/internlm3-8b-instruct --server-port 23333
之后可通过 OpenAI 兼容接口调用。
量化部署
InternLM 支持 AWQ、GPTQ 等量化方案,显著降低显存占用。例如,使用 LMDeploy 进行 AWQ 量化:
lmdeploy lite auto_awq internlm/internlm3-8b-instruct --work-dir internlm3-8b-4bit
量化后模型可无缝部署,参数量不变,显存需求减少约 50%。
长文本与多模态能力
超长上下文
InternLM3 支持最大 1M token 上下文,你可以在推理时直接指定更大的 max_length,模型会自动外推到未训练过的长度。处理长文档时,只需将全文分段输入即可。
InternVL2 多模态体验
若你在项目中需要图像理解,可以加载 InternVL2 系列模型:
from transformers import AutoTokenizer, AutoModel
model = AutoModel.from_pretrained("OpenGVLab/InternVL2-8B", trust_remote_code=True)
tokenizer = AutoTokenizer.from_pretrained("OpenGVLab/InternVL2-8B", trust_remote_code=True)
pixel_values = load_image("path/to/image.jpg")
response = model.chat(tokenizer, pixel_values, question="描述这张图片", generation_config=dict(max_new_tokens=512))
print(response)
常用资源与社区
- GitHub 组织:github.com/InternLM – 包含模型、框架、数据集等多个仓库。
- 官方文档:internlm.intern-ai.org.cn (中文文档) – 新手快速上手指南。
- 魔搭社区:modelscope.cn/organization/Shanghai_AI_Laboratory – 国内可直接下载模型。
- 书生·浦语开放平台:提供在线体验(Chat 接口),用于快速测试模型能力。
常见问题
Q:InternLM 支持商用吗?
A:InternLM2 及后续版本均遵循宽松的开源协议(如 Apache 2.0),允许商用,但建议查阅最新的 LICENSE 文件确认。
Q:如何选择模型尺寸?
A:个人学习推荐 7B/8B 版本,可在一张消费级显卡(如 RTX 3060 12GB)运行;高精度任务可使用 20B 或 68B 版本;边缘设备可尝试 1.8B 量化版。
Q:需要多少显存?
A:8B 模型在 float16 精度下约需 16GB 显存,使用 4-bit 量化可降至约 6GB;20B 模型满精度约需 40GB,量化后约 15GB。
Q:遇到问题去哪里求助?
A:推荐在 InternLM 的 GitHub Issues 提问,或在书生·浦语开放平台的社区板块与开发者交流。
至此,你已经掌握了 InternLM 的核心概念与基本使用流程。下一步可以尝试使用你自己的数据微调一个专用模型,或者将模型部署为一个在线 API,开始创造属于你的智能应用。