Informazioni sull'inferenza di AI Voice Generation con TorchServe sulle GPU NVIDIA
Puoi progettare un servizio Text-to-Speech da eseguire su Oracle Cloud Infrastructure Kubernetes Engine utilizzando TorchServe sulle GPU NVIDIA. Questa tecnica può essere applicata anche ad altri carichi di lavoro di inferenza come la classificazione delle immagini, il rilevamento degli oggetti, l'elaborazione del linguaggio naturale e i sistemi di raccomandazione.
Un server di inferenza è un sistema specializzato che ospita modelli di machine learning addestrati e serve le loro previsioni (inferenze) utilizzando le API. Gestisce le sfide di produzione critiche di scalabilità, batch e monitoraggio: trasformare un modello statico in un servizio Web affidabile e ad alte prestazioni.
TorchServe è il framework ufficiale di servizio dei modelli per PyTorch.
Il suo compito è quello di prendere il file .mar
addestrato (un file modello pacchettizzato) e renderlo disponibile dall'API RESTful o dagli endpoint gRPC. Anziché scrivere server Web e logica personalizzati, creare il package del modello e distribuirlo a TorchServe. Ti fornisce immediatamente:
- Scalabilità: gestisce automaticamente i lavoratori per gestire il traffico di grandi volumi.
- Prestazioni a bassa latenza: utilizza funzioni avanzate come il batch multi-modello per raggruppare le richieste per un'elaborazione efficiente.
- Gestione modelli: consente di registrare, creare una versione e eseguire il rollback dei modelli senza tempi di inattività.
- Monitoraggio integrato: tiene traccia di metriche quali la latenza di inferenza e le richieste al secondo predefinite.
In sostanza, TorchServe colma il divario tra la sperimentazione PyTorch e l'implementazione della produzione, trasformando i tuoi potenti modelli in un solido servizio di previsione con il minimo sforzo. È lo strumento essenziale per portare PyTorch dal laboratorio di ricerca al mondo reale.
Nota
TorchServe è attualmente in modalità di manutenzione limitata. Sebbene rimanga libera da utilizzare ed è ancora utilizzata da alcuni clienti esistenti per casi d'uso specifici o per comodità di test, si consiglia di valutarne l'idoneità a lungo termine per le implementazioni di produzione. Per conoscere lo stato e le considerazioni attuali, consulta la documentazione ufficiale PyTorch TorchServe all'indirizzo https://docs.pytorch.org/serve/.Questi sono alcuni dei server di inferenza sul mercato:
server | Sviluppatore | Caratteristiche principali | Ideale per | Supporto framework |
---|---|---|---|---|
NVIDIA Triton | NVIDIA |
|
Implementazioni multi-modello altamente performanti | PyTorch, TF, ONNX, TensorRT |
TorchServe | PyTorch (precedentemente Meta) |
|
PyTorch implementazioni incentrate | Solo PyTorch |
TensorFlow Servizio |
|
ecosistemi TensorFlow | TensorFlow |
Architettura
Questa architettura mostra un esempio di distribuzione di inferenza di generazione vocale AI.
Un modello vocale addestrato e personalizzato, ottimizzato da un modello Hugging Face di base, viene distribuito su TorchServe per l'inferenza. TorchServe funge da livello di servizio, ospita il modello e gestisce in modo efficiente le richieste degli utenti in entrata.
Quando un utente invia un input di testo, TorchServe elabora la richiesta, richiama il modello e visualizza l'output come discorso sintetico di alta qualità.
Per i segmenti di testo a voce, ogni documento può contenere più blocchi e ogni blocco è costituito da segmenti. Ad esempio:
Document (chapter)
└── Block (paragraph)
└── Segment (sentence)
Questa architettura supporta i componenti elencati di seguito.
- Area OCI
Un'area geografica OCI è un'area geografica localizzata che contiene uno o più data center, che ospitano domini di disponibilità. Le regioni sono indipendenti da altre regioni e vaste distanze possono separarle (tra paesi o addirittura continenti).
- Rete e subnet cloud virtuale OCI
Una rete cloud virtuale (VCN, virtual cloud network) è una rete personalizzabile e definita dal software impostata in un'area OCI. Come le reti di data center tradizionali, le reti VCN ti danno il controllo sul tuo ambiente di rete. Una VCN può avere più blocchi CIDR (Classless Inter-Domain Routing) non sovrapposti che è possibile modificare dopo aver creato la VCN. È possibile segmentare una VCN in subnet, che possono essere definite in un'area o in un dominio di disponibilità. Ogni subnet è costituita da un intervallo contiguo di indirizzi che non si sovrappongono alle altre subnet nella VCN. È possibile modificare le dimensioni di una sottorete dopo la creazione. Una subnet può essere pubblica o privata.
- OCI Registry
Oracle Cloud Infrastructure Registry è un servizio gestito da Oracle che ti consente di semplificare il tuo flusso di lavoro dallo sviluppo alla produzione. Registry semplifica la memorizzazione, la condivisione e la gestione degli artifact di sviluppo, come le immagini Docker.
- Memorizzazione degli oggetti OCI
Lo storage degli oggetti OCI fornisce l'accesso a grandi quantità di dati strutturati e non strutturati di qualsiasi tipo di contenuto, inclusi backup del database, dati analitici e contenuti avanzati come immagini e video. Puoi memorizzare in tutta sicurezza i dati direttamente dalle applicazioni o dall'interno della piattaforma cloud. È possibile ridimensionare lo storage senza subire alcun deterioramento a livello di prestazioni o affidabilità del servizio.
Utilizza lo storage standard per lo storage "caldo" a cui devi accedere in modo rapido, immediato e frequente. Utilizzare lo storage di archivio per lo storage "a freddo" che si conserva per lunghi periodi di tempo e a cui si accede raramente o raramente.
- OCI File Storage
Oracle Cloud Infrastructure File Storage offre un file system di rete duraturo, scalabile, sicuro e di livello aziendale. Puoi connetterti allo storage di file OCI da qualsiasi istanza Bare Metal, virtual machine o container in una VCN. Puoi anche accedere allo storage di file OCI dall'esterno della VCN utilizzando Oracle Cloud Infrastructure FastConnect e IPSec VPN.
- Volumi a blocchi OCI
Con Oracle Cloud Infrastructure Block Volumes, puoi creare, collegare, connettere e spostare volumi di storage e modificare le prestazioni dei volumi per soddisfare i requisiti di storage, prestazioni e applicazioni. Dopo aver collegato e connesso un volume a un'istanza, puoi utilizzare il volume come un normale disco rigido. Puoi anche disconnettere un volume e collegarlo a un'altra istanza senza perdere dati.
- Load balancer
Oracle Cloud Infrastructure Load Balancing fornisce una distribuzione automatica del traffico da un unico punto di accesso a più server.
- Motore Kubernetes OCI
Oracle Cloud Infrastructure Kubernetes Engine (OCI Kubernetes Engine o OKE) è un servizio completamente gestito, scalabile e ad alta disponibile da utilizzare per distribuire le applicazioni containerizzate nel cloud. È possibile specificare le risorse di computazione richieste dalle applicazioni e OKE le esegue il provisioning su OCI in una tenancy esistente. OKE utilizza Kubernetes per automatizzare l'implementazione, il ridimensionamento e la gestione di applicazioni containerizzate tra cluster di host.
- Gateway del servizio
Un gateway di servizi fornisce l'accesso da una VCN ad altri servizi, ad esempio Oracle Cloud Infrastructure Object Storage. Il traffico dalla VCN al servizio Oracle viaggia sul fabric di rete Oracle e non attraversa Internet.
- Gateway Internet
Un gateway Internet consente il traffico tra le subnet pubbliche di una VCN e la rete Internet pubblica.
- Log OCIOracle Cloud Infrastructure Logging è un servizio altamente scalabile e completamente gestito che fornisce l'accesso ai seguenti tipi di log dalle tue risorse nel cloud:
- Log di audit: log correlati agli eventi prodotti da OCI Audit.
- Log dei servizi: log pubblicati da singoli servizi quali il gateway API OCI, gli eventi OCI, le funzioni OCI, il bilanciamento del carico OCI, lo storage degli oggetti OCI e i log di flusso VCN.
- Log personalizzati: log che contengono informazioni di diagnostica da applicazioni personalizzate, altri provider cloud o un ambiente in locale.
- Monitoraggio OCI
Oracle Cloud Infrastructure Monitoring monitora in modo attivo e passivo le tue risorse cloud e utilizza gli allarmi per avvisarti quando le metriche soddisfano i trigger specificati.
- Criterio
Un criterio di Oracle Cloud Infrastructure Identity and Access Management specifica chi può accedere a quali risorse e in che modo. L'accesso viene concesso a livello di gruppo e compartimento. Ciò significa che È possibile scrivere un criterio che fornisca a un gruppo un tipo specifico di accesso all'interno di un compartimento specifico o nella tenancy.
- OCI Vault
Oracle Cloud Infrastructure Vault ti consente di creare e gestire centralmente le chiavi di cifratura che proteggono i tuoi dati e le credenziali segrete che utilizzi per proteggere l'accesso alle tue risorse nel cloud. La gestione delle chiavi predefinita è costituita da chiavi gestite da Oracle. È inoltre possibile utilizzare chiavi gestite dal cliente che utilizzano OCI Vault. OCI Vault offre un ricco set di API REST per la gestione di vault e chiavi.
- Hugging Face
Hugging Face è una piattaforma collaborativa e un hub per il machine learning che fornisce modelli AI pre-addestrati, strumenti di sviluppo e infrastruttura di hosting per le applicazioni AI, rendendo il machine learning avanzato accessibile agli sviluppatori di tutto il mondo.
Informazioni sul flusso di lavoro di progettazione della soluzione
Questa soluzione di generazione vocale implementa il seguente flusso di lavoro di progettazione.
- L'utente avvia una conversione del progetto.
- L'app aggiunge un messaggio alla coda RabbitMQ per ogni task di conversione all'interno del progetto.
- Ogni lavoratore recupera un messaggio dalla coda.
- Il lavoratore elabora il messaggio e invia una richiesta a TorchServe.
- TorchServe esegue l'inferenza e restituisce i risultati al lavoratore.
- Il lavoratore elabora i risultati e inserisce nuovamente un messaggio nella coda.
- L'app recupera il messaggio dei risultati dalla coda e lo memorizza nel database.
- L'utente riceve una notifica dei risultati nell'interfaccia utente.
Nota
Per i modelli leggeri, un worker invia la richiesta di inferenza ai nodi CPU.