推理设置

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

示例用法:

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

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

class deepspeed.inference.config.DeepSpeedInferenceConfig[来源]

为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.half, torch.int8, torch.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: 量化配置 = {}

注意:仅适用于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

指定推理模块是否使用空或真实的Tensor创建

save_mp_checkpoint_path: Optional[str] = None

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

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

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

return_tuple: bool = True

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

training_mp_size: int = 1

如果加载检查点,这是它训练时使用的mp大小,它可能与你希望在推理期间使用的mp大小不同。

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[来源]

配置张量并行设置

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[来源]

为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[来源]
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[来源]
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
}