模型 / 数据集
ymcui/Chinese-LLaMA-Alpaca-2 avatar
ymcui/Chinese-LLaMA-Alpaca-2

Chinese-LLaMA-Alpaca-2:在 Llama-2 上重做中文词表与长上下文扩展

中文LLaMA-2 & Alpaca-2大模型二期项目 + 64K超长上下文模型 (Chinese LLaMA-2 & Alpaca-2 LLMs with 64K long context models)

7,117 个 Star559 个 ForkPythonApache-2.0
GitHub

秒懂

它是什么?
本文考察 ymcui/Chinese-LLaMA-Alpaca-2 项目:它基于 Llama-2 重新设计中文词表,提供 4K、16K、64K 上下文模型,并附带完整的训练与量化脚本。项目已停止更新,三代项目 Chinese-LLaMA-Alpaca-3 已发布,这是判断是否采用时必须先看清的事实。
适合谁用?
适合需要中文增量预训练或长上下文推理的团队,尤其是想基于 Llama-2 生态做二次开发、需要完整脚本参考的用户。不适合追求最新基础模型或长期维护支持的用户,因为项目已在 2024 年 4 月明确推荐迁移至三代。
能商用吗?
可以。Apache-2.0 是宽松许可证:你可以使用、修改并销售基于它的软件,只需保留版权和许可证声明。
还在维护吗?
在维护。仓库最近一次提交在 150 天前。
用什么语言写的?
主要是 Python(依据 GitHub 的语言统计)。

以上回答依据项目的 GitHub 数据(最近同步于 2026年9月15日)和我们的分析,不构成法律意见。

开源项目深度解析

为 Llama-2 的中文短板而生的二期项目

Llama-2 的词表以英文和拉丁语系为主,直接用于中文时,常用汉字会被切分成多个 token,编解码效率低,语义表达也受限。Chinese-LLaMA-Alpaca-2 要解决的就是这个问题。它在一期项目的基础上,针对 Llama-2 重新设计了一个大小为 55296 的词表,统一了基座模型和指令模型的词表,避免了一期里 LLaMA 与 Alpaca 词表不一致带来的混用麻烦。项目提供三类模型:基座模型 Chinese-LLaMA-2,用于继续预训练或作为特征提取器;指令精调模型 Chinese-Alpaca-2,用于对话;还有经过 RLHF 偏好对齐的 Chinese-Alpaca-2-RLHF,强调在价值观表现上的提升。目标用户很明确:需要中文能力较强、又希望保留 Llama-2 生态兼容性的开发者和研究者。

词表、注意力与上下文扩展的三层改动

项目的技术改动可以拆成三层。第一层是词表。原版 Llama-2 词表大小约 32000,本项目扩到 55296,新增的部分主要是中文字词。更大的词表意味着中文文本能被更完整地覆盖,但也会改变 embedding 矩阵的尺寸,所以模型不能直接加载原版权重,必须经过合并脚本。第二层是注意力机制。文档明确说所有模型都使用 FlashAttention-2 训练,这在长上下文场景下很关键,因为标准注意力在序列变长时显存占用是二次增长。第三层是上下文扩展。16K 版本基于位置插值 PI 和 NTK 方法,64K 版本基于 YaRN。项目还设计了一个自适应经验公式,宣称不需要针对不同上下文长度手动调整 NTK 超参。这一点降低了使用门槛,但也意味着用户需要信任这个公式在自身任务上的泛化性。

从下载到部署:合并、量化与加载

使用流程在 README 的“模型下载”和“推理与部署”章节有详细说明。实际动手时,第一步是从 Hugging Face 下载基座模型,第二步是运行项目提供的合并脚本,将原版 Llama-2 权重与新词表、增量权重合并。这一步不能跳过,因为词表维度不同。合并完成后,可以加载到 transformers 进行推理,也可以转为 llama.cpp 的 GGUF 格式做量化部署,项目在 v4.1 版本中加入了 imatrix 量化的 GGUF 模型和 AWQ 量化模型。对于长上下文模型,v4.1 起支持在 vLLM 中加载 YaRN 模型。命令行示例在 wiki 中有详细记录,例如使用 transformers 时需要设置 trust_remote_code=True,因为模型代码包含自定义的 YaRN 注意力实现。社区常见的做法是用 text-generation-webui 或 privateGPT 来跑 16K 模型做文档问答。

长上下文的真实代价与限制

64K 上下文听起来诱人,但文档没有回避它的代价。首先,只有 7B 规模提供了 64K 版本,13B 只有 16K 版本,更大的模型在长序列上训练和推理的显存成本太高。其次,长上下文模型是基于 PI 或 YaRN 扩展出来的,并非从头训练,所以模型在 64K 长度上的表现并非均匀。文档提到 16K 模型可以通过 NTK 方法进一步扩展到 24K 以上,但超过训练范围后,质量会下降,这是位置编码外推的固有问题。另一个限制是推理速度。即使有 FlashAttention-2,64K 序列的推理仍然需要大量显存,普通个人电脑即使量化后也难以流畅运行。项目推荐用 vLLM 加速,但 vLLM 对 YaRN 的支持是后来才加入的,版本匹配需要留意。如果你只是做短文本对话,64K 模型并不比 4K 标准版更聪明,反而可能因为扩展训练而牺牲部分短上下文性能。

与一代和三代的差异:为什么二代是过渡品

项目自身给出了清晰的代际定位。一期项目 Chinese-LLaMA-Alpaca 基于原始 LLaMA,词表是 49953,且 LLaMA 和 Alpaca 词表不统一。二期统一了词表,引入 FlashAttention-2 和 YaRN,这是主要进步。但 README 顶部显著位置写着三代项目 Chinese-LLaMA-Alpaca-3 已经发布,基于 Llama-3,推出了 8B 规模的模型,并推荐所有一二期用户升级。三代的基础模型更强,词表设计和训练数据也更新。如果你今天新启动一个项目,直接选择三代是更合理的路径,除非你有特殊原因必须用 Llama-2 架构,比如需要与现有 Llama-2 推理栈严格兼容。二代的独特价值在于它的发布日志和脚本是研究增量预训练、RLHF 和长上下文扩展的完整案例,这些资料在三代中未必有同样详细的记录。

维护状态与升级成本:一个明确的停止信号

仓库的活跃度数据给出了清晰的信号:最后一次代码推送是 2026 年 4 月,但那是仓库元数据的更新时间,实际上 v4.1 版本发布于 2024 年 1 月,之后没有新版本。README 在 2024 年 4 月 30 日宣布三代项目启动,并明确建议用户升级。这意味着二代处于维护冻结状态,新问题可能不会得到回复。对于采用者来说,升级成本取决于你如何使用。如果你只是用 transformers 加载模型做推理,迁移到三代需要换权重和可能的代码调整,因为 Llama-3 的架构与 Llama-2 有差异。如果你用了二代的训练脚本做增量预训练,那迁移成本更高,因为数据格式和超参可能需要重新适配。许可证是 Apache-2.0,允许商用和修改,但注意基础模型 Llama-2 本身有 Meta 的许可条款,商用前需要自行核对。

适用判断:谁该用,谁该绕开

这个项目适合两类人。一类是做中文 NLP 研究的人,想参考一个完整的开源流程,从词表扩充到 RLHF 再到长上下文扩展,每一步都有脚本和发布日志可查。另一类是需要在 Llama-2 生态里做中文应用的人,比如你已经在用 LangChain 或 privateGPT,需要 16K 上下文处理长文档,且不想等三代模型成熟。不适合的人也很明确:追求最新模型性能的,应该直接去三代项目;需要商业级长期支持的,这个项目已经停止更新,风险自担。在采用前,先跑通官方 wiki 里的合并和量化教程,用你自己的数据测一遍 16K 模型在长文本问答上的表现,再决定是否投入。这个项目最值得拿走的不是某个权重,而是它展示的如何把英文模型改造成中文模型的完整方法论。

编辑结论

适合需要中文增量预训练或长上下文推理的团队,尤其是想基于 Llama-2 生态做二次开发、需要完整脚本参考的用户。不适合追求最新基础模型或长期维护支持的用户,因为项目已在 2024 年 4 月明确推荐迁移至三代。采用前先确认两件事:其一,你的任务是否需要 64K 上下文,以及推理框架是否支持 YaRN 加载;其二,二代的 7B、13B 模型在中文能力上是否仍满足你的基准,否则直接评估三代项目。最终判断:这是一个技术文档价值高于模型使用价值的项目,读它的脚本与发布日志比直接部署它的权重更有收益。

官方来源

  1. Issues
  2. License: Apache-2.0
  3. README
  4. Releases
  5. ymcui/Chinese-LLaMA-Alpaca-2 on GitHub
社区笔记

社区笔记