搜尋
首頁科技週邊人工智慧淺析計算GMAC和GFLOPS

淺析計算GMAC和GFLOPS

May 26, 2023 am 08:59 AM
深度學習

GMAC 代表「Giga Multiply-Add Operations per Second」(每秒千兆乘法累積運算),是用來衡量深度學習模型計算效率的指標。此指標以每秒十億個乘加運算的形式表示模型的計算速度。

淺析計算GMAC和GFLOPS

乘法累加 (MAC) 運算是許多數學計算中的基本運算,包括矩陣乘法、卷積和深度學習中常用的其他張量運算。每個 MAC 操作都涉及將兩個數字相乘並將結果新增至累加器。

可以使用以下公式計算 GMAC 指標:

<code>GMAC =(乘法累加运算次数)/(10⁹)</code>

乘加運算的數量通常透過分析網路架構和模型參數的維度來確定,例如權重和偏差。

透過 GMAC 指標,研究人員和從業者可以就模型選擇、硬體需求和最佳化策略做出明智的決策,以實現高效且有效的深度學習運算。

淺析計算GMAC和GFLOPS

GFLOPS是電腦系統或特定運算運算效能的衡量指標,代表每秒可執行十億次浮點運算。它是每秒鐘浮點運算的數量,以十億 (giga) 表示。

浮點運算是指以 IEEE 754 浮點格式表示的實數進行算術計算。這些運算通常包括加法、減法、乘法、除法和其他數學運算。

GFLOPS 通常用於高效能運算 (HPC) 和基準測試,特別是在需要繁重運算任務的領域,例如科學模擬、資料分析和深度學習。

計算 GFLOPS公式如下:

<code>GFLOPS =(浮点运算次数)/(以秒为单位的运行时间)/ (10⁹)</code>

GFLOPS是一項有效的測量不同電腦系統、處理器或特定操作的運算能力的指標。它有助於評估執行浮點計算的硬體或演算法的速度和效率。 GFLOPS 是衡量理論峰值效能的指標,可能無法反映實際場景中實現的實際效能,因為它沒有考慮記憶體存取、平行化和其他系統限制等因素。

GMAC 和GFLOPS 之間的關係

<code>1 GFLOP = 2 GMAC</code>

如果我們想計算這兩個指標,手動寫程式碼的話會比較麻煩,但是Python已經有現成的函式庫讓我們使用:

ptflops 函式庫就可以計算GMAC 和GFLOPs

<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>

為了方便演示,我們只編寫全連接層程式碼來手動計算GMAC。遍歷模型權重參數並計算乘法和加法操作數量的形狀取決於權重參數,這是計算GMAC的關鍵。計算GMAC所需的全連接層權重的公式為2 x (輸入維度 x 輸出維度) 。總的GMAC值是透過將每個線性層的權重參數的形狀相乘並累積而得出的,這個過程是基於模型的結構。

<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>

根據上面給定的模型,計算GMAC的結果如下:

<code>0.66972288</code>

由於GMAC的結果以十億為單位,因此與我們上面使用類別庫計算的結果相差不大。最後再說一下,計算卷積的GMAC稍微有些複雜,公式為((輸入通道x 卷積核高度x 卷積核寬度) x 輸出通道) x 2,這裡給一個簡單的代碼,不一定完全正確,供參考

<code>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 elif len(shape) == 4:# 卷积层的权重 gmac_count += shape[0] * shape[1] * shape[2] * shape[3] * 2 gmac_count = gmac_count / 1e9# 转换为十亿为单位 return gmac_count</code>

以上是淺析計算GMAC和GFLOPS的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:51CTO.COM。如有侵權,請聯絡admin@php.cn刪除
如何使用LM Studio在本地運行LLM? - 分析Vidhya如何使用LM Studio在本地運行LLM? - 分析VidhyaApr 19, 2025 am 11:38 AM

輕鬆在家運行大型語言模型:LM Studio 使用指南 近年來,軟件和硬件的進步使得在個人電腦上運行大型語言模型 (LLM) 成為可能。 LM Studio 就是一個讓這一過程變得輕鬆便捷的優秀工具。本文將深入探討如何使用 LM Studio 在本地運行 LLM,涵蓋關鍵步驟、潛在挑戰以及在本地擁有 LLM 的優勢。無論您是技術愛好者還是對最新 AI 技術感到好奇,本指南都將提供寶貴的見解和實用技巧。讓我們開始吧! 概述 了解在本地運行 LLM 的基本要求。 在您的電腦上設置 LM Studi

蓋伊·佩里(Guy Peri)通過數據轉換幫助麥考密克的未來蓋伊·佩里(Guy Peri)通過數據轉換幫助麥考密克的未來Apr 19, 2025 am 11:35 AM

蓋伊·佩里(Guy Peri)是麥考密克(McCormick)的首席信息和數字官。儘管他的角色僅七個月,但Peri正在迅速促進公司數字能力的全面轉變。他的職業生涯專注於數據和分析信息

迅速工程中的情感鍊是什麼? - 分析Vidhya迅速工程中的情感鍊是什麼? - 分析VidhyaApr 19, 2025 am 11:33 AM

介紹 人工智能(AI)不僅要理解單詞,而且要理解情感,從而以人的觸感做出反應。 這種複雜的互動對於AI和自然語言處理的快速前進的領域至關重要。 Th

12個最佳數據科學工作流程的AI工具-Analytics Vidhya12個最佳數據科學工作流程的AI工具-Analytics VidhyaApr 19, 2025 am 11:31 AM

介紹 在當今以數據為中心的世界中,利用先進的AI技術對於尋求競爭優勢和提高效率的企業至關重要。 一系列強大的工具使數據科學家,分析師和開發人員都能構建,Depl

AV字節:OpenAI的GPT-4O Mini和其他AI創新AV字節:OpenAI的GPT-4O Mini和其他AI創新Apr 19, 2025 am 11:30 AM

本週的AI景觀爆炸了,來自Openai,Mistral AI,Nvidia,Deepseek和Hugging Face等行業巨頭的開創性發行。 這些新型號有望提高功率,負擔能力和可訪問性,這在TR的進步中推動了

報告發現,困惑的Android應用程序有安全缺陷。報告發現,困惑的Android應用程序有安全缺陷。Apr 19, 2025 am 11:24 AM

但是,該公司的Android應用不僅提供搜索功能,而且還充當AI助手,並充滿了許多安全問題,可以將其用戶暴露於數據盜用,帳戶收購和惡意攻擊中

每個人都擅長使用AI:關於氛圍編碼的想法每個人都擅長使用AI:關於氛圍編碼的想法Apr 19, 2025 am 11:17 AM

您可以查看會議和貿易展覽中正在發生的事情。您可以詢問工程師在做什麼,或諮詢首席執行官。 您看的任何地方,事情都以驚人的速度發生變化。 工程師和非工程師 有什麼區別

火箭發射模擬和分析使用Rocketpy -Analytics Vidhya火箭發射模擬和分析使用Rocketpy -Analytics VidhyaApr 19, 2025 am 11:12 AM

模擬火箭發射的火箭發射:綜合指南 本文指導您使用強大的Python庫Rocketpy模擬高功率火箭發射。 我們將介紹從定義火箭組件到分析模擬的所有內容

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境