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 模型中文化并开源的重量级项目。它的核心工作是两件事:

  1. 中文词表扩充——原版 LLaMA 词表偏英文,中文编码效率极低(一个汉字 = 多个 subword),该项目将中文词表扩充至约 5 万 token,显著提升中文处理效率
  2. 指令精调(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


典型适用场景

  1. 本地中文问答/对话机器人——不愿使用付费 API,追求数据隐私
  2. 中文 NLP 二次训练基座——用中文 LLaMA 做持续预训练或指令微调
  3. 低资源配置推理——CPU 笔记本运行 7B Q4 模型,33B 量化版在高端台式机也可跑
  4. 学术研究——完整的预训练数据 + 训练代码 + 评估基准,适合中文 LLM 研究
  5. 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,可商用、中文效果更好),只需要同样一套使用逻辑,省心得多。