Maison Périphériques technologiques IA Une brève analyse du calcul de GMAC et GFLOPS

Une brève analyse du calcul de GMAC et GFLOPS

May 26, 2023 am 08:59 AM
深度学习

GMAC signifie « Giga Multiply-Add Operations per Second » et est un indicateur utilisé pour mesurer l'efficacité informatique des modèles d'apprentissage profond. Cette métrique représente la vitesse de calcul du modèle en termes d'un milliard d'opérations de multiplication et d'addition par seconde.

Une brève analyse du calcul de GMAC et GFLOPS

L'opération multiplier-accumuler (MAC) est une opération fondamentale dans de nombreux calculs mathématiques, notamment la multiplication matricielle, la convolution et d'autres tenseurs couramment utilisés en profondeur. Opération d’apprentissage. Chaque opération MAC consiste à multiplier deux nombres et à ajouter le résultat à un accumulateur.

La métrique GMAC peut être calculée à l'aide de la formule suivante :

<code>GMAC =(乘法累加运算次数)/(10⁹)</code>
Copier après la connexion

Le nombre d'opérations de multiplication-ajout est généralement déterminé en analysant l'architecture du réseau et les dimensions des paramètres du modèle , comme les pondérations et les biais.

Grâce à la métrique GMAC, les chercheurs et les praticiens peuvent prendre des décisions éclairées concernant la sélection de modèles, les exigences matérielles et les stratégies d'optimisation pour des calculs d'apprentissage en profondeur efficaces et efficients.

Une brève analyse du calcul de GMAC et GFLOPS

GFLOPS est une mesure des performances informatiques d'un système informatique ou d'une opération spécifique, représentant un milliard de flottants par deuxièmement. C'est le nombre d'opérations en virgule flottante par seconde, exprimé en milliards (giga).

L'arithmétique à virgule flottante fait référence à l'exécution de calculs arithmétiques sur des nombres réels représentés au format à virgule flottante IEEE 754. Ces opérations incluent généralement l'addition, la soustraction, la multiplication, la division et d'autres opérations mathématiques.

GFLOPS est couramment utilisé dans le calcul haute performance (HPC) et l'analyse comparative, en particulier dans les domaines qui nécessitent des tâches de calcul lourdes, telles que les simulations scientifiques, l'analyse de données et l'apprentissage profond.

La formule de calcul du GFLOPS est la suivante :

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

GFLOPS est une mesure efficace de la puissance de calcul de différents systèmes informatiques, processeurs ou opérations spécifiques. Il permet d'évaluer la vitesse et l'efficacité du matériel ou des algorithmes qui effectuent des calculs en virgule flottante. GFLOPS est une mesure des performances théoriques maximales et peut ne pas refléter les performances réelles obtenues dans des scénarios réels, car elle ne prend pas en compte des facteurs tels que l'accès à la mémoire, la parallélisation et d'autres limitations du système.

La relation entre GMAC et GFLOPS

<code>1 GFLOP = 2 GMAC</code>
Copier après la connexion

Si on veut calculer ces deux indicateurs, il sera plus compliqué d'écrire le code manuellement, mais Python a déjà du prêt à l'emploi bibliothèques pour nous Utiliser :

bibliothèque ptflops pour calculer GMAC et GFLOPs

<code>pip install ptflops</code>
Copier après la connexion

C'est aussi très simple à utiliser :

<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>
Copier après la connexion

Les résultats sont aussi suit :

<code>Computational complexity: 7.82 GMac Computational complexity: 15.64 GFlops Number of parameters: 28.68 M</code>
Copier après la connexion
# 🎜🎜#On peut personnaliser un modèle pour voir si le résultat est correct :

<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>
Copier après la connexion
Les résultats sont les suivants :

<code>Computational complexity: 670.73 KMac Computational complexity: 1341.46 KFlops Number of parameters: 669.71 k</code>
Copier après la connexion
Pour le commodité de la démonstration, nous écrivons uniquement manuellement le code de couche entièrement connecté. Calculons GMAC. L'itération sur les paramètres de poids du modèle et le calcul de la forme du nombre d'opérations de multiplication et d'addition dépendent des paramètres de poids, qui sont la clé du calcul du GMAC. La formule de calcul du poids de couche entièrement connecté requis par GMAC est 2 x (dimension d'entrée x dimension de sortie). La valeur totale du GMAC est obtenue en multipliant et en accumulant les formes des paramètres de poids de chaque couche linéaire, un processus basé sur la structure du modèle.

<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>
Copier après la connexion
Selon le modèle donné ci-dessus, le résultat du calcul du GMAC est le suivant :

<code>0.66972288</code>
Copier après la connexion
Puisque le résultat du GMAC est en milliards, c'est le même que ce que nous calculé à l'aide de la bibliothèque de classes ci-dessus. Les résultats ne sont pas très différents. Enfin, calculer le GMAC de convolution est un peu compliqué. La formule est ((canal d'entrée x hauteur du noyau de convolution x largeur du noyau de convolution) x canal de sortie) x 2. Voici un code simple, qui n'est peut-être pas tout à fait correct. 🎜🎜#
<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>
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Où trouver la courte de la grue à atomide atomique
1 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Méthodes et étapes d'utilisation de BERT pour l'analyse des sentiments en Python Méthodes et étapes d'utilisation de BERT pour l'analyse des sentiments en Python Jan 22, 2024 pm 04:24 PM

BERT est un modèle de langage d'apprentissage profond pré-entraîné proposé par Google en 2018. Le nom complet est BidirectionnelEncoderRepresentationsfromTransformers, qui est basé sur l'architecture Transformer et présente les caractéristiques d'un codage bidirectionnel. Par rapport aux modèles de codage unidirectionnels traditionnels, BERT peut prendre en compte les informations contextuelles en même temps lors du traitement du texte, de sorte qu'il fonctionne bien dans les tâches de traitement du langage naturel. Sa bidirectionnalité permet à BERT de mieux comprendre les relations sémantiques dans les phrases, améliorant ainsi la capacité expressive du modèle. Grâce à des méthodes de pré-formation et de réglage fin, BERT peut être utilisé pour diverses tâches de traitement du langage naturel, telles que l'analyse des sentiments, la dénomination

Analyse des fonctions d'activation de l'IA couramment utilisées : pratique d'apprentissage en profondeur de Sigmoid, Tanh, ReLU et Softmax Analyse des fonctions d'activation de l'IA couramment utilisées : pratique d'apprentissage en profondeur de Sigmoid, Tanh, ReLU et Softmax Dec 28, 2023 pm 11:35 PM

Les fonctions d'activation jouent un rôle crucial dans l'apprentissage profond. Elles peuvent introduire des caractéristiques non linéaires dans les réseaux neuronaux, permettant ainsi au réseau de mieux apprendre et simuler des relations entrées-sorties complexes. La sélection et l'utilisation correctes des fonctions d'activation ont un impact important sur les performances et les résultats de formation des réseaux de neurones. Cet article présentera quatre fonctions d'activation couramment utilisées : Sigmoid, Tanh, ReLU et Softmax, à partir de l'introduction, des scénarios d'utilisation, des avantages, Les inconvénients et les solutions d'optimisation sont abordés pour vous fournir une compréhension complète des fonctions d'activation. 1. Fonction sigmoïde Introduction à la formule de la fonction SIgmoïde : La fonction sigmoïde est une fonction non linéaire couramment utilisée qui peut mapper n'importe quel nombre réel entre 0 et 1. Il est généralement utilisé pour unifier le

Au-delà d'ORB-SLAM3 ! SL-SLAM : les scènes de faible luminosité, de gigue importante et de texture faible sont toutes gérées Au-delà d'ORB-SLAM3 ! SL-SLAM : les scènes de faible luminosité, de gigue importante et de texture faible sont toutes gérées May 30, 2024 am 09:35 AM

Écrit précédemment, nous discutons aujourd'hui de la manière dont la technologie d'apprentissage profond peut améliorer les performances du SLAM (localisation et cartographie simultanées) basé sur la vision dans des environnements complexes. En combinant des méthodes d'extraction de caractéristiques approfondies et de correspondance de profondeur, nous introduisons ici un système SLAM visuel hybride polyvalent conçu pour améliorer l'adaptation dans des scénarios difficiles tels que des conditions de faible luminosité, un éclairage dynamique, des zones faiblement texturées et une gigue importante. Notre système prend en charge plusieurs modes, notamment les configurations étendues monoculaire, stéréo, monoculaire-inertielle et stéréo-inertielle. En outre, il analyse également comment combiner le SLAM visuel avec des méthodes d’apprentissage profond pour inspirer d’autres recherches. Grâce à des expériences approfondies sur des ensembles de données publiques et des données auto-échantillonnées, nous démontrons la supériorité du SL-SLAM en termes de précision de positionnement et de robustesse du suivi.

Intégration d'espace latent : explication et démonstration Intégration d'espace latent : explication et démonstration Jan 22, 2024 pm 05:30 PM

L'intégration d'espace latent (LatentSpaceEmbedding) est le processus de mappage de données de grande dimension vers un espace de faible dimension. Dans le domaine de l'apprentissage automatique et de l'apprentissage profond, l'intégration d'espace latent est généralement un modèle de réseau neuronal qui mappe les données d'entrée de grande dimension dans un ensemble de représentations vectorielles de basse dimension. Cet ensemble de vecteurs est souvent appelé « vecteurs latents » ou « latents ». encodages". Le but de l’intégration de l’espace latent est de capturer les caractéristiques importantes des données et de les représenter sous une forme plus concise et compréhensible. Grâce à l'intégration de l'espace latent, nous pouvons effectuer des opérations telles que la visualisation, la classification et le regroupement de données dans un espace de faible dimension pour mieux comprendre et utiliser les données. L'intégration d'espace latent a de nombreuses applications dans de nombreux domaines, tels que la génération d'images, l'extraction de caractéristiques, la réduction de dimensionnalité, etc. L'intégration de l'espace latent est le principal

Comprendre en un seul article : les liens et les différences entre l'IA, le machine learning et le deep learning Comprendre en un seul article : les liens et les différences entre l'IA, le machine learning et le deep learning Mar 02, 2024 am 11:19 AM

Dans la vague actuelle de changements technologiques rapides, l'intelligence artificielle (IA), l'apprentissage automatique (ML) et l'apprentissage profond (DL) sont comme des étoiles brillantes, à la tête de la nouvelle vague des technologies de l'information. Ces trois mots apparaissent fréquemment dans diverses discussions de pointe et applications pratiques, mais pour de nombreux explorateurs novices dans ce domaine, leurs significations spécifiques et leurs connexions internes peuvent encore être entourées de mystère. Alors regardons d'abord cette photo. On constate qu’il existe une corrélation étroite et une relation progressive entre l’apprentissage profond, l’apprentissage automatique et l’intelligence artificielle. Le deep learning est un domaine spécifique du machine learning, et le machine learning

Super fort! Top 10 des algorithmes de deep learning ! Super fort! Top 10 des algorithmes de deep learning ! Mar 15, 2024 pm 03:46 PM

Près de 20 ans se sont écoulés depuis que le concept d'apprentissage profond a été proposé en 2006. L'apprentissage profond, en tant que révolution dans le domaine de l'intelligence artificielle, a donné naissance à de nombreux algorithmes influents. Alors, selon vous, quels sont les 10 meilleurs algorithmes pour l’apprentissage profond ? Voici les meilleurs algorithmes d’apprentissage profond, à mon avis. Ils occupent tous une position importante en termes d’innovation, de valeur d’application et d’influence. 1. Contexte du réseau neuronal profond (DNN) : Le réseau neuronal profond (DNN), également appelé perceptron multicouche, est l'algorithme d'apprentissage profond le plus courant lorsqu'il a été inventé pour la première fois, jusqu'à récemment en raison du goulot d'étranglement de la puissance de calcul. années, puissance de calcul, La percée est venue avec l'explosion des données. DNN est un modèle de réseau neuronal qui contient plusieurs couches cachées. Dans ce modèle, chaque couche transmet l'entrée à la couche suivante et

Comment utiliser les modèles hybrides CNN et Transformer pour améliorer les performances Comment utiliser les modèles hybrides CNN et Transformer pour améliorer les performances Jan 24, 2024 am 10:33 AM

Convolutional Neural Network (CNN) et Transformer sont deux modèles d'apprentissage en profondeur différents qui ont montré d'excellentes performances sur différentes tâches. CNN est principalement utilisé pour les tâches de vision par ordinateur telles que la classification d'images, la détection de cibles et la segmentation d'images. Il extrait les caractéristiques locales de l'image via des opérations de convolution et effectue une réduction de dimensionnalité des caractéristiques et une invariance spatiale via des opérations de pooling. En revanche, Transformer est principalement utilisé pour les tâches de traitement du langage naturel (NLP) telles que la traduction automatique, la classification de texte et la reconnaissance vocale. Il utilise un mécanisme d'auto-attention pour modéliser les dépendances dans des séquences, évitant ainsi le calcul séquentiel dans les réseaux neuronaux récurrents traditionnels. Bien que ces deux modèles soient utilisés pour des tâches différentes, ils présentent des similitudes dans la modélisation des séquences.

Algorithme RMSprop amélioré Algorithme RMSprop amélioré Jan 22, 2024 pm 05:18 PM

RMSprop est un optimiseur largement utilisé pour mettre à jour les poids des réseaux de neurones. Il a été proposé par Geoffrey Hinton et al. en 2012 et est le prédécesseur de l'optimiseur Adam. L'émergence de l'optimiseur RMSprop vise principalement à résoudre certains problèmes rencontrés dans l'algorithme de descente de gradient SGD, tels que la disparition de gradient et l'explosion de gradient. En utilisant l'optimiseur RMSprop, le taux d'apprentissage peut être ajusté efficacement et les pondérations mises à jour de manière adaptative, améliorant ainsi l'effet de formation du modèle d'apprentissage en profondeur. L'idée principale de l'optimiseur RMSprop est d'effectuer une moyenne pondérée des gradients afin que les gradients à différents pas de temps aient des effets différents sur les mises à jour de poids. Plus précisément, RMSprop calcule le carré de chaque paramètre

See all articles