intel for pytorch加速实验

一、相关背景

intel/intel-extension-for-pytorch: A Python package for extending the official PyTorch that can easily obtain performance on Intel platform (github.com)

基于intel自己的硬件,出了一个专门用于pytorch 的加速包,需要cpu或者显卡是intel的。具体的适用型号没看。

二、加速实验

2.1 resnet 50

  1. input shape 1, 3, 224, 224, model resnet 50,
  2. 未优化2 是在 优化 之后运行
  3. 耗时单位为秒
第一次 第二次 第三次 第四次 平均
未优化1 0.036 0.029 0.030 0.030 0.03125
未优化2 0.029 0.030 0.030 0.033 0.0305
优化 0.025 0.025 0.025 0.023 0.0245
(平均耗时降低20.65%)
RTX 3090 0.002

input shape 16, 3, 224, 224, model resnet 50

第一次 第二次 第三次 第四次 平均
未优化1 0.555 0.561 0.559 0.568 0.56075
未优化2 0.561 0.559 0.560 0.543 0.55575
优化 0.383 0.385 0.386 0.385 0.38475
(平均耗时降低31.18%)
RTX 3090 0.012

核心代码如下

import os
import os.path as osp

import torch
import torchvision.models as models
import time

model = models.resnet50(pretrained=True)
model.eval()
data = torch.rand(1, 3, 224, 224)

import intel_extension_for_pytorch as ipex
model = ipex.optimize(model)

with torch.no_grad():
    for i in range(10):
        model(data)

    t1 = time.time()
    for i in range(10):
        model(data)

    print(f'average time is {(time.time()-t1) / 10.0 :.3f} seconds')


2.2 mobileNet v2

第一次 第二次 第三次 第四次 平均
未优化1 0.011 0.008 0.007 0.008 0.0085
优化 0.006 0.006 0.005 0.006 0.00575
平均用时降低 32.36%
RTX 3090 0.00130
第一次 第二次 第三次 第四次 平均
未优化1 0.161 0.162 0.162 0.164 0.16225
优化 0.062 0.060 0.060 0.065 0.06175
平均用时降低62%
RTX 3090 0.00423

三、结论

  1. 确实有效,提升幅度不小
  2. 对于depthwise separable conv 效果更加,batchisze大一些效果比较好,但是没进行更多batchsize的测试
  3. GPU好强

四、其他

使用top命令观察了一下CPU的利用率,硬件表现来看,未优化前CPU利用率大约为57.2% 优化后CPU利用率越有上升,60.0%

猜你喜欢

转载自blog.csdn.net/qq_29007291/article/details/128530455