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.

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

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

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

    Le Pentagone limoge le chef d’état-major de l’armée américaine

    Le Pentagone a limogé Randy George en pleine guerre contre l’Iran, sur fond de purge interne et de remaniement voulu par Pete Hegseth.

    États-Unis : détention du président d’une association islamique à Milwaukee

    Aux États-Unis, l’ICE a arrêté Salah Sarsour, président d’une association islamique de Milwaukee, sur fond d’accusations contestées.

    Golfe, Irak et Jordanie : interceptions et chute d’un drone

    Koweït, Bahreïn et Émirats interceptent des attaques, tandis qu’un drone s’écrase à la frontière irako-jordanienne.

    Washington informe Israël de l’échec des discussions avec l’Iran

    Washington a informé Israël de l’impasse des discussions avec l’Iran, alors que de nouvelles frappes et des pressions sur l’économie iranienne sont étudiées.

    Israël frappe 44 zones du sud du Liban, Hezbollah riposte

    Israël a frappé 44 zones du sud du Liban, causant 10 morts. Le Hezbollah a riposté avec 60 attaques contre des cibles israéliennes.

    Trump menace l’Iran : frappes massives annoncées dans 2-3 semaines

    Trump menace des frappes « très puissantes » contre l'Iran dans 2-3 semaines, visant à détruire ses capacités militaires et nucléaires. Pays concernés : USA, Iran.

    Abu Obeida salue les mobilisations syriennes pour al‑Aqsa et les détenus

    Abu Obeida salue les manifestations en Syrie en soutien à al‑Aqsa et aux prisonniers palestiniens. Pays concernés : Syrie, Palestine, Israël.

    Un juge suspend la construction du ballroom de 400 M$ de Trump

    Un juge fédéral bloque temporairement le projet de ballroom à 400 M$ de Donald Trump à la Maison-Blanche en attendant l'autorisation du Congrès.

    à Lire

    Categories