macs для вычисления моделей глубокого обучения

глубокое обучение PyTorch

macs (Multiply–Accumulate Operations) изначально был аппаратным индикатором, но в последние годы он часто появлялся при оценке скорости работы моделей глубокого обучения.Мы можем использоватьtorchprofileРасчет. Здесь я напрямую использую встроенную модель в этом пакете вычислений факела.Конкретный метод использования выглядит следующим образом:

from torchprofile import profile_macs
profile_macs(model,inputs)

Полный код выглядит следующим образом:

import torch
from torchvision import models
from torchprofile import profile_macs

import os
ls=dir(models)
ls.sort()
res=[]
for i in ls:
    if not (i.startswith('_')) and (i!='utils.py'):
        res.append(i.split('.')[0])
print(res)
macs_results={}
for i in res:
    try:
        MACs=profile_macs(eval('models.'+i+'()'),inputs)
        macs_results[i]=MACs
    except Exception as e:
        pass
        

Мы можем построить результат:

import matplotlib.pyplot as plt

x_x = []
y_y = []
s = sorted(macs_results.items(), key=lambda x: x[1], reverse=False)
for i in s:
    x_x.append(i[0])
    y_y.append(i[1])
x = x_x
y = y_y
fig, ax = plt.subplots()
ax.barh(x, y, color="deepskyblue")
labels = ax.get_xticklabels()
plt.setp(labels, rotation=0, horizontalalignment='right')

for a, b in zip(x, y):
    plt.text(b+1, a, b, ha='center', va='center')
ax.legend(["label"],loc="lower right")

plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.ylabel('model name')
plt.xlabel('MACs')
plt.rcParams['savefig.dpi'] = 300  # 图片像素
plt.rcParams['figure.dpi'] = 300  # 分辨率
plt.rcParams['figure.figsize'] = (20.0, 1.0)  # 尺寸
plt.title("models for MACs")

Результат выглядит следующим образом:

image.png