Skip to content

llama-server

llama-server

  • 对外提供 API 服务

llama-server

语法

./llama-server -m <model_path> [options]

核心参数

  • 仅记录最可能使用的
基础配置
1.模型加载
  • -m/--model: 指定模型路径
2.上下文控制
-c, --ctx-size N
  • 设置模型的上下文窗口大小
  • 默认值为 4096 个 tokens
  • 较大的值允许模型记住更长的对话历史,但会增加内存使用量
  • 建议根据实际需求和可用内存来设置
  • 示例:--ctx-size 8192用于需要长上下文的场景
3.线程控制
-t, --threads N
  • 这是控制生成文本时使用的 CPU 线程数的关键参数

  • 默认值为-1,表示系统会自动选择合适的线程数

  • 建议设置为物理 CPU 核心数,而不是逻辑核心数

  • 示例:如果你有一个 8 核 CPU,可以设置 --threads 8

  • 注意:设置过高可能会导致性能下降,因为线程切换开销会增加
-tb, --threads-batch N
  • 专门用于控制批处理和提示词处理时的线程数

  • 如果不设置,默认使用与--threads 相同的值

  • 在处理大量并发请求时特别有用

  • 可以设置比--threads 更大的值,以提高批处理性能

  • 示例:--threads 8 --threads-batch 16表示生成用 8 线程,批处理用 16 线程
4.处理器控制
-C, --cpu-mask M
  • 允许通过十六进制掩码,精确控制哪些 CPU 核心可以被使用

  • 配合--cpu-range 使用可以实现更精细的 CPU 控制

  • 适用于需要特定 CPU 核心处理任务的场景

  • 示例:--cpu-mask 0xF表示只使用前 4 个 CPU 核心
--numa TYPE
  • NUMA 优化
4.内存管理
--mlock
  • 强制系统将模型保持在 RAM 中,防止被换出到磁盘

  • 可以显著提高响应速度,特别是在内存压力大的情况下

  • 适用于有充足 RAM 的服务器环境

  • 建议在生产环境中启用此选项【必用】

  • 示例:--mlock --model model.gguf
--no-mmap
  • 禁用内存映射,强制将整个模型加载到 RAM 中
  • 可能会导致启动时间变长
  • 在某些情况下可以减少页面调出
  • 如果遇到频繁的页面调出问题,可以尝试启用此选项
  • 使用示例:--no-mmap --model model.gguf
5.GPU 控制
-dev, --device <dev1,dev2,..>
  • 用于指定要使用的 GPU 设备列表

  • 可以通过逗号分隔指定多个 GPU

  • 设置为"none"表示不使用 GPU 加速

  • 适用于有多 GPU 的系统,可以精确控制使用哪些 GPU

  • 示例:--device 0,1 使用前两个 GPU

  • 使用前,建议先用--list-devices查看可用设备

  • 该参数会打印可用设备列表并退出
-ngl, --n-gpu-layers N
  • 控制有多少层模型被加载到 GPU 显存中
  • 较大的值会提供更好的性能,但需要更多显存
  • 对于显存较小的 GPU,建议从较小的值开始尝试
  • 例如 RTX 3060 6GB 显存,可以从 8 层开始:--n-gpu-layers 8
  • 对于 RTX 4090 这样的大显存 GPU,可以设置更多层:--n-gpu-layers 32
-ts, --tensor-split N0,N1,N2,...
  • 控制模型在多个 GPU 之间的张量计算分配比例

  • 通过逗号分隔的数字指定每个 GPU 的负载比例

  • 适合 GPU 性能不同的情况

  • 示例:--tensor-split 3,2,1 表示:
  • 第一个 GPU 处理 50%的计算
  • 第二个 GPU 处理 33.3%的计算
  • 第三个 GPU 处理 16.7%的计算

多 GPU 管理参数也能用

6.批处理参数
-b, --batch-size N
  • 设置逻辑批处理大小,默认 2048

  • 影响并发请求的处理效率

  • 较大的值可以提高吞吐量,但会增加内存使用

  • 建议根据实际负载和可用资源调整

  • 将该值增加到 物理批处理大小 的值以上,可以提高即时处理性能

  • 示例:--batch-size 1024适合中等规模服务器

-ub, --ubatch-size N
  • 设置物理批处理大小,默认 512
  • 直接影响硬件资源的使用效率
  • 需要根据硬件配置谨慎调整
  • 不建议设置过大,可能导致性能下降
  • 示例:--ubatch-size 256适合大多数场景
7.缓存管理
--cache-type-k TYPE
  • 设置 KV 缓存中 K(Key)的数据类型
  • 可选值包括:f32, f16, q8_0, q4_0 等
  • 影响内存使用和计算精度
  • 对性能有显著影响
  • 示例:
  • 高性能场景:--cache-type-k f16
  • 节省内存场景:--cache-type-k q4_0
-dt, --defrag-thold N
  • 设置 KV 缓存碎片整理的阈值
  • 默认值 0.1,设置为负数表示禁用
  • 较低的值会更频繁地进行碎片整理
  • 影响内存使用效率
  • 示例:--defrag-thold 0.2适合长时间运行的服务
--prompt-cache
  • 提示词缓存
服务器配置
1.网络设置
--host HOST
  • 设置服务器监听的 IP 地址
  • 默认为 127.0.0.1(仅本地访问)
  • 设置为 0.0.0.0 允许远程访问
  • 生产环境建议配合 SSL 和 API 密钥使用
--port 端口
  • 默认 8080
  • 示例:--host 0.0.0.0 --port 8080
--api-key KEY
  • 设置 API 访问密钥, API 认证

  • 用于限制 API 的访问权限

  • 可以通过文件加载多个密钥

  • 建议在生产环境中启用

  • 示例:--api-key "your-secret-key"
2.安全配置
--ssl-key-file FNAME
--ssl-cert-file FNAME
  • 配置 SSL 证书,启用 HTTPS
  • 提供安全的加密通信
  • 生产环境必备
  • 需要同时提供私钥和证书文件
  • 示例:
--ssl-key-file private.key
--ssl-cert-file cert.pem
3.监控和日志
--metrics
  • 启用 Prometheus 兼容的监控指标
  • 提供性能和使用情况的实时监控
  • 可以与 Grafana 等工具集成
  • 建议在生产环境启用
  • 访问路径为/metrics
--log-file FNAME
  • 指定日志文件路径
  • 记录服务器运行状态和错误信息
  • 支持日志轮转
  • 便于问题排查
  • 示例:--log-file server.log

--slots: 启用槽位监控

--path: 静态文件路径

模型和推理配置
1.采样参数
--temp N
  • 控制生成文本的随机性
  • 默认值 0.8
  • 较高的值(如 1.2)产生更多样的输出
  • 较低的值(如 0.3)产生更确定的输出
  • 示例:--temp 0.7适合一般对话
--top-p N
  • 控制核采样的概率阈值
  • 默认值 0.9
  • 较高的值允许更多样的输出
  • 较低的值使输出更加保守
  • 示例:--top-p 0.92
2.LoRA 适配器
--lora
  • 加载 LoRA 适配器
  • 使用见 cli
3.语法约束
--grammar GRAMMAR
  • 设置输出的语法约束
  • 用于控制生成文本的格式
  • 支持 BNF 语法
  • 适合生成特定格式的文本
  • 示例:--grammar "your-grammar-rules"
4.特殊功能
--embedding
  • 启用嵌入向量生成功能
  • 用于文本相似度计算等任务
  • 需要模型支持嵌入功能
  • 示例:--embedding --model embedding-model.gguf
--reranking
  • 启用文档重排序功能
  • 用于搜索结果优化
  • 需要特定类型的模型
  • 示例:--reranking --model rerank-model.gguf

实际应用

一个生产环境的配置:

./llama-server \
    --model model.gguf \
    --threads 16 \
    --n-gpu-layers 32 \
    --ctx-size 4096 \
    --batch-size 2048 \
    --host 0.0.0.0 \
    --port 8080 \
    --api-key "secret-key" \
    --ssl-key-file key.pem \
    --ssl-cert-file cert.pem \
    --metrics \
    --log-file server.log \
    --mlock
本文阅读量  次
本站总访问量  次
Authors: wangshangjian