推理设置

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 (别名 '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 = {} (别名 'tp')

用于在多个 GPU 之间拆分模型的张量并行配置。期望一个包含 DeepSpeedTPConfig 值的字典。

enable_cuda_graph: bool = False

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

use_triton: bool = False

使用此标志可在推理操作中使用 Triton 内核。

triton_autotune: bool = False

使用此标志启用 Triton 自动调优。开启它有助于提高性能,但会增加首次运行自动调优的时间。

zero: DeepSpeedZeroConfig = {}

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

triangular_masking: bool = True (别名 'tm')

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

moe: Union[bool, DeepSpeedMoEConfig] = {}

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

keep_module_on_host: bool = False

将检查点加载到模型参数时,它们会移动到设备上。在非常大的模型中,这可能会填满设备并导致 OOM。将此标志设置为 true 将使检查点保留在主机上,而不直接将其移动到设备(例如,可以选择在将其移动到设备之前量化检查点数据)。仅适用于具有注入策略和自动 TP 的模型。

quant: QuantizationConfig = {}

注意:仅适用于 int8 数据类型。用于使用 MoQ 量化模型的量化设置。该设置可以是一个元素或一个元组。如果传入一个值,我们将其视为量化中使用的组数。如果我们要提及 Transformer 层的 MLP 部分有额外的分组(例如 (True, 8) 表示我们使用 8 个组量化模型的所有网络,除了 MLP 部分我们使用 8 个额外的分组),则传入一个元组。期望一个包含 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 = {} (别名 'ckpt_config')

TODO:添加文档。期望一个包含 InferenceCheckpointConfig 值的字典。

return_tuple: bool = True

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

training_mp_size: int = 1

如果加载检查点,这是它训练时使用的 MP 大小,可能与您在推理期间想要使用的 MP 大小不同。

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

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

injection_policy_tuple: Optional[tuple] = None

TODO:添加文档

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

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

min_out_tokens: int = 1 (别名 'min_tokens')

此参数告知运行时您期望需要生成的最小令牌数。如果运行时无法提供此数量,它将导致错误,并提供内存压力的上下文,而不是段错误或提供损坏的输出。

transposed_mode: bool = False
mp_size: int = 1

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

mpu: object = None
ep_size: int = 1
ep_group: object = None (别名 'expert_group')
ep_mp_group: object = None (别名 '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

使用张量并行拆分模型的设备数量。

tp_grain_size: int = 64

所需的 MLP/lm_head TP 大小粒度。DNN 库倾向于 2 的幂次方的张量大小,我们选择 64 作为默认大小。

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] (别名 'num_experts')

MoE 层中使用的全局专家数量。

type: MoETypeEnum = MoETypeEnum.standard

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

ep_mp_group: object = None
ep_group: object = None (别名 '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
}