En savoir plus sur l'inférence de génération vocale d'IA avec TorchServe sur les GPU NVIDIA
Vous pouvez concevoir un service Text-to-Speech à exécuter sur Oracle Cloud Infrastructure Kubernetes Engine à l'aide de TorchServe sur les GPU NVIDIA. Cette technique peut également être appliquée à d'autres charges de travail d'inférence telles que la classification d'images, la détection d'objets, le traitement du langage naturel et les systèmes de recommandation.
Un serveur d'inférence est un système spécialisé qui héberge des modèles de machine learning entraînés et sert leurs prédictions (inférences) à l'aide d'API. Il gère les défis critiques de production liés à la mise à l'échelle, au traitement par lots et à la surveillance : transformer un modèle statique en un service Web fiable et hautes performances.
TorchServe est le cadre officiel de service de modèle pour PyTorch.
Son travail consiste à prendre votre fichier .mar
entraîné (fichier de modèle packagé) et à le rendre disponible à partir des adresses d'API ou de gRPC RESTful. Au lieu d'écrire une logique et des serveurs Web personnalisés, vous packagez votre modèle et le transmettez à TorchServe. Il vous fournit instantanément :
- Évolutivité : gère automatiquement les collaborateurs pour gérer le trafic à volume élevé.
- Performances de faible latence : utilise des fonctionnalités avancées telles que le traitement par lots multimodèle pour regrouper les demandes en vue d'un traitement efficace.
- Gestion des modèles : permet d'enregistrer, de gérer et d'annuler des modèles sans temps d'arrêt.
- Surveillance intégrée : effectue le suivi des mesures telles que la latence d'inférence et les demandes par seconde prêtes à l'emploi.
Essentiellement, TorchServe comble l'écart entre l'expérimentation PyTorch et le déploiement en production, transformant vos modèles puissants en un service de prédiction robuste avec un effort minimal. C'est l'outil essentiel pour faire passer PyTorch du laboratoire de recherche au monde réel.
Remarques :
TorchServe est actuellement en mode de maintenance limitée. Bien qu'il reste gratuit et qu'il soit toujours utilisé par certains clients existants pour des cas d'utilisation spécifiques ou des tests pratiques, nous vous recommandons d'évaluer sa pertinence à long terme pour les déploiements de production. Veuillez consulter la documentation officielle de l'établissement PyTorch TorchServe à l'adresse https://docs.pytorch.org/serve/ pour connaître le statut et les considérations actuels.Voici quelques-uns des serveurs d'inférence du marché :
Serveur | Développeur | Fonctionnalités principales | Idéal pour | Prise en charge du framework |
---|---|---|---|---|
NVIDIA Triton | NVIDIA |
|
Déploiements multimodèles hautes performances | PyTorch, TF, ONNX, TensorRT |
TorchServe | PyTorch (anciennement Meta) |
|
Déploiements axés sur PyTorch | PyTorch uniquement |
TensorFlow Service |
|
Écosystèmes TensorFlow | TensorFlow |
Architecture
Cette architecture présente un exemple de déploiement d'inférence de génération vocale d'IA.
transperfect-oke-arch-oracle.zip
Un modèle vocal entraîné et personnalisé, affiné à partir d'un modèle Hugging Face de base, est déployé sur TorchServe pour l'inférence. TorchServe sert de couche de service, hébergeant le modèle et gérant efficacement les demandes utilisateur entrantes.
Lorsqu'un utilisateur envoie une entrée de texte, TorchServe traite la demande, appelle le modèle et affiche la sortie en tant que parole synthétique de haute qualité.
Pour les segments de texte à parole, chaque document peut contenir plusieurs blocs et chaque bloc est composé de segments. Exemple :
Document (chapter)
└── Block (paragraph)
└── Segment (sentence)
Cette architecture prend en charge les composants suivants :
- Région OCI
Une région OCI est une zone géographique précise qui contient des centres de données, hébergeant des domaines de disponibilité. Les régions sont indépendantes les une des autres et peuvent les séparer d'un pays ou d'un continent à l'autre par de grandes distances.
- Réseau et sous-réseau cloud virtuel OCI
Un réseau cloud virtuel est un réseau personnalisable défini par logiciel que vous configurez dans une région OCI. Comme les Réseaux de centre de données traditionnels, les Réseaux cloud virtuels vous donnent un contrôle sur l'environnement réseau. Un VCN peut comporter plusieurs blocs de routage interdomaine sans classe (CIDR) qui ne se chevauchent pas et que vous pouvez modifier une fois le VCN créé. Vous pouvez segmenter un réseau cloud virtuel en plusieurs sous-réseaux ciblant une région ou un domaine de disponibilité. Chaque sous-réseau est composé d'une plage contiguë d'adresses qui ne chevauchent pas celles des autres sous-réseaux du réseau cloud virtuel. Vous pouvez modifier la taille d'un sous-réseau après sa création. Un sous-réseau peut être public ou privé.
- OCI Registry
Oracle Cloud Infrastructure Registry est un service géré par Oracle qui vous permet de simplifier votre workflow de développement à production. Registry facilite le stockage, le partage et la gestion d'artefacts de développement tels que les images Docker.
- OCI Object Storage
OCI Object Storage fournit un accès à des quantités importantes de informations structurées et non, de tout type de contenu, y compris les sauvegardes de base de donnée, les données analytiques et le contenu enrichi tel que des images et des vidéos. Vous pouvez stocker des données en toute sécurité directement à partir des applications ou de la plate-forme cloud. Vous pouvez redimensionner le stockage sans dégradation des performances ni de la fiabilité de services.
Utilisez le stockage standard pour le stockage "à chaud" auquel vous devez accéder rapidement, immédiatement et fréquemment. Utilisez le stockage d'archive pour le stockage "à froid" que vous conservez durant de longues périodes et auquel il est rare d'y accéder.
- OCI File Storage
Oracle Cloud Infrastructure File Storage offre un système d'exploitation réseau durable, évolutif, sécurisé et approprié à l'entreprise. Vous pouvez vous connecter à OCI File Storage à partir de n'importe quelle instance Bare Metal, de machine virtuelle ou de conteneur dans un VCN. Vous pouvez également accéder à OCI File Storage en dehors du VCN à l'aide d'Oracle Cloud Infrastructure FastConnect et du VPN IPSec.
- Volumes de blocs OCI
Avec Oracle Cloud Infrastructure Block Volumes, vous pouvez créer, associer, connecter et déplacer des volumes de stockage, et modifier les performances de volume pour répondre aux exigences de stockage, de performances et d'application. Une fois un volume attaché et connecté à une instance, vous pouvez l'utiliser comme un disque dur classique. Vous pouvez également déconnecter un volume et l'attacher à une autre instance sans perdre des données.
- Equilibreur de charge
Oracle Cloud Infrastructure Load Balancing fournit une distribution automatisée du trafic à partir d'un point d'entrée unique vers plusieurs serveurs.
- OCI Kubernetes Engine
Oracle Cloud Infrastructure Kubernetes Engine (OCI Kubernetes Engine ou OKE) est un service entièrement géré, évolutif et hautement disponible que vous pouvez utiliser pour déployer vos applications en conteneur dans le cloud. Vous indiquez les ressources de calcul dont vos applications ont besoin, et OKE les provisionne sur OCI dans une location existante. OKE utilise Kubernetes pour automatiser le déploiement, la mise à l'échelle et la gestion des applications en conteneur dans les clusters d'hôtes.
- Passerelle de service
Une passerelle de service fournit un accès à partir d'un VCN à d'autres services, tels qu'Oracle Cloud Infrastructure Object Storage. Le trafic entre le VCN et le service Oracle passe par la structure réseau Oracle et ne traverse pas Internet.
- Passerelle Internet
Une passerelle Internet permet le trafic entre les sous-réseaux publics d'un VCN et le réseau Internet public.
- Journalisation OCIOracle Cloud Infrastructure Logging est un service hautement évolutif et entièrement géré qui permet d'accéder aux types de journaux suivants à partir de vos ressources dans le cloud :
- Journaux d'audit : journaux liés aux événements produits par OCI Audit.
- Journaux de service : journaux publiés par des services individuels tels que OCI API Gateway, OCI Events, OCI Functions, OCI Load Balancing, OCI Object Storage et les journaux de flux VCN.
- Journaux personnalisés : journaux contenant des informations de diagnostic issues d'applications personnalisées, d'autres fournisseurs cloud ou d'un environnement sur Site.
- Surveillance OCI
Oracle Cloud Infrastructure Monitoring surveille activement et passivement vos ressources cloud et utilise des alarmes pour vous avertir lorsque les mesures répondent aux déclencheurs spécifiés.
- Règle
Une stratégie Oracle Cloud Infrastructure Identity and Access Management indique qui peut accéder à quelles ressources et comment. L'accès est accordé au niveau du groupe et des compartiments, ce qui signifie qu'il est possible d'écrire une stratégie qui offre un type d'accès spécifique au sein d'un compartiment spécifique ou à la location.
- OCI Vault
Oracle Cloud Infrastructure Vault vous permet de créer et de gérer de manière centralisée les clés de cryptage qui protègent vos données et les informations d'identification de clé secrète que vous utilisez pour sécuriser l'accès à vos ressources dans le cloud. La gestion des clés par défaut est celle des clés gérées par Oracle. Vous pouvez également utiliser des clés gérées par le client qui utilisent OCI Vault. OCI Vault offre un riche ensemble d'API REST permettant de gérer les coffres et les clés.
- Hugging Face
Hugging Face est une plateforme et un hub collaboratifs pour le machine learning qui fournit des modèles d'IA préentraînés, des outils de développement et une infrastructure d'hébergement pour les applications d'IA, ce qui rend le machine learning avancé accessible aux développeurs du monde entier.
A propos du workflow de conception de solution
Cette solution de génération vocale implémente le workflow de conception suivant.
- L'utilisateur lance une conversion de projet.
- L'application ajoute un message à la file d'attente RabbitMQ pour chaque tâche de conversion au sein du projet.
- Chaque salarié extrait un message de la file d'attente.
- Le processus actif traite le message et envoie une demande à TorchServe.
- TorchServe effectue l'inférence et renvoie les résultats au processus actif.
- Le salarié traite les résultats et renvoie un message dans la file d'attente.
- L'application extrait le message de résultats de la file d'attente et le stocke dans la base de données.
- L'utilisateur est informé des résultats dans l'interface utilisateur.
Remarques :
Pour les modèles légers, un processus actif envoie la demande d'inférence aux noeuds de CPU.