HyperAI

TorchServe Expliqué : 5 Étapes Pour Déployer Des Modèles Dans Un Environnement De Production

il y a 2 ans
Information
Jiaxin Sun
特色图像

  Contenu:

TorchServe a été lancé en avril 2020 et a connu plus de deux ans de développement. Il est devenu plus mature et plus stable. Cet article donnera une introduction complète à TorchServe.

Cet article a été publié pour la première fois sur le compte officiel WeChat :Communauté de développeurs PyTorch

Pour des pratiques de déploiement de modèles plus pratiques à l'aide de PyTorch, visitez openbayes.com Obtenir

TorchServe est la solution préférée pour déployer des modèles dans des environnements de production dans PyTorch.Il s'agit d'un outil performant et extensible qui encapsule des modèles avec une API HTTP ou HTTPS.

Le front-end de TorchServe est implémenté en Java et peut gérer diverses tâches, notamment l'allocation de travailleurs pour le déploiement de modèles et la responsabilité de la communication entre les clients et les serveurs. Son backend Python est principalement responsable de la gestion du service d'inférence.

Figure 1 : Présentation du processus de réglage des performances de TorchServe

En outre, il prend également en charge les tests AB, le traitement par lots dynamique, la journalisation et divers modèles de diffusion et de versionnage des métriques.Les 4 API publiques incluent :

* API d'inférence :Les écoutes sur le port 8080, accessibles via localhost par défaut, peuvent être configurées dans la configuration TorchServe et prennent en charge l'obtention de prédictions à partir du modèle.

Explication de l'API :Utilisez Captum sous le capot pour fournir une description du modèle en cours de déploiement et écoutez sur le port 8080.

API de gestion :Permet d'enregistrer ou de désenregistrer et de décrire des modèles. Il permet également aux utilisateurs d’augmenter ou de diminuer le nombre de travailleurs sur lesquels le modèle est déployé.

* API de métriques :Par défaut, il écoute sur le port 8082, permettant aux utilisateurs de surveiller le modèle en cours de déploiement.

TorchServe prend en charge l'inférence par lots et déploie des modèles sur plusieurs travailleurs.Permet aux utilisateurs de mettre à l’échelle les déploiements de modèles et de gérer les pics de trafic. Cette extension peut être réalisée via l'API de gestion et les paramètres du fichier de configuration. De plus, l'API Metrics peut surveiller le déploiement du modèle via des métriques par défaut et personnalisées.

D'autres paramètres avancés, tels que la longueur de la file d'attente pour la réception des demandes, le temps d'attente maximal pour un lot d'entrées et d'autres propriétés,Les deux peuvent être configurés via un fichier de configuration (qui peut être transmis à TorchServe lors du démarrage).

Les étapes pour déployer un modèle avec TorchServe incluent :

1. Installer TorchServe, l'archiveur de modèles et les autres dépendances

2. Sélectionnez un gestionnaire par défaut approprié (tel que la classification d'images) ou créez un gestionnaire personnalisé

3. Utilisez Torcharchive pour regrouper les artefacts et les gestionnaires de modèles en un seul .mar  fichier et placez-le dans le magasin de modèles

4. Commencez à déployer le modèle

5. Exécuter l'inférence

Adresse du projet TorchServe :

https://github.com/pytorch/serve/blob/master/README.md#install-torchserve-and-torch-model-archiver

Concepts clés de TorchServe : Gestionnaire

Le backend TorchServe utilise un gestionnaire pour charger le modèle, prétraiter les données reçues, exécuter l'inférence et post-traiter la réponse. Le gestionnaire dans TorchServe est un Pscript Python, toute l'initialisation du modèle, le prétraitement, l'inférence et la logique de post-traitement y sont inclus.

TorchServe fournit également un gestionnaire prêt à l'emploi pour des applications telles que la classification d'images, la segmentation, la détection d'objets et la classification de texte. De plus, il prend également en charge les gestionnaires personnalisés au cas où le gestionnaire par défaut ne prend pas en charge le cas actuel.

Les gestionnaires personnalisés offrent une grande flexibilité.Cela pourrait faire de TorchServe un outil de service multi-framework.Les gestionnaires personnalisés vous permettent d'initialiser un modèle avec une logique personnalisée et permettent également au modèle de charger des modèles à partir d'autres frameworks (tels que ONNX).

Le gestionnaire TorchServe se compose de quatre fonctions principales,fonctions , initialiser , inférence  et prétraitement, chaque fonction renvoie une liste.

L'extrait de code suivant est un exemple de gestionnaire personnalisé. Le gestionnaire personnalisé hérite du BaseHandler dans TorchServe.Peut remplacer n'importe quelle fonction principale.Cet exemple montre comment utiliser le gestionnaire pour charger le modèle Detectron2 et résoudre le problème de détection de figures. Le modèle a été exporté vers Torchscript et utilisé  mod.half()  Exécutez l'inférence FP16.

modifier

Concepts clés de TorchServe : métriques

Lors du déploiement d’un modèle dans un environnement de production, il est important de surveiller ses performances. TorchServe collecte périodiquement des métriques au niveau du système et permet d'ajouter des métriques personnalisées.

Les mesures au niveau du système incluent l’utilisation du processeur, l’espace disque et la mémoire disponibles et utilisés sur l’hôte, ainsi que le nombre de requêtes avec différents codes de réponse.(par exemple 200-300, 400-500 et plus de 500). Des métriques personnalisées peuvent être ajoutées à l'aide de l'API de métriques personnalisées.

API de métriques personnalisées :

https://github.com/pytorch/serve/blob/master/docs/metrics.md#custom-metrics-api

TorchServe enregistre ces deux ensembles de mesures dans différents fichiers journaux. Par défaut, les métriques sont collectées dans :

Mesures du système : log_directory/ts_metrics.log

Métriques personnalisées :répertoire de journaux/model_metrics.log

L'API Metrics de TorchServe écoute sur le port 8082 par défaut et permet aux utilisateurs d'interroger et de surveiller les métriques collectées. Le point de terminaison des métriques par défaut renvoie les métriques au format Prometheus. Vous pouvez interroger des métriques avec des requêtes curl ou pointer Prometheus Server vers le point de terminaison et utiliser Grafana pour le tableau de bord.

Utilisez curl pour interroger les métriques :

curl http://127.0.0.1:8082/metrics

Exemple d'exportation de métriques enregistrées vers Prometheus à l'aide de mtail :https://github.com/google/mtail

En suivant ces mesures dans le tableau de bord, vous pouvez surveiller les régressions de performances qui peuvent se produire de manière sporadique ou être difficiles à repérer lors des exécutions de référence hors ligne.

Et ensuite?

Ce qui précède concerne TorchServe. Dans la section suivante, nous utiliserons un exemple spécifique.Expliquez les facteurs spécifiques qui affectent le déploiement des modèles dans les environnements de production et comment utiliser TorchServe pour régler l'application de dessins animés.

Pour plus de supports d'apprentissage et de tutoriels pratiques, veuillez suivre le compte officiel :Communauté de développeurs PyTorch. Pour regarder le tutoriel en action, visitez openbayes.com  Fonctionnement pratique. ​