推理端点(专用)文档

llama.cpp

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

llama.cpp

llama.cpp 是一个用 C/C++ 编写的高性能推理引擎,专为在 GGUF 格式下运行 Llama 和兼容模型而设计。

核心功能

  • GGUF 模型支持:原生兼容 GGUF 格式及其所有量化类型。
  • 多平台:针对 CPU 和 GPU 执行进行了优化,支持 AVX、AVX2、AVX512 和 CUDA 加速。
  • 兼容 OpenAI 的 API:提供用于聊天、完成、嵌入等功能的端点,实现与现有工具和工作流程的无缝集成。
  • 活跃的社区和生态系统:快速发展和丰富的工具、扩展和集成生态系统。

当您使用 GGUF 模型创建端点时,会自动选择一个 llama.cpp 容器,该容器使用从 llama.cpp 仓库的 master 分支构建的最新镜像。部署成功后,一个兼容 OpenAI 的端点服务器即可使用。

llama.cpp 支持多个端点,例如 /tokenize/health/embedding 等。有关可用端点的完整列表,请参阅 API 文档

部署步骤

要使用 llama.cpp 容器部署端点,请按照以下步骤操作:

  1. 创建新端点,然后选择包含 GGUF 模型的仓库。llama.cpp 容器将自动选中。
Select model
  1. 选择所需的 GGUF 文件,请注意内存要求将根据所选文件而异。例如,F16 模型比 Q4_K_M 模型需要更多的内存。
Select GGUF file
  1. 选择所需的硬件配置。
Select hardware
  1. (可选)您可以自定义容器的配置设置,例如 最大令牌数并发请求数。有关这些设置的更多信息,请参阅下面的配置部分。

  2. 单击创建端点按钮完成部署。

此外,您可以按照下面的视频教程,获取使用 llama.cpp 容器部署端点的分步指南。

配置

llama.cpp 容器提供多项可调整的配置选项。部署后,您可以通过访问端点详情页面上的设置选项卡来修改这些设置。

基本配置

  • 最大令牌数(每次请求):单次请求中可发送的最大令牌数。
  • 最大并发请求数:此部署允许的最大并发请求数。增加此限制需要额外的内存分配。例如,将此值设置为 4 个请求,每个请求最大 1024 个令牌,则总共需要 4096 个令牌的内存容量。

高级配置

除了基本配置外,您还可以通过设置环境变量来修改特定设置。可用环境变量列表可在 API 文档中找到。

请注意,以下环境变量为系统保留,不可修改:

  • LLAMA_ARG_MODEL
  • LLAMA_ARG_HTTP_THREADS
  • LLAMA_ARG_N_GPU_LAYERS
  • LLAMA_ARG_EMBEDDINGS
  • LLAMA_ARG_HOST
  • LLAMA_ARG_PORT
  • LLAMA_ARG_NO_MMAP
  • LLAMA_ARG_CTX_SIZE
  • LLAMA_ARG_N_PARALLEL
  • LLAMA_ARG_ENDPOINT_METRICS

故障排除

如果部署失败,请查看日志输出是否有任何错误消息。

您可以通过单击端点详细信息页面上的日志选项卡来访问日志。要了解更多信息,请参阅日志文档。

  • 内存分配失败:内存不足
    如果您在日志中看到此错误消息:

    ggml_backend_cuda_buffer_type_alloc_buffer: allocating 67200.00 MiB on device 0: cuda
    Malloc failed: out of memory
    llama_kv_cache_init: failed to allocate buffer for kv cache
    llama_new_context_with_model: llama_kv_cache_init() failed for self-attention cache
    ...

    这意味着所选的硬件配置没有足够的内存来容纳所选的 GGUF 模型。您可以尝试:

    • 降低每次请求的最大令牌数
    • 降低并发请求数
    • 选择较小的 GGUF 模型
    • 选择更大的硬件配置
  • 工作负载被驱逐,存储限制超出
    此错误消息表示硬件内存不足,无法容纳所选的 GGUF 模型。尝试选择较小的模型或选择更大的硬件配置。

  • 其他问题
    对于其他问题,请参考 llama.cpp issues 页面。如果您想创建新问题,请在您的错误报告中包含完整的日志输出。

< > 在 GitHub 上更新