text-generation-inference 文件
Llamacpp 後端
加入 Hugging Face 社群
並獲得增強的文件體驗
開始使用
Llamacpp 後端
Llamacpp 後端透過整合 llama.cpp(一個針對 CPU 和 GPU 計算最佳化的先進推理引擎)來促進大型語言模型(LLM)的部署。此後端是 Hugging Face 的 文字生成推理 (TGI) 套件的組成部分,專門用於簡化 LLM 在生產環境中的部署。
主要功能
- 完全相容 GGUF 格式和所有量化格式(GGUF 相關限制可在未來更新中透過動態即時生成來緩解)
- 在 CPU 和 GPU 架構上最佳化推理
- 容器化部署,消除依賴複雜性
- 與 Hugging Face 生態系統無縫互操作
模型相容性
此後端利用 GGUF 格式的模型,在計算效率和模型精度之間提供最佳平衡。您可以在 Hugging Face 上找到最佳模型。
構建 Docker 映象
為了獲得最佳效能,Docker 映象預設使用原生 CPU 指令進行編譯。因此,強烈建議在與構建過程相同的宿主架構上執行容器。目前正在努力提高不同系統之間的可移植性,同時保持高計算效率。
要構建 Docker 映象,請使用以下命令:
docker build \ -t tgi-llamacpp \ https://github.com/huggingface/text-generation-inference.git \ -f Dockerfile_llamacpp
構建引數
引數(帶 —build-arg) | 描述 |
---|---|
llamacpp_version=bXXXX | llama.cpp 的特定版本 |
llamacpp_cuda=ON | 啟用 CUDA 加速 |
llamacpp_native=OFF | 停用自動 CPU 檢測 |
llamacpp_cpu_arm_arch=ARCH[+FEATURE]... | 特定的 ARM CPU 和功能 |
cuda_arch=ARCH | 定義目標 CUDA 架構 |
例如,在其他 ARM 架構上構建時以 Graviton4 為目標
docker build \ -t tgi-llamacpp \ --build-arg llamacpp_native=OFF \ --build-arg llamacpp_cpu_arm_arch=armv9-a+i8mm \ https://github.com/huggingface/text-generation-inference.git \ -f Dockerfile_llamacpp
執行 Docker 映象
基於 CPU 的推理
docker run \
-p 3000:3000 \
-e "HF_TOKEN=$HF_TOKEN" \
-v "$HOME/models:/app/models" \
tgi-llamacpp \
--model-id "Qwen/Qwen2.5-3B-Instruct"
GPU 加速推理
docker run \
--gpus all \
-p 3000:3000 \
-e "HF_TOKEN=$HF_TOKEN" \
-v "$HOME/models:/app/models" \
tgi-llamacpp \
--n-gpu-layers 99
--model-id "Qwen/Qwen2.5-3B-Instruct"
使用自定義 GGUF
GGUF 檔案是可選的,如果 models
目錄中不存在,則會在啟動時自動生成。但是,如果預設的 GGUF 生成不適合您的用例,您可以使用 --model-gguf
提供您自己的 GGUF 檔案,例如:
docker run \
-p 3000:3000 \
-e "HF_TOKEN=$HF_TOKEN" \
-v "$HOME/models:/app/models" \
tgi-llamacpp \
--model-id "Qwen/Qwen2.5-3B-Instruct" \
--model-gguf "models/qwen2.5-3b-instruct-q4_0.gguf"
請注意,--model-id
仍然是必需的。
高階引數
所有可配置引數的完整列表可在 --help
中檢視
docker run tgi-llamacpp --help
下表總結了關鍵選項
引數 | 描述 |
---|---|
--n-threads | 用於生成的執行緒數 |
--n-threads-batch | 用於批處理的執行緒數 |
--n-gpu-layers | 儲存在 VRAM 中的層數 |
--split-mode | 在多個 GPU 上拆分模型 |
--defrag-threshold | 如果孔洞/大小 > 閾值,則碎片整理 KV 快取 |
--numa | 啟用 NUMA 最佳化 |
--disable-mmap | 停用模型的記憶體對映 |
--use-mlock | 使用記憶體鎖定以防止交換 |
--disable-offload-kqv | 停用將 KQV 操作解除安裝到 GPU |
--disable-flash-attention | 停用快閃記憶體注意力 |
--type-k | K 快取使用的資料型別 |
--type-v | V 快取使用的資料型別 |
--validation-workers | 用於負載驗證和截斷的分詞器工作器數量 |
--max-concurrent-requests | 最大併發請求數 |
--max-input-tokens | 每個請求的最大輸入 token 數 |
--max-total-tokens | 每個請求的最大總 token 數(輸入 + 輸出) |
--max-batch-total-tokens | 批處理中的最大 token 數 |
--max-physical-batch-total-tokens | 物理批處理中的最大 token 數 |
--max-batch-size | 每個批處理的最大請求數 |
< > 在 GitHub 上更新