Llama 2 發佈與 Hugging Face 整合

Meta 已發佈 Llama 2,這是一個可用於商業用途的最先進開放存取大型語言模型 (LLM) 系列。此次發佈為社群提供了預訓練與微調後的模型,為封閉原始碼聊天機器人提供了一個高性能的開放選擇。

Llama 2 模型規格與改進

Llama 2 包含一系列參數規模從 7B 到 70B 的模型(具體包括 7B、13B 和 70B)。這些模型在原始 Llama 1 系列的基礎上引入了幾項技術改進:

  • 增加訓練數據: 預訓練模型的訓練 Token 數量比 Llama 1 增加了 40%。
  • 擴展上下文窗口: 上下文長度已增加至 4k tokens。
  • 優化推理: 70B 模型利用 grouped-query attention 來實現更快的推理速度。

Llama 2-Chat:對話優化

Llama 2-Chat 模型是基礎模型的微調版本,特別針對對話應用進行了優化,並使用了來自人類回饋的強化學習 (RLHF)。根據人類評估,Llama 2-Chat 模型的表現可與 ChatGPT 媲美,並在多項安全性與幫助性基準測試中優於大多數其他開放模型。

Hugging Face 整合與部署

Hugging Face 已將 Llama 2 整合到其生態系統中,以促進部署與微調。可用的整合功能包括:

  • Transformers Library: 從 4.31 版本開始提供全面支援,允許使用者利用 safetensors、透過 bitsandbytes 進行 4-bit 量化,以及參數高效微調 (PEFT)。
  • Text Generation Inference (TGI): 一個可用於生產環境的容器,支援連續批處理 (continuous batching)、Token 串流以及用於多 GPU 設定的張量並行 (tensor parallelism)。
  • Inference Endpoints: 具備建議硬體配置的管理式部署選項:
    • 7B 模型: 1x Nvidia A10G (GPU medium)。
    • 13B 模型: 1x Nvidia A100 (GPU xlarge)。
    • 70B 模型: 2x Nvidia A100 搭配 bitsandbytes 量化 (GPU 2xlarge) 或 4x Nvidia A100 (GPU 4xlarge)。

使用 PEFT 與 QLoRA 進行高效微調

使用者可以使用 QLoRA 和來自 trl 函式庫的 SFTTrainer 在消費級硬體上對 Llama 2 進行微調。例如,7B 版本可以在 Google Colab 上提供的單個 NVIDIA T4 GPU (16GB) 上進行指令微調。此過程允許使用者將 LoRA 權重合併到模型權重中,並將其儲存為 safetensor 權重,以便透過 TGI 或 Inference Endpoints 進行生產部署。

Llama 2-Chat 的提示詞框架

Llama 2-Chat 需要特定的提示詞模板,以與其訓練程序保持一致。該模板使用特殊 Token 來將系統指令與使用者訊息分離:

第一輪對話模板: `[INST] <> {{ system_prompt }} <>

{{ user_message }} [/INST]`

多輪對話模板: `[INST] <> {{ system_prompt }} <>

{{ user_msg_1 }} [/INST] {{ model_answer_1 }} [INST] {{ user_msg_2 }} [/INST]`

由於 Llama 2 是一個開放存取的模型,使用者可以完全控制 system_prompt,從而能夠定義助手的個性與行為,而不受封閉原始碼 API 的限制。這項能力對於研究不同提示詞對模型行為與安全性影響的研究人員特別有用。

Sources