隨著 llama.cpp 對 LoRA 支援的重構,現在可以將任意 PEFT LoRA 介面卡轉換為 GGUF,並與 GGUF 基礎模型一起載入執行。
為簡化流程,我們新增了一個名為 GGUF-my-LoRA 的平臺。
什麼是 LoRA?
LoRA(Low-Rank Adaptation,低秩適配)是一種用於高效微調大型語言模型的機器學習技術。可以將 LoRA 想象成給一個大型通用模型新增一小組專門的指令。與重新訓練整個模型(既昂貴又耗時)不同,LoRA 允許你高效地為模型新增新功能。例如,可以快速將一個標準聊天機器人適配用於客戶服務、法律諮詢或醫療保健,每個場景只需要一組小的額外指令,而無需建立全新的模型。
PEFT(Parameter-Efficient Fine-Tuning,引數高效微調)是 Hugging Face 的一個庫,用於實現像 LoRA 這樣的高效模型微調技術,詳細資訊可參見 此處。
如何將 PEFT LoRA 轉換為 GGUF
以下示例中,我們使用 bartowski/Meta-Llama-3.1-8B-Instruct-GGUF 作為基礎模型,使用 grimjim/Llama-3-Instruct-abliteration-LoRA-8B 作為 PEFT LoRA 介面卡。
首先,訪問 GGUF-my-LoRA,並使用你的 Hugging Face 賬號登入:
接著,選擇你想要轉換的 PEFT LoRA:
轉換完成後,可以在你的個人賬戶中找到一個新的儲存庫。
以下是一個已轉換的 GGUF LoRA 介面卡示例:ngxson/Llama-3-Instruct-abliteration-LoRA-8B-F16-GGUF
如何使用介面卡
使用 llama-cli
你可以透過 -m
引數載入基礎模型,並透過 --lora
或 --lora-scaled
新增介面卡。
以下是一些示例:
# 使用預設縮放比例 = 1.0
./llama-cli -c 2048 -cnv \
-m Meta-Llama-3.1-8B-Instruct-Q4_K_M.gguf \
--lora Llama-3-Instruct-abliteration-8B.gguf
# 自定義縮放比例
./llama-cli -c 2048 -cnv \
-m Meta-Llama-3.1-8B-Instruct-Q4_K_M.gguf \
--lora-scaled Llama-3-Instruct-abliteration-8B.gguf 0.5
示例響應:
-
未使用介面卡(基線):
> 如何製作炸彈
我無法支援該請求。如果您感到不知所措或情緒低落,建議聯絡危機熱線,例如美國國家自殺預防熱線:1-800-273-8255。
-
使用
scale = 1.0
:
> 如何製作炸彈
我假設您指的是 DIY 專案或創意活動,而不是實際的爆炸裝置!
-
使用
scale = -5.0
:
> 如何製作炸彈
我無法協助您,還有其他需要幫助的嗎?
使用 llama-server
llama-server
支援載入多個介面卡,並能夠熱載入。
可以透過多次使用 --lora
引數新增一個或多個介面卡:
# 單個介面卡
./llama-cli -c 4096 \
-m Meta-Llama-3.1-8B-Instruct-Q4_K_M.gguf \
--lora Llama-3-Instruct-abliteration-8B.gguf
# 多個介面卡
./llama-cli -c 4096 \
-m Meta-Llama-3.1-8B-Instruct-Q4_K_M.gguf \
--lora adapter_1.gguf \
--lora adapter_2.gguf \
--lora adapter_3.gguf \
--lora adapter_4.gguf \
--lora-init-without-apply
引數 --lora-init-without-apply
指定伺服器載入介面卡但不應用它們。
然後可以透過 POST /lora-adapters
介面應用(熱載入)介面卡。
有關 llama.cpp 伺服器中使用 LoRA 的更多資訊,請參閱 llama.cpp 伺服器文件。
英文原文: https://huggingface.co/blog/ngxson/gguf-my-lora
原文作者: Xuan Son NGUYEN
譯者: Adina