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 提供:

  1. 中文词表重设计:55,296 词表相比一代(49,953/49,954)大幅提升中文覆盖率
  2. 长上下文支持:标准 4K → 16K → 64K,满足文档理解、长文本生成等场景
  3. 完整模型生态:基座模型、指令精调模型、RLHF 对齐模型,适配不同任务
  4. 多种量化格式:GGUF(Q4_K_M 等)、AWQ,降低本地部署门槛
  5. 丰富部署方式: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,轻量下载

六、坑与注意

  1. 词表不兼容一代:本项目二代词表(55,296)与一代(49,953/49,954)不同,不可混用。一代的 tokenizer 无法正确处理二代模型输出。

  2. Alpaca-2 模板与一代不同:使用 [INST]...[/INST] 格式,不是一代的 ### Instruction: 格式。混用模板会导致输出乱码或性能骤降。

  3. 1.3B 模型不能单独使用:README 明确说明 1.3B 建议搭配投机采样(speculative decoding)与 7B/13B 一起使用,单独使用效果差。

  4. LoRA 模型必须合并:LoRA 版本(约 1.1GB/1.5GB)不能直接加载,必须先与原版 Llama-2-hf 合并为完整模型,参考项目 Wiki 的合并教程。

  5. 国内下载速度慢:HuggingFace 在国内访问慢,推荐使用 ModelScope(modelscope.cn)或百度网盘下载完整模型。

  6. 已推荐升级至三期:2024 年 4 月已发布 Chinese-LLaMA-Alpaca-3(基于 Llama-3),二期项目维护减弱,新项目建议直接用三期。

  7. 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 基座)是否更符合需求。