InternLM2 是上海人工智能实验室于 2024 年 1 月开源的第二代大语言模型系列,提供 7B 与 20B 两大参数规格,每个规格包含 base(基座)、chat(对话)、eval(评测)三种变体。相比第一代 InternLM,InternLM2 将上下文窗口从 8K 提升至 200K,原生支持工具调用(函数调用与代码执行),并针对数学推理做了定向强化,全部权重基于 Apache 2.0 协议开源,可免费商用。模型同时覆盖中英双语,中文数据占比高,在 CMMLU 等中文基准上表现突出。配套的 LMDeploy 推理框架支持 4bit 量化与 KV Cache 量化,让 7B 模型可在消费级显卡上运行、20B 模型可在单张 40GB 级显卡上部署。本文从环境配置、快速上手、核心能力、生产部署、选型对比到面试考察,带你完整掌握 InternLM2 的落地方法。

岗位关联

对 AI 从业者而言,掌握 InternLM2 意味着同时具备长文本处理、Agent 工具调用与低成本私有化部署三项可迁移的工程能力,这是在真实业务中落地大模型应用的高频技能组合。

目录
  1. 为什么需要 InternLM2:中文开源模型的长上下文与工具调用缺口
  2. 安装与环境配置:3 步就绪
  3. 快速上手:10 分钟跑通第一个对话
  4. 核心能力详解:4 大支柱
  5. 生产部署与监控:从上线到运维
  6. 版本迭代
  7. AI 应用场景
  8. 常见误区
  9. 面试题
  10. 参考来源
工具类型
开源大语言模型(LLM)
开发商
上海人工智能实验室
开源协议
Apache 2.0(可商用)
GitHub Stars
无
主要语言
Python(推理与微调)
当前版本
InternLM2.5 系列(7B/20B,2024-07 发布)
安装方式
pip install transformers modelscope
上手难度
★★★☆☆(中等)
适合人群
RAG/Agent 开发者、私有化部署团队、中文 NLP 研究者
同类工具
Qwen1.5、ChatGLM3、Llama2
托管服务
无

速览卡是工具类内容的固定首屏模块:30 秒判断「这工具是什么、能不能商用、适不适合我」。

为什么需要 InternLM2:中文开源模型的长上下文与工具调用缺口

2023 年之前的开源大模型普遍存在三个问题:一是上下文窗口集中在 4K-8K,无法处理论文、代码库、合同这类长文档;二是模型只会“续写式回答”,缺乏调用外部工具完成真实任务的能力,做 Agent 应用需要大量外围工程;三是中文能力偏弱,英文模型在中文场景下术语翻译生硬、文化常识缺失。这三点共同推高了企业落地 LLM 应用的成本——要么购买闭源 API,要么在开源模型外围写大量胶水代码弥补模型能力短板。

InternLM2 针对上述痛点给出三组答案:上下文窗口提升至 200K,相当于一次可读入约 30 万字的书籍;训练阶段加入高质量的工具调用与代码执行数据,模型能在特定格式标记中输出动作指令(action),天然适配 Agent 工作流;训练数据充分覆盖中英双语并在数学数据上做增强,CMMLU、GSM8K 等基准成绩位于同期开源模型前列。

与同类模型相比,InternLM2 的气质偏向“工程务实”:20B 模型通过分组查询注意力(GQA,一种让多个查询头共享键值对、减少 KV Cache 显存占用的注意力机制变体)将推理成本压到接近 7B 的水平,配合官方自研 LMDeploy 推理框架可完成 4bit 量化部署。相比 Llama 系列以英文生态为主、ChatGLM 部分版本商用受限,InternLM2 在中文商用场景中具备更低的部署门槛。

安装与环境配置:3 步就绪

前置条件:Linux/macOS/Windows 均可,建议 Python 3.10+,NVIDIA GPU 建议显存 16GB 以上(7B 全精度推理)或 8GB 以上(4bit 量化)。CUDA 版本 11.8 或 12.x 均可,无 GPU 环境可先用 CPU 跑通推理流程(速度较慢)。

步骤一:安装依赖。 核心依赖为 transformers 与 ModelScope/HuggingFace Hub,国内网络环境推荐 ModelScope 下载模型。

步骤二:下载模型权重。 使用 ModelScope CLI 一条命令拉取,可断点续传。对话场景必须选择 internlm2-chat-7b 这类带 chat 后缀的变体,base 变体不具备指令遵循能力。

步骤三:验证加载。 加载模型并打印配置信息,确认权重路径与依赖版本无误。

bash8 行
# 1) 安装依赖(transformers 需 >=4.34,建议 4.38+)pip install transformers==4.38.2 modelscope sentencepiece accelerate # 2) 国内网络用 ModelScope 下载,断点续传modelscope download --model Shanghai_AI_Laboratory/internlm2-chat-7b # 3) 验证加载:打印 hidden_size(7B 为 4096)python -c "from transformers import AutoModel; m=AutoModel.from_pretrained('./internlm2-chat-7b', trust_remote_code=True); print(m.config.hidden_size)"

快速上手:10 分钟跑通第一个对话

快速上手的思路是:加载 chat 变体权重 → 初始化 tokenizer 与模型 → 调用 model.chat() 方法完成带历史记录的对话。InternLM2 在 HuggingFace Transformers 中采用 trust_remote_code=True 加载方式,模型内部封装了对话模板与历史管理逻辑,无需手动拼接特殊 token,降低了使用门槛。

操作步骤:

1. 将模型权重放置于本地路径(如上一步下载的 ./internlm2-chat-7b),或直接用 HuggingFace 路径名 internlm/internlm2-chat-7b。

2. 在 Python 环境中运行下述脚本,建立 history 列表维护多轮对话。

3. 输入问题观察输出,model.chat() 会自动返回 (response, new_history),将 new_history 传入下一轮即可。

进阶技巧:设置 model.generation_config.max_new_tokens 控制输出长度;需要严格 JSON 输出时可在 prompt 中显式指定格式,并配合 model.chat(..., tools=...) 参数定义工具函数以触发 Agent 模式(详见官方文档工具调用章节)。

python18 行
from transformers import AutoModelForCausalLM, AutoTokenizer model_path = "./internlm2-chat-7b"   # 或 "internlm/internlm2-chat-7b"tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)model = AutoModelForCausalLM.from_pretrained(    model_path,    trust_remote_code=True,    torch_dtype="auto",    device_map="auto",).eval() history = []while True:    query = input("用户: ")    if query.strip() in ("exit", "quit"):        break    response, history = model.chat(tokenizer, query, history=history)    print(f"InternLM2: {response}")

核心能力详解:4 大支柱

支柱一:200K 超长上下文。 相比第一代 8K 窗口,InternLM2 将理论上下文上限提升 25 倍,可覆盖论文全文、完整代码仓库、长合同等场景。实现依赖对 RoPE 位置编码与训练数据的协同优化。实际使用建议在交互前先将长文档切块并做检索定位,避免无关 token 稀释注意力。官方在长文本摘要、多文档问答的示例中展示了该能力的稳定表现。

支柱二:原生工具调用。 chat 变体在训练中学习了结构化的动作输出格式:模型以「思考 → 动作 → 观察 → 回答」的轨迹生成内容,工具调用封装在 <|action_start|> 与 <|action_end|> 标记之间。开发者只需在对话中传入工具描述(函数名、参数、用途),模型即可自主决定何时调用哪个函数并解析返回结果。这使 InternLM2 可直接作为 Agent 的推理内核,无需外挂提示词工程框架。

支柱三:数学推理强化。 预训练阶段在通用语料基础上增加了数学与代码数据的比例,并通过“思维链”格式的监督微调让模型输出逐步推导过程。结合工具调用能力,模型可以调用计算器或代码解释器验证数值结果,显著降低算术错误率。该能力适用于教育辅导、金融测算、数据分析等强推理场景。实测对话中要求“分步计算并校验”时,模型会先列出公式再调用工具核对。

支柱四:高效的推理部署成本。 7B 与 20B 均采用 GQA 注意力结构,减少了 KV Cache 的显存占用和计算量,官方在多种推理场景下验证 20B 的推理成本接近于 7B。配合 LMDeploy 的 4bit 权重量化(W4A16),7B 模型可在 8GB 显存运行,20B 可在 24GB 显存运行,显著低于同等参数量的 Llama 系列部署门槛。

生产部署与监控:从上线到运维

部署方式一:LMDeploy 一键部署(推荐)。 LMDeploy 是官方推理框架,内置 Turbomind 高性能引擎,支持连续批处理(continuous batching)、KV Cache 量化与 4bit 权重量化。一条命令即可启动 OpenAI 兼容的 API 服务,业务侧无需改造即可对接。量化后的 7B 模型首 Token 延迟可控制在百毫秒级,适合对延迟敏感的在线业务。

部署方式二:vLLM 部署。 vLLM 通过 PagedAttention 将 KV Cache 按页管理,吞吐量高,适合离线批处理与高并发聚合场景。启动后同样暴露 OpenAI 兼容接口,可与现有监控体系(Prometheus metrics)直接集成,观测 QPS、TTFT(首 Token 延迟)与吞吐量。

可观测性。 两类部署均暴露 /metrics 端点提供性能指标。逐请求维度建议在调用层记录输入 token 数、输出 token 数、总延迟;质量维度建议对线上输出做流失采样(如 1% 抽样),用规则或小模型对回答进行相关性打分,防止模型在长上下文中出现“注意力迷失”导致的答非所问。

<p class="para-label">避坑清单:</p>

<ul class="dash-list"><li>国内网络 HuggingFace 直连下载失败:改用 ModelScope CLI 下载权重,再在代码中指定本地路径,断点续传且速度快数倍</li><li>显存不足崩溃(CUDA OOM):7B fp16 权重约 14GB,加激活与 KV Cache 需 25GB+;用 lmdeploy 4bit 量化(W4A16)可降至约 8GB,或直接在显存 16GB 的消费卡上选用 eval 风味的轻量变体</li><li>报错提示缺少 trust_remote_code 或模型自定义类:transformers 版本过旧导致,升级到 4.38+;若同时安装 flash-attn 与 triton 出现算子冲突,先卸载 flash-attn 再重装 transformers</li><li>把 base 模型当作对话模型使用:base 只做文本续写,不会遵循指令;必须使用 *-chat 变体才具备对话与工具调用能力</li><li>输入超过 200K 导致效果骤降:200K 是训练窗口上限而非无限容量的保证,超长输入应先用检索或摘要压缩,再按段落切片送入模型</li></ul>

bash7 行
pip install lmdeploy# 启动 OpenAI 兼容 API 服务,端口 23333lmdeploy serve api_server internlm/internlm2-chat-7b --backend turbomind --cache-max-entry-count 0.2# 另一终端验证curl http://localhost:23333/v1/chat/completions \  -H "Content-Type: application/json" \  -d '{"model": "internlm2-chat-7b", "messages": [{"role": "user", "content": "你好"}]}'
bash2 行
pip install vllmvllm serve internlm/internlm2-chat-7b --tensor-parallel-size 1 --max-model-len 32768
维度InternLM2Qwen1.5ChatGLM3Llama2
定位中英双语通用 LLM,强调长上下文与工具调用阿里中英双语通用于亿级模型系列智谱中英双语对话模型Meta 通用开源 LLM,英文主导
上下文长度200K(2.5 系列 7B 达 1M)32K128K4K(官方基础版)
类型约束Apache 2.0,可商用Apache 2.0,可商用开源 + 商用需申请Llama 社区许可,超 7 亿月活需授权
学习曲线中:官方文档与 LMDeploy 配套完善中:生态成熟,资料丰富中:OpenAI 兼容接口低-中:生态最广,教程最多
生态集成LMDeploy、vLLM、Transformers 直出vLLM、llama.cpp、ModelScope 原生vLLM、FastChat、LangChain 适配良好vLLM、llama.cpp、ollama 等全生态
生产部署官方 LMDeploy 量化+推理一体,可私有化阿里云 PAI 托管 + 自部署两相宜可自部署,智谱提供商业 APIAWS/Azure 托管 + 自部署
LicenseApache 2.0Apache 2.0商用需申请授权Llama 社区许可(有门槛)
适合谁中文 Agent/长文档场景、需完全私有化通用中文场景、已有阿里云环境需要商用对话产品、接受授权流程英文场景、全球生态兼容需求

选型建议:中文环境且对长文档、工具调用有刚需,优先 InternLM2(Apache 2.0 零门槛 + LMDeploy 压缩部署成本);已有阿里云资源或需要多尺寸覆盖可选 Qwen1.5;需要成熟商用 API 兜底可考虑 ChatGLM3;纯英文场景且重视全球生态则选 Llama2。同一场景建议用 InternLM2 的 7B 做前期验证,效果达标后平滑迁移到 20B 或 2.5 系列。

版本迭代

InternLM 系列每半年一次大版本升级。2023 年 7 月首代 InternLM-7B 发布(8K 上下文);2024 年 1 月 InternLM2 重写架构,上下文跃升至 200K 并引入工具调用与数学强化;2024 年 7 月 InternLM2.5 进一步强化 Agent 能力并将 7B 上下文扩展到 1M;2025 年 1 月继任者 InternLM3-8B 发布,代表架构进入第三代。选型时若无历史兼容需求,应直接采用 InternLM2.5 系列。

版本时间变化提升
InternLM-7B2023-07首代开源模型8K 上下文、中英双语、支持 GPTQ 量化
InternLM2 7B/20B2024-01架构重写200K 上下文、原生工具调用、数学推理强化、GQA 降低推理成本
InternLM2.5 7B/20B2024-07Agent 能力增强7B 上下文提升至 1M、内置代码解释器与 RAG 能力、工具调用稳定性提升
InternLM3-8B2025-01第三代架构精简模型体积、强化推理与对齐效率(继任者,非 2 系)
基准InternLM2-7BInternLM2-20BInternLM2.5-20B
MMLU65.880.2—引自官方 InternLM2 发布公告(2024-01),Base 版本分数
CMMLU———官方发布公告未公布可核对的整数分数,避免误写
GSM8K———官方技术报告中以图表演示,未公布可核对的整数分数
HumanEval———官方技术报告中以图表演示,未公布可核对的整数分数
结论

从 InternLM 到 InternLM2,上下文与工具能力是两条主线——200K 上下文打开长文档场景,结构化工具调用让 Agent 开发从“另起炉灶”变为“填参数调模型”。InternLM2.5 在 Agent 稳定性上进一步收敛,生产环境推荐直接选择 2.5 系列。评测方面,MMLU 分数确认 20B 相比 7B 有明显综合能力跃升;其余基准官方以图表呈现,引用前需核对原图。

AI 应用场景

长文档智能问答与知识管理

阶段:RAG 管道构建 / 文档智能

解决的问题:企业研报、技术文档、合同条款动辄数万字,传统关键词检索遗漏语义信息,人工阅读耗时巨大。InternLM2 的 200K 上下文可一次读入完整长文,配合向量检索做段落定位后生成带引用的回答,解决“模型答非所问”和“无法溯源”两大痛点。

具体案例:某券商研究团队将 500 页行业研报输入 InternLM2 长文本对话,用“总结第三章核心观点并列出关键数据”的指令生成摘要,单篇从人工通读的数十分钟压缩到分钟级,生成内容经分析师复核后直接进入日报流程。

数学与逻辑推理辅助

阶段:推理增强 / 教育内容生成

解决的问题:通用模型在数学运算上容易“一本正经算错”。InternLM2 的数学推理强化让模型输出分步推导过程,结合工具调用可主动执行公式计算并校验结果,显著降低数值错误率。

具体案例:在线教育平台用 InternLM2-chat-20B 自动生成数学习题的分步解析,解题过程从人工编写耗时以分钟计压缩到秒级输出结构化解答,教研组只需复核关键步骤,教辅内容生产效率提升数倍。

Agent 工具调用与业务自动化

阶段:Agent 编排 / 企业自动化

解决的问题:企业内部的查询、计算、工单处理等操作需反复调用多个系统 API。InternLM2 的原生工具调用能力让模型自主决定调用哪个函数、传入什么参数,并在得到结果后组织自然语言回复,替代硬编码的规则流程。

具体案例:某企业 IT 服务台用 InternLM2-Chat-7B 接入工单系统 API,员工用自然语言描述故障,模型自动检索历史工单、查询设备状态并生成处置建议,一线支持的一次解决率明显提升,人工坐席聚焦于模型无法覆盖的复杂问题。

常见误区

误区7B 模型不大,我的显卡有 8GB 显存,应该能直接跑起来吧?

正解InternLM2-7B 的 fp16 权重约 14GB,加上推理过程中的激活值与 KV Cache,全精度推理实际需要 25GB 左右显存。8GB 显存必须在部署时使用 LMDeploy 的 4bit 量化(W4A16),量化后权重降到约 4GB,才能正常运行。量化对 7B 模型的效果损耗在可接受范围内,不要因此放弃小显存部署方案。

为何常见:很多人按“参数量 × 2 字节”估算显存,忽略了激活值和 KV Cache 的占用,导致上线前才发现显存不足。

误区参数翻了三倍,显存和推理速度也应该翻三倍,20B 太贵了不划算。

正解InternLM2-20B 使用了 GQA 分组查询注意力,多个查询头共享键值对,KV Cache 的显存占用和计算量大幅下降。官方在多种推理场景下验证 20B 的推理成本接近 7B,配合量化后两者显存差距进一步缩小。实际场景中应以 LMDeploy 的实测数据(吞吐量、首 Token 延迟、显存占用)为准做选型,而非按参数量线性推算。

为何常见:用 Llama 时代的“参数量决定成本”思维套用新架构,忽略了注意力机制优化带来的结构性红利。

误区下载了 internlm2-base-7b,结果模型回答都是“续写”而不是对话,是不是模型坏了?

正解base 变体只经过预训练,没有经过指令微调与人类对齐,它的输出是“给定上文续写下文”,不具备遵循指令、多轮对话、工具调用的能力。需要对话必须下载 *-chat 变体,它额外经过了监督微调(SFT)与强化学习对齐。base 的正确用途是继续预训练、做领域适配微调或作为特征提取器。

为何常见:HuggingFace 模型列表中 base 和 chat 并列展示,不熟悉模型生命周期的开发者容易混淆“能续写”与“能对话”。

误区既然窗口有 200K,我把整个知识库文档都塞进去,模型不就什么都知道了吗?

正解200K 是训练时支持的最大窗口长度,不代表越长效果越好。超长输入时注意力分数会被长距离信息稀释,模型容易出现“中间遗忘”现象;同时输入长度与推理延迟、显存占用近似线性增长。工程上正确做法是结合检索(RAG)先定位相关段落,再截取 2K-8K 的有效片段送入模型,保证回答质量与响应速度。

为何常见:厂商宣传“200K 上下文”时强调上限数字,忽略了“长上下文 ≠ 高质量长上下文”这一工程常识。

误区我在 prompt 里写了一句“你可以调用天气 API”,模型就会自动去调用了吧?

正解InternLM2 的工具调用依赖训练时学到的结构化动作格式——模型在 <|action_start|> 与 <|action_end|> 标记之间输出 {"tool_name": "...", "parameters": {...}} 的 JSON 动作,开发者需按官方文档的 tools 参数格式传入函数定义(含名称、参数 schema、描述),并维护“动作-观察-回答”的循环解析逻辑。直接写在普通对话 prompt 中不会触发稳定的工具调用行为。

为何常见:把“模型有工具调用能力”误解为“任何文本都能触发”,忽略了训练数据中动作格式与推理循环的强绑定关系。

面试题

Q1. InternLM2 的最大上下文长度是多少?

单选题 · easy

  • A.8K
  • B.32K
  • C.200K← 正确答案
  • D.1M

答案:C。InternLM2 相比第一代 InternLM 的 8K 窗口提升至 200K,约可一次读入 30 万字中文内容。1M 是 InternLM2.5 系列中 7B 版本扩展后的上限,不属于 InternLM2 的初始规格。8K 是第一代参数,32K 是同期其他模型的配置。

Q2. 需要直接进行对话,应选择 InternLM2 的哪个变体?

单选题 · easy

  • A.base
  • B.eval
  • C.chat← 正确答案
  • D.sft

答案:C。chat 变体经过监督微调与对齐,具备指令遵循与多轮对话能力。base 只能做文本续写,eval 用于评测场景,sft 并非 InternLM2 官方发布的独立变体命名。

Q3. InternLM2-7B 全精度(fp16)推理大约需要多少显存?

单选题 · mid

  • A.8GB 上下
  • B.16GB 上下← 正确答案
  • C.40GB 上下
  • D.80GB 以上

答案:B。7B 的 fp16 权重约 14GB,加上激活值与 KV Cache,官方推荐的部署显存为 16GB 级别,实际预留建议 25GB 左右。8GB 需配合 4bit 量化;40GB 对应 20B 模型全精度;80GB 以上对应更大规模模型或超长上下文场景。

Q4. InternLM2 相比第一代 InternLM 的重要改进包括哪些?

多选题 · mid

  • A.上下文从 8K 提升到 200K← 正确答案
  • B.原生支持工具调用← 正确答案
  • C.强化数学推理能力← 正确答案
  • D.支持图像输入

答案:ABC。A、B、C 均为官方公布的 InternLM2 核心升级点。D 错误:InternLM2 是纯文本模型,多模态能力由同实验室的 InternVL 系列承担,不要把两个系列混为一谈。

Q5. 使用 HuggingFace Transformers 加载 InternLM2 时必须设置的关键参数是什么?

单选题 · mid

  • A.trust_remote_code=True← 正确答案
  • B.use_auth_token=True
  • C.load_in_8bit=True
  • D.device_map="cpu"

答案:A。InternLM2 依赖仓库内的自定义代码(对话模板与模型类),必须设置 trust_remote_code=True 才能正确加载。其余参数为可选项:use_auth_token 用于私有模型,load_in_8bit 是量化手段,device_map 默认即可。

Q6. LMDeploy 提供的免写代码对话演示命令是什么?

单选题 · hard

  • A.lmdeploy serve gradio← 正确答案
  • B.transformers chat
  • C.vllm serve webui
  • D.fastchat serve

答案:A。lmdeploy serve gradio 是官方内置的 Gradio 对话界面命令,指定模型路径即可启动网页交互。其余选项并非 InternLM2 官方默认工具链中的标准演示命令。

Q7. InternLM2 采用 GQA 分组查询注意力带来的主要收益是什么?

单选题 · hard

  • A.减少 KV Cache 显存占用← 正确答案
  • B.增加训练数据规模
  • C.扩大词表容量
  • D.提升预训练收敛速度

答案:A。GQA 让多个查询头共享键值对,直接减少 KV Cache 的显存占用和计算量,这也是 20B 推理成本接近 7B 的结构基础。它不改变训练数据规模、词表大小或收敛速度——这两项与注意力架构没有直接关系。

Q8. 关于 InternLM2 的 200K 上下文,下列说法正确的有哪些?

多选题 · hard

  • A.适合长文档摘要与代码库分析← 正确答案
  • B.输入过长时推理显存占用会上升← 正确答案
  • C.窗口内所有 token 的注意力权重均匀分布
  • D.可将 1M 文本全部塞入保证最佳效果

答案:AB。A 正确,200K 窗口为长文档场景打开空间;B 正确,输入 token 越多,激活与 KV Cache 占用越大。C 错误,注意力分数从来不是均匀分布,长距离信息容易被稀释;D 错误,200K 是窗口上限,超长输入应切片或检索压缩,直接塞入反而降低效果。

Q9. InternLM2 的开源协议是什么?

单选题 · easy

  • A.MIT
  • B.Apache 2.0← 正确答案
  • C.GPL 3.0
  • D.仅学术用途

答案:B。InternLM2 及其权重基于 Apache 2.0 协议开源,允许自由使用、修改与商用,仅需保留版权声明。MIT 与 GPL 均非官方协议,“仅学术用途”是部分其他模型的限制,与 InternLM2 无关。

Q10. 关于 InternLM2 在 Agent 工具调用场景中的能力,下列说法正确的有哪些?

多选题 · extreme

  • A.chat 变体训练了结构化动作输出格式← 正确答案
  • B.工具调用需按官方格式传入函数定义← 正确答案
  • C.base 变体同样具备稳定的工具调用能力
  • D.模型可在调用工具后生成自然语言回复← 正确答案

答案:ABD。A 正确,chat 变体学习的是「动作开始/结束」标记内的 JSON 动作输出;B 正确,需通过 tools 参数提供函数名、参数 schema 与描述;D 正确,模型遵循“思考→动作→观察→回答”循环。C 错误,base 变体未经过指令对齐,不具备稳定的工具调用能力。

参考来源