text-generation-inference 文件

Llamacpp 後端

Hugging Face's logo
加入 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 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.