我打算在网站上提供pytorch模型(resnet18)。但是,cpu(amd3600)中的推理需要70%的cpu资源。我不认为服务器(heroku)可以处理这个计算。有什么方法可以优化cpu中的推理吗?非常感谢
lnlaulya1#
诚然,我不是Heroku的Maven,但也许你可以使用OpenVINO。OpenVINO针对英特尔硬件进行了优化,但它应该适用于任何CPU。它通过例如图修剪或将一些操作融合在一起来优化推理性能。下面是从PyTorch转换的Resnet-18的性能基准。你可以在这里找到关于如何转换PyTorch模型的完整教程。下面是一些片段。
安装OpenVINO
最简单的方法是使用PIP。或者,您可以使用this tool来找到最适合您的情况的方法。
pip install openvino-dev[pytorch,onnx]
字符串
将模型保存到ONNX
OpenVINO目前无法直接转换PyTorch模型,但可以使用ONNX模型进行转换。此示例代码假设该模型用于计算机视觉。
dummy_input = torch.randn(1, 3, IMAGE_HEIGHT, IMAGE_WIDTH) torch.onnx.export(model, dummy_input, "model.onnx", opset_version=11)
型
使用Model Optimizer转换ONNX模型
Model Optimizer是一个来自OpenVINO开发包的命令行工具,所以请确保您已经安装了它。它将ONNX模型转换为OV格式(又名IR),这是OpenVINO的默认格式。它还将精度更改为FP 16(以进一步提高性能)。在命令行中运行:
mo --input_model "model.onnx" --input_shape "[1,3, 224, 224]" --mean_values="[123.675, 116.28 , 103.53]" --scale_values="[58.395, 57.12 , 57.375]" --data_type FP16 --output_dir "model_ir"
在CPU上运行推理
转换后的模型可以由运行时加载并针对特定设备进行编译,例如CPU或GPU(集成到CPU中,如Intel HD Graphics)。如果您不知道什么是最佳选择,只需使用GPU。
# Load the network ie = Core() model_ir = ie.read_model(model="model_ir/model.xml") compiled_model_ir = ie.compile_model(model=model_ir, device_name="CPU") # Get output layer output_layer_ir = compiled_model_ir.output(0) # Run inference on the input image result = compiled_model_ir([input_image])[output_layer_ir]
型免责声明:我在OpenVINO工作。
zyfwsgd62#
如果您使用的是英特尔CPU,请查看英特尔PyTorch扩展。此英特尔扩展提供量化功能,可为大型深度学习模型提供良好的精度结果。查看文章-https://www.intel.com/content/www/us/en/developer/articles/code-sample/accelerate-pytorch-models-using-quantization.html。本文还向您展示了如何通过应用Intel Extension for PyTorch量化来加速基于PyTorch的模型的代码示例。
mnemlml83#
你可以尝试修剪和量化你的模型(压缩部署模型大小的技术,允许推理速度和节能而不会显著损失准确性)。在pytorch网站上有模型修剪和量化的例子,你可以检查。https://pytorch.org/tutorials/intermediate/pruning_tutorial.htmlhttps://pytorch.org/tutorials/advanced/dynamic_quantization_tutorial.html的数据库
3条答案
按热度按时间lnlaulya1#
诚然,我不是Heroku的Maven,但也许你可以使用OpenVINO。OpenVINO针对英特尔硬件进行了优化,但它应该适用于任何CPU。它通过例如图修剪或将一些操作融合在一起来优化推理性能。下面是从PyTorch转换的Resnet-18的性能基准。
你可以在这里找到关于如何转换PyTorch模型的完整教程。下面是一些片段。
安装OpenVINO
最简单的方法是使用PIP。或者,您可以使用this tool来找到最适合您的情况的方法。
字符串
将模型保存到ONNX
OpenVINO目前无法直接转换PyTorch模型,但可以使用ONNX模型进行转换。此示例代码假设该模型用于计算机视觉。
型
使用Model Optimizer转换ONNX模型
Model Optimizer是一个来自OpenVINO开发包的命令行工具,所以请确保您已经安装了它。它将ONNX模型转换为OV格式(又名IR),这是OpenVINO的默认格式。它还将精度更改为FP 16(以进一步提高性能)。在命令行中运行:
型
在CPU上运行推理
转换后的模型可以由运行时加载并针对特定设备进行编译,例如CPU或GPU(集成到CPU中,如Intel HD Graphics)。如果您不知道什么是最佳选择,只需使用GPU。
型
免责声明:我在OpenVINO工作。
zyfwsgd62#
如果您使用的是英特尔CPU,请查看英特尔PyTorch扩展。此英特尔扩展提供量化功能,可为大型深度学习模型提供良好的精度结果。
查看文章-https://www.intel.com/content/www/us/en/developer/articles/code-sample/accelerate-pytorch-models-using-quantization.html。本文还向您展示了如何通过应用Intel Extension for PyTorch量化来加速基于PyTorch的模型的代码示例。
mnemlml83#
你可以尝试修剪和量化你的模型(压缩部署模型大小的技术,允许推理速度和节能而不会显著损失准确性)。在pytorch网站上有模型修剪和量化的例子,你可以检查。
https://pytorch.org/tutorials/intermediate/pruning_tutorial.htmlhttps://pytorch.org/tutorials/advanced/dynamic_quantization_tutorial.html的数据库