推理设置

使用 DeepSpeed 进行推理的入口点是 deepspeed.init_inference()

使用示例

engine = deepspeed.init_inference(model=net, config=config)

DeepSpeedInferenceConfig 用于控制初始化 InferenceEngine 的所有方面。配置应作为字典传递给 init_inference,但参数也可以作为关键字参数传递。

class deepspeed.inference.config.DeepSpeedInferenceConfig[source]

设置 DeepSpeed 推理引擎的参数。

replace_with_kernel_inject: bool = False (alias 'kernel_inject')

设置为 true 以注入模型(如 Bert、GPT2、GPT-Neo 和 GPT-J)的推理内核。否则,injection_dict 将两个线性层的名称作为元组提供:(attention_output projection, transformer output projection)

dtype: dtype = torch.float16

所需的模型数据类型,将模型转换为此类型。支持的目标类型:torch.halftorch.int8torch.float

tensor_parallel: DeepSpeedTPConfig = {} (alias 'tp')

用于将模型跨多个 GPU 分割的张量并行配置。期望一个包含 DeepSpeedTPConfig 值的字典。

enable_cuda_graph: bool = False

使用此标志捕获推理操作的 CUDA 图,以便可以使用图重放方法更快地运行。

use_triton: bool = False

使用此标志使用 triton 内核进行推理操作。

triton_autotune: bool = False

使用此标志启用 triton 自动调整。打开它可以提高性能,但会增加自动调整的第一次运行时间。

zero: DeepSpeedZeroConfig = {}

与推理引擎一起使用的 ZeRO 配置。期望一个包含 DeepSpeedZeroConfig 值的字典。

triangular_masking: bool = True (alias 'tm')

控制 Transformer 层中注意力分数的掩码类型。请注意,掩码是特定于应用程序的。

moe: Union[bool, DeepSpeedMoEConfig] = {}

指定 Transformer 的类型是否为 MoE。期望一个包含 DeepSpeedMoEConfig 值的字典。

quant: QuantizationConfig = {}

注意:仅适用于 int8 数据类型。用于使用 MoQ 量化模型的量化设置。设置可以是一个元素或一个元组。如果传入一个值,我们将其视为量化中使用的组数。如果我们想提到 Transformer 层的 MLP 部分存在额外分组,则传入一个元组(例如,(True, 8) 表示我们使用 8 个组对除使用 8 个额外分组的 MLP 部分之外的所有网络进行量化)。期望一个包含 QuantizationConfig 值的字典。

checkpoint: Optional[Union[str, Dict]] = None

指向与 deepspeed 兼容的检查点的路径或指向包含加载策略的 JSON 文件的路径。

base_dir: str = ''

这显示了所有检查点文件所在的根目录。这也可以通过 json 配置传递。

set_empty_params: bool = False

指定推理模块是使用空张量还是真实张量创建的。

save_mp_checkpoint_path: Optional[str] = None

保存加载模型的检查点的路径。此功能用于调整并行度,以帮助减轻模型加载开销。如果未传递路径,则不会保存任何新的检查点。

checkpoint_config: InferenceCheckpointConfig = {} (alias 'ckpt_config')

待办事项:添加文档。预期一个包含 InferenceCheckpointConfig 值的字典。

return_tuple: bool = True

指定 Transformer 层是否需要返回元组或张量。

training_mp_size: int = 1

如果加载检查点,则这是其训练时的模型并行大小,它可能与推理期间要使用的模型并行大小不同。

replace_method: str = 'auto'
injection_policy: Optional[Dict] = None (alias 'injection_dict')

将客户端 nn.Module 映射到其对应注入策略的字典。例如,{BertLayer : deepspeed.inference.HFBertLayerPolicy}

injection_policy_tuple: Optional[tuple] = None

待办事项:添加文档

config: Optional[Dict] = None (alias 'args')
max_out_tokens: int = 1024 (alias 'max_tokens')

此参数显示推理引擎可以处理的最大令牌数,包括输入和输出令牌。请考虑将其增加到您的用例所需的令牌长度。

min_out_tokens: int = 1 (alias 'min_tokens')

此参数向运行时传达您预期需要生成的最小令牌数。如果运行时无法提供此令牌数,则会导致运行时出错并提供有关内存压力的上下文,而不是出现段错误或提供损坏的输出。

transposed_mode: bool = False
mp_size: int = 1

所需的模型并行大小,默认为 1,表示没有模型并行。已弃用,请使用 ``tensor_parallel` 配置来控制模型并行。

mpu: object = None
ep_size: int = 1
ep_group: object = None (alias 'expert_group')
ep_mp_group: object = None (alias 'expert_mp_group')
moe_experts: list = [1]
moe_type: MoETypeEnum = MoETypeEnum.standard
class deepspeed.inference.config.DeepSpeedTPConfig[source]

配置张量并行设置

enabled: bool = True

打开/关闭张量并行。

tp_size: int = 1

使用张量并行将模型拆分到其中的设备数量。

mpu: object = None

一个模型并行单元对象,实现了 get_{model,data}_parallel_{rank,group,world_size}()

tp_group: object = None
class deepspeed.inference.config.DeepSpeedMoEConfig[source]

设置 MoE 的参数

enabled: bool = True
ep_size: int = 1

专家并行的大小,用于在专家并行组中的 GPU 上对专家进行分区。

moe_experts: list = [1] (alias 'num_experts')

MoE 层中使用的专家总数。

type: MoETypeEnum = MoETypeEnum.standard

指定 MoE 层的类型。我们有两种类型的 MoE 层:“标准”和“残差”。

ep_mp_group: object = None
ep_group: object = None (alias 'expert_group')
class deepspeed.inference.config.QuantizationConfig[source]
enabled: bool = True
activation: ActivationQuantConfig = ActivationQuantConfig(enabled=True, num_bits=8, q_type='symmetric', q_groups=1)
weight: WeightQuantConfig = WeightQuantConfig(enabled=True, num_bits=8, q_type='symmetric', q_groups=1, quantized_initialization={}, post_init_quant={})
qkv: QKVQuantConfig = QKVQuantConfig(enabled=True)
class deepspeed.inference.config.InferenceCheckpointConfig[source]
checkpoint_dir: Optional[str] = None
save_mp_checkpoint_path: Optional[str] = None
base_dir: Optional[str] = None

示例配置

config = {
    "kernel_inject": True,
    "tensor_parallel": {"tp_size": 4},
    "dtype": "fp16",
    "enable_cuda_graph": False
}