推理请求

描述对GptManager请求的主要类是InferenceRequest。这被结构化为一个张量映射和一个uint64_t requestId。 下面描述了创建有效InferenceRequest对象所需的输入张量。采样配置参数在C++ GPT 运行时部分中有文档记录。表中的描述已被省略。

名称

形状

类型

描述

request_output_len

[1,1]

int32_t

最大输出令牌数

input_ids

[1, num_input_tokens]

int32_t

输入标记的张量

可以提供给InferenceRequest的可选张量如下所示。适用时,指定了默认值:

名称

形状

类型

描述

streaming

[1]

bool

(默认=false)。当true时,生成令牌时立即输出。当false时,仅在完整生成完成后返回。

beam_width

[1]

int32_t

(默认=1) 此请求的波束宽度;设置为1以进行贪婪采样

temperature

[1]

float

采样配置参数: temperature

runtime_top_k

[1]

int32_t

采样配置参数: topK

runtime_top_p

[1]

float

采样配置参数: topP

len_penalty

[1]

float

采样配置参数: lengthPenalty

early_stopping

[1]

int

采样配置参数: earlyStopping

repetition_penalty

[1]

float

采样配置参数: repetitionPenalty

min_length

[1]

int32_t

采样配置参数: minLength

presence_penalty

[1]

float

采样配置参数: presencePenalty

frequency_penalty

[1]

float

采样配置参数: frequencyPenalty

no_repeat_ngram_size

[1]

int32_t

采样配置参数: noRepeatNgramSize

random_seed

[1]

uint64_t

采样配置参数: randomSeed

end_id

[1]

int32_t

结束令牌ID。如果未指定,默认为-1

pad_id

[1]

int32_t

填充标记ID

embedding_bias

[1, 词汇大小]

float

在解码之前,偏差被添加到词汇表中每个标记的logits中。偏差中的正值鼓励标记的采样,而负值则抑制它。值为0.f时,logit值保持不变。

bad_words_list

[1, 2, num_bad_words]

int32_t

不良词汇列表。考虑一个包含两个不良词汇的示例,其中第一个词汇包含标记 [5, 7, 3],第二个词汇包含标记 [9, 2]。总共有5个标记,因此张量的形状应为 [1, 2, 5]。张量的第一行必须包含标记ID,而第二行必须存储词汇长度的包含扫描偏移量(以标记数量为单位)。因此,bad_word_list 张量将如下所示:[[[ 5, 7, 3, 9, 2][ 3, 5, -1, -1, -1]]]

stop_words_list

[1, 2, num_stop_words]

int32_t

停用词列表。有关预期张量形状和内容的描述,请参见bad_words_list

prompt_embedding_table

[1]

float16

P-tuning 提示嵌入表

prompt_vocab_size

[1]

int32_t

P-tuning 提示词汇大小

lora_task_id

[1]

uint64_t

给定lora_weights的任务ID。此ID预期是全局唯一的。首次使用特定LoRA进行推理时,必须提供lora_task_idlora_weightslora_config。LoRA将被缓存,因此对同一任务的后续请求仅需要lora_task_id。如果缓存已满,最旧的LoRA将被移除以为新的LoRA腾出空间。如果lora_task_id未被缓存,将返回错误。

lora_weights

[num_lora_modules_layers, D x Hi + Ho x D]

float (模型数据类型)

LoRA适配器的权重。有关更多信息,请参阅使用GptManager / cpp运行时运行gpt-2b + LoRA

lora_config

[num_lora_modules_layers, 3]

int32_t

LoRA配置张量。[ module_id, layer_idx, adapter_size (D aka R 值) ] 更多信息请参考使用GptManager / cpp运行时运行gpt-2b + LoRA

return_log_probs

[1]

bool

true 时,在输出中包含日志概率

return_context_logits

[1]

bool

true 时,在输出中包含上下文 logits

return_generation_logits

[1]

bool

true 时,在输出中包含生成的对数概率

draft_input_ids

[num_draft_tokens]

int32_t

在生成阶段利用草稿令牌,以在一次飞行批处理迭代中可能生成多个输出令牌

draft_logits

[num_draft_tokens, vocab_size]

float

draft_input_ids相关的草稿logits,在生成阶段利用,以在一次飞行批处理迭代中可能生成多个输出令牌

响应

来自GptManager的响应被格式化为一个张量列表。下表显示了由GptManager(通过SendResponseCallback)返回的输出张量集合:

名称

形状

类型

描述

output_ids

[beam_width, num_output_tokens]

int32_t

输出标记的张量。当启用streaming时,这是一个单一的标记。

sequence_length

[beam_width]

int32_t

输出的令牌数量。当streaming被设置时,这将为1。

output_log_probs

[1, beam_width, num_output_tokens]

float

仅当在输入中设置了return_log_probs时。输出令牌logits的对数概率张量。

cum_log_probs

[1, 光束宽度]

float

仅当输入中设置了return_log_probs时。生成的序列的累积对数概率。

context_logits

[1, num_input_tokens, vocab_size]

float

仅当在输入中设置了return_context_logits时。输入令牌的logits张量。

generation_logits

[1, beam_width, num_output_tokens, vocab_size]

float

仅当在输入中设置了return_generation_logits时。输出令牌logits的张量。