菜单

命令行界面

相关源文件

命令行界面(CLI)通过各种专用工具为llama.cpp的推理功能提供了直接访问。本文档涵盖了CLI工具的架构、参数系统和使用模式。有关HTTP API访问,请参阅HTTP服务器。有关详细的示例应用程序,请参阅示例应用程序

CLI工具生态系统

llama.cpp提供了几个命令行工具,每个工具都针对特定用例进行了优化

CLI工具概述 主要工具llama-cli负责交互式推理和文本补全,而专用工具则负责基准测试和模型评估等特定任务。

来源: README.md303-514 Makefile6-49

核心CLI工具架构

llama-cli工具是模型交互的主要接口,支持多种操作模式

CLI参数处理流程 参数通过通用的参数系统流动,以初始化模型组件并确定执行模式。

来源: common/arg.cpp1-50 common/common.h222-400

参数系统架构

CLI工具使用一个全面的参数系统,该系统处理模型配置、推理设置和执行选项

参数系统组织 模块化参数系统支持各种配置源和专用参数组,用于模型执行的不同方面。

来源: common/common.h185-400 common/arg.cpp67-104

核心CLI使用模式

交互式对话模式

当检测到聊天模板时,llama-cli的默认模式

关键参数

  • -cnv:强制对话模式
  • --chat-template:指定模板(chatml、llama-2等)
  • --in-prefix:自定义用户输入前缀
  • --reverse-prompt:用户输入的停止序列

来源: README.md307-335

文本补全模式

单次文本生成,无对话上下文

关键参数

  • -p:提示文本
  • -n:要生成的令牌数量
  • -no-cnv:禁用对话模式
  • --temp:采样温度

来源: README.md337-348

语法约束生成

使用GBNF语法进行结构化输出生成

语法系统

  • 用于语法规范的GBNF格式
  • grammars/目录中的内置语法
  • 提供JSON模式到语法的转换

来源: README.md350-363

参数处理实现

参数解析系统使用common_arg类进行声明式处理

参数类型结构关键字段
模型common_params_modelpathurlhf_repohf_file
采样common_params_samplingtemptop_ptop_kseed
CPUcpu_paramsn_threadscpumaskpriority
上下文common_paramsn_ctxn_batchn_predict

环境变量支持:系统支持环境变量用于通用参数,允许在没有命令行参数的情况下进行配置。

来源: common/common.h50-57 common/common.h128-183 common/arg.cpp96-108

与核心库集成

CLI工具通过标准化的初始化模式与核心llama.cpp库集成

标准初始化模式 所有CLI工具都遵循此初始化序列,以确保正确的资源管理和后端配置。

来源: examples/embedding/embedding.cpp73-98 common/common.cpp350-364

高级CLI特性

CPU亲和性和线程

CLI工具通过cpu_params结构支持复杂的CPU管理

CPU配置选项

  • 基于物理核心的线程数优化
  • 用于性能隔离的CPU亲和性掩码
  • 实时应用程序的优先级调度
  • NUMA感知的线程放置

来源: common/common.cpp253-275 common/common.cpp175-193

模型下载集成

CLI工具可以自动从Hugging Face下载模型

下载特性

  • 自动GGUF文件检测
  • 大模型的拆分文件处理
  • 基于ETag的缓存和续传
  • Bearer令牌认证支持

来源: README.md282-290 common/arg.cpp489-501

命令行界面为与llama.cpp功能交互提供了一种全面而灵活的方式,从简单的文本补全到复杂的多模态推理场景。模块化的参数系统和标准化的初始化模式确保了所有CLI工具的一致性,同时支持高级配置选项以满足高级用户需求。