

# 推理容器功能
<a name="nova-sagemaker-inference-container-features"></a>

Amazon Nova SageMaker 推理容器包含一系列可让您自定义推理期间的模型行为的功能。每项功能都是在特定的容器版本中推出的，可能需要通过环境变量或请求参数两者之一或同时满足两者才能激活。

本页列出了推理容器中可用的功能，介绍了如何启用各项功能，并标识了推出相应功能的容器版本。请使用此参考来确定哪些功能可用于您的部署以及如何配置这些功能。

通过环境变量启用的功能需要在您创建 SageMaker 模型或端点配置时设置。请将其包含在 [CreateModel](https://docs.aws.amazon.com//sagemaker/latest/APIReference/API_CreateModel.html) API 调用的 `Environment` 参数中。通过请求参数启用的功能需要在每次调用时通过请求正文设置。

**注意**  
请务必使用最新的容器映像来访问所有可用的功能。`SM-Inference-latest` 标签当前指向 `v1.4`。

## 特征摘要
<a name="nova-sagemaker-inference-container-features-summary"></a>

下表列举了 Amazon Nova SageMaker 推理容器支持的所有功能的快速参考。


**推理容器功能概览**  

| 功能 | 如何启用 | 默认 | 支持的模型 | 已引入 | 
| --- | --- | --- | --- | --- | 
| [默认温度](#nova-sagemaker-inference-container-feature-default-temperature) | 环境变量 | 1.0 | 所有 Amazon Nova 模型 | v1.0 | 
| [默认 Top-p](#nova-sagemaker-inference-container-feature-default-top-p) | 环境变量 | 1.0 | 所有 Amazon Nova 模型 | v1.0 | 
| [默认 Top-k](#nova-sagemaker-inference-container-feature-default-top-k) | 环境变量 | -1（已禁用） | 所有 Amazon Nova 模型 | v1.0 | 
| [默认最大新词元数](#nova-sagemaker-inference-container-feature-default-max-new-tokens) | 环境变量 | 模型最大上下文长度 | 所有 Amazon Nova 模型 | v1.0 | 
| [默认 logprobs](#nova-sagemaker-inference-container-feature-default-logprobs) | 环境变量 | 已禁用 | 所有 Amazon Nova 模型 | v1.0 | 
| [Eagle3 推测解码](#nova-sagemaker-inference-container-feature-speculative-decoding) | 默认情况下启用 | 已启用 | 所有 Amazon Nova 模型 | v1.0 | 
| [KV 缓存数据类型](#nova-sagemaker-inference-container-feature-kv-cache-dtype) | 环境变量 | 与模型数据类型相同 | 所有 Amazon Nova 模型 | v1.3 | 
| [量化](#nova-sagemaker-inference-container-feature-quantization) | 环境变量 | 已禁用\* | 所有 Amazon Nova 模型 | v1.3 | 
| [推测词元数](#nova-sagemaker-inference-container-feature-num-speculative-tokens) | 环境变量 | 3 | 所有 Amazon Nova 模型 | v1.4 | 
| [后缀解码](#nova-sagemaker-inference-container-feature-suffix-decoding) | 环境变量 | 已禁用 | 所有 Amazon Nova 模型 | v1.4 | 

**重要**  
\* 系统会自动启用 FP8 量子化，并且无法为以下模型和实例类型组合禁用此功能：  
`ml.g6.12xlarge` 或 `ml.g6.24xlarge` 上的 Amazon Nova Lite
`ml.g6.48xlarge` 上的 Nova 2 Lite
对于这些配置，您不需要设置 `QUANTIZATION_DTYPE`。有关详细信息，请参阅 [量化](#nova-sagemaker-inference-container-feature-quantization)。

## 默认温度
<a name="nova-sagemaker-inference-container-feature-default-temperature"></a>

设置发送到端点的所有推理请求的默认采样温度。温度用于控制模型输出的随机性或可预测性高低。如果将值设置为 `0`，则模型将始终选择最可能的下一个单词，从而生成一致且可重复的输出。值越高（最大不超过 `2`），模型选择可能性较低单词的意愿也会更高，从而生成更具创造性和多样性的响应。

**何时使用：**对于分类或数据提取等需要事实性、一致答案的任务，应降低温度（例如，`0.1` 至 `0.3`）。对于故事采写或头脑风暴之类的创造性任务，应提高温度（例如，`0.7` 至 `1.0`）。将温度与 Top-p 和 Top-k 配合使用：这三个参数都可控制模型选择词元的方式，并且可将其进行组合来微调输出行为。

已引入  
`v1.0`

支持的模型  
所有 Amazon Nova 模型

如何启用  
在创建 SageMaker 模型时设置 `DEFAULT_TEMPERATURE` 环境变量。

默认 值  
`1.0`

有效值  
在 `0` 和 `2`（含）之间浮动

**环境变量**

```
"Environment": {
    "DEFAULT_TEMPERATURE": "0.7"
}
```

**注意**  
您可以通过在请求正文中包含 `temperature` 参数，从而在单个请求中覆盖此默认值。

## 默认 Top-p
<a name="nova-sagemaker-inference-container-feature-default-top-p"></a>

设置所有推理请求的默认 Top-p 值。Top-p 通过将模型的选择范围限制为最可能单词的子集，从而控制输出的多样性。具体而言，模型会按概率对所有可能的下一个单词进行排序，并且仅考虑组合概率达到 Top-p 值的最小组。例如，Top-p 为 `0.9` 表示模型将仅考虑组合概率达到 90％ 的单词，忽略剩下不太可能的选项。

**何时使用：**要使模型坚持使用高置信度的单词，从而生成重点更明确的输出，则应使用较低的 Top-p 值（例如 `0.5`）。而要实现更好的多样性，则应使用较高的值（例如 `0.95`）。Top-p 通常用于代替温度参数，两者都可控制输出多样性，但是 Top-p 会根据模型在每个步骤中的置信度进行动态调整。您可以同时使用这两个参数，但这会导致模型将在每个步骤中应用限制更严格的约束条件。

已引入  
`v1.0`

支持的模型  
所有 Amazon Nova 模型

如何启用  
在创建 SageMaker 模型时设置 `DEFAULT_TOP_P` 环境变量。

默认 值  
`1.0`

有效值  
在 `1e-10` 和 `1`（含）之间浮动

**环境变量**

```
"Environment": {
    "DEFAULT_TOP_P": "0.9"
}
```

**注意**  
您可以通过在请求正文中包含 `top_p` 参数，从而在单个请求中覆盖此默认值。

## 默认 Top-k
<a name="nova-sagemaker-inference-container-feature-default-top-k"></a>

设置所有推理请求的默认 Top-k 值。Top-k 用于将模型的选择范围限制为固定数量的最可能的下一个单词。例如，将 Top-k 设置为 `50` 表示模型在每个步骤中只考虑 50 个最可能的单词，但不会考虑其个别概率。将值设置为 `-1` 将会禁用此限制，从而让模型考虑所有可能的单词。

**何时使用：**如果需要为模型要考虑的单词选择数量设定硬上限，应使用 Top-k。较低的值（例如 `10`）可提高输出的可预测性，而较高的值则可提高多样性。Top-k 可以与温度和 Top-p 参数结合使用。启用多个采样控制参数时，模型会应用所有控制参数，在每个步骤中使用限制最严格的选项。

已引入  
`v1.0`

支持的模型  
所有 Amazon Nova 模型

如何启用  
在创建 SageMaker 模型时设置 `DEFAULT_TOP_K` 环境变量。

默认 值  
`-1`（已禁用）

有效值  
`-1` 或更大的整数。要考虑所有词元，应使用 `-1`。

**环境变量**

```
"Environment": {
    "DEFAULT_TOP_K": "50"
}
```

**注意**  
您可以通过在请求正文中包含 `top_k` 参数，从而在单个请求中覆盖此默认值。

## 默认最大新词元数
<a name="nova-sagemaker-inference-container-feature-default-max-new-tokens"></a>

设置模型在响应中生成的词元（单词或单词片段）的默认最大数量。除非被覆盖，否则该值适用于所有请求。该值用来控制响应长度和整个端点的成本。

**何时使用：**如果需要对所有请求强制使用一致的最大响应长度，则应设置该值。例如，对于简答任务可将其设置为 `256`，而对于较长的内容生成，可将其设置为 `2048`。最大允许值取决于为端点配置的 `CONTEXT_LENGTH`，因为输入词元数加上输出词元数之和不能超过上下文长度。

已引入  
`v1.0`

支持的模型  
所有 Amazon Nova 模型

如何启用  
在创建 SageMaker 模型时设置 `DEFAULT_MAX_NEW_TOKENS` 环境变量。

默认 值  
模型最大上下文长度

有效值  
`1` 或更大的整数

**环境变量**

```
"Environment": {
    "DEFAULT_MAX_NEW_TOKENS": "512"
}
```

**注意**  
您可以通过在请求正文中包含 `max_tokens` 或 `max_completion_tokens` 参数，从而在单个请求中覆盖此默认值。最大允许值取决于为端点配置的 `CONTEXT_LENGTH`。

## 默认 logprobs
<a name="nova-sagemaker-inference-container-feature-default-logprobs"></a>

设置将为每个生成的词元返回的默认对数概率数量。对数概率是一个数值得分，用于表示模型在选择每个单词时的置信度高低。启用此参数后，响应将包括每个输出词元的得分，这对于评估模型置信度、比较备选单词选择和调试生成行为非常实用。

**何时使用：**如果需要评估模型对其输出的置信度，则应启用 logprobs。例如，标记低置信度响应以供人工审查，或者比较不同完成的可能性。启用 logprobs 可能会稍微增加响应延迟和响应的有效载荷大小。

已引入  
`v1.0`

支持的模型  
所有 Amazon Nova 模型

如何启用  
在创建 SageMaker 模型时设置 `DEFAULT_LOGPROBS` 环境变量。

默认 值  
已禁用

有效值  
`1` 到 `20`（含）的整数

**环境变量**

```
"Environment": {
    "DEFAULT_LOGPROBS": "5"
}
```

**注意**  
您可以通过在请求正文中包含 `logprobs` 和 `top_logprobs` 参数，从而在单个请求中覆盖此默认值。启用 logprobs 可能会稍微增加响应延迟。

## Eagle3 推测解码
<a name="nova-sagemaker-inference-container-feature-speculative-decoding"></a>

Eagle3 推测解码是一种用于加速文本生成的优化技术。其原理是提前使用一个运行速度较快的较小草稿模型来预测多个词元，然后在一个步骤中将这些预测与主模型进行比较。如果预测正确，模型可在生成一个词元通常所需的时间内有效生成多个词元。主模型始终会验证草稿词元，因此最终输出与主模型自己生成的输出相同。质量不变，只是速度改变。

**何时使用：**Eagle3 推测解码功能会默认启用，适用于大多数工作负载。仅在调试期间观察到意外行为或需要隔离性能特征时，才应考虑将其禁用。

已引入  
`v1.0`。`v1.4` 中增加了对使用 Eagle3 推测解码的 FP8 量子化支持。

支持的模型  
所有 Amazon Nova 模型

如何启用  
Eagle3 推测解码会默认启用，无需进行任何配置。使用 `DISABLE_SPECULATIVE_DECODING` 将其禁用。

默认 值  
`false`（Eagle3 推测解码已启用）

有效值  
`true`, `false`

**环境变量**

以下示例禁用了 Eagle3 推测解码功能：

```
"Environment": {
    "DISABLE_SPECULATIVE_DECODING": "true"
}
```

## KV 缓存数据类型
<a name="nova-sagemaker-inference-container-feature-kv-cache-dtype"></a>

设置推理期间使用的键值（KV）缓存的数据类型。KV 缓存用于在对话中存储模型之前记忆的词元，从而无需重新处理整个输入即可生成每个新词元。对于长序列，此缓存会消耗大量的 GPU 内存。将 KV 缓存设置为诸如 FP8 之类的低精度数据类型可以减少内存使用量并提高吞吐量，但代价是输出会存在微小的数值差异。

**何时使用：**如果需要在实例上支持更长的上下文长度或更高的并发度，则可启用 FP8 KV 缓存。这对于内存有限的 GPU 实例尤其实用。测试您的使用案例以验证输出质量是否满足要求，因为较低的精度可能会产生略微不同的结果。

已引入  
`v1.3`

支持的模型  
所有 Amazon Nova 模型

如何启用  
在创建 SageMaker 模型时设置 `KV_CACHE_DTYPE` 环境变量。

默认 值  
与模型数据类型相同

有效值  
`fp8`

**环境变量**

```
"Environment": {
    "KV_CACHE_DTYPE": "fp8"
}
```

**注意**  
更改 KV 缓存数据类型可能会导致生成的输出与使用默认精度时略微不同。测试您的使用案例以验证输出质量是否满足要求。

## 量化
<a name="nova-sagemaker-inference-container-feature-quantization"></a>

设置模型权重的量子化数据类型。量子化会将模型的权重压缩为较低精度的格式（FP8，而不是默认的高精度），从而减少模型所需的 GPU 内存量。这可以提高推理吞吐量，让较小的实例类型满足较大模型的要求，同时对输出质量的影响极小。

**何时使用：**如果需要减少内存使用量以支持更高的并发度或在较小的实例类型上容纳模型，则应使用 FP8 量子化。请注意，某些模型和实例类型组合需要自动执行 FP8 量子化，详情请参阅下面的警告。

已引入  
`v1.3`

支持的模型  
所有 Amazon Nova 模型

如何启用  
在创建 SageMaker 模型时设置 `QUANTIZATION_DTYPE` 环境变量。

默认 值  
已禁用。但某些模型和实例类型组合会自动启用 FP8 量子化功能。请参阅下面的注释。

有效值  
`fp8`

**环境变量**

```
"Environment": {
    "QUANTIZATION_DTYPE": "fp8"
}
```

**重要**  
以下模型和实例类型组合需要启用 FP8 量子化。对于这些配置，量子化功能会自动启用，无法禁用或覆盖：  
`ml.g6.12xlarge` 或 `ml.g6.24xlarge` 上的 Amazon Nova Lite
`ml.g6.48xlarge` 上的 Nova 2 Lite
有关所有其他配置的详细信息，请参阅[支持的模型与实例](nova-model-sagemaker-inference.md#nova-sagemaker-inference-supported)。

## 推测词元数
<a name="nova-sagemaker-inference-container-feature-num-speculative-tokens"></a>

控制草稿模型在每个 Eagle3 推测解码步骤中提前预测的词元数量。该值越高，草稿模型会尝试同时预测的词元越多。如果预测准确，则可以提高吞吐量。如果模型草稿的预测经常偏离主模型，则设置较低的值可能更高效。

**何时使用：**如果工作负载会产生可预测的输出模式（例如，结构化数据或模板化文本），草稿模型很可能会猜对，则应增加该值。对于预测可靠性较低的创造性或极其易变的输出，应将其降低。

已引入  
`v1.4`

支持的模型  
所有 Amazon Nova 模型

如何启用  
在创建 SageMaker 模型时设置 `NUM_SPECULATIVE_TOKENS` 环境变量。

默认 值  
`3`

有效值  
`1` 到 `10`（含）的整数

**环境变量**

```
"Environment": {
    "NUM_SPECULATIVE_TOKENS": "5"
}
```

**注意**  
此设置仅在启用 Eagle3 推测解码（`DISABLE_SPECULATIVE_DECODING` 为 `false`）时适用。推测解码被禁用或使用后缀解码时，此功能将不起作用。

## 后缀解码
<a name="nova-sagemaker-inference-container-feature-suffix-decoding"></a>

后缀解码是另一种可用于加快文本生成的方法。后缀解码不像 Eagle3 那样使用单独的草稿模型，而是在已经生成的文本或输入提示中寻找重复的模式，然后重复使用这些模式来预测未来的词元。当输出可能包含重复的短语、结构化格式或与输入非常接近的内容时，此方法将非常有效。

**何时使用：**如果输出包含重复模式的任务，例如生成结构化数据、填写模板或汇总重复使用来源中短语的内容，则可使用后缀解码。对于输出极其易变的通用生成场景，默认的 Eagle3 方法通常可以提供更好的吞吐量。

已引入  
`v1.4`

支持的模型  
所有 Amazon Nova 模型

如何启用  
在创建 SageMaker 模型时将 `SPECULATIVE_DECODING_METHOD` 环境变量设置为 `suffix`。

默认 值  
`eagle3`

有效值  
`eagle3`, `suffix`

**环境变量**

```
"Environment": {
    "SPECULATIVE_DECODING_METHOD": "suffix"
}
```

**注意**  
要使用后缀解码，必须将 `DISABLE_SPECULATIVE_DECODING` 设置为 `false`（默认值）。将 `DISABLE_SPECULATIVE_DECODING` 设置为 `true` 会禁用所有推测解码方法，包括后缀解码。