ymcui/Chinese-LLaMA-Alpaca-2 · 上手攻略
- 仓库:ymcui/Chinese-LLaMA-Alpaca-2
- 链接:https://github.com/ymcui/Chinese-LLaMA-Alpaca-2
- 分类:ai
- 作者:Tom
- 更新:2026-07-15
一、是什么
Chinese-LLaMA-Alpaca-2 是基于 Meta 开源可商用模型 Llama-2 开发的中文 LLaMA-2 与 Alpaca-2 大模型二期项目,由 ymcui 团队维护。它在原版 Llama-2 基础上重新设计了中文词表(55,296 个 token),并使用大规模中文语料进行增量预训练和指令精调,显著提升了模型的中文能力。
主要模型分支
| 系列 | 模型 | 参数规模 | 上下文 | 说明 |
|---|---|---|---|---|
| 基座 | Chinese-LLaMA-2 | 1.3B / 7B / 13B | 4K(NTK 扩展至 12K-18K) | 文本续写 |
| 指令 | Chinese-Alpaca-2 | 1.3B / 7B / 13B | 4K(NTK 扩展至 12K-18K) | 问答/聊天 |
| 16K 长上下文 | Chinese-LLaMA-2-16K / Chinese-Alpaca-2-16K | 7B / 13B | 16K(NTK 可扩至 24K-32K) | 长文本任务 |
| 64K 超长上下文 | Chinese-LLaMA-2-64K / Chinese-Alpaca-2-64K | 7B | 64K(YaRN 方法) | 超长文档 |
| 偏好对齐 | Chinese-Alpaca-2-RLHF | 1.3B / 7B | 4K | 价值观对齐 |
⚠️ 本项目已于 2024 年 4 月升级至三期(基于 Llama-3),作者推荐新用户直接使用 Chinese-LLaMA-Alpaca-3。二期项目仍具参考价值,适合研究 Llama-2 生态的用户。
二、解决什么问题
原生 Llama-2 对中文支持弱(词表仅覆盖少量中文,编解码效率低),需要大量中文语料增量训练才能实用。Chinese-LLaMA-Alpaca-2 提供:
- 中文词表重设计:55,296 词表相比一代(49,953/49,954)大幅提升中文覆盖率
- 长上下文支持:标准 4K → 16K → 64K,满足文档理解、长文本生成等场景
- 完整模型生态:基座模型、指令精调模型、RLHF 对齐模型,适配不同任务
- 多种量化格式:GGUF(Q4_K_M 等)、AWQ,降低本地部署门槛
- 丰富部署方式:transformers、llama.cpp、vLLM、LangChain、text-generation-webui 等
三、快速安装
环境依赖
# 推荐 Python 3.9+,CUDA 11.7+(如需 GPU 推理)
pip install torch transformers accelerate sentencepiece protobuf
# FlashAttention-2(如需加速训练或长上下文推理)
pip install flash-attn
下载模型(以 7B 指令模型为例)
推荐直接下载 HuggingFace 完整模型,无需合并步骤:
# 方法一:huggingface-cli 下载
huggingface-cli download hfl/chinese-alpaca-2-7b --local-dir ./models/chinese-alpaca-2-7b
# 方法二:git clone
git lfs install
git clone https://huggingface.co/hfl/chinese-alpaca-2-7b ./models/chinese-alpaca-2-7b
# 方法三:ModelScope(国内推荐)
git clone https://modelscope.cn/models/ChineseAlpacaGroup/chinese-alpaca-2-7b ./models/chinese-alpaca-2-7b
GGUF 量化模型下载
本地 CPU/GPU 轻量部署推荐 GGUF 格式(如 Q4_K_M):
# Chinese-Alpaca-2-7B Q4_K_M 量化版本
huggingface-cli download hfl/chinese-alpaca-2-7b-gguf chinese-alpaca-2-7b-q4_k_m.gguf --local-dir ./models
四、核心用法
4.1 transformers 推理(基础)
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
model_path = "./models/chinese-alpaca-2-7b"
tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
model_path,
torch_dtype=torch.float16,
device_map="auto",
trust_remote_code=True
)
# Alpaca-2 必须使用指令模板
input_text = """[INST] <<SYS>>
你是一个有帮助的助手。
<</SYS>>
用一句话解释量子计算。 [/INST]"""
inputs = tokenizer(input_text, return_tensors="pt").to(model.device)
outputs = model.generate(**inputs, max_new_tokens=256, temperature=0.7)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
⚠️ 注意:Chinese-Alpaca-2 使用 Llama-2-Chat 格式模板
[INST]...[/INST],与一代 Chinese-Alpaca 的 Stanford Alpaca 模板不兼容,不要混用。
4.2 llama.cpp 本地量化部署(CPU)
# 1. 安装 llama.cpp
git clone https://github.com/ggerganov/llama.cpp.git
cd llama.cpp && mkdir build && cd build && cmake .. && cmake --build . --config Release
# 2. 量化(如已下载 GGUF 文件,跳过此步)
./quantize ./models/chinese-alpaca-2-7b-q4_k_m.gguf ./models/chinese-alpaca-2-7b-q4_k_m/quant.gguf Q4_K_M
# 3. 运行聊天
./main -m ./models/chinese-alpaca-2-7b-q4_k_m.gguf -n 512 -t 8 --temp 0.7 \
-i -ins --mlx
4.3 vLLM 高效推理(GPU,生产级)
from vllm import LLM, SamplingParams
llm = LLM(model="hfl/chinese-alpaca-2-7b", tensor_parallel_size=1)
sampling_params = SamplingParams(temperature=0.7, max_tokens=256)
# 使用 Llama-2-Chat 模板
prompt = """[INST] <<SYS>>
你是一个有帮助的助手。
<</SYS>>
解释什么是大语言模型。 [/INST]"""
outputs = llm.generate([prompt], sampling_params)
print(outputs[0].outputs[0].text)
4.4 LangChain 调用
from langchain.llms import HuggingFacePipeline
from langchain.chains import ConversationChain
from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline
model_id = "./models/chinese-alpaca-2-7b"
tokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(model_id, torch_dtype=torch.float16, device_map="auto")
pipe = pipeline("text-generation", model=model, tokenizer=tokenizer, max_new_tokens=256)
llm = HuggingFacePipeline(pipeline=pipe)
chain = ConversationChain(llm=llm)
response = chain.run("用Python写一个快速排序")
print(response)
4.5 长上下文模型(16K/64K)
64K 模型适用于超长文档摘要、代码库分析等场景:
# Chinese-Alpaca-2-7B-64K 使用方式与标准版相同
# 仅需下载对应的 64K 版本模型
model_id = "hfl/chinese-alpaca-2-7b-64k"
# 推理时上下文窗口自动支持 64K
⚠️ 长上下文注意:16K 模型使用 PI(位置插值)+ NTK 扩展;64K 模型使用 YaRN 方法。两者扩展机制不同,16K 模型不可强行扩展至 64K。
五、典型适用场景
| 场景 | 推荐模型 | 说明 |
|---|---|---|
| 中文问答/聊天机器人 | Chinese-Alpaca-2-7B | 标准指令模型,即下即用 |
| 长文本摘要/文档理解 | Chinese-Alpaca-2-7B-64K | 64K 上下文支持长文档 |
| 代码辅助 | Chinese-LLaMA-2-7B + code data | 基座模型 + 代码数据微调 |
| 本地部署(低配置) | GGUF Q4_K_M + llama.cpp | 4GB 显存可运行 7B |
| 价值观敏感场景 | Chinese-Alpaca-2-7B-RLHF | RLHF 版本价值观对齐更好 |
| 科研/继续微调 | LoRA 版本 + 合并工具 | 1.1GB LoRA,轻量下载 |
六、坑与注意
-
词表不兼容一代:本项目二代词表(55,296)与一代(49,953/49,954)不同,不可混用。一代的 tokenizer 无法正确处理二代模型输出。
-
Alpaca-2 模板与一代不同:使用
[INST]...[/INST]格式,不是一代的### Instruction:格式。混用模板会导致输出乱码或性能骤降。 -
1.3B 模型不能单独使用:README 明确说明 1.3B 建议搭配投机采样(speculative decoding)与 7B/13B 一起使用,单独使用效果差。
-
LoRA 模型必须合并:LoRA 版本(约 1.1GB/1.5GB)不能直接加载,必须先与原版 Llama-2-hf 合并为完整模型,参考项目 Wiki 的合并教程。
-
国内下载速度慢:HuggingFace 在国内访问慢,推荐使用 ModelScope(modelscope.cn)或百度网盘下载完整模型。
-
已推荐升级至三期:2024 年 4 月已发布 Chinese-LLaMA-Alpaca-3(基于 Llama-3),二期项目维护减弱,新项目建议直接用三期。
-
GGUF 量化选择:Q4_K_M 是精度与大小平衡较好的选择;Q8_0 精度更高但体积大一倍;Q2_K 体积最小但有明显质量损失。
七、与同类对比
| 项目 | 基础模型 | 中文词表 | 最大上下文 | 量化支持 | 适合场景 |
|---|---|---|---|---|---|
| Chinese-LLaMA-Alpaca-2 | Llama-2 | 55,296 | 64K | GGUF/AWQ | 中文对话/长文本 |
| Chinese-LLaMA-Alpaca(一代) | LLaMA | 49,953 | 32K(NTK) | GGUF | 轻量中文 |
| Chinese-LLaMA-Alpaca-3 | Llama-3 | — | 128K | GGUF/AWQ | 最新中文(推荐) |
| Baichuan-2 | Baichuan2 | — | 4K/32K | ✅ | 对话/生成 |
| Qwen | Qwen | — | 32K+ | ✅ | 对话/代码 |
💡 二期相比一期核心改进:词表从 49K 扩至 55K(中文效率↑)、引入 FlashAttention-2(训练加速)、增加 RLHF 对齐版本、64K 超长上下文。三期基于 Llama-3,性能更强,新项目建议优先考虑三期。
八、一句话推荐结论
中文 LLaMA-2 本地化首选——词表针对中文优化、量化生态成熟、16K/64K 长上下文覆盖主流场景,适合需要在本地或私有环境部署中文大模型的用户;但新项目建议评估 Chinese-LLaMA-Alpaca-3(Llama-3 基座)是否更符合需求。