Testen und Bewerten von KI-Workloads in Azure
Der Zweck der Tests in KI-Workloads besteht darin, qualität zu gewährleisten, wenn eine Änderung im System eingeführt wird. Tests können überprüfen, ob die Workload identifizierte Ziele erfüllt und die Erwartungen der Benutzer erfüllt. Sie verhindert auch Qualitätsregressionen. Dieser Prozess umfasst die Durchführung von Tests in verschiedenen Funktionsbereichen und die Bewertung der Funktionalitätsqualität, des Lastenhandlings, der Vorhersagbarkeit und anderer Kriterien auf der Grundlage von Arbeitsauslastungsanforderungen.
Testergebnisse stellen wichtige Datenpunkte für Entscheidungen bereit, z. B. ob KI-Komponenten für die Veröffentlichung bereit sind und welche SKUs oder Features geeignet sind. Darüber hinaus können Tests als Benachrichtigungssystem für Fehler dienen und helfen, Probleme in der Produktion durch Routine- oder synthetische Tests zu erkennen.
Das Azure Well-Architected Framework beschreibt eine umfassende Testmethodik. Sie sollten verschiedene Arten von Tests in verschiedenen Phasen des Entwicklungslebenszyklus und in verschiedenen Systemkomponenten und Flüssen verwenden. Ohne diese Tests können eingeführte Änderungen die Systemqualität beeinträchtigen. Kleinere Codefehler können z. B. zu großen Systemfehlern werden. Das Systemverhalten kann aufgrund der nicht deterministischen Natur von KI-Systemen zu unvorhersehbaren Ergebnissen oder zu voreingenommenen Ergebnissen werden. Außerdem kann die Ressourcenzuordnung ineffizient sein, und echte Benutzerdaten oder Systemressourcen können ausgenutzt werden, da diese Systeme anfällig für Missbrauch sind.
Sie müssen Arbeitsauslastungsressourcen mit Blick auf Tests entwerfen und entwickeln. Wenn Sie z. B. Datenmanipulation durchführen und Quelldaten für feature engineering neu gestalten, befolgen Sie bewährte Codierungsmethoden und stellen Sie sicher, dass Sie den Code so strukturieren, dass Tests unterstützt werden. Diese Strategie umfasst das Entwerfen des Codes, um effektive Komponententests zu erleichtern und die Tests von der Funktionalität und den Abhängigkeiten des Codes zu isolieren. In diesem Beispiel müssen Sie ein System entwerfen, das in einer Testumgebung mit ausreichend repräsentativen Testdaten im Hinblick auf Volumen und Likeness ausgeführt werden kann.
Sie müssen Arbeitsauslastungskomponenten sicher in der Produktion bereitstellen. Ein Teil der sicheren Bereitstellungsmethoden einer Workload ist strategische Tests, um das richtige Verhalten sicherzustellen, bevor Benutzer oder Daten das System nutzen. Strategische Tests sind während der ersten Bereitstellung unerlässlich und werden durch die Entwicklung und Entwicklung des Systems durch Code oder Infrastrukturänderungen durchgeführt. Testen Sie alle vorgeschlagenen Änderungen an KI-bezogenem Code und der Infrastruktur, bevor Sie die Änderungen an der Produktion bereitstellen.
Dieser Artikel konzentriert sich auf die Anwendung dieser Methodik auf die KI-Aspekte der Architektur. Wie diese Tests durchgeführt werden, liegt nicht im Gültigkeitsbereich.
Empfehlungen
Hier ist die Zusammenfassung der Empfehlungen in diesem Artikel.
Empfehlung | Beschreibung |
---|---|
Definieren Sie Erfolgsmetriken für Ihre Teststrategie. | Wie jede andere Art von Workloadtests müssen Sie die entsprechenden Metriken für einen bestimmten Test erfassen und analysieren, um sicherzustellen, dass Ihr Test nützliche Einblicke in Ihre KI-Workload bietet. ▪ Definieren von Erfolgsmetriken |
Führen Sie End-to-End-Tests Ihrer Datenaufnahme- und Verarbeitungspipelinen während des gesamten Entwicklungslebenszyklus durch. | Tests können die Daten überprüfen und Ihnen dabei helfen, sicherzustellen, dass der Datenmanipulationsprozess wie beabsichtigt funktioniert. Integrieren Sie Die Tests frühzeitig in der Entwurfsphase, um die Datenqualität und geeignete Technologie und Größenanpassungen sicherzustellen. Entwickeln Sie Komponententests für benutzerdefinierten Code während der Entwicklung, und führen Sie Produktionstests in Echtzeit durch, um Probleme zu erfassen und Funktionen zu überprüfen. ▪ Testen der Datenaufnahme |
Führen Sie Tests für Schulungsaufträge aus, um sicherzustellen, dass die Skripts wie erwartet aufgerufen und funktionieren. | Auslastungs- und Leistungstests können Einblicke in die Auswahl und Größenanpassung von Compute bieten, die zum Ausführen der Aufträge geeignet sind. Komponententests können das Dienstprogramm des Codes überprüfen und Regressionen abfangen, wenn Abhängigkeiten aktualisiert werden. ▪ Testen des Schulungsworkflows |
Bewerten und testen Sie das Modell, um Duplizierungen in Schulungs-, Auswertungs- und Testdaten zu vermeiden. | Um sicherzustellen, dass Quelldaten nicht vollständig für Schulungen verwendet werden, müssen Sie eindeutige Daten für die Modellauswertung und endgültige Tests reservieren. Diese Teilmengen sind nicht im eigentlichen Schulungsvorgang enthalten. ▪ Auswerten und Testen des Modells |
Testen Sie den Ableitungsendpunkt. | Führen Sie Auslastungstests auf dem Endpunkt durch, auf dem Ihr Ableitungsserver hostet, und wählen Sie GPU-SKUs basierend auf diesen Testergebnissen aus. Für plattform as a Service (PaaS)-gehostete Endpunkte, testen Sie den Durchsatz und die potenziellen Fehler. Diese Endpunkte sind erreichbar. Führen Sie daher ordnungsgemäße Sicherheitstests durch, um Jailbreaking-Situationen zu verhindern. ▪ Testen des Ableitungsendpunkts |
Testen Sie die Richtigkeit des Indexentwurfs, sodass Abfragen relevante Ergebnisse liefern. | Funktions- und Integrationstests helfen Ihnen, sicherzustellen, dass Daten korrekt sind, und Indexschematests auf Abwärtskompatibilität. Sie müssen die Vorverarbeitungsschritte für die Qualität testen. Lasttests bestimmen geeignete SKUs für Ressourcen, und Sicherheitskontrollen schützen die Vertraulichkeit von Daten. ▪ Testen der Erdungsdaten |
Testen Sie den Orchestrator, um seine Funktionalität und Sicherheit zu überprüfen. | Führen Sie Komponenten-, Funktions-, Integrations- und Laufzeittests durch, einschließlich Auslastungs- und Fehlermodustests, um Leistung und Zuverlässigkeit sicherzustellen. Sicherheits- und Inhaltssicherheitstests sind ebenfalls entscheidend, um das System und die Daten zu schützen. ▪ Testen des Orchestrators |
Testen Sie den Modellzerfall. | Der Modellabfall ist ein unvermeidliches Problem, das die meisten KI-Workloads betrifft. Das Testen auf Daten- und Konzeptabweichungen kann Ihnen helfen, den Modellabfall frühzeitig abzufangen und das Problem zu mindern, bevor es sich negativ auf Ihre Arbeitsauslastung auswirkt. ▪ Verhindern des Modelldeklings |
Definieren von Erfolgsmetriken
Es wird empfohlen, einen Basisplan zu haben und die Vorhersagekraft des Modells mithilfe gut definierter Metriken zu messen. Im Folgenden finden Sie einige allgemeine Metriken.
Die Genauigkeit stellt das Verhältnis der korrekt vorhergesagten Instanzen zu den Gesamtinstanzen im Test-Dataset dar. Es ist ein allgemeines Maß für die Gesamtleistung des Modells.
Genauigkeit ist das Verhältnis wahrer positiver Vorhersagen zur Summe wahrer Positiver und falsch positiver Ergebnisse. Es ist nützlich, wenn falsch positive Ergebnisse minimiert werden, z. B. bei medizinischen Diagnosen.
Die Empfindlichkeit misst das Verhältnis wahrer Positiver zu der Summe wahrer Positiver und falsch negativer Ergebnisse. Es ist hilfreich, wenn falsche Negative oder fehlende relevante Fälle vermieden werden.
Spezifität berechnet das Verhältnis wahrer Negativer zur Summe wahrer Negativer und falsch positiver Ergebnisse. Es ist relevant, wenn Sie für genaue negative Vorhersagen optimieren.
Hinweis
Wenn Sie Erfolgsmetriken für Regressionsmodelle definieren, sollten Sie die folgenden Metriken hinzufügen:
Mean Absolute Error (MAE) misst die durchschnittliche absolute Differenz zwischen den vorhergesagten Werten und den tatsächlichen Werten. Berechnen Sie sie, indem Sie den Mittelwert der absoluten Unterschiede zwischen jedem tatsächlichen Wert und dem entsprechenden vorhergesagten Wert verwenden. MAE ist im Vergleich zu und RMSE weniger anfällig für Ausreißer.
Mean Squared Error () misst die durchschnittliche Quadratdifferenz zwischen den tatsächlichen Werten und den vorhergesagten Werten. Berechnen Sie sie, indem Sie den Mittelwert der Quadratunterschiede zwischen jedem tatsächlichen Wert und dem entsprechenden vorhergesagten Wert verwenden. bestraft größere Fehler stärker als MAE, da die Fehler quadratisch sind.
Der "Mean Squared Error" (RMSE) ist die Quadratwurzel des. Es stellt ein Maß für den durchschnittlichen absoluten Fehler zwischen den tatsächlichen und vorhergesagten Werten, aber in derselben Einheit wie die ursprünglichen Daten bereit. RMSE ist empfindlicher gegenüber Ausreißern im Vergleich zu MAE, da sie die Fehler vor dem Durchschnittlichen quadratisch angibt.
Testen der Datenaufnahme
Datenpipelinen wie Extrahieren, Transformieren und Laden (ETL)-Prozesse, Verschieben und Bearbeiten von Daten. Testen Sie den ETL-Teil der Workload, um sicherzustellen, dass sie Daten zuverlässig erfasst und dass die Daten für Analyse- und Feature-Engineering qualitativ hochwertig und akzeptabel sind. Stellen Sie sicher, dass die Datenbereinigung und -verarbeitung Tests enthält, um sicherzustellen, dass die Datenbearbeitung wie beabsichtigt funktioniert.
Die Tests sollten während des gesamten Lebenszyklus integriert werden, einschließlich der Entwurfs-, Entwicklungs- und Produktionsphasen.
Testen, um Designentscheidungen zu erleichtern
Wenn Sie Anforderungen für die Workload sammeln, besteht ein wichtiger Entscheidungsschritt darin, eine bestimmte Technologieoption auszuwählen, die für Ihr Design geeignet ist.
Basierend auf Ihren ETL-Anforderungen und Akzeptanzkriterien führen Sie explorative Funktionstests durch, um das am besten geeignete Produkt, seine SKUs und Features auszuwählen, die die beabsichtigten Aufgaben ausführen. Machbarkeitsnachweise, Technologienachweise und Funktionstests sind unerlässlich, um zu beurteilen, ob Sie die richtige Technologie auswählen und ob sie entsprechend angepasst werden soll.
Testen Sie für Szenarien, in denen Sie KI in eine vorhandene Architektur integrieren, wie gut die neue Technologie in das aktuelle System integriert werden kann.
Anfängliche Workloadanforderungen können sich ändern. Angenommen, das Unternehmen erwartet Wachstum und das System muss die regulären Benutzerabfragen doppelt verarbeiten. Diese Erwartung erfordert eine ordnungsgemäße Kapazitätsplanung. Wir empfehlen proaktive Tests, um zu verstehen, wie das System auf die zusätzlichen Daten reagiert und datengesteuerte Anpassungen an vorhandene Größenanpassungen vornehmen oder neue Produktentscheidungen treffen kann. Für Kapazitätstests empfehlen wir, funktionsbezogene Tests mit Last- und Leistungstests zu kombinieren und Synthetische zu verwenden, um realistische Bedingungen zu simulieren.
Testen der Codequalität
Wenn Code enthalten ist, stellen Sie sicher, dass er komponententests durchläuft und nicht freigegeben wird, wenn er fehlschlägt. Beispielsweise ist es üblich, benutzerdefinierten Code zu verwenden, der als Teil der Aufnahme ausgeführt wird. Es gibt auch Code, der für die Datenbereinigung und -verarbeitung verwendet wird. Führen Sie Komponententests aus, um sicherzustellen, dass sich der Code entsprechend seinem Entwurf verhält und dass die Datenmanipulation wie erwartet funktioniert.
Führen Sie Tests als Teil Ihrer kontinuierlichen Integrations- und Endlosbereitstellungspipeline aus.
Testen im Live-System
Funktionale Tests sollten auf das Live-System ausgedehnt werden. Wenn diese Tests fehlschlagen, erwägen Sie ggf., Warnungen auszulösen, um sofortige Untersuchungen zu initiieren. Im Folgenden finden Sie einige Beispiele:
Führen Sie geplante Tests aus, um zu überprüfen, ob das richtige Datenvolumen erfasst wurde, wenn Daten in einem festgelegten Zeitplan mit einer erwarteten Menge aufgenommen werden.
Führen Sie Tests aus, die Datenprobleme erkennen, z. B. fehlende Werte oder doppelte Daten, und führen Sie grundlegende Datenintegritätsprüfungen aus. Wenn Daten zeitliche Informationen enthalten, die auf ihre Aktualität hinweisen, können diese Tests überprüfen, ob Informationen überprüft werden, und potenziell verhindern, dass nachgelagerte Prozesse veraltete Daten verwenden.
Überprüfen Sie die Verfügbarkeit externer Abhängigkeiten. Ein Datenbereinigungsauftrag kann z. B. einen anderen Dienst zum Extrahieren von Tabellen oder Vorverarbeitungen aufrufen. Führen Sie Tests aus, um sicherzustellen, dass sie verfügbar sind, da sich ihre Nichtverfügbarkeit auf den ETL-Prozess auswirken kann.
Eine weitere Möglichkeit, die Richtigkeit des ETL-Systems in der Produktion zu testen, besteht in synthetischen Tests. Das Vorhandensein bekannter Testdaten, die in der Produktion verfügbar sind, ist sehr effektiv. Sie können sie verwenden, um die End-to-End-Verarbeitung zu überprüfen, indem Sie den bekannten Anfangszustand mit dem erwarteten Endzustand für diese Daten vergleichen. Beispielsweise ist ein Dokument erforderlich, um die Dokumentintelligenz durchzugehen und personenbezogene Daten zu enthalten. Das Einfügen eines synthetischen Dokuments kann testen, dass die Arbeitsauslastung den Datenbearbeitungsauftrag wie vorgesehen ausführt.
Experimentieren Sie außerdem, indem Sie verschiedene Erfahrungen veröffentlichen, auch als A/B-Tests bezeichnet, um von Benutzerinteraktionen zu lernen, bevor Sie das Commit vollständig ausführen. A/B-Tests helfen Ihnen, Qualitätsregressionen zu verhindern.
Testen von Daten, die während der Aufnahme gesammelt werden
Im Rahmen des Aufnahmeprozesses aus verschiedenen Datenquellen umfassen Tests, um zu überprüfen, ob Schulungsdaten Ihren Erwartungen entsprechen.
Das Trainieren eines Machine Learning-Modells mit unvollständigen oder beschädigten Daten kann kontraproduktiv sein. Es kann zu verschwendeten Bemühungen führen und zu einem Modell führen, das keine aussagekräftigen Vorhersagen vornimmt. Ihre Datenaufnahme- und Vorverarbeitungspipelinen umfassen Qualitätstests als Prüfpunkte. Diese Tests können Ihnen helfen, zu überprüfen, ob Ihre Daten den Erwartungen entsprechen, die Sie während der Datenanalyse und feature engineering festgelegt haben.
Die folgende Liste enthält einige Beispieltestfälle:
Test auf Vollständigkeit. Testen Sie die erwartete Menge an Schulungsdaten, um die Vollständigkeit des Datasets zu überprüfen. Dieser Test stellt sicher, dass Sie genügend Daten bereitstellen, um das Modell zu trainieren.
Testen Sie auf wichtige Informationen. Wenn die Schulung auf bekannten Entitäten wie bestimmten Datensätzen oder Bezeichnern basiert, testen Sie das Dataset, um sicherzustellen, dass diese Entitäten vorhanden sind. Diese Überprüfung stellt sicher, dass wichtige Informationen nicht fehlen.
Test auf irrelevante Daten. Erfasste Daten sollten keine irrelevanten oder fehlerhaften Einträge enthalten. Der Datenaufnahmeprozess sollte diese Daten herausfiltern.
Testen Sie die Frische. Die Aktualität der aufgenommenen Daten sollte sich nicht auf die Vorhersagekraft des Modells auswirken. Überprüfen Sie, ob die Daten relativ aktuelle Informationen widerspiegeln und aus früheren Läufen nicht veraltet sind. Wenn Sie beispielsweise davon ausgehen, dass die Daten Datensätze aus der letzten Woche enthalten, aber nach dem Importieren der Daten keine solchen Datensätze vorhanden sind, kann dies auf einen fehlgeschlagenen Import oder ein Problem mit der Aktualität von Daten im Quellsystem hinweisen.
Durchführen von Routinetests
Ein erhebliches Problem mit der Datenaufnahme ist das Datenvolumen und der Durchsatz. Eine kontinuierliche Auswertung während des Betriebs ist erforderlich, um Leistungsengpässe zu vermeiden. Diese fortlaufende Bewertung sollte nicht nur ein einmaliger Test, sondern Teil Ihrer betrieblichen Prozesse sein. Ziel ist es, sicherzustellen, dass das Workloadteam seine Ziele auf Serviceebene nicht verpasst.
Berücksichtigen Sie eine Situation, in der die Überwachung auf Leistungsbeeinträchtigung hinweist. Um solche Bedingungen zu mindern, bewerten und optimieren Sie die ETL-Prozesse. Nachdem Sie Änderungen vorgenommen haben, können Leistungstests Ihnen helfen, sicherzustellen, dass die Änderungen den erforderlichen Durchsatz erfüllen.
Hinweis
Tests und Überwachung dienen unterschiedlichen Zwecken. Führen Sie Tests aus, um potenzielle Änderungen am System zu bewerten, in der Regel bevor Sie Änderungen implementieren. Führen Sie die Überwachung kontinuierlich durch, um die Gesamtintegrität des Systems zu bewerten.
Testen des Schulungsworkflows
Trainieren Sie ein Modell mithilfe von benutzerdefiniertem Code, z. B. PyTorch-Skripts, die die eigentliche Schulungsarbeit ausführen. Diese Skripts werden auf Compute ausgeführt, z. B. in Notizbüchern oder Azure Machine Learning-Aufträgen, die auch Arbeitsspeicher und Netzwerkressourcen erfordern. Es wird empfohlen, während der Entwurfsphase Auslastungstests zu testen, um die Berechnungsanforderungen zu bewerten und sicherzustellen, dass die vorgeschlagenen SKUs geeignet sind. Häufig benötigen Sie manuelle Tests, um die beste Konfiguration zu ermitteln, um die Workload innerhalb des Zeitlimits effizient auszuführen.
Schreiben Sie die Skripts mithilfe spezieller SDKs, die die meisten Aufgaben verarbeiten. Da Skripts jedoch noch Code sind, sollten Sie Komponententests als Teil der Entwicklung integrieren. Mithilfe dieser Tests können Sie sicherstellen, dass beim Aktualisieren von Abhängigkeiten keine Regressionen auftreten. Wenn Komponententests nicht möglich sind, sind manuelle Tests erforderlich, bevor Sie neuen Code bereitstellen, um Qualitätsregressionen zu verhindern.
Diese Skripts werden als Teil eines Workflows ausgeführt, z. B. Azure Machine Learning Studio, das Einblicke darüber liefern kann, wann und ob das Skript ausgeführt wurde. Es wird jedoch empfohlen, Integrationstests auszuführen, um sicherzustellen, dass diese Skripts zuverlässig aufgerufen werden.
Auswerten und Testen des Modells
Hinweis
Modellauswertung und -tests werden häufig austauschbar verwendet, sollten jedoch als separate Prozesse betrachtet werden, die unterschiedliche Datasets verwenden. Die Auswertung ist eine iterative Aktivität, die Sie während der Entwicklungsphase ausführen. Es konzentriert sich auf das Experimentieren, um das beste Modell mit dem richtigen Maß an Tuning zu finden. Es umfasst das Anpassen von Hyperparametern, Konfigurationen oder Features und anschließendes Auswerten des Modells basierend auf verschiedenen Metriken. Nachdem Sie das beste Modell identifiziert haben, führen Sie Tests während der Bereitstellung durch.
Tests umfassen die Überprüfung des gesamten Systems, einschließlich des abgestimmten Modells und Nicht-AI-Komponenten, um zu überprüfen, ob sie ordnungsgemäß funktionieren, gut integriert und die erwarteten Ergebnisse in Übereinstimmung mit Qualitätsnormen liefern. Bewerten Sie ein Modell in situ zusammen mit anderen Komponenten der Workload. Der Prozess umfasst das Senden von Anfragen an das Modell, die Auswertung seiner Antworten und das Treffen einer go- oder no-go-Entscheidung basierend auf den Testdaten. Obwohl Tests vor der Produktion nicht verhandelbar sind, empfehlen wir Ihnen, auch Tests in der Produktion mit realen Daten und synthetischen Daten durchzuführen.
Verwenden von Daten zum Auswerten und Testen
In der Regel gibt es drei wichtige Datasets, die aus den Quelldaten partitioniert werden: Schulung, Auswertung und Tests.
Verwenden Sie das Schulungsdatenset, das in der Regel die größte Teilmenge ist, um das Modell zu trainieren. Verwenden Sie ein weiteres Dataset zur Auswertung, um das Modell durch einen iterativen Prozess zu verfeinern, indem Sie verschiedene Permutationen bewerten. Nachdem Sie eine zufriedenstellende Permutation gefunden haben, testen Sie sie anhand des Testdatensatzes.
Alle Datasets sollten qualitativ hochwertige Daten enthalten, um Rauschen zu minimieren. Ihre Testfälle bei Datenaufnahme- und Vorverarbeitungspipelines können als Qualitätsprüfpunkte dienen. Ein Mangel an Beispielen kann auch daten mit niedriger Qualität zugeordnet werden. Verwenden Sie synthetische Daten, um die Einheitlichkeit im Dataset zu ausgleichen und zu erzielen. Dieser Ansatz ist nützlich für Schulungsmodelle wie Betrugserkennungsmodelle, bei denen echte Betrugsinstanzen selten sind, was es schwierig macht, ausreichende statistische Leistungsfähigkeiten für zuverlässige Vorhersagen zu erhalten.
Um Verzerrungen bei Vorhersagen zu vermeiden, behalten Sie alle Datasets unterscheidbar. Sie sollten keine Schulungsdaten für die Auswertung verwenden, und Sie sollten keine Auswertungsdaten für Tests verwenden. Reservieren Sie eindeutige Daten für die Modellauswertung und die endgültigen Tests.
Verwenden von Auswertungsmetriken
Die Schulung eines Modells und die Auswahl des richtigen für die Produktion sind zusammenhängende Prozesse. Sie müssen zunächst ein Modell auswählen, aber es kann sich nach dem Experimentieren und der Auswertung ändern.
Die Modellauswertung folgt als Experimentierschleife, die mithilfe von Metriken zahlreiche Permutationen von Modellen, Parametern und Features bewertet. Diese Metriken stellen wissenschaftliche Bewertungen bereit, die Sie iterativ in verschiedenen Versionen und Konfigurationen vergleichen müssen, um das beste Modell zu ermitteln. Weitere Informationen finden Sie unter Auswertungsmetriken.
Ein ähnlicher Ansatz gilt für generative KI-Modelle. Haben Sie Prozesse, die Ergebnisse der Benutzererfahrung basierend auf der Leistung des Modells auswerten und quantifizieren. Die Grundgeerdetheit ist beispielsweise eine der wichtigsten Metriken, die quantifizieren, wie gut das Modell mit Quelldaten übereinstimmt. Relevanz ist eine weitere wichtige Metrik, die angibt, wie relevant die Antwort auf die Abfrage ist. Beispielmetriken finden Sie unter Auswertungs- und Überwachungsmetriken für generative KI.
Wertet verschiedene Typen von Modellen mithilfe verschiedener Metriken aus. Die Wichtigkeit der einzelnen Metriken kann je nach Szenario variieren. Priorisieren Sie Metriken basierend auf dem Anwendungsfall. Zum Beispiel ist Fairness für verantwortungsvolle KI von entscheidender Bedeutung. Trotz guter Tests können Modelle aufgrund von voreingenommenen Quelldaten immer noch unfaire Verzerrungen aufweisen. Die Ergebnisse erzielen möglicherweise hohe Relevanz, aber wenig Fairness. Integrieren Sie Fairnessbewertungen in den Prozess, um unvoreingenommene Ergebnisse zu gewährleisten.
Generative KI integriert sich in Orchestrierungscode, Routinglogik und einen Index für die Abruferweiterungsgenerierung (RAG), wodurch die Auswertung erschwert wird. Obwohl Sie die Modelle einzeln mithilfe von Metriken bewerten sollten, ist es auch wichtig, andere Systemkomponenten auszuwerten.
Das Modell testen
Feinabstimmungen werden im Wesentlichen getestet, da es ein vortrainiertes Modell ändert, um sein Verhalten zu ändern. Sie erfordert zunächst einen Basisplan, um die anfängliche Leistung des Modells zu verstehen. Nach der Feinabstimmung sollten Sie die Leistung des Modells neu bewerten, um sicherzustellen, dass es Qualitätsstandards erfüllt. Berücksichtigen Sie die folgenden allgemeinen Auswertungsmetriken:
Geerdetheit bezieht sich auf die Ausrichtung des Modells mit den Quelldaten. Ein geerdetes Modell generiert Antworten, die mit der Realität konsistent sind.
Relevanz gibt an, wie relevant die Antwort auf eine bestimmte Frage ist. Eine fundierte Antwort kann nicht relevant sein, wenn sie die Frage nicht direkt adressiert.
Ähnlichkeit misst die Ähnlichkeit zwischen einem Quelldatentext und der generierten Antwort. Hat das Modell präzise Formulierungen verwendet? Ein Mangel an redaktioneller Governance kann die Ähnlichkeitsbewertung verringern.
Der Abruf gibt die Effektivität von Indexabfragen an. Bewerten Sie, wie gut die abgerufenen Indexdaten an der Frage ausgerichtet sind. Irrelevante Daten aus der Indexsuche senken diese Bewertung. Höhere Abrufergebnisse deuten auf eine geringere Variabilität hin, da sie ausschließlich auf die Indexabfragen angewiesen sind.
Fluency bezieht sich auf den Vokabulareinsatz. Wenn das Modell einem Stilleitfaden entspricht und Inhalte im entsprechenden Format darstellt, kann es fließend sein, auch wenn es an Grundkenntnissen oder Relevanz fehlt.
Die Kohärenz wertet aus, ob die Spracherkennung des Modells natürlich und kohärent fließt. Es bewertet, ob die Unterhaltung wie ein echter Austausch aussieht.
Testen von Hyperparametern
Modellparameter hängen von anwendungsspezifischen Entwurfsentscheidungen ab. Wählen Sie als Teil des Anwendungsdesigns das Modell und die Parameter basierend auf den Anwendungsfällen Ihrer Workload aus. Der Testprozess verfügt über eine iterative innere Schleife, in der Schulungsdaten mit Testdaten verglichen werden, um zu überprüfen, ob das Modell auf dem vorgesehenen Dataset trainiert wird. Außerdem werden die Parameter abgestimmt, damit das Modell Vorhersagen mit einer akzeptablen Genauigkeitsstufe machen kann.
Ausgleich. Die innere Schleife umfasst Rechenkosten für die Schulung des Modells und die Kosten der Auswertung durch Tests. Sie müssen die Zeit für die Modellschulung und -tests in diese Schleife einteilen. Erwarten Sie, dass der Testvorgang länger dauert als der Schulungsvorgang. Sie können anfängliche Tests für eine Teilmenge von Schulungsdaten durchführen, um zu beurteilen, ob das Modell angemessene Ergebnisse liefert. Sie können diese Tests schrittweise auf das vollständige Dataset skalieren.
Testen des Ableitungsendpunkts
Ein Ableitungsendpunkt ist die REST-API, die den Zugriff auf Modelle zum Erstellen von Vorhersagen ermöglicht. Es ist die Schnittstelle, über die Sie Daten als Teil der Anforderung senden und eine Antwort erhalten, die Ergebnisse aus dem Modell enthält. Der Endpunkt wird auf der Compute gehostet, die PaaS wie Azure OpenAI Service oder ein Nicht-Microsoft-Inferencing-Server wie NVIDIA Triton Inference Server, TorchServe und BentoML sein kann. In PaaS-Szenarien behandelt der Dienstanbieter die Tests in gewissem Umfang. Wenn Sie den Endpunkt hosten, behandeln Sie ihn jedoch wie jede andere API, und testen Sie ihn gründlich.
Obwohl Sie das Modell während der Schulung und Auswertung testen, stellt das Testen des Abschlussendpunkts sicher, dass die Mechanismen für dieses Modell, z. B. Anforderungsverarbeitung, Antworterstellung, Skalierung und Koordination über Instanzen hinweg, ordnungsgemäß funktionieren. Erstellen Sie einen umfassenden Testplan, der Anwendungsfälle basierend auf Ihren Anforderungen abdeckt. In diesem Abschnitt werden einige Beispieltestfälle und Testtypen beschrieben, die berücksichtigt werden sollen.
Testüberlegungen für Inferencehostingserver
Es ist wichtig, die Auslastungsmerkmale der Berechnung zu verstehen und die Leistung durch Auslastungstests zu überprüfen. Diese Aktionen helfen Ihnen bei der Auswahl von Technologien, wenn Sie die Architektur entwerfen oder optimieren. Beispielsweise weisen unterschiedliche Ableitungsserver unterschiedliche Leistungsmerkmale auf. Der Code verbraucht CPU-Zyklen und Arbeitsspeicher, da sich die Anzahl gleichzeitiger Verbindungen erhöht. Verstehen Sie, wie Ihr Code und die Computeressourcen unter Standard- und Spitzenlastbedingungen ausgeführt werden. Azure Load Testing ist eine gute Option für Auslastungstests und kann hohe Volumenlast generieren. Andere Open-Source-Optionen wie Apache JMeter sind ebenfalls beliebt. Ziehen Sie in Betracht, diese Tests direkt aus Ihrer Umgebung auf sich zu rufen. Beispielsweise ist Machine Learning gut in Load Testing integriert.
Eine weitere wichtige Entscheidung ist die Wahl der GPU-Funktionen. Viele Modelle erfordern GPUs für eine effektive Ableitung aufgrund ihres Designs. Load Testing hilft Ihnen, die Leistungsbeschränkungen einer GPU-SKU zu verstehen und die Überbereitstellung zu verhindern, was wesentliche finanzielle Überlegungen sind.
Ausgleich. GPU-SKUs sind teuer. Obwohl Sie bei ihrer SKU-Auswahl konservative Entscheidungen treffen können, ist es wichtig, nach Möglichkeit kontinuierlich zu überprüfen, ob GPU-Ressourcen nicht verwendet und rechteisiert werden. Nachdem Sie Anpassungen vorgenommen haben, testen Sie die Ressourcennutzung, um das Gleichgewicht zwischen Kosteneffizienz und Leistungsoptimierung aufrechtzuerhalten. Informationen zu Kostenoptimierungsstrategien finden Sie unter Empfehlungen zur Optimierung der Komponentenkosten.
Für Nicht-PaaS-Hostingplattformen ist die Sicherheit von entscheidender Bedeutung, da die API öffentlich verfügbar gemacht wird. Es ist wichtig sicherzustellen, dass der Endpunkt nicht ausgenutzt oder kompromittiert wird, was das gesamte System gefährden kann. Fügen Sie diesen Endpunkt als Teil Ihrer Routinesicherheitstests zusammen mit anderen öffentlichen Endpunkten hinzu. Erwägen Sie die Durchführung von Tests, z. B. Penetrationstests, auf dem Livesystem. Ein weiterer Aspekt der Sicherheit ist die Inhaltssicherheit. Ihr Code kann spezielle APIs aufrufen, die schädliche Inhalte in der Anforderungs- und Antwortnutzlast erkennen. Azure AI Content Safety kann von Ihren Tests aufgerufen werden, um Inhaltssicherheitstests zu erleichtern.
Wichtige Strategien finden Sie unter Empfehlungen für Sicherheitstests.
Testüberlegungen für PaaS-Ableitungsendpunkte
Der Client sollte Fehler erwarten, wenn er Anforderungen an den Ableitungsendpunkt des PaaS-Diensts sendet. Fehler können aufgrund von Systemüberladung, nicht reagierenden Back-Ends und anderen Fehlerbedingungen auftreten. Führen Sie Fehlermodusanalysen für den Dienst durch, und testen Sie diese potenziellen Fehler. Fehlermodusanalyse ist für das Entwerfen und Implementieren von Entschärfungsstrategien im Clientcode erforderlich. Beispielsweise drosseln Azure OpenAI-APIs Anforderungen durch Zurückgeben eines HTTP 429-Fehlerantwortcodes. Der Client sollte diesen Fehler mithilfe von Wiederholungsmechanismen und Schaltschaltern behandeln. Weitere Informationen finden Sie unter Empfehlungen zur Durchführung einer Fehlermodusanalyse.
Das Testen von PaaS-Diensten kann Ihnen bei der Auswahl von Dienst-SKUs helfen, da Sie die zugehörigen Kosten verstehen, z. B. pay-as-you-go oder vorab bereitgestellte Berechnungen. Verwenden Sie Azure-Preisrechner, um Workloads, Häufigkeit und Tokennutzung auszuwerten, um die besten Abrechnungs- und Berechnungsoptionen zu ermitteln. Simulieren Sie Workloads mit kostengünstigen SKUs und rechtfertigen High-End-Optionen wie bereitgestellte Durchsatzeinheiten (PTUs) für Azure OpenAI.
Auslastungstests sind nicht so relevant für pay-as-you-go Compute, da bei unendlicher Kapazität keine Probleme auftreten. Beim Testen werden die Grenzwerte und Kontingente überprüft. Wir empfehlen keine Auslastungstests für pay-as-you-go Compute, da es sich um einen erheblichen finanziellen Aufwand ist. Sie sollten den Test jedoch laden, um den Durchsatz zu überprüfen, der in Token pro Minute oder Anforderungen pro Minute gemessen wird. Im Gegensatz zu Standard-APIs, die Metriken wie die Anforderungsgröße berücksichtigen, wertet dieser Ansatz Workloads basierend auf Token aus, um die Verwendung zu bestimmen. Der Schlüssel besteht darin, die Anzahl der aktiven Benutzer zu verstehen und den Durchsatz entsprechend zu messen. Weitere Informationen finden Sie unter Messen des Durchsatzes.
Verwenden von Sicherheitssteuerelementen
Unabhängig davon, ob Sie einen Ableitungsserver oder eine PaaS-Option verwenden, liegt die Sicherheit in Ihrer Verantwortung. Bei API-Endpunkten ist es wichtig, die Jailbreaking- und Inhaltssicherheitskontrollen zu testen. Stellen Sie sicher, dass diese Steuerelemente nicht umgangen werden können und wie erwartet funktionieren. Wenn Sie beispielsweise ein bekanntes blockiertes Element senden, können Sie überprüfen, ob Sicherheitskontrollen vorhanden sind und vor der Bereitstellung ordnungsgemäß funktionieren. Erwägen Sie die Ausführung dieser Tests nach Bedarf, oder integrieren Sie sie in den Releaseprozess.
Es ist wichtig zu testen, ob das System versehentlich Informationen verfügbar machen kann. Das System sollte beispielsweise keine persönlichen Informationen in der Antwortnutzlast verfügbar machen. Testen Sie außerdem, ob ein Client nicht auf Endpunkte zugreifen kann, die für andere Identitäten vorgesehen sind. Führen Sie Sicherheitstests durch, um zu überprüfen, ob die API mit ihren Authentifizierungs- und Autorisierungsmechanismen vertrauliche Informationen nicht offenlässt und die ordnungsgemäße Benutzersegmentierung aufrecht erhält.
Testen der Erdungsdaten
Das Datendesign beeinflusst die Effizienz eines generativen Modells und das Erding von Daten ist die kritische Komponente. Erdungsdaten bieten mehr Kontext, um die Relevanz der Antwort zu erhöhen. Es wird indiziert, bevor es das Modell erreicht. Auf diesen Index wird in Echtzeit zugegriffen, während der Benutzer auf eine Antwort wartet.
Führen Sie End-to-End-Tests durch und integrieren Sie diesen Prozess als Teil des Datenentwurfs. Implementieren Sie einen Testprozess, der die Ergebnisse der Kundenerfahrung basierend auf der Leistung, Orchestrierung, Index, Vorverarbeitung und Quelldaten des Modells auswertet und quantifiziert. Überwachen und messen Sie die Qualitätsmetriken iterativ. Hier einige Überlegungen dazu:
Testen Sie die Datenverarbeitung gründlich mithilfe von Funktions- und Integrationstests. Stellen Sie sicher, dass Die Daten wie erwartet geladen werden und dass alle Daten vorhanden sind.
Testen Sie das Indexschema auf Abwärtskompatibilität. Sie sollten alle Änderungen an einem Dokument oder Feld testen, um sicherzustellen, dass die neue Version weiterhin frühere Versionen von Daten aufnehmen kann.
Bevor Daten indiziert werden, wird sie vorbereitet, um Rauschen und Verzerrungen zu reduzieren und eine effiziente Abfrage zu ermöglichen. Dieser Prozess umfasst Vorverarbeitung, Blockierung und Berechnung von Einbettungen, und jeder Schritt speichert Daten im Kontext oder in den Dateien im Index. Eine Orchestrierungspipeline, z. B. Fähigkeiten, die von Azure AI Search bereitgestellt werden, führt diese Schritte durch. Sie müssen den Orchestrierungscode testen, um sicherzustellen, dass keine Schritte fehlen, und die verarbeiteten Daten sind qualitativ hoch.
Tests sollten auf alte Daten, synthetische Werte, leere Tabellen, Datenaktualisierung und Verarbeitung auf der neuesten Version überprüfen. Wenn Testfehler auftreten, müssen Sie möglicherweise die Suchabfrage und den Index optimieren. Dieser Prozess umfasst das Anpassen von Filtern und anderen zuvor besprochenen Elementen. Sie sollten sich das Testen als iterative Aktivität vorstellen.
Indizes sind komplex und die Abfrageleistung kann je nach Indexstruktur variieren, was eine Lastschätzung erfordert. Die richtigen Auslastungstests können dabei helfen, die verschiedenen SKUs für Speicher, Compute und andere Ressourcen zu ermitteln, die zur Unterstützung Ihrer Anforderungen verfügbar sind.
Sie müssen alle Sicherheitskontrollen testen. Beispielsweise können Daten in separate Dokumente partitioniert werden. Jede Partition verfügt über Zugriffssteuerungen. Sie müssen diese Steuerelemente ordnungsgemäß testen, um die Vertraulichkeit zu schützen.
Testen des Orchestrators
Eine wichtige Komponente einer RAG-Anwendung ist der zentrale Orchestrator. Dieser Code koordiniert verschiedene Aufgaben, die sich auf die anfängliche Benutzerfrage beziehen. Orchestratoraufgaben erfordern in der Regel ein Verständnis der Benutzerabsicht, eine Verbindung mit dem Index zum Nachschlagen von Erdungsdaten und aufrufen den Ableitungsendpunkt. Wenn Agents Aufgaben ausführen müssen, z. B. das Aufrufen von REST-APIs, verarbeitet dieser Code diese Aufgaben innerhalb des Kontexts.
Sie können Orchestrierungscode in einer beliebigen Sprache entwickeln oder von Grund auf neu schreiben. Es wird jedoch empfohlen, Technologien wie den Eingabeaufforderungsfluss in Azure AI Studio oder apache Airflows "Directed Acyclic Graphs (DAGs)" zu verwenden, um den Entwicklungsprozess zu beschleunigen und zu vereinfachen. Der Eingabeaufforderungsfluss bietet eine Entwurfszeiterfahrung. Verwenden Sie sie, um Aufgaben als Einheiten zu modularisieren und Eingaben und Ausgaben der einzelnen Einheiten zu verbinden, die letztendlich den Orchestrierungscode bilden, der den gesamten Prozess darstellt.
Isolieren Sie Ihren Orchestrierungscode. Entwickeln Sie sie separat, und stellen Sie sie als Microservice mit einem Onlineendpunkt und einer REST-API für den Zugriff bereit. Dieser Ansatz sorgt für Modularität und einfache Bereitstellung.
Behandeln Sie diesen Code aus Testsicht wie alle anderen Code- und Durchführungseinheitstests. Der wichtigere Aspekt ist jedoch seine Funktionalität, z. B. seine Routinglogik, die Sie durch Funktions- und Integrationstests überprüfen können. Testen Sie das Eingabeaufforderungs-Engineering, um sicherzustellen, dass der Code Benutzerabsichten erkennen und Aufrufe entsprechend weiterleiten kann. Es gibt mehrere Frameworks und Bibliotheken zum Testen, z. B. Scikit-learn, PyTorchs Fackel-Testmodul, FairML für Bias- und Fairnesstests und TensorFlow-Modellanalyse für die Modellbewertung.
Führen Sie außerdem Laufzeittests durch, z. B. Fehlermodustests. Testen Sie z. B. potenzielle Fehler, die sich auf Tokenbeschränkungen beziehen.
Bestimmte Laufzeittests können Ihnen dabei helfen, eine Entscheidung zu treffen. Führen Sie Auslastungstests aus, um zu verstehen, wie sich dieser Code unter Stress verhält, und verwenden Sie die Ergebnisse für die Kapazitätsplanung. Da dieser Code an einem entscheidenden Punkt in der Architektur positioniert ist, in der er andere Dienste erreichen muss, kann er dabei helfen, Telemetrie von all diesen Aufrufen zu erfassen. Diese Daten können Erkenntnisse darüber liefern, wie viel Zeit für die lokale Verarbeitung im Vergleich zu Netzwerkaufrufen aufgewendet wird, und das Verhalten anderer Komponenten, z. B. potenzielle Latenz, bestimmen. Technologien wie der Eingabeaufforderungsfluss verfügen über integrierte Telemetriefunktionen, um diesen Prozess zu erleichtern. Integrieren Sie andernfalls Telemetrie in Ihren benutzerdefinierten Code.
Hinweis
Das Testen dieses Codes hat Kostenauswirkungen. Wenn Sie beispielsweise Azure OpenAI verwenden, um Ihren Ableitungsendpunkt zu hosten, ist Stresstests eine gängige Methode, die Ihnen dabei helfen kann, die Grenzwerte des Systems zu ermitteln. Azure OpenAI-Gebühren für jeden Anruf, was umfangreiche Stresstests teuer machen kann. Eine Möglichkeit zum Optimieren von Gebühren ist die Verwendung nicht verwendeter PTUs von Azure OpenAI in einer Testumgebung. Alternativ können Sie den Ableitungsendpunkt simulieren.
Sicherheitsbedenken gelten sowohl für den Orchestrierungscode als auch für das Modell. Schließen Sie Tests für Jailbreaking ein, bei denen das Ziel besteht, die Sicherheit des Modells zu unterbrechen. Angreifer interagieren nicht direkt mit dem Modell. Sie interagieren zuerst mit dem Orchestrierungscode. Der Orchestrierungscode empfängt Benutzeranforderungen und analysiert sie. Wenn der Orchestrierungscode eine böswillige Anforderung empfängt, kann er diese Anforderung an das Modell weiterleiten und das Modell potenziell kompromittieren.
Die Inhaltssicherheit ist ein weiterer wichtiger Aspekt. In einer Chatbot-Anwendung empfängt der Orchestrierungscode Chattext. Erwägen Sie im Code das Aufrufen eines Inhaltssicherheitsdiensts. Senden Sie sowohl die Benutzeraufforderung als auch den Erdungskontext für die Analyse und erhalten Sie eine Bewertung des Risikos. Prompt Shields ist eine einheitliche API, die Eingaben für große Sprachmodelle analysiert und Benutzeraufforderungsangriffe und Dokumentangriffe erkennt, bei denen es sich um zwei gängige Arten von Adversarialeingaben handelt.
Sicherheitskontrolle und Authentifizierung sind für einen RESTful-Endpunkt von entscheidender Bedeutung . Sie müssen die Authentifizierung verwalten und gründliche Tests sicherstellen.
Verhindern des Modelldeklings
Ein häufiges Problem für alle Modelle ist ein gewisses Maß an Verschlechterung im Laufe der Zeit. Änderungen, die intern und extern an der Arbeitsauslastung liegen, führen schließlich zu einer Verschlechterung der Qualität des Modells und seiner Ausgaben. Modellzerfall tritt auf zwei Arten auf:
Datenabweichung tritt auf, wenn sich die Eingabedaten ändern. Neue Dateneingabe macht das trainierte Modell veraltet. Sie können z. B. ein Modell haben, das Abstimmungsmuster eines bestimmten geografischen Gebiets wie ein Bezirk vorhersagt. Wenn der Bezirk neu gezeichnet wird und die Demografischen Derografien der Bevölkerung dieses Bezirks geändert werden, muss Ihr Modell aktualisiert werden, um die Änderungen zu berücksichtigen.
Konzeptabweichungen treten auf, wenn sich bedingungen außerhalb der Arbeitsauslastung und des Modells so ändern, dass die Ausgabe des Modells nicht mehr mit der Realität übereinstimmt. Sie können beispielsweise ein Verkaufsprognosemodell für ein Technologieprodukt haben. Wenn ein Wettbewerber unerwartet ein fortschrittlicheres Konkurrenzprodukt einführt, das von der Öffentlichkeit auf erhebliche Aufmerksamkeit aufmerksam macht, müssen Sie Ihr Modell basierend darauf aktualisieren, wie sich die Verbrauchertrends ändern.
Verwenden Sie nach Möglichkeit automatisierte Tests, um den Modellverfall im Lebenszyklus Ihres Modells zu erkennen und zu bewerten. Wenn Ihr Modell diskrete Werte vorhersagt, können Sie Tests erstellen, um Vorhersagen mit diesen Werten im Laufe der Zeit auszuwerten und die Abweichung zwischen erwarteten und tatsächlichen Ergebnissen zu messen. Ergänzen Sie diese Tests mit der Überwachung, um Abweichung im Laufe der Zeit zu erkennen, indem Sie Zusammenfassungsstatistiken und Entfernungsmetriken vergleichen.
Ein weiterer gängiger Ansatz zur Identifizierung des Modellverfalls ist das Benutzerfeedback. Ein Beispiel für Benutzerfeedback ist ein Daumen nach oben oder daumen down Antwortmechanismus. Das Nachverfolgen des positiven und negativen Feedbacks im Laufe der Zeit und das Erstellen einer Warnung, wenn Sie einen negativen Feedbackschwellenwert erreichen, kann Ihnen helfen, zu wissen, wann die Qualität des Modells untersucht werden soll.
Unabhängig von den Signalen, die Sie zum Identifizieren des Modellverfalls verwenden, muss das Operationsteam, das auf potenziellen Verfall aufmerksam gemacht wird, einen Data Scientist einbeziehen, um das Signal zu untersuchen und zu bestimmen, ob der Verfall stattfindet, und die Ursache.
Implementieren von Tools
Verwenden Sie den Azure Machine Learning-Datensammler , um die Echtzeitprotokollierung von Eingabe- und Ausgabedaten aus Modellen abzurufen, die für verwaltete Onlineendpunkte oder Kubernetes-Onlineendpunkte bereitgestellt werden. Machine Learning speichert die protokollierten Ableitungsdaten im Azure Blob Storage. Anschließend können Sie diese Daten für die Modellüberwachung, das Debuggen oder die Überwachung verwenden, die die Leistung Ihrer bereitgestellten Modelle beobachten können. Wenn Sie ein Modell außerhalb von Machine Learning oder einem Machine Learning-Batchendpunkt bereitstellen, können Sie den Datensammler nicht nutzen und einen anderen Datensammlungsprozess operationalisieren.
Verwenden Sie die Machine Learning-Modellüberwachung , um die Überwachung zu implementieren. Machine Learning erfasst Überwachungssignale, indem statistische Berechnungen für gestreamte Produktionsferenzdaten und Referenzdaten durchgeführt werden. Die Referenzdaten können verlaufsbezogene Trainingsdaten, Validierungsdaten oder Ground-Truth-Daten sein. Andererseits beziehen sich die Produktionsreferenzdaten auf die in der Produktion gesammelten Eingabe- und Ausgabedaten des Modells.
- Sehen Sie sich die Machine Learning-Modellüberwachung an, um mehr über die Überwachungsfunktionen von Machine Learning und die Metriken zu erfahren, die sie erfasst und analysiert.
- Weitere Empfehlungen für die Überwachung finden Sie in den bewährten Methoden .