GMAC は「Giga Multiply-Add Operations per Second」の略で、深層学習モデルの計算効率を測定するために使用される指標です。このメトリクスは、1 秒あたり 10 億回の乗算および加算演算というモデルの計算速度を表します。
積和演算 (MAC) は、行列の乗算、畳み込み、深層学習で一般的に使用されるその他のテンソル演算など、多くの数学的計算の基礎です。各 MAC 演算には、2 つの数値を乗算し、その結果をアキュムレータに加算することが含まれます。
GMAC インジケーターは、次の式を使用して計算できます。
<code>GMAC =(乘法累加运算次数)/(10⁹)</code>
乗加算演算の数は、通常、ネットワーク アーキテクチャとモデル パラメーターの次元 (重みなど) を分析することによって決定されます。そして偏見。
GMAC メトリクスを使用すると、研究者や実務者は、モデルの選択、ハードウェア要件、効率的かつ効果的な深層学習計算のための最適化戦略について情報に基づいた意思決定を行うことができます。
#GFLOPS は、コンピューター システムまたは特定の操作のコンピューティング パフォーマンスの尺度であり、1 秒あたり 10 億回の浮動小数点演算を表します。これは、1 秒あたりの浮動小数点演算の数であり、10 億 (ギガ) 単位で表されます。 浮動小数点演算とは、IEEE 754 浮動小数点形式で表現された実数に対して算術計算を実行することを指します。これらの演算には通常、加算、減算、乗算、除算、およびその他の数学演算が含まれます。 GFLOPS は、ハイ パフォーマンス コンピューティング (HPC) やベンチマーク、特に科学シミュレーション、データ分析、深層学習などの大量の計算タスクを必要とする分野でよく使用されます。 GFLOPS の式は次のように計算します。<code>GFLOPS =(浮点运算次数)/(以秒为单位的运行时间)/ (10⁹)</code>
<code>1 GFLOP = 2 GMAC</code>
<code>pip install ptflops</code>
<code>import torchvision.models as models import torch from ptflops import get_model_complexity_info import re #Model thats already available net = models.densenet161() macs, params = get_model_complexity_info(net, (3, 224, 224), as_strings=True, print_per_layer_stat=True, verbose=True) # Extract the numerical value flops = eval(re.findall(r'([\d.]+)', macs)[0])*2 # Extract the unit flops_unit = re.findall(r'([A-Za-z]+)', macs)[0][0] print('Computational complexity: {:</code>
<code>Computational complexity: 7.82 GMac Computational complexity: 15.64 GFlops Number of parameters: 28.68 M</code>
<code>import os import torch from torch import nn class NeuralNetwork(nn.Module): def __init__(self): super().__init__() self.flatten = nn.Flatten() self.linear_relu_stack = nn.Sequential( nn.Linear(28*28, 512), nn.ReLU(), nn.Linear(512, 512), nn.ReLU(), nn.Linear(512, 10),) def forward(self, x): x = self.flatten(x) logits = self.linear_relu_stack(x) return logits custom_net = NeuralNetwork() macs, params = get_model_complexity_info(custom_net, (28, 28), as_strings=True, print_per_layer_stat=True, verbose=True) # Extract the numerical value flops = eval(re.findall(r'([\d.]+)', macs)[0])*2 # Extract the unit flops_unit = re.findall(r'([A-Za-z]+)', macs)[0][0] print('Computational complexity: {:</code>
<code>Computational complexity: 670.73 KMac Computational complexity: 1341.46 KFlops Number of parameters: 669.71 k</code>
<code>import torch import torch.nn as nn def compute_gmac(model): gmac_count = 0 for param in model.parameters(): shape = param.shape if len(shape) == 2:# 全连接层的权重 gmac_count += shape[0] * shape[1] * 2 gmac_count = gmac_count / 1e9# 转换为十亿为单位 return gmac_count</code>
<code>0.66972288</code>
以上がGMAC と GFLOPS の計算の簡単な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。