Chinese-LLaMA-Alpaca:用 LoRA 補丁把中文塞進 LLaMA 的一期項目
中文LLaMA&Alpaca大语言模型+本地CPU/GPU训练部署 (Chinese LLaMA & Alpaca LLMs)
秒懂
- 它是什麼?
- 這個項目不發布完整模型權重,只發布可與原版 LLaMA 合併的 LoRA 補丁,並附上預訓練、指令精調與 CPU 量化部署腳本。它的價值在於中文詞表擴充與本地推理路徑,代價是整條流程都綁在 Meta 的原始授權上。
- 適合誰用?
- 如果你手上已經有合規取得的原版 LLaMA 權重,並且需要一個中文續寫或指令模型跑在沒有 GPU 的機器上,這個倉庫提供的 LoRA 補丁、合併腳本與 llama.cpp 量化路徑是完整可用的。如果你沒有 LLaMA 原始權重、或需要商用授權,這個專案從第一步就走不通,README 明確寫著官方 LLaMA 禁止商用,這裡發布的 LoRA 無法單獨使用。
- 可以商用嗎?
- 可以。Apache-2.0 是寬鬆授權:你可以使用、修改並販售以它為基礎的軟體,只需保留著作權與授權聲明。
- 還在維護嗎?
- 有在維護。儲存庫最近一次提交在 150 天前。
- 用什麼語言寫的?
- 主要是 Python(依據 GitHub 的語言統計)。
以上回答依據專案的 GitHub 資料(最近同步於 2026年9月15日)與我們的分析,不構成法律意見。
開源專案深度解析
它解決的不是「中文模型不夠好」,而是「中文在 LLaMA 裡太貴」
原版 LLaMA 的詞表以英文為主,中文文本進去之後被切得很碎。同一個句子,中文佔用的 token 數遠多於英文,直接後果是上下文長度被吃掉、推理變慢、訓練成本上升。專案引用的技術報告標題是 Efficient and Effective Text Encoding for Chinese LLaMA and Alpaca,處理的正是編碼效率這一層。做法是在原版 LLaMA 的基礎上擴充中文詞表,再用中文數據做二次預訓練,README 的說法是進一步提升中文基礎語義理解能力。
目標讀者有兩類。一類是想在中文 NLP 上做開放研究的人,倉庫提供了預訓練腳本與指令精調腳本,可以按需要繼續訓練。另一類是只想在自己筆電上跑一個中文模型試試的人,README 把本地 CPU/GPU 量化部署列為主要內容之一,並附了 llama.cpp、text-generation-webui、LlamaChat、LangChain、privateGPT 的接入說明。這兩類人的需求差很遠,後面會看到倉庫對兩者的支持程度並不平均。
為什麼下載到的是補丁而不是模型
這是整個專案最容易被忽略、卻最影響採用決策的一點。README 在模型下載章節開頭就寫明,Facebook 官方發布的 LLaMA 模型禁止商用,且官方沒有正式開源權重,因此這裡發布的是 LoRA 權重,README 的比喻是原 LLaMA 模型上的一個補丁,兩者合併才能得到完整權重。文件同時直說,這些 LoRA 模型無法單獨使用,必須搭配原版 LLaMA。
所以倉庫裡沒有可以直接 from_pretrained 的完整模型。你拿到的是適配器,加上一套把適配器疊回基座的流程。這個設計不是技術偏好,而是授權現實的產物:LoRA 的體積小、可獨立分發,而完整權重的分發會踩到 Meta 的條款。理解這一點之後,很多後續限制就順理成章了,例如為什麼合併步驟被標為重要、為什麼不同參數量需要對應的原版 LLaMA、以及為什麼升級模型版本時你往往要重新走一遍合併。
中文 LLaMA 與中文 Alpaca 是兩種東西,選錯等於選錯工具
倉庫把兩條產品線分得很清楚。中文 LLaMA 是基座模型,用傳統 CLM 方式在無標註通用語料上訓練,適用場景是文本續寫,也就是給定上文讓模型生成下文;它不適合指令理解與多輪聊天。中文 Alpaca 是在基座之上用有標註指令數據做指令精調,適用問答、寫作、建議,以及多輪上下文理解,但不適合無限制的自由文本生成。
這個差異會直接反映在啟動參數上,選錯表現會很差。llama.cpp 下跑中文 LLaMA 要用 -p 參數指定上文,跑中文 Alpaca 要用 -ins 參數啟動指令理解加聊天模式。Hugging Face 推理腳本 scripts/inference/inference_hf.py 跑 Alpaca 時要加 --with_prompt,跑 LLaMA 則不需要額外啟動參數。LlamaChat 載入模型時要分別選 LLaMA 或 Alpaca。text-generation-webui 的說明更直接:中文 LLaMA 不適合 chat 模式,而 Alpaca 可以用 --cpu 在沒有顯卡的情況下運行。
還有一個細節值得記住:兩者的詞表大小不同。中文 LLaMA 是 49953,中文 Alpaca 是 49954,多出來的那一個是 pad token。這意味著兩者的 tokenizer 不能隨意互換。
模型規模與 Plus、Pro 的取捨
目前已開源的版本涵蓋 7B、13B、33B,每個規模下都有基礎版、Plus 版、Pro 版。README 沒有逐項解釋三者的訓練差異,只在 v5.0 的發布說明裡寫到 Pro 系列顯著提升回覆長度和質量,同時發布了 Plus-33B 系列。對於想選型的人來說,這裡的資訊是不足的:倉庫沒有給出各版本在具體任務上的對照,只提供了 C-Eval 解碼腳本與 C-Eval 結果作為參考入口,以及一個線上的 llm-arena 競技場。
從工程角度看,33B 的意義在於它是這個一期專案的天花板,而 7B 的意義在於它能塞進消費級硬體。中間的 13B 是最尷尬的一檔,量化後的記憶體佔用與推理速度都需要你自己量。倉庫附了一段本地 CPU 量化部署後的體驗錄屏,但那是演示素材,不是可複現的基準,不要拿它當容量規劃依據。
跑起來的實際步驟與關鍵參數
流程分三段。第一段是取得原版 LLaMA 並與 LoRA 合併,README 把合併模型列為重要章節,並提供低資源模型合併腳本,這對記憶體不足以一次載入完整權重的機器有實際意義。第二段是量化,第三段才是推理或部署。
推理這一段有幾個具體入口。Hugging Face 路線用 scripts/inference/inference_hf.py,Alpaca 需要加 --with_prompt。想做網頁介面用 scripts/inference/gradio_demo.py,README 說明直接提供 Alpaca 模型位置即可,支援多輪對話,這條路線不適用於中文 LLaMA。llama.cpp 路線按模型類型選 -p 或 -ins。text-generation-webui 在無顯卡時加 --cpu。倉庫另外提供 scripts/langchain 下的 LangChain 範例,以及在 v4.0 加入的 privateGPT 使用範例。
上下文長度方面,2023 年 6 月 30 日的記錄提到 llama.cpp 下支援 8K context 且無需修改模型,方法在討論區;transformers 下支援 4K 以上 context 的程式碼在 PR#705。這兩條都是社群討論與 PR,不是主線預設行為,使用前要有自己驗證的心理準備。
這個專案明確不適合誰
最硬的一條限制是授權。LoRA 無法單獨使用,你必須先有原版 LLaMA,而 README 引述的 Meta 條款禁止商用。任何需要商用授權的產品,這條路徑在第一步就斷了。倉庫自己的許可證是 Apache-2.0,但那只覆蓋倉庫裡的程式碼與腳本,不覆蓋合併後產生的模型權重,兩者不是同一件事。
第二條是維護狀態。倉庫本身沒有被歸檔,但 2024 年 4 月 30 日的新聞已經把用戶導向 Chinese-LLaMA-Alpaca-3,並寫明推薦所有一期、二期項目用戶升級至三代模型。2023 年 8 月的新聞同樣推薦一期用戶升級至二代。也就是說,這個倉庫是三代演進鏈的起點,而不是當前推薦的落腳點。新專案從這裡開始,等於主動選擇一個被上游建議遷出的分支。
第三條是任務邊界。中文 Alpaca 不適合無限制自由生成,中文 LLaMA 不適合指令理解與多輪聊天。把它們放到錯誤的任務上,得到的輸出品質下降不是調參能救的,那是訓練方式決定的。
與直接使用中文原生模型或二代專案的差別
同一個作者維護的 Chinese-LLaMA-Alpaca-2 是最直接的替代路徑,差別在基座:二代基於 LLaMA-2,README 的新聞條目建議一期用戶升級過去。對使用者的實際差別是,二代不需要你回頭去找一代的原始權重與合併流程,且是倉庫當前推薦的方向。如果你的目標只是拿到一個能跑的中文模型,繼續留在一期沒有技術理由。
另一條路是直接使用本身就以中文語料為主訓練的模型,不經過 LoRA 合併這一步。差別在資料流:Chinese-LLaMA-Alpaca 的架構是英文基座加中文補丁,優點是能複用 LLaMA 既有的英文能力,缺點是你永遠要多維護一層合併與版本對應關係。當基座授權或基座版本變動時,這一層就是你的維護成本。
至於 llama.cpp、text-generation-webui、LangChain 這些,它們是部署與串接的載體,不是替代方案。倉庫對它們的支持是接入說明,選擇哪一個取決於你要命令列、網頁還是應用整合。
維護成本與授權邊界
這個倉庫的維護成本主要不在程式碼,而在權重對應關係。每次換模型規模或版本,你都要確認對應的原版 LLaMA、正確的詞表大小、以及合併後是否與預期的推理參數匹配。低資源合併腳本的存在說明合併本身就是一個需要資源規劃的步驟,不是一行指令帶過的事。
授權層面,倉庫採用 Apache-2.0,但 README 對模型權重的描述是:官方 LLaMA 禁止商用,這裡發布的是 LoRA 補丁,兩者合併才能得到完整權重。這意味著倉庫的許可證與你最終產出的模型是兩套不同的權利狀態,不能因為看到 Apache-2.0 就推定合併後的模型可以商用。這不是法律意見,具體條款要自己讀 Meta 的原始授權文本,並在有商用需求時尋求專業意見。
最後一個具體的判斷依據:倉庫首頁最上方掛著三代專案的啟動公告,新聞區第一條也寫著推薦所有一期、二期項目用戶升級至三代模型。這個倉庫的定位因此很清楚,它是中文 LLaMA 系譜的歷史起點與方法論來源,適合拿來理解詞表擴充加 LoRA 這套做法,不適合當作 2026 年新專案的預設選項。
編輯結論
如果你手上已經有合規取得的原版 LLaMA 權重,並且需要一個中文續寫或指令模型跑在沒有 GPU 的機器上,這個倉庫提供的 LoRA 補丁、合併腳本與 llama.cpp 量化路徑是完整可用的。如果你沒有 LLaMA 原始權重、或需要商用授權,這個專案從第一步就走不通,README 明確寫著官方 LLaMA 禁止商用,這裡發布的 LoRA 無法單獨使用。動手前先確認三件事:你能否合法取得對應參數量的原版 LLaMA、你要的是續寫用的中文 LLaMA 還是問答用的中文 Alpaca、以及你的顯卡或 CPU 能否吃下你選的 7B、13B 或 33B。另外注意倉庫本身在 2024 年已把用戶導向三代專案,新專案不必從這裡開始。
社群筆記