5. 使用 XPU 进行预测

API定义如下:

// 启用 XPU 进行预测
// 参数:l3_workspace_size - l3 cache 分配的显存大小,最大为16M
// 参数:locked - 分配的L3 cache是否可以锁定。如果为false,表示不锁定L3 cache,则分配的L3 cache可以多个模型共享,多个共享L3 cache的模型在卡上将顺序执行
// 参数:autotune - 是否对模型中的conv算子进行autotune。如果为true,则在第一次执行到某个维度的conv算子时,将自动搜索更优的算法,用以提升后续相同维度的conv算子的性能
// 参数:autotune_file - 指定autotune文件路径。如果指定autotune_file,则使用文件中指定的算法,不再重新进行autotune
// 参数:precision - multi_encoder的计算精度
// 参数:adaptive_seqlen - multi_encoder的输入是否可变长
// 返回:None
void EnableXpu(int l3_workspace_size = 0xfffc00, bool locked = false,
               bool autotune = true, const std::string& autotune_file = "",
               const std::string& precision = "int16", bool adaptive_seqlen = false);

// 设置 XPU 配置
// 参数:quant_post_dynamic_weight_bits - 动态量化时,量化权重的位数。可选值为:-1,8,16。默认值为 -1,表示不进行配置,使用推荐的精度。
// 参数:quant_post_dynamic_op_types - 动态量化时,需要进行量化操作的算子类型。
void SetXpuConfig(
      int quant_post_dynamic_weight_bits = -1,
      const std::vector<std::string>& quant_post_dynamic_op_types = {});

代码示例:

// 创建 Config 对象
paddle_infer::Config config(FLAGS_model_dir);

// 开启 Lite 子图引擎
config.EnableLiteEngine();

// 启用 XPU,并设置 l3 cache 大小为 10M
config.EnableXpu(10*1024*1024);

// 设置默认 XPU 推理配置:使用推荐的量化配置
// 注:SetXpuConfig 在开启 Lite 子图引擎情况下不生效
// config.SetXpuConfig();

注意事项: Xpu 推理依赖 Lite 子图引擎,配置需开启 EnableLiteEngine,API 文档参考设置模型优化方法