腾讯云计算加速套件 TACO Kit - TACO Infer 接口
文档简介:
优化接口:
TACO Infer 为您提供了一套简单易用的模型优化接口。
对于 CPU 计算设备,优化接口为 optimize_cpu:
优化接口
TACO Infer 为您提供了一套简单易用的模型优化接口。
对于 CPU 计算设备,优化接口为 optimize_cpu:
def optimize_cpu(input_model: Union[str, torch.nn.Module],output_model_dir: str,test_data: Optional[Dict[str, np.array]],optimize_config: OptimizeConfig = OptimizeConfig(),model_config: ModelConfig = ModelConfig(),) -> Dict:
对于GPU计算设备,优化接口为optimize_gpu:
def optimize_gpu(input_model: Union[str, torch.nn.Module],output_model_dir: str,test_data: Optional[Dict[str, np.array]] = None,optimize_config: OptimizeConfig = OptimizeConfig(),model_config: ModelConfig = ModelConfig(),) -> Dict:
两种设备的优化接口输入参数完全一致。
输入参数说明
参数
|
是否必选
|
说明
|
input_model
|
必选
|
待优化的模型。对于 TensorFlow,该参数为模型文件所在路径。TACO Infer 支持 TensorFlow frozen pb 和 saved model 两种模型格式。对于 Pytorch,该参数可以是 torchscript 模型文件所在路径,也可以是 torch.nn.Module 对象实例。
|
output_model_dir
|
必选
|
优化后模型的保存目录。
|
test_data
|
必选
|
优化过程中需要使用到的模型输入的测试数据。TACO Infer 在优化模型的过程中需要使用测试数据对模型的性能,精度等指标进行评估,以指导模型优化过程。对于 TF 模型,该参数为 session run 所需的 feed_dict。
需注意,test_data 只接受 numpy array 数据格式。对于Pytorch 模型,该参数为模型 forward 方法或者用户自定义前向函数所需输入,此时 test data 仅接受包含 torch.Tensor 的 tuple,或 torch.Tensor(如果只有一个输入。
构建 test_data 的方式示例如下:
|
optimize_config
|
可选
|
优化配置。您可以通过它指导 TACO Infer 提供更高质量的优化:
通过 print(optimize_config)可以查看默认(或修改后的)配置。
通过 print(optimize_cfg.help()) 了解有哪些可配置项及如何配置。
|
model_config
|
可选
|
模型配置。例如,对于存在1个以上 signature 的 TF SavedModel,您可以通过配置
model_config
知会 TACO Infer 哪一个需要被优化:
通过 print(model_config)可以查看默认(或修改后的)配置。
通过 print(model_cfg.help())了解有哪些可配置项及如何配置。示例如下:
|
输出参数说明
优化模型后会产生一个 JSON 格式的优化报告,该报告包含了优化模型的硬件,软件以及一些总结信息。输出参数如下所示:
{"hardware": {"cpu": "AMD EPYC 7K62 48-Core Processor, family '23', model '49'","target device": "AMD EPYC 7K62 48-Core Processor, family '23', model '49'","reference": "https://en.wikichip.org/wiki/intel/cpuid"},"software": {"framework": "tensorflow","framework version": "1.15.0"},"summary": {"working_directory": "/root/taco_test/fast_transformer_encoder","input_model": "./model/fast-transformer-encoder.pb","output_model_dir": "./optimized_model","optimization time": "3min 46s 398ms","model format": "tensorflow frozen pb","status": "satisfactory","baseline latency": "49ms 517us","accelerated latency": "27ms 12us","speedup": "1.83"}}
输出字段说明如下:
hardware:硬件环境信息,包括设备类型、规格等。
software:软件环境信息,包括框架以及框架版本。
summary:模型优化的综合性信息,包括当前工作目录、输入模型路径、输出模型目录、优化时间、模型格式、运行状态、模型优化效果等。
Config 使用方式
OptimizeConfig 和 ModelConfig 使用方法是一致的。均支持通过 parse 接口设置相关属性的值,通过 "." 获取属性值或者赋值。Config 使用示例如下所示:
from taco import ModelConfigcfg = ModelConfig()# assign by parse()cfg.parse({"tensorflow.inputs": ['Placeholder:0']})print(cfg.tensorflow.inputs)# assign by .cfg.tensorflow.saved_model.signature = "predictions"print(cfg.tensorflow.saved_model.signature)