Freigeben über


Bewerten der Leistung eingebetteter Sprachmodelle

Eingebettete Sprachmodelle werden vollständig auf Ihren Zielgeräten ausgeführt. Das Verständnis der Leistungsmerkmale dieser Modelle auf Ihrer Gerätehardware kann für die Bereitstellung mit geringer Latenz innerhalb Ihrer Produkte und Anwendungen von entscheidender Bedeutung sein. Dieser Leitfaden enthält Informationen für die Beantwortung der Frage: „Eignet sich mein Gerät zum Ausführen der eingebetteten Spracherkennung in Text- und Sprachübersetzungsmodellen?“.

Metriken und Terminologie

Echtzeitfaktor: Der Echtzeitfaktor (Real-Time Factor, RTF) eines Geräts misst, wie schnell das eingebettete Sprachmodell Audioeingaben verarbeiten kann. Er stellt das Verhältnis zwischen Verarbeitungszeit und Audiolänge dar. Wenn ein Gerät beispielsweise eine einminütige Audiodatei in 30 Sekunden verarbeitet, beträgt der RTF 0,5. Diese Metrik wertet die Rechenleistung des Geräts für die Ausführung eingebetteter Sprachmodelle aus. Dies kann helfen, Geräte zu identifizieren, die zu langsam sind, um die Modelle zu unterstützen. Die Messung dieser Metrik sollte nur mithilfe von dateibasierten Eingaben und nicht mit Mikrofoneingaben in Echtzeit erfolgen.

Um interaktive Sprachfunktionen in Echtzeit zu unterstützen, sollte das Gerät über einen RTF von 1 oder niedriger verfügen. Ein RTF-Wert über 1 bedeutet, dass das Gerät nicht mit der Audioeingabe schritthalten kann und so die Benutzerfreundlichkeit beeinträchtigen kann.

Beim Messen des RTF eines Geräts ist es wichtig, mehrere Stichproben zu messen und die Verteilung über Perzentile zu analysieren. Auf diese Weise können Sie die Auswirkungen von Variationen im Verhalten des Geräts erfassen, z. B. unterschiedliche CPU-Taktgeschwindigkeiten aufgrund der thermischen Drosselung. Die vordefinierten Messtests, die in Messen des Echtzeitfaktors auf Ihrem Gerät beschrieben sind, messen automatisch den RTF für jedes Spracherkennungsergebnis, was zu einer ausreichend großen Stichprobengröße führt.

Von Benutzer*innen wahrgenommene Latenz: Die von den Benutzer*innen wahrgenommene Latenz (User-Perceived Latency, UPL) bei der Spracherkennung ist die Zeit zwischen dem Aussprechen eines Worts und seiner Anzeige in den Erkennungsergebnissen.

Faktoren, die sich auf die Leistung auswirken

Gerätespezifikationen: Die Spezifikationen Ihres Geräts spielen eine wichtige Rolle bei der Vermeidung von Leistungsproblemen während der Ausführung eingebetteter Sprachmodelle. CPU-Taktgeschwindigkeit, Architektur (z. B. x64, Arm-Prozessor usw.) und Arbeitsspeicher können sich auf die Rückschlussgeschwindigkeit des Modells auswirken.

CPU-Auslastung: In den meisten Fällen werden auf Ihrem Gerät parallel noch andere Anwendungen neben der Anwendung ausgeführt, in der eingebettete Sprachmodelle integriert sind. Der Umfang der CPU-Auslastung Ihres Geräts im Leerlauf und zu Spitzenzeiten kann sich ebenfalls auf die Leistung auswirken.

Wenn das Gerät beispielsweise aufgrund der anderen auf dem Gerät ausgeführten Anwendungen eine mittlere bis hohe CPU-Auslastung aufweist, können bei paralleler Ausführung mit anderen Anwendungen auch mit einem leistungsstarken Prozessor Leistungsprobleme bei der eingebetteten Spracherkennung auftreten.

Arbeitsspeicherauslastung: Ein eingebettetes Spracherkennungsmodell verbraucht zur Laufzeit zwischen 200 und 300 MB Arbeitsspeicher. Wenn auf Ihrem Gerät weniger Arbeitsspeicher für den zu verwendenden eingebetteten Spracherkennungsprozess zur Verfügung steht, können häufige Fallbacks auf virtuellen Arbeitsspeicher und Paging zusätzliche Latenzen nach sich ziehen. Dies kann sich sowohl auf den Echtzeitfaktor als auch auf die von den Benutzer*innen wahrgenommene Latenz auswirken.

Integrierte Leistungsoptimierungen

Alle eingebetteten Spracherkennungsmodelle verfügen über eine VAD-Komponente (Voice Activity Detector), die dazu dient, Stille und andere Inhalte als Sprache aus der Audioeingabe herauszufiltern. Ziel ist es, die CPU-Auslastung und die Verarbeitungszeit für andere Komponenten des Spracherkennungsmodells zu reduzieren.

Die VAD-Komponente ist immer aktiviert und benötigt keine Konfiguration von Ihnen als Entwickler*in. Dies funktioniert am besten, wenn die Audioeingabe nicht vernachlässigbare Mengen an Stille oder sprachfremden Inhalten aufweist. Dies ist z. B. in Szenarien zum Untertiteln, Befehlen und Diktieren üblich.

Messen des Echtzeitfaktors auf Ihrem Gerät

Für alle unterstützten Plattformen für eingebettete Sprachmodelle ist ein Codebeispiel auf GitHub verfügbar, das einen Modus zur Leistungsmessung umfasst. In diesem Modus soll der Echtzeitfaktor (RTF) Ihres Geräts gemessen werden, indem so viele Variablen wie möglich gesteuert werden:

  • Modell: Für die Messung wird das Modell für Englisch (USA) verwendet. Modelle für alle anderen unterstützten Gebietsschemas folgen ähnlichen Leistungsmerkmalen, sodass die Messung des Modells für Englisch (USA) ausreicht.

  • Audioeingabe: Eine vordefinierte Audiodatei, die für RTF-Messungen entwickelt wurde, steht als ergänzender Download zum Beispielcode zur Verfügung.

  • Messmechanismus: Die Markierungen für Anfang und Ende der Zeitmessung sind in der Stichprobe vorkonfiguriert, um die Genauigkeit sicherzustellen und einen einfachen Vergleich der Ergebnisse auf unterschiedlichen Geräten und bei verschiedenen Testläufen zu gewährleisten.

Diese Messung sollte mit dem Beispiel erfolgen, das direkt auf Ihren Zielgeräten ausgeführt wird, ohne dass andere Codeänderungen als die Angabe der Modellpfade und des Verschlüsselungsschlüssels vorgenommen werden. Das Gerät sollte sich in einem Zustand befinden, der einen echten Endbenutzerstatus darstellt, wenn ein eingebettetes Sprachmodell verwendet wird (z. B. andere aktive Anwendungen, CPU- und Arbeitsspeicherauslastung usw.).

Das Ausführen des Beispiels liefert Leistungsmetriken, die an die Konsole ausgegeben werden. Zu den Metriken gehören der Echtzeitfaktor und andere Eigenschaften wie die CPU-Auslastung und der Arbeitsspeicherverbrauch. Jede Metrik wird unten definiert und erläutert.

Metriken für Anweisungssätze

Metrik BESCHREIBUNG Notizen
AVX512Unterstützt TRUE, wenn die CPU den AVX512-Anweisungssatz unterstützt. Dieses Flag gilt für x64-Plattformen. Die ONNX-Runtime verfügt über Optimierungen für die verschiedenen Anweisungssätze, und diese Informationen können bei der Diagnose von Inkonsistenzen helfen.
AVXSupported TRUE, wenn die CPU den AVX-Anweisungssatz unterstützt. Dieses Flag gilt für x64-Plattformen. Die ONNX-Runtime verfügt über Optimierungen für die verschiedenen Anweisungssätze, und diese Informationen können bei der Diagnose von Inkonsistenzen helfen.
AVX2Supported TRUE, wenn die CPU den AVX2-Anweisungssatz unterstützt. Dieses Flag gilt für x64-Plattformen. Die ONNX-Runtime verfügt über Optimierungen für die verschiedenen Anweisungssätze, und diese Informationen können bei der Diagnose von Inkonsistenzen helfen.
SSE3 Verfügbar TRUE, wenn die CPU den SSE3-Anweisungssatz unterstützt. Dieses Flag gilt für x64-Plattformen. Die ONNX-Runtime verfügt über Optimierungen für die verschiedenen Anweisungssätze, und diese Informationen können bei der Diagnose von Inkonsistenzen helfen.
NEONAvailable TRUE, wenn die CPU den NEON-Anweisungssatz unterstützt. Dieses Flag gilt für Plattformen mit Arm-Prozessoren. Die ONNX-Runtime verfügt über Optimierungen für die verschiedenen Anweisungssätze, und diese Informationen können bei der Diagnose von Inkonsistenzen helfen.
NPU Name der neuronalen Verarbeitungseinheit (Neural Processing Unit, NPU) oder „N/A“, wenn keine gefunden wurde. Dieses Flag dient der Hardwarebeschleunigung.

Arbeitsspeichermetriken

Metrik BESCHREIBUNG Notizen
PagefileUsage Menge der Auslagerungsdatei, die vom Prozess verwendet wird. Implementiert für Linux und Windows. Die Werte sind relativ zur Computerkonfiguration.
WorkingSetSize Der für den Prozess verwendete Arbeitsspeicher.
ProcessCPUUsage Aggregat der CPU-Auslastung für den Prozess. Enthält alle Threads im Prozess, einschließlich Speech SDK und Benutzeroberflächenthreads. Aggregiert über alle Kerne hinweg.
ThreadCPUUsage Aggregat der CPU-Auslastung für den Spracherkennungs- oder Sprachübersetzungsthread.

Leistungsmetriken

Metrik BESCHREIBUNG Notizen
Echtzeitfaktor Misst, wie viel schneller als Echtzeit das eingebettete Sprachmodul Audiodaten verarbeitet. Umfasst die Audioladezeit. Werte größer als 1 geben an, dass das Modul Audiodaten langsamer verarbeitet als Echtzeit. Werte kleiner als 1 geben an, dass das Modul Audiodaten schneller verarbeitet als Echtzeit. Dieser Wert sollte nur im dateibasierten Eingabemodus analysiert werden. Er sollte nicht im Streamingeingabemodus analysiert werden.
StreamingRealTimeFactor Misst, wie viel schneller als Echtzeit das Modul Audiodaten verarbeitet. Umfasst nicht die Audioladezeit. Werte größer als 1 geben an, dass das Modul Audiodaten langsamer verarbeitet als Echtzeit. Werte kleiner als 1 geben an, dass das Modul Audiodaten schneller verarbeitet als Echtzeit.