More

    Optimisation des Modèles AI avec un Serveur d’Inférence Centralisé

    France

    Les modèles d’apprentissage profond jouent un rôle essentiel dans les pipelines algorithmiques, qui sont des flux de travail traitant des entrées à travers une série d’algorithmes pour produire des sorties. Ces modèles AI ont des exigences de ressources très différentes de leurs homologues classiques, notamment une utilisation plus élevée de la mémoire, une dépendance à des accélérateurs matériels spécialisés et des demandes de calcul accrues.

    Défis de traitement des entrées à grande échelle

    Dans cet article, nous abordons un défi courant : le traitement efficace des entrées à grande échelle via des pipelines algorithmiques intégrant des modèles d’apprentissage profond. Une solution typique consiste à exécuter plusieurs tâches indépendantes, chacune responsable du traitement d’une seule entrée. Cette configuration est souvent gérée avec des frameworks d’orchestration de tâches. Cependant, lorsque des modèles d’apprentissage profond sont impliqués, cette approche peut s’avérer inefficace, car charger et exécuter le même modèle dans chaque processus individuel peut conduire à une contention des ressources et à des limitations d’échelle.

    Alors que les modèles AI deviennent de plus en plus courants dans les pipelines algorithmiques, il est crucial de revisiter la conception de ces solutions.

    Avantages du serveur d’inférence centralisé

    Nous évaluons ici les avantages de l’inférence centralisée, où un serveur d’inférence dédié gère les demandes de prédiction provenant de plusieurs tâches parallèles. Nous définissons un expérience avec un pipeline de traitement d’images basé sur un classificateur d’images ResNet-152, traitant 1 000 images individuelles.

    Nous comparons la performance en termes de temps d’exécution et d’utilisation des ressources entre deux implémentations :

    • Inférence décentralisée : chaque tâche charge et exécute le modèle de manière indépendante.
    • Inférence centralisée : toutes les tâches envoient des demandes d’inférence à un serveur d’inférence dédié.

    Expérience réalisée

    Nous avons mené nos expériences sur une instance Amazon EC2 c5.2xlarge, disposant de 8 vCPUs et 16 GiB de mémoire, en utilisant une image de machine virtuel PyTorch Deep Learning. Nous avons activé l’environnement PyTorch avec la commande appropriée.

    Étape 1 : Création d’un point de contrôle de modèle TorchScript

    Nous créons un point de contrôle pour le modèle ResNet-152 et le sérialisons à l’aide de TorchScript :

    import torch
    from torchvision.models import resnet152, ResNet152_Weights
    model = resnet152(weights=ResNet152_Weights.DEFAULT)
    model = torch.jit.script(model)
    model.save("resnet-152.pt")
    

    Étape 2 : Fonction d’inférence du modèle

    Notre fonction d’inférence exécute les étapes suivantes :

    • Charger le modèle ResNet-152.
    • Charger une image d’entrée.
    • Prétraiter l’image pour correspondre au format d’entrée attendu par le modèle.
    • Exécuter l’inférence pour classifier l’image.
    • Post-traiter la sortie du modèle pour retourner les cinq meilleures prédictions d’étiquettes.

    Étape 3 : Exécution de tâches d’inférence parallèles

    Nous définissons une fonction qui démarre des processus parallèles, chacun traitant une entrée d’image unique. Cette fonction gère le nombre total d’images à traiter et le maximum de tâches concurrentes.

    def process_image(image_id):
        print(f"Processing image {image_id} (PID: {os.getpid()})")
        predict(image_id)
    

    Estimations des processus maximum

    Bien que le nombre optimal de processus concurrents soit déterminé empiriquement, nous pouvons estimer une limite supérieure basée sur la mémoire système et la taille du fichier de point de contrôle.

    Les résultats de l’expérience montrent que la saturation de la mémoire se produit à 50 processus concurrents, alors que le débit maximal est atteint à 8 tâches concurrentes.

    Les inefficacités de l’exécution indépendante des modèles

    Exécuter des tâches parallèles qui chargent et exécutent chacune le modèle de manière indépendante crée des inefficacités significatives :

    • Chaque processus doit allouer des ressources mémoire appropriées pour stocker sa propre copie du modèle AI.
    • Les modèles AI sont gourmands en calcul ; les exécuter dans plusieurs processus parallèles peut mener à une contention des ressources.
    • Le chargement de fichiers de points de contrôle et l’initialisation du modèle dans chaque processus ajoutent des frais généraux.

    Une alternative plus efficace consiste à centraliser l’exécution d’inférence à l’aide d’un serveur d’inférence dédié, ce qui élimine le chargement redondant du modèle et réduit l’utilisation globale des ressources système.

    Configuration de TorchServe

    Nous pouvons emballer le modèle et ses fichiers associés dans un fichier archive « *.mar* », le format requis pour le déploiement sur TorchServe.

    mkdir model_store
    torch-model-archiver \
    --model-name resnet-152 \
    --serialized-file resnet-152.pt \
    --handler image_classifier \
    --version 1.0 \
    --export-path model_store
    

    Configuration de TorchServe

    Nous créons un fichier config.properties pour définir le fonctionnement de TorchServe :

    model_store=model_store
    load_models=resnet-152.mar
    default_workers_per_model=1
    job_queue_size=100
    

    Résultats obtenus

    En utilisant un serveur d’inférence centralisé, nous avons non seulement augmenté le débit global de plus du double, mais également libéré des ressources CPU significatives pour d’autres tâches de calcul.

    Les résultats des tests montrent également des améliorations considérables lors de l’activation de l’inférence par lots, augmentant le débit de 26,5 %. De plus, la configuration de plusieurs travailleurs d’inférence a permis une amélioration de 36 % du débit.

    Prochaines étapes

    Nous avons démontré les avantages d’une solution d’inférence centralisée et pouvons explorer plusieurs façons d’optimiser cette configuration. Cela comprend l’utilisation de gestionnaires d’inférence personnalisés et des configurations avancées du serveur d’inférence, entre autres.

    Résultats de l'inférence décentralisée
    Résultats du serveur d'inférence
    Résultats du serveur d'inférence par lots
    Résultats du serveur d'inférence multi-travailleurs

    Serveur Dinférence | Modèles Ai | Inférence | Serveurs | Deep Learning | Performance | France
    source:https://towardsdatascience.com/the-case-for-centralized-ai-model-inference-serving/

    LAISSER UN COMMENTAIRE

    S'il vous plaît entrez votre commentaire!
    S'il vous plaît entrez votre nom ici

    Actualités

    L’acteur de Friends, Matthew Perry, décède à 54 ans

    "Matthew Perry, célèbre pour son rôle de Chandler Bing dans Friends, décède à 54 ans. Acteur très apprécié, sa mort suscite l'émotion mondiale."

    Entité sioniste déploie des navires de guerre en Mer Rouge selon un expert militaire

    Entité sioniste déploie des navires de guerre en Mer Rouge pour contrer les Houthis au Yémen, une manœuvre vue comme une démonstration de force envers l'Iran.

    Le Retour de Microsoft avec Bing et Edge : Une Menace pour Google ?

    Depuis moins de trois mois, ChatGPT a déjà créé...

    L’affaire des SMS entre Pfizer et la Commission européenne : ce qu’il faut savoir

    En avril 2021, le New York Times a révélé...

    Banque suisse : Credit Suisse en chute libre après la faillite de la SVB

    L'action de Credit Suisse a dévissé de plus de...

    Hébron : des blessés palestiniens lors d’attaques de l’armée et de colons sionistes

    Dix Palestiniens ont été pris en charge à Hébron. D’autres incidents, arrestations et sièges de maisons ont été signalés en Cisjordanie.

    Syrie : une enquête annoncée après l’hospitalisation de Mohamed Ghmira

    Les autorités de Lattaquié annoncent une enquête après l’hospitalisation de Mohamed Ghmira. Le cas d’Abd al-Salam Akko ravive aussi le débat sur les détenus en Syrie.

    Liban : 11 morts après des frappes de l’État sioniste dans le Sud

    L’armée de l’État sioniste affirme avoir tué un commandant du Hezbollah. Les frappes de samedi ont fait 11 morts et 19 blessés, d’après le bilan rapporté.

    Iran : deux médiations en attente autour du détroit d’Ormuz

    Mascate travaille avec Téhéran sur l’organisation du trafic maritime, tandis qu’une initiative pakistanaise vise à rétablir un canal politique avec Washington.

    Syrie : des milliers de dounams agricoles endommagés à Quneitra

    La direction de l’agriculture de Quneitra évalue à plus de 4 800 dounams les pâturages, cultures d’hiver et vergers endommagés après des épandages signalés en janvier.

    Détroit d’Ormuz : condamnations du Golfe après trois attaques contre des navires d’ADNOC

    Trois navires d’ADNOC ont été visés dans le détroit d’Ormuz en deux soirs. Les pays du Golfe ont condamné les attaques.

    Gaza : une délégation du Hamas attendue au Caire pour discuter de l’accord

    Conduite par Khalil al-Hayya, une délégation du Hamas est attendue au Caire pour discuter de l’accord de cessez-le-feu à Gaza.

    Coupe du Roi d’Arabie saoudite : les 32es de finale lancent la 40e édition

    La Coupe du Roi d’Arabie saoudite lance ses 32es de finale sur quatre jours, avec 32 clubs engagés dans cette 40e édition.

    à Lire

    Categories