En savoir plus sur l'inférence de génération vocale AI avec TorchServe sur les processeurs graphiques NVIDIA
Vous pouvez concevoir un service de synthèse vocale à exécuter sur Oracle Cloud Infrastructure Kubernetes Engine à l'aide de TorchServe sur les processeurs graphiques 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 d'apprentissage automatique entraînés et qui 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 : la transformation d'un modèle statique en un service Web fiable et performant.
TorchServe est le cadre officiel de service de modèle pour PyTorch.
Son travail consiste à prendre votre fichier .mar
entraîné (un fichier de modèle packagé) et à le rendre disponible à partir de l'API RESTful ou des points d'extrémité gRPC. Au lieu d'écrire des serveurs Web et une logique personnalisés, vous assemblez votre modèle et le transmettez à TorchServe. Il vous offre instantanément :
- Extensibilité : Gère automatiquement les travailleurs pour gérer le trafic à volume élevé.
- Performance à faible latence : Utilise des fonctions avancées telles que la création de lots de modèles multiples pour regrouper les demandes pour un traitement efficace.
- Gestion des modèles : Permet d'enregistrer, de créer des versions et de repositionner des modèles sans temps d'arrêt.
- Surveillance intégrée : Assure 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 minimum d'effort. C'est l'outil essentiel pour faire passer PyTorch du laboratoire de recherche au monde réel.
Note :
TorchServe est actuellement en mode de maintenance limitée. Bien qu'il reste libre d'utilisation et qu'il soit toujours utilisé par certains clients existants pour des cas d'utilisation spécifiques ou des tests pratiques, nous recommandons d'évaluer son aptitude à long terme pour les déploiements de production. Veuillez consulter la documentation officielle PyTorch TorchServe à l'adresse https://docs.pytorch.org/serve/ pour connaître l'état actuel et les considérations à prendre en compte.Voici quelques-uns des serveurs d'inférence sur le marché :
Serveur | Développeur | Fonctions clés | Idéal pour | Prise en charge du cadre de travail |
---|---|---|---|---|
NVIDIA Triton | NVIDIA |
|
Déploiements multimodèles à haute performance | PyTorch, TF, ONNX, TensorRT |
TorchServe | PyTorch (anciennement Meta) |
|
Déploiements axés sur PyTorch | PyTorch seulement |
TensorFlow Service |
|
TensorFlow Écosystèmes | TensorFlow |
Architecture
Cette architecture présente un exemple de déploiement d'inférence de génération vocale par 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 à des fins d'inférence. TorchServe agit en tant que couche de service, hébergeant le modèle et gérant efficacement les demandes des utilisateurs entrants.
Lorsqu'un utilisateur envoie une entrée de texte, TorchServe traite la demande, appelle le modèle et rend la sortie sous forme de discours synthétique de haute qualité.
Pour les segments texte à parole, chaque document peut contenir plusieurs blocs et chaque bloc est composé de segments. Par 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 localisée qui contient un ou plusieurs centres de données, des domaines de disponibilité d'hébergement. Les régions sont indépendantes les unes des autres, et de grandes distances peuvent les séparer (à travers les pays ou même les continents).
- Réseau en nuage virtuel et sous-réseau OCI
Un réseau en nuage virtuel (VCN) est un réseau défini par logiciel personnalisable, configuré dans une région OCI. Comme les réseaux de centre de données traditionnels, les réseaux en nuage virtuels vous permettent de contrôler votre environnement de réseau. Un VCN peut disposer de plusieurs blocs de routage inter-domaine (CIDR) sans chevauchement que vous pouvez modifier après avoir créé le VCN. Vous pouvez segmenter un VCN en sous-réseaux, dont la portée peut concerner une région ou un domaine de disponibilité. Un sous-réseau est constitué d'un intervalle contigu d'adresses qui ne chevauchent pas les autres sous-réseaux dans le réseau en nuage 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é.
- registre OCI
Oracle Cloud Infrastructure Registry est un service géré par Oracle qui vous permet de simplifier votre flux de travail, du développement à la production. Le service Registry facilite le stockage, le partage et la gestion d'artefacts de développement, tels que des images Docker.
- Service de stockage d'objets pour OCI
Le service de stockage d'objets pour OCI donne accès à de grandes quantités de données structurées et non structurées de tous types, notamment des sauvegardes de base de données, des données analytiques et du contenu enrichi, comme des images et des vidéos. Vous pouvez stocker des données en toute sécurité directement à partir d'applications ou de la plate-forme en nuage. Vous pouvez adapter le stockage sans que la performance ou la fiabilité des services soit affectée.
Utilisez le stockage standard pour le stockage "à chaud" auquel vous devez accéder rapidement, immédiatement et fréquemment. Utilisez le stockage d'archives pour le stockage "à froid" que vous conservez pendant de longues périodes et auquel vous accédez rarement.
- Stockage de fichiers pour OCI
Le service de stockage de fichiers pour Oracle Cloud Infrastructure fournit un système de fichiers de réseau durable, évolutif, sécurisé et adapté à l'entreprise. Vous pouvez vous connecter au stockage de fichiers OCI à partir de n'importe quelle instance sans système d'exploitation, de machine virtuelle ou de conteneur dans un VCN. Vous pouvez également accéder au service Stockage de fichiers OCI à partir de l'extérieur du VCN à l'aide d'Oracle Cloud Infrastructure FastConnect et du RPV IPSec.
- Volumes par blocs OCI
Avec Oracle Cloud Infrastructure Block Volumes, vous pouvez créer, attacher, connecter et déplacer des volumes de stockage et modifier la performance des volumes pour répondre à vos exigences en matière de stockage, de performance et d'applications. 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'associer à une autre instance sans perdre de données.
- Équilibreur de charge
Oracle Cloud Infrastructure Load Balancing assure la répartition automatisée du trafic d'un point d'entrée unique vers plusieurs serveurs.
- Moteur Kubernetes pour OCI
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 conteneurisées dans le nuage. Vous spécifiez 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, l'ajustement et la gestion des applications conteneurisées sur des grappes d'hôtes.
- Passerelle de service
Une passerelle de service fournit un accès à partir d'un VCN à d'autres services, tels que Oracle Cloud Infrastructure Object Storage. Le trafic entre le réseau VCN et le service Oracle circule sur la structure réseau Oracle et ne passe pas par Internet.
- Passerelle Internet
Une passerelle Internet permet le trafic entre les sous-réseaux publics d'un VCN et le réseau Internet public.
- Service de journalisation pour OCIOracle Cloud Infrastructure Logging est un service hautement évolutif entièrement géré qui permet d'accéder aux types de journaux suivants à partir de vos ressources en nuage :
- Journaux de vérification : Journaux liés aux événements produits par le service de vérification pour OCI.
- Journaux de service : Journaux publiés par des services individuels tels que le service Passerelle d'API OCI, les événements OCI, le service Fonctions OCI, l'équilibrage de charge OCI, le service Stockage d'objets OCI et les journaux de flux de réseau VCN.
- Journaux personnalisés : Journaux contenant des informations de diagnostic provenant d'applications personnalisées, d'autres fournisseurs de services infonuagiques ou d'un environnement sur place.
- Surveillance OCI
Oracle Cloud Infrastructure Monitoring surveille vos ressources en nuage, de manière active et passive, et utilise des alarmes pour vous aviser lorsque les mesures répondent aux déclencheurs spécifiés.
- Politique
Une politique Oracle Cloud Infrastructure Identity and Access Management spécifie qui peut accéder à quelles ressources et comment. L'accès est accordé au niveau du groupe et du compartiment, ce qui permet d'écrire une politique qui donne à un groupe un type d'accès spécifique dans un compartiment spécifique ou à la location.
- Chambre forte OCI
Oracle Cloud Infrastructure Vault vous permet de créer et de gérer de manière centralisée les clés de chiffrement qui protègent vos données et les données d'identification de clé secrète que vous utilisez pour sécuriser l'accès à vos ressources dans le nuage. La gestion des clés par défaut est les clés gérées par Oracle. Vous pouvez également utiliser des clés gérées par le client qui utilisent le service Chambre forte OCI. Le service de chambre forte pour OCI offre un jeu étoffé d'API REST pour gérer les chambres fortes et les clés.
- S'étreindre le visage
Hugging Face est une plate-forme collaborative et un centre d'apprentissage automatique 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, rendant l'apprentissage automatique avancé accessible aux développeurs du monde entier.
À propos du flux de travail de conception de solution
Cette solution de génération vocale implémente le flux de travail 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 dans le projet.
- Chaque travailleur extrait un message de la file d'attente.
- Le travailleur traite le message et envoie une demande à TorchServe.
- TorchServe effectue une inférence et retourne les résultats au travailleur.
- Le travailleur traite les résultats et remet 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 avisé des résultats dans l'interface utilisateur.
Note :
Pour les modèles légers, un travailleur envoie la demande d'inférence aux noeuds d'UC.