CI/CD für benutzerdefinierte Sprache

Implementieren Sie die automatisierte Trainings-, Test- und Releaseverwaltung, um eine kontinuierliche Verbesserung der benutzerdefinierten Sprachmodelle zu ermöglichen, während Sie Aktualisierungen auf Trainings- und Testdaten anwenden. Durch die effektive Implementierung von CI/CD-Workflows können Sie sicherstellen, dass der Endpunkt für das leistungsfähigste benutzerdefinierte Sprachmodell immer verfügbar ist.

Continuous Integration (CI) ist das Entwicklungsverfahren, bei dem Aktualisierungen in einem freigegebenen Repository regelmäßig committet werden und daraufhin ein automatisierter Build erfolgt. CI-Workflows für benutzerdefinierte Sprache trainieren ein neues Modell aus seinen Datenquellen und führen automatisierte Tests an dem neuen Modell durch, um sicherzustellen, dass es bessere Leistungen als das vorherige Modell erbringt.

Continuous Delivery (CD) übernimmt Modelle aus dem CI-Prozess und erstellt einen Endpunkt für jedes verbesserte benutzerdefinierte Sprachmodell. CD macht Endpunkte leicht verfügbar, die in Lösungen integriert werden können.

Benutzerdefinierte CI/CD-Lösungen sind möglich, aber für eine robuste, vordefinierte Lösung verwenden Sie das Speech DevOps-Vorlagenrepository, das CI/CD-Workflows mit GitHub Actions ausführt.

CI/CD-Workflows für benutzerdefinierte Sprache

Der Zweck dieser Workflows besteht darin sicherzustellen, dass jedes benutzerdefinierte Sprachmodell eine höhere Erkennungsgenauigkeit aufweist als der vorherige Build. Wenn die Aktualisierungen für die Test- und/oder Trainingsdaten die Genauigkeit erhöhen, erstellen diese Workflows einen neuen Endpunkt für benutzerdefinierte Sprache.

Git-Server wie GitHub und Azure DevOps können automatisierte Workflows ausführen, wenn bestimmte Git-Ereignisse auftreten, z. B. Zusammenführungen oder Pull Requests. Beispielsweise kann ein CI-Workflow ausgelöst werden, wenn Aktualisierungen von Testdaten an den Mainbranch gepusht werden. Verschiedene Git-Server verfügen über unterschiedliche Tools, gestatten aber die Skripterstellung von Befehlen der Befehlszeilenschnittstelle (CLI), sodass sie auf einem Buildserver ausgeführt werden können.

Auf diesem Weg sollten die Workflows Daten, Tests, Testdateien, Modelle und Endpunkte so benennen und speichern, dass sie bis zu dem Commit oder der Version, von dem bzw. der sie stammen, zurückverfolgt werden können. Es ist auch hilfreich, diese Ressourcen so zu benennen, dass leicht erkennbar ist, welche nach der Aktualisierung der Testdaten und welche nach der Aktualisierung der Trainingsdaten erstellt wurden.

CI-Workflow für Aktualisierungen von Testdaten

Der Hauptzweck der CI/CD-Workflows besteht darin, ein neues Modell mit den Trainingsdaten zu erstellen und dieses Modell unter Verwendung der Testdaten zu testen, um festzustellen, ob sich die Wort-Fehler-Rate (Word Error Rate, WER) im Vergleich zum vorherigen leistungsstärksten Modell (dem „Vergleichstestmodell“) verbessert hat. Wenn das neue Modell eine bessere Leistung erzielt, wird es zum neuen Vergleichstestmodell, mit dem zukünftige Modelle verglichen werden.

Der CI-Workflow zum Testen von Datenaktualisierungen sollte das aktuelle Vergleichstestmodell mit den aktualisierten Testdaten erneut testen, um die überarbeitete Wort-Fehler-Rate (WER) zu berechnen. Dadurch wird sichergestellt, dass beim Vergleich der WER eines neuen Modells mit der WER des Vergleichsmodells beide Modelle mit denselben Testdaten getestet wurden und Sie somit Gleiches mit Gleichem vergleichen.

Dieser Workflow sollte bei Aktualisierungen der Testdaten ausgelöst werden und wie folgt vorgehen:

  • Vergleichstestmodell mit den aktualisierten Testdaten testen.
  • Testausgabe, die die Wort-Fehler-Rate (WER) des Vergleichstestmodells enthält, mithilfe der aktualisierten Daten speichern.
  • Die Wort-Fehler-Rate aus diesen Tests wird zur neuen Wort-Fehler-Rate des Vergleichstestmodells, die von zukünftigen Modellen übertroffen werden muss.
  • Der CD-Workflow wird bei Aktualisierungen von Testdaten nicht ausgeführt.

CI-Workflow für Aktualisierungen von Trainingsdaten

Aktualisierungen von Trainingsdaten bezeichnen Aktualisierungen für das benutzerdefinierte Modell.

Dieser Workflow sollte bei Aktualisierungen der Trainingsdaten ausgelöst werden und wie folgt vorgehen:

  • Ein neues Modell mit den aktualisierten Trainingsdaten trainieren.
  • Das neue Modell anhand der Testdaten testen.
  • Die Testausgabe speichern, die die Wort-Fehler-Rate enthält.
  • Die Wort-Fehler-Rate des neuen Modells mit der Wort-Fehler-Rate des Testvergleichsmodells vergleichen.
  • Wenn sich die Wort-Fehler-Rate nicht verbessert, wird der Workflow beendet.
  • Wenn sich die Wort-Fehler-Rate verbessert, wird der CD-Workflow ausgeführt, um einen Endpunkt für benutzerdefinierte Sprache zu erstellen.

CD-Workflow

Nachdem eine Aktualisierung der Trainingsdaten die Erkennung eines Modells verbessert hat, sollte der CD-Workflow automatisch ausgeführt werden, um einen neuen Endpunkt für dieses Modell zu erstellen und diesen Endpunkt so verfügbar zu machen, dass er in einer Lösung verwendet werden kann.

Releaseverwaltung

Die meisten Teams benötigen einen manuellen Überprüfungs- und Genehmigungsprozess für die Bereitstellung in einer Produktionsumgebung. Bei einer Bereitstellung in einer Produktionsumgebung sollten Sie sicherstellen, dass dies erfolgt, wenn Schlüsselpersonen des Entwicklungsteams zur Unterstützung zur Verfügung stehen oder in Zeiten mit geringem Datenverkehrsaufkommen.

Tools für Workflows für benutzerdefinierte Sprache

Verwenden Sie die folgenden Tools für CI/CD-Automatisierungsworkflows für benutzerdefinierte Sprache:

  • Azure CLI zum Erstellen einer Azure-Dienstprinzipalauthentifizierung, zum Abfragen von Azure-Abonnements und zum Speichern von Testergebnissen in Azure-Blob.
  • Azure KI Speech-CLI zum Interagieren mit dem Speech-Dienst über die Befehlszeile oder einen automatisierten Workflow.

DevOps-Lösung für benutzerdefinierte Sprache mit GitHub Actions

Eine bereits implementierte DevOps-Lösung für benutzerdefinierte Sprache finden Sie im Speech DevOps-Vorlagenrepository. Erstellen Sie eine Kopie der Vorlage, und beginnen Sie die Entwicklung benutzerdefinierter Modelle mit einem robusten DevOps-System, das Tests, Training und Versionsverwaltung unter Verwendung von GitHub Actions umfasst. Das Repository bietet Beispieltests und Trainingsdaten, um beim Setup und der Erläuterung des Workflows zu helfen. Ersetzen Sie nach dem anfänglichen Setup die Beispieldaten durch Ihre Projektdaten.

Das Speech DevOps-Vorlagenrepository stellt die Infrastruktur und detaillierte Anleitungen für Folgendes bereit:

  • Kopieren Sie das Vorlagenrepository in Ihr GitHub-Konto, erstellen Sie dann Azure-Ressourcen und einen Dienstprinzipal für die CI/CD-Workflows für GitHub Actions.
  • Durchlaufen Sie die innere Schleife der Entwicklung. Aktualisieren Sie Trainings- und Testdaten von einem Featurebranch, testen Sie die Änderungen mit einem temporären Entwicklungsmodell, und lösen Sie einen Pull Request aus, um die Änderungen vorzuschlagen und zu überprüfen.
  • Wenn Trainingsdaten in einem Pull Request für main aktualisiert werden, trainieren Sie Modelle mit dem CI-Workflow für GitHub Actions.
  • Führen Sie automatisierte Genauigkeitsprüfungen durch, um die Wort-Fehler-Rate (WER) eines Modells zu ermitteln. Speichern Sie die Testergebnisse in Azure-Blob.
  • Führen Sie den CD-Workflow aus, um einen Endpunkt zu erstellen, wenn sich die Wort-Fehler-Rate verbessert.

Nächste Schritte