ymcui/Chinese-LLaMA-Alpaca · 上手攻略
- 仓库:ymcui/Chinese-LLaMA-Alpaca
- 链接:https://github.com/ymcui/Chinese-LLaMA-Alpaca
- 分类:大语言模型(LLM)
- 作者:Tom
- 更新:2026-07-15
它是什么
ymcui/Chinese-LLaMA-Alpaca 是最早一批将 Meta LLaMA 模型中文化并开源的重量级项目。它的核心工作是两件事:
- 中文词表扩充——原版 LLaMA 词表偏英文,中文编码效率极低(一个汉字 = 多个 subword),该项目将中文词表扩充至约 5 万 token,显著提升中文处理效率
- 指令精调(Alpaca)——在扩充词表后的中文 LLaMA 基础上,用中文指令数据进行 SFT 微调,使模型能理解并执行中文指令
该项目不是一个可以直接使用的聊天模型,而是一个中文 LLaMA 底座 + 中文 Alpaca 指令模型的完整训练体系,附带量化部署方案。
⚠️ 重要:Chinese-LLaMA-Alpaca 本身发布的是 LoRA 权重(理解为"补丁"),不是完整模型。需要搭配原版 LLaMA 权重合并后才能使用。项目另有独立分支 Chinese-LLaMA-Alpaca-2(基于 Llama-2)和 Chinese-LLaMA-Alpaca-3(基于 Llama-3),建议新用户优先使用新版本。
解决什么问题
| 问题 | 原版 LLaMA | Chinese-LLaMA |
|---|---|---|
| 中文词表小 | ~32k token,中文编码低效 | ~50k token,中文效率大幅提升 |
| 中文训练数据少 | 主要是英文语料 | 120G+ 中文预训练语料 |
| 不懂中文指令 | 只支持英文 alpaca-data | 中文指令数据精调 |
| 无法本地 CPU 运行 | 7B FP16 = 13GB,33B = 60GB | 4bit 量化后 7B = 3.9GB,33B = 17GB,笔记本 CPU 可跑 |
一句话:让 LLaMA 真正能用中文,而且能在个人电脑上跑起来。
快速安装
方式一:直接使用 HuggingFace 已有合并模型(推荐)
如果只需要推理,不需要合并步骤,可以直接用 HuggingFace 上已合并好的模型:
# 需要先安装 transformers 和 peft
pip install transformers peft torch
# 7B 指令模型(Alpaca-Plus-7B)
# 来源:https://huggingface.co/hfl/chinese-alpaca-plus-lora-7b
# 注意:这是 LoRA 权重,需配合原版 LLaMA 使用
⚠️ 重要:原版 LLaMA 权重需要去 Meta 官网申请(不可商用)。如果申请不到,可以直接使用已合并好的 HuggingFace 模型,或者使用国内镜像(ModelScope)。
方式二:自己合并 LoRA + LLaMA 权重
详细步骤见 GitHub Wiki 合并教程,核心步骤:
# 1. 克隆项目
git clone https://github.com/ymcui/Chinese-LLaMA-Alpaca.git
cd Chinese-LLaMA-Alpaca
# 2. 下载 LoRA 权重(如 chinese-alpaca-plus-lora-7b)
# 3. 准备好原版 LLaMA 权重(需自行申请)
# 4. 运行合并脚本
python scripts/merge_llama_with_chinese_lora.py \
--base-model path/to/llama-7b \
--lora-model path/to/chinese-alpaca-plus-lora-7b \
--output-dir ./merged-model
量化部署(个人电脑无需高端显卡)
推荐使用 llama.cpp 进行 4-bit 量化,可在 CPU 或笔记本上运行:
# 下载 llama.cpp
git clone https://github.com/ggerganov/llama.cpp.git
cd llama.cpp
mkdir build && cd build
cmake ..
make -j4
# 量化合并后的模型(FP16 → Q4_K_M)
./quantize ./merged-model/ggml-model-f16.bin ./merged-model/ggml-model-q4_k_m.bin Q4_K_M
⚠️ 量化后 7B 模型约 3.9GB,33B 模型约 17.2GB,普通电脑的内存/显存可以放下。
核心用法
1. 使用 transformers 加载(最通用)
from transformers import AutoTokenizer, AutoModelForCausalLM
# 加载合并后的模型
model_path = "./merged-model/chinese-alpaca-plus-7b"
tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
model_path,
trust_remote_code=True
).half().cuda() # FP16,需要 ~14GB 显存
model.eval()
# Alpaca 指令模式(推荐 Pro/Plus 版本)
prompt = "给定以下症状:发烧、咳嗽、乏力。请问我可能是什么病?"
inputs = tokenizer(prompt, return_tensors="pt").to("cuda")
outputs = model.generate(
**inputs,
max_new_tokens=512,
temperature=0.7,
top_p=0.9
)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
⚠️ 注意:Plus/Pro 版 Alpaca 模型使用了指令模板,不能用纯续写方式调用,必须加
--with_prompt参数(web demo / HF 推理代码内嵌了此逻辑)。
2. 使用 llama.cpp(CPU 本地推理)
# 对话模式(Alpaca 模型)
./main -m ./merged-model/ggml-model-q4_k_m.bin \
-i \
--color \
-r "用户:" \
-p "用户: 你好\n小助手:"
# 非对话续写(LLaMA 基座模型)
./main -m ./merged-model/ggml-model-q4_k_m.bin \
-p "春天的花开得像"
3. 使用 LangChain
from langchain.llms import HuggingFacePipeline
from langchain import PromptTemplate, LLMChain
llm = HuggingFacePipeline.from_model_id(
model_id="./merged-model/chinese-alpaca-plus-7b",
task="text-generation",
model_kwargs={
"temperature": 0.7,
"max_new_tokens": 256
}
)
template = """用户: {question}
小助手:"""
prompt = PromptTemplate(template=template, input_variables=["question"])
llm_chain = LLMChain(prompt=prompt, llm=llm)
response = llm_chain.run("为什么天空是蓝色的?")
print(response)
4. 一键 Web Demo(Gradio)
python scripts/inference/gradio_demo.py \
--model_path ./merged-model/chinese-alpaca-plus-7b
⚠️ 如果模型路径是 LoRA 权重而非合并模型,需要在
--model_path同时指定 base model 和 lora model,具体参考 Wiki。
典型适用场景
- 本地中文问答/对话机器人——不愿使用付费 API,追求数据隐私
- 中文 NLP 二次训练基座——用中文 LLaMA 做持续预训练或指令微调
- 低资源配置推理——CPU 笔记本运行 7B Q4 模型,33B 量化版在高端台式机也可跑
- 学术研究——完整的预训练数据 + 训练代码 + 评估基准,适合中文 LLM 研究
- Embedding + 知识库——配合 LangChain / privateGPT 做本地知识增强
坑与注意
| 坑 | 说明 |
|---|---|
| Chinese-LLaMA-Alpaca 基于原始 LLaMA | LLaMA License 禁止商用,如果要商用需用 Chinese-LLaMA-Alpaca-2(基于 Llama-2,可商用)或 Chinese-LLaMA-Alpaca-3(基于 Llama-3) |
| 是 LoRA 权重,不是完整模型 | 必须合并原版 LLaMA,原版 LLaMA 需自行向 Meta 申请 |
| Alpaca 基础版回复偏短 | 项目明确建议使用 Pro/Plus 版解决回复长度问题 |
| Plus 版 Alpaca 合并需要两个 LoRA | Alpaca-Plus 需要同时有 LLaMA-Plus 和 Alpaca-Plus 权重,比基础版步骤复杂 |
| 词表 pad token 不同 | Alpaca 比 LLaMA 多一个 pad token,请勿混用两套词表 |
| 合并需要较大磁盘空间 | 33B 模型合并后约 60GB(FP16),确保有足够空间 |
| llama.cpp 4K context | 通过 PR #705 等优化现已支持更长 context,但需要特定启动参数 |
| 中文 Llama-2 / Llama-3 已独立成新项目 | 一代(原始 LLaMA)现已不是活跃维护方向,新用户应从 v2 / v3 开始 |
与同类对比
| 模型 | 中文词表优化 | 指令精调 | 量化后体积(7B) | CPU 可跑 | 商用 | 最新版本 |
|---|---|---|---|---|---|---|
| Chinese-LLaMA-Alpaca(一代) | ✅ 是 | ✅ 是 | 3.9GB(Q4) | ✅ | ❌(LLaMA 许可) | 已停止活跃更新 |
| Chinese-LLaMA-Alpaca-2 | ✅ 是 | ✅ 是 | ~4GB(Q4) | ✅ | ✅(Llama-2 许可) | 活跃维护 |
| Chinese-LLaMA-Alpaca-3 | ✅ 是 | ✅ 是 | ~4GB(Q4) | ✅ | ✅(Llama-3 许可) | 最新 |
| ChatGLM-6B | ✅ 原生中文 | ✅ 是 | ~6GB(INT4) | ⚠️ 勉强 | ✅ | 活跃 |
| Qwen-7B | ✅ 原生中文 | ✅ 是 | ~7GB(INT4) | ❌ | ✅ | 活跃 |
| Baichuan-7B | ✅ 原生中文 | ✅ 是 | ~4GB(INT4) | ✅ | ✅ | 活跃 |
Chinese-LLaMA-Alpaca 的核心价值:开创了中文 LLaMA 生态,是最早可用的中文 LoRA 方案之一,但新用户强烈建议从 v2 或 v3 开始,避免版权问题。
一句话推荐结论
Chinese-LLaMA-Alpaca 是中文开源 LLaMA 的奠基项目,但对新用户来说已经不是最优选择——直接用 Chinese-LLaMA-Alpaca-3(基于 Llama-3,可商用、中文效果更好),只需要同样一套使用逻辑,省心得多。