Erfahren Sie mehr über AI Voice Generation Inference mit TorchServe auf NVIDIA-GPUs

Sie können einen Text-to-Speech-Service für die Ausführung auf Oracle Cloud Infrastructure Kubernetes Engine mit TorchServe auf NVIDIA-GPUs entwerfen. Diese Technik kann auch auf andere Inferenz-Workloads wie Bildklassifizierung, Objekterkennung, Natural Language Processing und Empfehlungssysteme angewendet werden.

Ein Inferenzserver ist ein spezialisiertes System, das trainierte Modelle für maschinelles Lernen hostet und deren Vorhersagen (Referenzen) mithilfe von APIs erfüllt. Es bewältigt die kritischen Produktionsherausforderungen bei Skalierung, Batchverarbeitung und Überwachung: Die Umwandlung eines statischen Modells in einen zuverlässigen, leistungsstarken Webservice.

TorchServe ist das offizielle, modellabhängige Framework für PyTorch.

Seine Aufgabe besteht darin, die trainierte .mar-Datei (eine in einem Package integrierte Modelldatei) zu übernehmen und über die API- oder gRPC-Endpunkte RESTful zur Verfügung zu stellen. Anstatt benutzerdefinierte Webserver und Logik zu schreiben, verpacken Sie Ihr Modell und übergeben es an TorchServe. Es bietet Ihnen sofort:

  • Skalierbarkeit: Verwaltet automatisch Mitarbeiter, um Datenverkehr mit hohem Volumen zu verarbeiten.
  • Leistung mit geringer Latenz: Verwendet erweiterte Features wie Batching mit mehreren Modellen, um Anforderungen für eine effiziente Verarbeitung zu gruppieren.
  • Modellverwaltung: Ermöglicht die Registrierung, Versionierung und das Rollback von Modellen ohne Ausfallzeit.
  • Integriertes Monitoring: Erfasst Metriken wie Inferenzlatenz und Anforderungen pro Sekunde sofort.

Im Wesentlichen schließt TorchServe die Lücke zwischen PyTorch-Experimentation und Produktionsbereitstellung und verwandelt Ihre leistungsstarken Modelle mit minimalem Aufwand in einen robusten Vorhersageservice. Es ist das wesentliche Werkzeug, um PyTorch vom Forschungslabor in die reale Welt zu bringen.

Hinweis:

TorchServe befindet sich derzeit im eingeschränkten Wartungsmodus. Es bleibt zwar frei zu verwenden und wird immer noch von einigen bestehenden Kunden für bestimmte Anwendungsfälle oder Testkomfort eingesetzt, wir empfehlen jedoch, seine langfristige Eignung für Produktionsbereitstellungen zu bewerten. Informationen zum aktuellen Status und zu den Überlegungen finden Sie in der offiziellen Dokumentation PyTorch TorchServe unter https://docs.pytorch.org/serve/.

Dies sind einige der Inferenzserver auf dem Markt:

Server Entwickler Wichtige Features Beste für Framework-Unterstützung
NVIDIA Triton NVIDIEN
  • Multi-Framework-Unterstützung (PyTorch, TensorFlow, ONNX usw.)
  • Dynamisches Batching, Modellparallelität
  • Optimiert für GPUs (TensorRT)
Hochleistungs-Bereitstellungen mit mehreren Modellen PyTorch, TF, ONNX, TensorRT
TorchServe PyTorch (zuvor Meta)
  • Native PyTorch-Integration
  • Einfache Python-API
  • Grundlegende dynamische Batchverarbeitung
PyTorch-orientierte Bereitstellungen Nur PyTorch
TensorFlow Bearbeitung Google
  • Optimiert für TensorFlow-Modelle
  • Unterstützt Modellversionierung
TensorFlow Ökosysteme TensorFlow

Architektur

Diese Architektur zeigt ein Beispiel für ein Inferenz-Deployment der KI-Spracherzeugung.



transperfect-oke-arch-oracle.zip

Ein trainiertes und angepasstes Sprachmodell, das von einem Basismodell für Hugging Face optimiert wurde, wird zur Inferenz auf TorchServe bereitgestellt. TorchServe fungiert als Serving Layer, hostet das Modell und verwaltet eingehende Benutzeranforderungen effizient.

Wenn ein Benutzer eine Texteingabe sendet, verarbeitet TorchServe die Anforderung, ruft das Modell auf und stellt die Ausgabe als hochwertige synthetische Sprache dar.

Bei Text-zu-Sprachsegmenten kann jedes Dokument mehrere Blöcke enthalten, und jeder Block besteht aus Segmenten. Beispiel:

Document  (chapter)
 └── Block (paragraph)
      └── Segment (sentence)

Diese Architektur unterstützt die folgenden Komponenten:

  • OCI-region

    Eine OCI-Region ist ein lokalisierter geografischer Bereich, der mindestens ein Data Centre enthält, das Availability-Domains hostet. Regionen sind unabhängig von anderen Regionen, und große Entfernungen können über Länder oder Kontinente voneinander getrennt werden.

  • Virtuelles OCI-Cloud-Netzwerk und Subnetz

    Ein virtuelles Cloud-Netzwerk (VCN) ist ein anpassbares, softwaredefiniertes Netzwerk, das Sie in einer OCI-Region einrichten. Wie herkömmliche Data Center-Netzwerke erhalten Sie über VCNs die Kontrolle über Ihre Netzwerkumgebung. Ein VCN kann mehrere nicht überschneidende CIDR-Blöcke aufweisen, die Sie nach dem Erstellen des VCN ändern können. Sie können ein VCN in Subnetze segmentieren, die sich auf eine Region oder eine Availability-Domain beschränken. Jedes Subnetz besteht aus einem Bereich zusammenhängender Adressen, die sich nicht mit anderen Subnetzen im VCN überschneiden. Sie können die Größe eines Subnetzes nach der Erstellung ändern. Ein Subnetz kann öffentlich oder privat sein.

  • OCI Registry

    Oracle Cloud Infrastructure Registry ist ein von Oracle verwalteter Service, mit dem Sie Ihren Workflow der Entwicklung bis hin zur Produktion vereinfachen können. Mit Registry können Sie Entwicklungsartefakte wie Docker-Images einfach speichern, teilen und verwalten.

  • OCI Object Storage

    Mit OCI Object Storage können Sie auf große Mengen an strukturierten und unstrukturierten Daten eines beliebigen Inhaltstyps zugreifen, darunter Datenbankbackups, Analysedaten und umfangreiche Inhalte, wie Bilder und Videos. Sie können Daten sicher und sicher direkt aus Anwendungen oder aus der Cloud-Plattform speichern. Sie können den Storage skalieren, ohne dass die Performance oder Servicezuverlässigkeit beeinträchtigt wird.

    Verwenden Sie den Standardspeicher für "Hot Storage", auf die Sie schnell, sofort und häufig zugreifen müssen. Verwenden Sie Archivspeicherung für "Cold Storage", die Sie über lange Zeiträume beibehalten und nur selten darauf zugreifen.

  • OCI File Storage

    Oracle Cloud Infrastructure File Storage stellt ein dauerhaftes, skalierbares, sicheres Netzwerkdateisystem der Unternehmensklasse dar. Sie können von jeder Bare-Metal-, Virtual-Machine- oder Containerinstanz in einem VCN eine Verbindung zu OCI File Storage herstellen. Sie können auch von außerhalb des VCN auf OCI File Storage zugreifen, indem Sie Oracle Cloud Infrastructure FastConnect und IPSec VPN verwenden.

  • OCI-Block-Volumes

    Mit Oracle Cloud Infrastructure Block Volumes können Sie Speicher-Volumes erstellen, anhängen, verbinden und verschieben sowie die Volume-Performance ändern, um Ihre Speicher-, Performance- und Anwendungsanforderungen zu erfüllen. Nachdem Sie ein Volume an eine Instanz angehängt und damit verbunden haben, können Sie es wie eine herkömmliche Festplatte verwenden. Sie können ein Volume auch trennen und an eine andere Instanz anhängen, ohne Daten zu verlieren.

  • Load Balancer

    Oracle Cloud Infrastructure Load Balancing bietet eine automatisierte Trafficverteilung von einem einzigen Einstiegspunkt auf mehrere Server.

  • OCI Kubernetes Engine

    Oracle Cloud Infrastructure Kubernetes Engine (OCI Kubernetes Engine oder OKE) ist ein vollständig verwalteter, skalierbarer und hochverfügbarer Service, mit dessen Hilfe Sie Ihre containerisierten Anwendungen in der Cloud bereitstellen können. Sie geben die Compute-Ressourcen an, die Ihre Anwendungen benötigen, und OKE stellt sie auf OCI in einem vorhandenen Mandanten bereit. OKE automatisiert mit Kubernetes das Deployment, die Skalierung und die Verwaltung containerisierter Anwendungen über Hostscluster hinweg.

  • Servicegateway

    Ein Servicegateway ermöglicht den Zugriff von einem VCN auf andere Services, wie Oracle Cloud Infrastructure Object Storage. Der Datenverkehr vom VCN zum Oracle-Service wird über die Oracle-Netzwerkstruktur geleitet und durchläuft nicht das Internet.

  • Internetgateway

    Ein Internetgateway ermöglicht Traffic zwischen den öffentlichen Subnetzen in einem VCN und dem öffentlichen Internet.

  • OCI-Protokollierung
    Oracle Cloud Infrastructure Logging ist ein hoch skalierbarer und vollständig verwalteter Service, der Zugriff auf folgende Logtypen von Ihren Ressourcen in der Cloud ermöglicht:
    • Auditlogs: Logs für Ereignisse, die von OCI Audit erstellt wurden.
    • Servicelogs: Von einzelnen Services veröffentlichte Logs, wie OCI API Gateway, OCI-Ereignisse, OCI Functions, OCI Load Balancing, OCI Object Storage und VCN-Flowlogs.
    • Benutzerdefinierte Logs: Logs, die Diagnoseinformationen von benutzerdefinierten Anwendungen, anderen Cloud-Providern oder einer On-Premise-Umgebung enthalten.
  • OCI-Monitoring

    Oracle Cloud Infrastructure Monitoring überwacht aktiv und passiv Ihre Cloud-Ressourcen und benachrichtigt Sie mit Alarmen, wenn Metriken bestimmte Trigger erfüllen.

  • Policy

    Eine Oracle Cloud Infrastructure Identity and Access Management-Policy gibt an, wer auf welche Ressourcen zugreifen kann und wie. Der Zugriff wird auf Gruppen- und Compartment-Ebene erteilt. Sie können also eine Policy schreiben, die einer Gruppe einen bestimmten Zugriffstyp innerhalb eines bestimmten Compartments oder dem Mandanten erteilt.

  • OCI Vault

    Mit Oracle Cloud Infrastructure Vault können Sie die Verschlüsselungsschlüssel zum Schutz Ihrer Daten und die Secret-Zugangsdaten erstellen und zentral verwalten, mit denen Sie den Zugriff auf Ihre Ressourcen in der Cloud sichern. Die Standardschlüsselverwaltung sind von Oracle verwaltete Schlüssel. Sie können auch vom Kunden verwaltete Schlüssel verwenden, die OCI Vault verwenden. OCI Vault bietet ein umfangreiches Set von REST-APIs zur Verwaltung von Vaults und Schlüsseln.

  • Hugging Face

    Hugging Face ist eine kollaborative Plattform und ein Hub für maschinelles Lernen, die vortrainierte KI-Modelle, Entwicklungstools und Hosting-Infrastruktur für KI-Anwendungen bereitstellt, sodass fortgeschrittenes maschinelles Lernen für Entwickler weltweit zugänglich ist.

Informationen zum Workflow für das Lösungsdesign

Diese Sprachgenerierungslösung implementiert den folgenden Designworkflow.

  1. Der Benutzer initiiert eine Projektkonvertierung.
  2. Die App fügt der Queue RabbitMQ für jede Konvertierungsaufgabe im Projekt eine Nachricht hinzu.
  3. Jeder Mitarbeiter ruft eine Nachricht aus der Warteschlange ab.
  4. Der Worker verarbeitet die Nachricht und sendet eine Anforderung an TorchServe.
  5. TorchServe führt Inferenz aus und gibt die Ergebnisse an den Mitarbeiter zurück.
  6. Der Mitarbeiter verarbeitet die Ergebnisse und stellt eine Nachricht wieder in die Warteschlange.
  7. Die App ruft die Ergebnisnachricht aus der Queue ab und speichert sie in der Datenbank.
  8. Der Benutzer wird über die Ergebnisse in der UI benachrichtigt.

Hinweis:

Bei Lightweight-Modellen sendet ein Worker die Inferenzanforderung an CPU-Knoten.