Glossário

FLOPs

Compreende os FLOPs na aprendizagem automática! Aprende como mede a complexidade do modelo, tem impacto na eficiência e ajuda na seleção do hardware.

Treina os modelos YOLO simplesmente
com Ultralytics HUB

Aprende mais

Os FLOPs, ou operações de ponto flutuante, representam uma medida fundamental da complexidade computacional de um modelo de aprendizagem automática (ML), particularmente na aprendizagem profunda. Quantifica o número total de cálculos de vírgula flutuante (como adições, subtrações, multiplicações, divisões) necessários para uma única passagem de avanço do modelo, normalmente durante a inferência. Compreender os FLOPs é crucial para avaliar a eficiência do modelo, comparar diferentes arquiteturas e determinar a adequação de um modelo para várias plataformas de hardware, desde poderosos servidores em nuvem até dispositivos de borda com recursos limitados.

O que são FLOPs?

Uma operação de vírgula flutuante é qualquer cálculo matemático que envolva números com um ponto decimal (números de vírgula flutuante). Em redes neurais (NNs), essas operações ocorrem extensivamente em camadas como convoluções e camadas totalmente conectadas. Os FLOPs medem o número total dessas operações necessárias para processar uma única entrada (por exemplo, uma imagem).

Como os modelos modernos de aprendizagem profunda envolvem biliões de operações deste tipo, os FLOPs são frequentemente expressos em GigaFLOPs (GFLOPs, biliões de FLOPs) ou TeraFLOPs (TFLOPs, triliões de FLOPs). É importante não confundir FLOPs (total de operações, uma medida da carga de trabalho computacional) com FLOPS (Floating-Point Operations Per Second, uma medida da velocidade de processamento do hardware, como a capacidade de uma GPU). No contexto da avaliação da complexidade do modelo, "FLOPs" refere-se quase sempre à contagem total de operações.

Relevância na IA e na aprendizagem automática

Os FLOPs servem como uma métrica vital, independente do hardware, para estimar o custo computacional de um modelo de IA. Os principais aspectos da sua relevância incluem:

  • Comparação de eficiência: Os FLOPs permitem aos investigadores e profissionais comparar as exigências computacionais de diferentes arquitecturas de modelos, independentemente de optimizações específicas de hardware ou software. Por exemplo, ao comparar modelos como o Ultralytics YOLO11 e o YOLOv10, os FLOPs fornecem informações sobre a sua eficiência computacional relativa, juntamente com métricas de precisão.
  • Adequação ao hardware: Os modelos com FLOPs mais baixos geralmente exigem menos potência computacional, o que os torna mais adequados para implantação em dispositivos com recursos limitados, como smartphones, Raspberry Pi ou plataformas NVIDIA Jetson comuns em computação de ponta.
  • Estimativa da velocidade de inferência: Embora não seja uma medida direta da velocidade, os FLOPs mais baixos estão frequentemente correlacionados com uma latência de inferência mais rápida. No entanto, a velocidade real depende de fatores como padrões de acesso à memória, paralelismo de hardware (CPU vs. GPU vs. TPU) e bibliotecas de software otimizadas como o TensorRT ou OpenVINO.
  • Projeto e otimização de modelos: Os FLOPs são uma consideração fundamental durante a conceção do modelo, a pesquisa de arquitetura neural (NAS) e as técnicas de otimização como a poda do modelo, com o objetivo de reduzir o custo computacional mantendo o desempenho.

FLOPs vs. conceitos relacionados

É útil distinguir os FLOPs de outras métricas comuns:

  • FLOPs vs. Parâmetros: O número de parâmetros (ou pesos do modelo) indica o tamanho do modelo em termos de armazenamento de memória. Os FLOPs medem o custo computacional para executar o modelo. Um modelo pode ter muitos parâmetros, mas baixos FLOPs (por exemplo, se os pesos forem usados de forma esparsa) ou poucos parâmetros, mas altos FLOPs (por exemplo, envolvendo muitas operações por parâmetro). Ambas as métricas são importantes para avaliar a eficiência. Por exemplo, o YOLOv9 introduziu técnicas para obter uma elevada exatidão com relativamente menos parâmetros e FLOPs em comparação com alguns dos seus antecessores.
  • FLOPs vs. Velocidade de inferência: Os FLOPs representam o trabalho computacional teórico, enquanto a velocidade de inferência (frequentemente medida em Frames por segundo (FPS) ou milissegundos por inferência) é o desempenho real medido num hardware específico. Fatores como largura de banda da memória, pilha de software (PyTorch, TensorFlow), quantização e tamanho do lote afetam significativamente a velocidade no mundo real. A otimização para latência vs. taxa de transferência mostra como o desempenho prático pode ser ajustado além de apenas FLOPs.
  • FLOPs vs. MACs/MACC: As operações de multiplicação-acumulação (MACs ou MACC) contam o número de operações de multiplicação e adição fundidas, comuns em redes neurais convolucionais (CNNs). Uma vez que uma MAC envolve tipicamente uma multiplicação e uma adição, é frequentemente aproximada como 2 FLOPs. Alguns trabalhos de investigação ou cartões de modelo indicam MACs em vez de FLOPs. É crucial verificar qual a métrica que está a ser utilizada, uma vez que diferem aproximadamente por um fator de dois. Compreender esta diferença é fundamental para comparar modelos com base nos custos computacionais comunicados.

Aplicações e exemplos

Os FLOPs são amplamente utilizados em vários contextos de IA e ML:

  1. Seleção de modelos para implementação na periferia: Uma empresa que está a desenvolver uma câmara de segurança inteligente necessita de um modelo de deteção de objectos que possa ser executado de forma eficiente num dispositivo periférico com capacidade de processamento limitada. Compara vários modelos, incluindo diferentes tamanhos de Ultralytics YOLO (por exemplo, YOLO11n vs. YOLO11s). Examinando os FLOPs relatados para cada modelo (como os encontrados na documentaçãoUltralytics YOLO11 ), eles podem selecionar o maior modelo que atenda aos seus requisitos de latência, considerando o orçamento computacional do dispositivo (medido em FLOPS de hardware). Os modelos com FLOPS mais baixos, como o YOLO11n, são os principais candidatos.
  2. Aferição de novas arquitecturas: Os investigadores que desenvolvem uma nova arquitetura de visão por computador têm de demonstrar a sua eficiência. Compara a precisão do seu modelo (por exemplo, mAP) com os seus GFLOPs em conjuntos de dados de referência padrão como o COCO. Traça o seu modelo num gráfico precisão-vs-FLOPs ao lado de modelos existentes de última geração (como o EfficientNet ou várias versões YOLO ) para mostrar melhores compensações. Muitas páginas de comparação de modelos, como YOLOv9 vs YOLOX, usam FLOPs como um ponto de comparação chave.

Cálculo e estimativa de FLOPs

Os FLOPs são normalmente calculados analisando a arquitetura do modelo camada a camada e somando as operações necessárias para cada camada com base nas dimensões de entrada/saída e no tipo de camada(convolução, totalmente ligada, etc.). Várias ferramentas e bibliotecas, como fvcore ou profilers incorporados em estruturas de aprendizagem profunda, podem ajudar a automatizar este cálculo ou fornecer estimativas. A resolução de entrada afecta significativamente a contagem de FLOP para muitos modelos de visão.

Limitações

Embora úteis, os FLOPs têm limitações:

  • Não tem em conta os custos de acesso à memória (MAC), que podem ser um estrangulamento significativo.
  • Não capta o grau de paralelismo possível nas operações.
  • O desempenho real depende muito das optimizações específicas do hardware e da eficiência das bibliotecas de software subjacentes(cuDNN, Intel MKL).
  • Certas operações (por exemplo, funções de ativação como a ReLU) têm um número reduzido de FLOP, mas podem ter impacto na latência.

Portanto, os FLOPs devem ser considerados juntamente com outras métricas de desempenho, parâmetros e benchmarks do mundo real para obter uma imagem completa da eficiência do modelo. Ferramentas como o Ultralytics HUB podem ajudar a gerir modelos e acompanhar vários aspectos do desempenho durante o desenvolvimento e a implementação.

Lê tudo