Découvrez comment la demi-précision (FP16) accélère l'IA. Découvrez comment optimiser Ultralytics pour accélérer l'inférence et réduire la mémoire sur les GPU et les appareils périphériques.
La demi-précision, souvent désignée par FP16, est un format de données à virgule flottante qui occupe 16 bits de mémoire informatique, contrairement au format standard à précision simple (FP32) qui utilise 32 bits. Dans le contexte de l'intelligence artificielle et de l' apprentissage automatique, la demi-précision est une technique d'optimisation essentielle utilisée pour accélérer l'entraînement et l'inférence des modèles tout en réduisant considérablement la consommation de mémoire. En stockant des valeurs numériques, telles que les poids et les gradients des modèles de réseaux neuronaux, à l'aide d'un nombre réduit de bits, les développeurs peuvent adapter des modèles plus volumineux aux processeursGPU ou exécuter les modèles existants beaucoup plus rapidement. Ce gain d'efficacité est essentiel pour déployer des architectures modernes et complexes telles que YOLO26 sur des appareils aux ressources limitées sans sacrifier une précision substantielle.
Pour comprendre la demi-précision, il est utile de la comparer à la précision totale. Un nombre à virgule flottante 32 bits standard (FP32) consacre plus de bits à l'exposant et à la mantisse, offrant ainsi une plage dynamique très large et une grande précision numérique . Cependant, les modèles d'apprentissage profond sont connus pour leur résistance aux petites erreurs numériques. Les réseaux neuronaux peuvent souvent apprendre efficacement même avec la plage dynamique et la granularité réduites offertes par le format 16 bits.
Le passage à la demi-précision réduit de moitié les besoins en bande passante mémoire. Cela permet d'utiliser des lots plus importants pendant l'entraînement, ce qui peut stabiliser les mises à jour des gradients et accélérer le processus d'entraînement global. Les accélérateurs matériels modernes, tels que Tensor NVIDIA, sont spécialement optimisés pour effectuer des multiplications matricielles en FP16 à des vitesses nettement supérieures à celles du FP32.
L'adoption de la demi-précision offre plusieurs avantages concrets aux praticiens de l'IA :
La demi-précision est omniprésente dans les systèmes d'IA de niveau production. Voici deux exemples concrets :
Détection d'objets en temps réel sur des appareils périphériques :prenons l'exemple d'un système de caméras de sécurité utilisant Ultralytics YOLO26 pour detect . Le déploiement du modèle en FP16 lui permet de fonctionner sans problème sur une puce intégrée telle que NVIDIA Jetson ou Raspberry Pi AI Kit. La charge de calcul réduite garantit que le système peut traiter les flux vidéo en mode d'inférence en temps réel sans retard, ce qui est essentiel pour émettre des alertes en temps opportun.
Déploiement de modèles linguistiques à grande échelle (LLM) :les modèles d'IA générative, tels que GPT-4 ou les variantes Llama, comportent des milliards de paramètres. Le chargement de ces modèles en précision flottante simple (FP32) nécessiterait des quantités massives de mémoire serveur, souvent prohibitives en termes de coût. En convertissant ces modèles au format FP16 (ou même à des formats inférieurs), les fournisseurs de cloud peuvent proposer des modèles de base à des milliers d'utilisateurs simultanément, rendant ainsi économiquement viables des services tels que les chatbots et la génération automatisée de contenu.
Bien que les deux techniques visent à réduire la taille du modèle, il est important de distinguer la « demi-précision » de la quantification du modèle.
Le ultralytics La bibliothèque facilite l'utilisation de la demi-précision. Lors de la prédiction, le modèle
peut automatiquement passer en demi-précision si le matériel le prend en charge, ou cela peut être demandé explicitement.
Here is a Python example demonstrating how to load a
YOLO26 modèle et effectuer l'inférence en utilisant la demi-précision.
Notez que l'exécution dans half=True nécessite généralement un GPU CUDA.
import torch
from ultralytics import YOLO
# Check if CUDA (GPU) is available, as FP16 is primarily for GPU acceleration
device = "cuda" if torch.cuda.is_available() else "cpu"
# Load the latest YOLO26n model
model = YOLO("yolo26n.pt")
# Run inference on an image with half-precision enabled
# The 'half=True' argument tells the engine to use FP16
results = model.predict("https://ultralytics.com/images/bus.jpg", device=device, half=True)
# Print the device and precision status
print(f"Inference device: {results[0].orig_img.shape}, Speed: {results[0].speed}")
Pour les utilisateurs qui gèrent des ensembles de données et des pipelines de formation, Ultralytics gère automatiquement bon nombre de ces optimisations dans le cloud, ce qui simplifie la transition entre l'annotation et le déploiement de modèles optimisés.
Pour en savoir plus sur les formats numériques et leur impact sur l'IA, consultez la documentationNVIDIA sur les performancesNVIDIA learning concernant Tensor . Pour mieux comprendre comment ces optimisations s'intègrent dans le cycle de vie du développement, consultez la section consacrée aux opérations d'apprentissage automatique (MLOps).
De plus, ceux qui s'intéressent aux compromis entre différentes stratégies d'optimisation peuvent se pencher sur l' élagage, qui supprime les connexions plutôt que de réduire la précision des bits, ou explorer la norme IEEE pour l'arithmétique en virgule flottante (IEEE 754) pour connaître les spécifications techniques de l'arithmétique numérique. La compréhension de ces principes fondamentaux aide à prendre des décisions éclairées lors de l'exportation de modèles vers des formats tels que ONNX ou TensorRT pour les environnements de production.