AI陪我做事 – 5 Llama-cli 主要能力介绍

此程序可让您轻松高效地使用各种 LLaMA 语言模型。它专为与llama.cpp项目配合使用而设计,该项目提供纯 C/C++ 实现,并支持可选的 4 位量化,以实现更快、更低内存的推理,并且针对桌面 CPU 进行了优化。此程序可用于使用 LLaMA 模型执行各种推理任务,包括根据用户提供的提示生成文本,以及使用反向提示进行类似聊天的交互。

更多资讯访问:

www.2img.ai

www.2video.cn

AI陪我做事 - 5 Llama-cli 主要能力介绍

快速入门

要立即开始,请运行以下命令,确保使用您拥有的模型的正确路径:

首先,我们需要下载一个模型。在这些示例中,我们将使用 Hugging Face 上 ggml-org 仓库中的 Gemma 模型。https ://huggingface.co/ggml-org/gemma-1.1-7b-it-Q4_K_M-GGUF/resolve/main/gemma-1.1-7b-it.Q4_K_M.gguf? download=true

下载后,将模型放在 llama.cpp 中的模型文件夹中。

基于 Unix 的系统(Linux、macOS 等):

输入提示(一次性完成)

./llama-cli -m models/gemma-1.1-7b-it.Q4_K_M.gguf -no-cnv –prompt “Once upon a time”

对话模式(允许与模型持续互动)

./llama-cli -m models/gemma-1.1-7b-it.Q4_K_M.gguf –chat-template gemma

使用内置 Jinja 聊天模板的对话模式

./llama-cli -m models/gemma-1.1-7b-it.Q4_K_M.gguf –jinja

使用 jinja 进行一次性查询,带有自定义系统提示符和启动提示符

./llama-cli -m models/gemma-1.1-7b-it.Q4_K_M.gguf –jinja –single-turn -sys “You are a helpful assistant” -p “Hello”

从启动提示开始的无限文本(您可以使用它Ctrl-C来停止它):

./llama-cli -m models/gemma-1.1-7b-it.Q4_K_M.gguf –ignore-eos -n -1

视窗:

输入提示(一次性完成)

./llama-cli.exe -m models\gemma-1.1-7b-it.Q4_K_M.gguf -no-cnv –prompt “Once upon a time”

对话模式(允许与模型持续互动)

./llama-cli.exe -m models\gemma-1.1-7b-it.Q4_K_M.gguf –chat-template gemma

使用内置 Jinja 聊天模板的对话模式

./llama-cli.exe -m models\gemma-1.1-7b-it.Q4_K_M.gguf –jinja

使用 jinja 进行一次性查询,带有自定义系统提示符和启动提示符

./llama-cli.exe -m models\gemma-1.1-7b-it.Q4_K_M.gguf –jinja –single-turn -sys “You are a helpful assistant” -p “Hello”

从启动提示开始的无限文本(您可以使用它Ctrl-C来停止它):

llama-cli.exe -m models\gemma-1.1-7b-it.Q4_K_M.gguf –ignore-eos -n -1

常用选项

llama-cli在本节中,我们介绍使用 LLaMA 模型运行程序的最常用选项:

  • -m FNAME, --model FNAME:指定 LLaMA 模型文件的路径(例如,models/gemma-1.1-7b-it.Q4_K_M.gguf;如果设置则推断--model-url)。
  • -mu MODEL_URL --model-url MODEL_URL:指定远程 http url 来下载文件(例如https://huggingface.co/ggml-org/gemma-1.1-7b-it-Q4_K_M-GGUF/resolve/main/gemma-1.1-7b-it.Q4_K_M.gguf?download=true)。
  • -i, --interactive:以交互模式运行程序,允许您直接提供输入并接收实时响应。
  • -n N, --n-predict N:设置生成文本时要预测的标记数量。调整此值可能会影响生成文本的长度。
  • -c N, --ctx-size N:设置提示上下文的大小。默认值为 4096,但如果 LLaMA 模型是使用更长的上下文构建的,则增加此值将为更长的输入/推理提供更好的结果。
  • -mli, --multiline-input:允许您编写或粘贴多行,每行不以 ” 结尾
  • -t N, --threads N:设置生成过程中使用的线程数。为了获得最佳性能,建议将此值设置为系统拥有的物理 CPU 核心数。
  • -ngl N, --n-gpu-layers N:当编译时启用 GPU 支持时,此选项允许将部分层卸载到 GPU 进行计算。通常可以提高性能。

输入提示

llama-cli程序提供了几种使用输入提示与 LLaMA 模型交互的方法:

  • --prompt PROMPT:直接以命令行选项的形式提供提示。
  • --file FNAME:提供包含一个或多个提示的文件。
  • --system-prompt PROMPT:提供系统提示(否则将使用聊天模板中的默认提示(如果提供))。
  • --system-prompt-file FNAME:提供包含系统提示的文件。
  • --interactive-first:以交互模式运行程序并立即等待输入。(更多内容见下文。)

相互作用

llama-cli程序提供与 LLaMA 模型的无缝交互方式,允许用户进行实时对话或提供特定任务的指令。交互模式可以通过各种选项触发,包括--interactive--interactive-first

在交互模式下,用户可以通过在生成过程中插入输入来参与文本生成。用户可以Ctrl+C随时按下 插入并输入输入,然后按下Return将其提交给 LLaMA 模型。如果要在不完成输入的情况下提交其他行,用户可以用反斜杠 ( \) 结束当前行并继续输入。

交互选项

  • -i, --interactive:以交互模式运行程序,允许用户进行实时对话或向模型提供具体指令。
  • --interactive-first:以交互模式运行程序并立即等待用户输入,然后开始文本生成。
  • -cnv, --conversation:以对话模式运行程序(不打印特殊标记和后缀/前缀,使用默认或提供的聊天模板)(默认值:如果找到聊天模板则为 true)
  • -no-cnv:禁用对话模式(默认值:false)
  • -st, --single-turn:仅处理单个对话回合(用户输入)然后退出。
  • --jinja:启用 jinja 聊天模板解析器,将使用模型的内置模板或用户提供的模板(默认值:false)
  • --color:启用彩色输出,以在视觉上区分提示、用户输入和生成的文本。

通过了解和利用这些交互选项,您可以使用 LLaMA 模型创建引人入胜且动态的体验,并根据您的特定需求定制文本生成过程。

反向提示

反向提示是一种使用 LLaMA 模型创建类似聊天体验的有效方法,当遇到特定文本字符串时,它会暂停文本生成:

  • -r PROMPT, --reverse-prompt PROMPT:指定一个或多个反向提示,以暂停文本生成并切换到交互模式。例如,-r "User:"可用于在轮到用户发言时跳转回对话。这有助于打造更具互动性和对话性的体验。但是,当反向提示以空格结尾时,它将不起作用。

为了克服这个限制,您可以使用--in-prefix标志在反向提示后添加空格或任何其他字符。

前缀内

--in-prefix标志用于为您的输入添加前缀,主要用于在反向提示符后插入空格。以下是如何将此--in-prefix标志与此标志结合使用的示例--reverse-prompt

./llama-cli -r “User:” –in-prefix ” “

后缀

--in-suffix标志用于在输入后添加后缀。这在用户输入后添加“Assistant:”提示时非常有用。它添加到自动添加到用户输入末尾的换行符 ( ) 之后。以下是如何将此标志与以下标志结合\n使用的示例:--in-suffix--reverse-prompt

./llama-cli -r “User:” –in-prefix ” ” –in-suffix “Assistant:”

当启用 –in-prefix 或 –in-suffix 选项时,聊天模板( –chat-template )将被禁用

聊天模板

--chat-template JINJA_TEMPLATE:此选项设置自定义 Jinja 聊天模板。它接受字符串,而非文件名。默认值:模板取自模型的元数据。Llama.cpp 仅支持部分预定义模板,包括 llama2、llama3、gemma、monarch、chatml、orion、vicuna、vicuna-orca、deepseek、command-r 和 zephyr。启用 –in-prefix 或 –in-suffix 选项时,聊天模板 ( –chat-template ) 将被禁用。

使用示例:--chat-template gemma

--chat-template-file FNAME:从外部文件加载自定义 Jinja 聊天模板,如果模型包含过时或不兼容的模板,则此模板非常有用。一些示例可在 models/templates 中找到。最新的聊天模板可以通过 scripts/get_chat_template.py 从 Hugging Face 下载。

上下文管理

在文本生成过程中,LLaMA 模型的上下文大小有限,这意味着它们只能从输入和生成的文本中考虑一定数量的标记。当上下文填满时,模型会在内部重置,这可能会丢失对话或指令开头的一些信息。上下文管理选项有助于在这些情况下保持连续性和连贯性。

上下文大小

  • -c N, --ctx-size N:设置提示上下文的大小(默认值:4096,0 = 从模型加载)。如果 LLaMA 模型是使用较长的上下文构建的,则增加此值将在较长的输入/推理中产生最佳结果。

扩展上下文大小

一些微调模型通过缩放 RoPE 来扩展上下文长度。例如,如果原始预训练模型的上下文长度(最大序列长度)为 4096 (4k),而微调模型的上下文长度为 32k,则缩放因子为 8。因此,将上述值分别设置--ctx-size为 32768 (32k) 和--rope-scale8 即可实现。

  • --rope-scale N:其中N是微调模型使用的线性缩放因子。

保持提示

--keep选项允许用户在模型脱离上下文时保留原始提示,确保与初始指令或对话主题保持连接。

  • --keep N:指定模型重置其内部上下文时,要保留的初始提示符中的标记数。默认情况下,此值设置为 0(表示不保留任何标记)。用于-1保留初始提示符中的所有标记。

通过利用--ctx-size和等上下文管理选项--keep,您可以与 LLaMA 模型保持更连贯、更一致的交互,确保生成的文本与原始提示或对话保持相关。

世代旗帜

以下选项可让您控制文本生成过程,并根据需要微调生成文本的多样性、创造性和质量。通过调整这些选项并尝试不同的值组合,您可以找到适合您特定用例的最佳设置。

需要预测的标记数量

  • -n N, --predict N:设置生成文本时要预测的标记数(默认值:-1,-1 = 无穷大,-2 = 直到上下文填充)

--predict选项控制模型响应输入提示时生成的标记数量。通过调整此值,您可以影响生成文本的长度。值越高,文本越长,值越低,文本越短。

即使上下文窗口有限,-1 值也将启用无限文本生成。当上下文窗口已满时,一些较早的标记(即 之后的一半标记--keep)将被丢弃。之后必须重新评估上下文才能继续生成。在大型模型和/或较大的上下文窗口上,这将导致输出出现明显的停顿。

如果不希望暂停,则当上下文填满时,值 -2 将会立即停止生成。

--no-context-shift选项允许您在有限上下文窗口已满时停止无限文本生成。

需要注意的是,如果遇到序列结束 (EOS) 标记或反向提示,生成的文本可能会短于指定的标记数。在交互模式下,文本生成将暂停,控制权将返回给用户。在非交互模式下,程序将结束。在这两种情况下,文本生成都可能在达到指定--predict值之前停止。如果您希望模型继续运行而不自行生成序列结束标记,可以使用该--ignore-eos参数。

温度

  • --temp N:调整生成文本的随机性(默认值:0.8)。

温度是一个控制生成文本随机性的超参数。它会影响模型输出 token 的概率分布。较高的温度(例如 1.5)会使输出更具随机性和创造性,而较低的温度(例如 0.5)会使输出更具针对性、确定性和保守性。默认值为 0.8,它在随机性和确定性之间取得了平衡。在极端情况下,温度为 0 将始终选择最可能的下一个 token,从而导致每次运行的输出相同。

使用示例:--temp 0

重复处罚

  • --repeat-penalty N:控制生成的文本中标记序列的重复默认值:1.0,1.0 = 禁用)。
  • --repeat-last-n N:考虑惩罚重复的最后 n 个标记(默认值:64,0 = 禁用,-1 = ctx-size)。

repeat-penalty选项有助于防止模型生成重复或单调的文本。较高的值(例如 1.5)将对重复内容进行更严厉的惩罚,而较低的值(例如 0.9)将更宽松。默认值为 1。

repeat-last-n选项控制历史记录中用于惩罚重复的标记数量。较大的值将在生成的文本中进一步追溯以防止重复,而较小的值将仅考虑最近的标记。值为 0 表示禁用惩罚,值为 -1 表示将考虑的标记数量设置为等于上下文大小 ( ctx-size)。

DRY 重复惩罚

DRY(不要重复自己)采样是一种有效的技术,它可以通过根据标记最近的使用模式对其进行惩罚来减少生成文本中的重复,即使在长上下文中也是如此(原始PR 链接)。

  • --dry-multiplier N:设置 DRY 采样乘数(默认值:0.0,0.0 = 禁用)。
  • --dry-base N:设置DRY采样基值(默认值:1.75)。
  • --dry-allowed-length N:设置 DRY 采样允许的长度(默认值:2)。
  • --dry-penalty-last-n N:为最后 n 个标记设置 DRY 惩罚(默认值:-1、0 = 禁用、-1 = 上下文大小)。
  • --dry-sequence-breaker STRING:为 DRY 采样添加序列中断器。可多次使用,以添加多个序列中断器。使用此选项可清除默认的中断器,这些中断器包含:['\n', ':', '"', '*']。如果提供了字符串"none",则不使用任何序列中断器。

dry-multiplier选项控制 DRY 采样效果的强度。值为 0.0 时禁用 DRY 采样,值越高,其影响越大。推荐值为 0.8。

dry-base选项设置 DRY 采样中指数惩罚计算的基准值。值越高,重复惩罚越严厉。

dry-allowed-length选项设置不会受到惩罚的重复序列的最大长度。小于或等于此长度的重复不会受到惩罚,从而允许短语或常用词的自然重复。

dry-penalty-last-n选项控制应用 DRY 惩罚时要考虑的近期标记数量。值为 -1 表示考虑整个上下文。使用正值可将考虑范围限制为特定数量的近期标记。

dry-sequence-breaker选项添加单个序列中断器,并可多次使用以指定多个序列中断器。序列中断器会中断序列匹配,并将输入拆分为可应用匹配的部分。

DRY 采样对文本生成提供了更细致的控制,特别是对于减少长距离重复和保持整体一致性。

使用示例:--dry-multiplier 0.8 --dry-base 1.75 --dry-allowed-length 2 --dry-penalty-last-n -1 --dry-sequence-breaker "—" --dry-sequence-breaker "##"

Top-K 采样

  • --top-k N:将下一个标记选择限制为 K 个最可能的标记(默认值:40)。

Top-k 采样是一种文本生成方法,它仅从模型预测的前 k 个最有可能的标记中选择下一个标记。它有助于降低生成低概率或无意义标记的风险,但也可能会限制输出的多样性。较高的 Top-k 值(例如 100)将考虑更多标记,从而产生更多样化的文本;而较低的值(例如 10)将侧重于最可能的标记,从而生成更保守的文本。默认值为 40。

使用示例:--top-k 30

Top-P 采样

  • --top-p N:将下一个标记选择限制为累积概率高于阈值 P 的标记子集(默认值:0.9)。

Top-p 采样,也称为核心采样,是另一种文本生成方法,它从一组累计概率至少为 p 的标记子集中选择下一个标记。该方法通过同时考虑标记的概率和要采样的标记数量,在多样性和质量之间取得平衡。较高的 Top-p 值(例如 0.95)将产生更多样化的文本,而较低的 Top-p 值(例如 0.5)将产生更集中、更保守的文本。默认值为 0.9。

使用示例:--top-p 0.95

最小P采样

  • --min-p N:设置令牌选择的最小基本概率阈值(默认值:0.1)。

Min-P 采样方法旨在替代 Top-P 采样方法,旨在确保质量和多样性之间的平衡。参数p表示某个 token 被考虑的最小概率,相对于最可能 token 的概率。例如,当p =0.05 且最可能 token 的概率为 0.9 时,值小于 0.045 的 logit 将被过滤掉。

使用示例:--min-p 0.05

局部典型抽样

  • --typical N:使用参数 p 启用局部典型采样(默认值:1.0,1.0 = 禁用)。

局部典型采样通过对基于周围上下文的典型或预期标记进行采样,促进生成上下文连贯且多样化的文本。通过将参数 p 设置为 0 到 1 之间的值,您可以控制生成局部连贯和多样化文本之间的平衡。接近 1 的值将促进生成上下文更连贯的标记,而接近 0 的值将促进生成更具多样性的标记。等于 1 的值将禁用局部典型采样。

使用示例:--typical 0.9

Mirostat 采样

  • --mirostat N:启用 Mirostat 采样,控制文本生成期间的困惑度(默认值:0,0 = 禁用,1 = Mirostat,2 = Mirostat 2.0)。
  • --mirostat-lr N:设置Mirostat的学习率,参数eta(默认值:0.1)。
  • --mirostat-ent N:设置Mirostat目标熵,参数tau(默认值:5.0)。

Mirostat 是一种在文本生成过程中主动将生成文本质量保持在期望范围内的算法。它旨在在连贯性和多样性之间取得平衡,避免因过度重复(无聊陷阱)或不连贯(混乱陷阱)而导致的低质量输出。

--mirostat-lr选项设置 Mirostat 的学习率 (eta)。学习率影响算法对生成文本反馈的响应速度。较低的学习率会导致调整速度较慢,而较高的学习率会使算法响应更快。默认值为0.1

--mirostat-ent选项设置 Mirostat 的目标熵 (tau),它表示生成文本所需的困惑度值。调整目标熵可以控制生成文本的连贯性和多样性之间的平衡。较低的值将导致文本更加集中和连贯,而较高的值将导致文本更加多样化,但连贯性可能更低。默认值为5.0

使用示例:--mirostat 2 --mirostat-lr 0.05 --mirostat-ent 3.0

XTC采样

  • --xtc-probability N:设置令牌移除的机会(采样器启动时检查一次)(默认值:0.0)。
  • --xtc-threshold N:设置要删除的令牌的最小概率阈值(默认值:0.1)。

排除最佳选择 (XTC) 是一个独特的采样器,旨在从考虑中移除排名靠前的 token,并避免更明显和重复的输出。xtc-probability它会搜索概率为xtc-threshold及以上的 token,然后移除所有此类 token,只留下概率最小的 token。

通过移除顶部标记,XTC 可以提升答案的多样性,打破写作陈词滥调,并抑制重复,因为陈词滥调和重复的短语通常更容易出现。通过将最后一个标记保持在阈值以上,XTC 可以确保答案仍然连贯。XTC 旨在用于创造性任务,但您可以自由地为不同的模型尝试不同的设置。

XTC 是实验性的、独特的,默认情况下处于禁用状态。推荐的采样器组合是 Min-P,然后是 XTC(默认设置)--sampling-seq mx --min-p 0.02 --xtc-probability 0.5:。

使用示例:--xtc-probability 0.5 --xtc-threshold 0.1

Top-nσ 采样

  • --top-nsigma N:将下一个标记选择限制为具有预 softmax logit 的标记子集,这些子集位于小于最大 logit 的 n * σ 范围内(默认值:-1,-1 = 禁用)。

Top-nσ 采样是一种文本生成方法,它基于预 Softmax 逻辑向量中的统计阈值来选择标记。该方法仅从逻辑向量在最大逻辑向量 n * σ 范围内的标记中进行采样。无论温度如何变化,此方法都能保持稳定的采样空间,使其即使在高温下也能在推理任务中表现出色。无需复杂的概率操作,它可以直接在预 Softmax 逻辑向量上高效地过滤标记。较高的 top-nσ 值(例如 5)将考虑更多噪声标记,而较低的值(例如 1)将专注于采样空间中信息量更大的区域。

使用示例:--top-nsigma 1

Logit 偏差

  • -l TOKEN_ID(+/-)BIAS, --logit-bias TOKEN_ID(+/-)BIAS:修改某个标记出现在生成的文本补全中的可能性。

Logit 偏差选项允许您手动调整特定标记在生成文本中出现的可能性。通过提供标记 ID 以及正偏差值或负偏差值,您可以增加或减少该标记生成的概率。

例如,用来--logit-bias 15043+1增加“Hello”这个标记的可能性,或--logit-bias 15043-1降低其可能性。使用负无穷大值--logit-bias 15043-inf可确保该标记Hello永远不会被生成。

更实际的用例可能是通过将标记 (29905)设置为负无穷大来阻止\code{begin}和的生成。(这是由于在 LLaMA 模型推理中出现的 LaTeX 代码的普遍性。)\code{end}\-l 29905-inf

使用示例:--logit-bias 29905-inf

随机数种子

  • -s SEED, --seed SEED:设置随机数生成器(RNG)种子(默认值:-1,-1 = 随机种子)。

RNG 种子用于初始化影响文本生成过程的随机数生成器。通过设置特定的种子值,您可以在使用相同输入和设置的多次运行中获得一致且可重现的结果。这有助于测试、调试或比较不同选项对生成文本的影响,以查看它们何时出现差异。如果种子设置为小于 0 的值,则将使用随机种子,这将导致每次运行都产生不同的输出。

性能调整和内存选项

这些选项有助于提升 LLaMA 模型的性能和内存使用率。通过调整这些设置,您可以微调模型的行为,使其更好地适应系统功能,并针对您的特定用例实现最佳性能。

线程数

  • -t N, --threads N:设置生成过程中使用的线程数。为了获得最佳性能,建议将此值设置为系统拥有的物理 CPU 核心数(而不是逻辑核心数)。使用正确的线程数可以显著提升性能。
  • -tb N, --threads-batch N:设置批处理和快速处理期间使用的线程数。在某些系统中,批处理期间使用的线程数比生成期间使用的线程数更高是有利的。如果未指定,则批处理使用的线程数将与生成使用的线程数相同。

姆洛克

  • --mlock:将模型锁定在内存中,防止其在内存映射时被换出。这可以提高性能,但会牺牲内存映射的一些优势,因为它需要更多 RAM 来运行,并且模型加载到 RAM 时可能会减慢加载时间。

内存映射

  • --no-mmap:请勿对模型进行内存映射。默认情况下,模型会映射到内存中,这使得系统能够根据需要仅加载模型的必要部分。但是,如果模型大于您的 RAM 总量,或者您的系统可用内存不足,使用 mmap 可能会增加页面溢出的风险,从而对性能产生负面影响。禁用 mmap 会导致加载时间变慢,但如果您不使用 mmap,则可能会减少页面溢出--mlock。请注意,如果模型大于 RAM 总量,关闭 mmap 将完全阻止模型加载。

NUMA 支持

  • --numa distribute:将等比例的线程固定到每个 NUMA 节点上的核心。这将使负载分散到系统上的所有核心,从而充分利用所有内存通道,但代价是内存可能需要通过节点之间的慢速链路进行传输。
  • --numa isolate:将所有线程固定到程序启动所在的 NUMA 节点。这会限制可用的核心数量和内存容量,但保证所有内存访问都位于 NUMA 节点本地。
  • --numa numactl:使用 numactl 实用程序启动程序,将线程固定到传递给程序的 CPUMAP。这是最灵活的模式,允许任意核心使用模式,例如,一个映射使用一个 NUMA 节点上的所有核心,而另一个节点上仅使用足够多的核心来使节点间内存总线饱和。

这些标志尝试进行优化,以在某些具有非均匀内存访问的系统上提供帮助。目前,这包括上述策略之一,以及禁用 mmap 的预取和预读。后者会导致映射页面在首次访问时(而不是一次性全部访问)发生故障,并且结合将线程固定到 NUMA 节点,更多页面最终会到达它们使用的 NUMA 节点。请注意,如果模型已位于系统页面缓存中(例如,由于之前运行时未使用此选项),则除非您先删除页面缓存,否则此操作将几乎没有效果。这可以通过重启系统或在 Linux 上以 root 身份将“3”写入“/proc/sys/vm/drop_caches”来完成。

批次大小

  • -ub N--ubatch-size N:物理批次大小。这是一次可处理的最大令牌数。增加此值可能会提高提示处理的性能,但会增加内存使用量。默认值:512
  • -b N--batch-size N:逻辑批次大小。将此值增加到高于物理批次大小的值,在使用具有流水线并行性的多 GPU 时,可以提高快速处理性能。默认值:2048

即时缓存

  • --prompt-cache FNAME:指定一个文件来缓存初始提示后的模型状态。当您使用较长的提示时,这可以显著加快启动时间。该文件在首次运行期间创建,并在后续运行中重复使用和更新。注意:恢复缓存的提示并不意味着恢复会话在保存时点的精确状态。因此,即使指定了特定的种子,也不能保证获得与原始生成相同的令牌序列。

语法和 JSON 模式

  • --grammar GRAMMAR, --grammar-file FILE:指定语法(以内联方式定义或在文件中定义)以将模型输出限制为特定格式。例如,您可以强制模型输出 JSON 或仅使用表情符号。有关语法的详细信息,请参阅GBNF 指南。
  • --json-schema SCHEMA:指定JSON 模式以约束模型输出(例如,{}任何 JSON 对象,或{"items": {"type": "string", "minLength": 10, "maxLength": 100}, "minItems": 10}具有大小限制的 JSON 字符串数组)。如果模式使用外部$refs,则应使用--grammar "$( python examples/json_schema_to_grammar.py myschema.json )"

量化

有关 4 位量化的信息(可显著提高性能并减少内存使用量),请参阅 llama.cpp 的主要README

LoRA(低秩自适应)适配器

  • --lora FNAME:可选路径,用于 LoRA 适配器,扩展版本为 1.0。可混合使用--lora-scaled,也可重复使用多个适配器。
  • --lora-scaled FNAME:可选路径,指向具有用户自定义缩放比例的 LoRA 适配器。可与--lora多个适配器混合使用,也可重复使用。

您可以使用--lora或添加 LoRA 适配器--lora-scaled。例如:--lora my_adapter_1.gguf --lora my_adapter_2.gguf ...--lora-scaled lora_task_A.gguf 0.5 --lora-scaled lora_task_B.gguf 0.5

LoRA 适配器应为 GGUF 格式。要从 Hugging Face 格式转换,请使用convert-lora-to-gguf.py脚本。LoRA 适配器单独加载并在推理过程中应用 – 它们不会与主模型合并。这意味着使用 LoRA 适配器时完全支持 mmap 模型加载。--lora-base由于不再执行合并操作,旧标志已被移除。

附加选项

运行 LLaMA 模型时,这些选项提供了额外的功能和定制:

  • -h, --help:显示帮助消息,其中列出所有可用选项及其默认值。这对于检查最新的选项和默认值特别有用,因为它们可能经常更改,并且本文档中的信息可能会过时。
  • --verbose-prompt:生成文本之前打印提示。
  • --no-display-prompt:生成时不打印提示。
  • -mg i, --main-gpu i:当使用多个 GPU 时,此选项控制使用哪个 GPU 来处理小型张量,因为对于这些张量,将计算分散到所有 GPU 上不值得。相应的 GPU 将使用略多的 VRAM 来存储临时结果的临时缓冲区。默认情况下使用 GPU 0。
  • -ts SPLIT, --tensor-split SPLIT:使用多个 GPU 时,此选项控制应在所有 GPU 上分配多大张量。SPLIT它是一个以逗号分隔的非负值列表,用于指定每个 GPU 应按顺序获取的数据比例。例如,“3,2”表示将 60% 的数据分配给 GPU 0,将 40% 的数据分配给 GPU 1。默认情况下,数据按 VRAM 比例分配,但这可能并非性能最佳。
  • -hfr URL --hf-repo URL:Hugging Face 模型存储库的 URL。与--hf-file或结合使用-hff。模型将下载并存储在-m或提供的文件中--model。如果-m未提供 ,则模型将自动存储在环境变量指定的路径LLAMA_CACHE或特定于操作系统的本地缓存中。

Paragoger衍生者AI训练营。发布者:稻草人,转载请注明出处:https://www.shxcj.com/archives/9851

(0)
上一篇 2025-06-16 3:03 下午
下一篇 5小时前

相关推荐

发表回复

登录后才能评论
本文授权以下站点有原版访问授权 https://www.shxcj.com https://www.2img.ai https://www.2video.cn