Chatanwendungen für Unternehmen können Mitarbeiter*innen durch dialogorientierte Interaktionen unterstützen. Dies gilt insbesondere aufgrund der kontinuierlichen Weiterentwicklung von Sprachmodellen, wie den GPT-Modellen von OpenAI und den LLaMA-Modellen von Meta. Diese Chatanwendungen bestehen aus einer Chat-Benutzeroberfläche (UI), Datenrepositorys mit domänenspezifischen Informationen, die für die Anfragen der Benutzer*innen relevant sind, Sprachmodellen, die aus den domänenspezifischen Daten eine relevante Antwort erzeugen, und einem Orchestrator, der die Interaktion zwischen diesen Komponenten überwacht.
Dieser Artikel bietet eine Basisarchitektur für die Erstellung und Bereitstellung von Unternehmens-Chatanwendungen, die Azure OpenAI Service-Sprachmodelle verwenden. Die Architektur verwendet den Eingabeaufforderungsfluss, um ausführbare Flüsse zu erstellen. Diese ausführbaren Flows orchestrieren den Workflow von eingehenden Prompts bis hin zu Datenspeichern, um Basisdaten für die Sprachmodelle sowie andere erforderliche Python-Logik abzurufen. Der ausführbare Flow wird auf einem verwalteten Onlineendpunkt mit verwaltetem Computing bereitgestellt.
Das Hosting der benutzerdefinierten Chat-Benutzeroberfläche (UI) folgt den grundlegenden Richtlinien für die Webanwendung für App-Dienste für die Bereitstellung einer sicheren, zonenredundanten und hochverwendenden Webanwendung auf Azure-App Dienst. In dieser Architektur kommuniziert App Service mit der Azure Platform as a Service (PaaS)-Lösung durch virtuelle Netzwerkintegration über private Endpunkte. Der Chat UI App Service kommuniziert mit dem verwalteten Onlineendpunkt für den Flow über einen privaten Endpunkt. Der öffentliche Zugriff auf Azure AI Studio ist deaktiviert.
Wichtig
Der Artikel geht nicht auf die Komponenten oder Architekturentscheidungen der Baseline-Webanwendung App Service ein. Lesen Sie diesen Artikel, um eine Anleitung für das Hosten der Chat-Benutzeroberfläche zu erhalten.
Der Azure AI Studio-Hub ist mit verwalteter virtueller Netzwerkisolation konfiguriert, für die alle ausgehenden Verbindungen genehmigt werden müssen. Mit dieser Konfiguration wird ein verwaltetes virtuelles Netzwerk erstellt, zusammen mit verwalteten privaten Endpunkten, die Konnektivität zu privaten Ressourcen ermöglichen, wie z. B. Azure Storage, Azure Container Registry und Azure OpenAI. Diese privaten Verbindungen werden bei der Erstellung und dem Testen von Flows sowie von Flows verwendet, die für Machine Learning Compute eingesetzt werden.
Ein Hub ist die Azure AI Studio-Ressource auf oberster Ebene, die eine zentrale Möglichkeit bietet, Sicherheit, Konnektivität und andere Bedenken in mehreren Projekten zu steuern. Für diese Architektur ist nur ein Projekt für die Arbeitsauslastung erforderlich. Wenn Sie zusätzliche Erfahrungen haben, die unterschiedliche Eingabeaufforderungsflüsse mit unterschiedlicher Logik erfordern, können Sie möglicherweise unterschiedliche Back-End-Ressourcen wie Datenspeicher verwenden, die in einem anderen Projekt implementiert werden.
Tipp
Dieser Artikel wird durch eine Referenzimplementierung unterstützt, die eine grundlegende End-to-End-Chatimplementierung in Azure zeigt. Sie können diese Implementierung als Grundlage für die Entwicklung einer individuellen Lösung in Ihrem ersten Schritt zur Produktion verwenden.
Aufbau
Laden Sie eine Visio-Datei dieser Architektur herunter.
Komponenten
Viele Komponenten dieser Architektur sind identisch mit der Basic-End-to-End-Chatarchitektur von Azure OpenAI. In der folgenden Liste werden nur die Änderungen an der grundlegenden Architektur hervorgehoben.
- Azure OpenAI wird sowohl in der Basis- als auch in dieser grundlegenden Architektur verwendet. Azure OpenAI ist ein vollständig verwalteter Dienst, der REST-API-Zugang zu den Sprachmodellen von Azure OpenAI bietet, einschließlich der Modelle GPT-4, GPT-3.5-Turbo und Einbettungen. Die Basisarchitektur nutzt Unternehmensfeatures wie virtuelles Netzwerk und private Verknüpfungen , die von der grundlegenden Architektur nicht implementiert werden.
- Azure KI Studio ist eine Plattform, mit der Sie KI-Lösungen erstellen, testen und bereitstellen können. KI Studio wird in dieser Architektur verwendet, um die prompt flow-Orchestrierungslogik für die Chatanwendung zu erstellen, zu testen und bereitzustellen. In dieser Architektur stellt Azure AI Studio das verwaltete virtuelle Netzwerk für die Netzwerksicherheit bereit. Weitere Informationen finden Sie im Abschnitt "Netzwerk" für weitere Details.
- Application Gateway ist ein Layer-7-Lastenausgleich (HTTP/S) und ein Datenverkehrsrouter. Es verwendet URL-pfadbasiertes Routing, um eingehenden Datenverkehr über Verfügbarkeitszonen zu verteilen, und die Verschlüsselung wird ausgelagert, um die Anwendungsleistung zu verbessern.
- Web Application Firewall (WAF) ist ein cloudnativer Dienst, der Web-Apps vor gängigen Exploits wie der Einschleusung von SQL-Befehlen und Cross-Site Scripting schützt. Web Application Firewall bietet Einblick in den Datenverkehr zu und von Ihrer Webanwendung, sodass Sie Ihre Anwendung überwachen und schützen können.
- Azure Key Vault ist ein Dienst, der Geheimnisse, Verschlüsselungsschlüssel und Zertifikate sicher speichert und verwaltet. Die Verwaltung vertraulicher Informationen wird zentralisiert.
- Das virtuelle Azure-Netzwerk ist ein Dienst, mit dem Sie isolierte und sichere virtuelle Netzwerke in Azure erstellen können. Für eine Webanwendung auf App Service benötigen Sie ein Subnetz des virtuellen Netzwerks, um private Endpunkte für die netzwerksichere Kommunikation zwischen Ressourcen zu verwenden.
- Private Link ermöglicht Clients den Zugriff auf Azure PaaS (Platform-as-a-Service)-Dienste direkt aus privaten virtuellen Netzwerken aus, ohne öffentliche IP-Adressen zu verwenden.
- Azure DNS ist ein Hostingdienst für DNS-Domänen, der eine Namensauflösung mittels Microsoft Azure-Infrastruktur bietet. Private DNS-Zonen bieten eine Möglichkeit, den vollqualifizierten Domänennamen (Fully Qualified Domain Name, FQDN) eines Diensts der IP-Adresse eines privaten Endpunkts zuzuordnen.
Alternativen
Diese Architektur verfügt über mehrere Komponenten, die von anderen Azure-Diensten bereitgestellt werden können, die sich möglicherweise besser an Ihre funktionalen und nicht funktionalen Anforderungen Ihrer Workload ausrichten. Hier sind einige solche Alternativen zu beachten.
Azure Machine Learning-Arbeitsbereiche (und Portalerfahrungen)
Diese Architektur verwendet Azure AI Studio zum Erstellen, Testen und Bereitstellen von Eingabeaufforderungsflüssen. Alternativ können Sie Azure Machine Learning-Arbeitsbereiche verwenden, da beide Dienste überlappende Features aufweisen. Ai Studio ist zwar eine gute Wahl, wenn Sie eine Lösung für den Eingabeaufforderungsfluss entwerfen, aber es gibt einige Features, für die Azure Machine Learning derzeit eine bessere Unterstützung bietet. Weitere Informationen finden Sie im Featurevergleich. Es wird empfohlen, dass Sie Azure AI Studio und Azure Machine Learning nicht kombinieren und übereinstimmen. Wenn Ihre Arbeit vollständig in AI Studio durchgeführt werden kann, verwenden Sie AI Studio. Wenn Sie weiterhin Features aus Azure Machine Learning Studio benötigen, verwenden Sie weiterhin Azure Machine Learning Studio.
Komponenten der Anwendungsebene
Es gibt mehrere Angebote für verwaltete Anwendungsdienste in Azure, die als Anwendungsebene für chat-UI-Front-End dienen können. Siehe Auswählen eines Azure-Computediensts für alle Compute- und Auswahl eines Azure-Containerdiensts für Containerlösungen. Während beispielsweise Azure Web-Apps und Web App für Container sowohl für die Chat-UI-API als auch für den Aufforderungsflusshost ausgewählt wurden, könnten ähnliche Ergebnisse mit Azure Kubernetes Service (AKS) oder Azure Container Apps erzielt werden. Wählen Sie die Anwendungsplattform Ihrer Workload basierend auf den spezifischen funktionalen und nicht funktionalen Anforderungen ihrer Workload aus.
Hosting des Eingabeaufforderungsflusses
Die Bereitstellung von Aufforderungsflüssen ist nicht auf Machine Learning-Computecluster beschränkt, und diese Architektur veranschaulicht, dass eine Alternative in Azure-App Service besteht. Flüsse sind letztendlich eine containerisierte Anwendung, die für jeden Azure-Dienst bereitgestellt werden kann, der mit Containern kompatibel ist. Zu diesen Optionen gehören Dienste wie Azure Kubernetes Service (AKS), Azure Container Apps und Azure-App Service. Wählen Sie einen Azure-Containerdienst basierend auf den Anforderungen Ihrer Orchestrierungsebene aus.
Ein Beispiel dafür, warum das Hosting des Hosting-Aufforderungsflusses bei einer alternativen Berechnung eine Überlegung ist, wird weiter unten in diesem Artikel erläutert.
Erdungsdatenspeicher
Während diese Architektur mit Azure AI Search führt, ist Ihre Wahl des Datenspeichers für Ihre Erdungsdaten eine architekturspezifische Entscheidung für Ihre Arbeitsauslastung. Viele Workloads sind in der Tat polyglot und weisen unterschiedliche Quellen und Technologien für die Erdung von Daten auf. Diese Datenplattformen reichen von vorhandenen OLTP-Datenspeichern, cloudeigenen Datenbanken wie Azure Cosmos DB bis hin zu spezialisierten Lösungen wie Azure AI Search. Ein häufiges, aber nicht erforderliches Merkmal für einen solchen Datenspeicher ist die Vektorsuche. Weitere Informationen finden Sie unter Auswählen eines Azure-Diensts für die Vektorsuche , um Optionen in diesem Bereich zu erkunden.
Überlegungen und Empfehlungen
Zuverlässigkeit
Zuverlässigkeit stellt sicher, dass Ihre Anwendung Ihre Verpflichtungen gegenüber den Kunden erfüllen kann. Weitere Informationen finden Sie unter Erstellen einer Checkliste zur Überprüfung der Zuverlässigkeit.
Die grundlegende App Service-Webanwendungsarchitektur konzentriert sich auf zonale Redundanz für wichtige regionale Dienste. Verfügbarkeitszonen sind physisch getrennte Standorte in einer Region. Sie bieten Redundanz innerhalb einer Region für unterstützende Dienste, wenn zwei oder mehr Instanzen in dieser Region bereitgestellt werden. Wenn es in einer Zone zu einem Ausfall kommt, sind die anderen Zonen innerhalb der Region möglicherweise nicht betroffen. Die Architektur stellt außerdem genügend Instanzen von Azure-Diensten und die Konfiguration dieser Dienste sicher, die über Verfügbarkeitszonen verteilt werden können. Weitere Informationen finden Sie unter Baseline, wo Sie diese Anleitung nachlesen können.
Dieser Abschnitt befasst sich mit der Zuverlässigkeit der Komponenten in dieser Architektur, die nicht in der App Service-Basislinie behandelt werden, einschließlich Machine Learning, Azure OpenAI und AI Search.
Zonalredundanz für Flowbereitstellungen
Unternehmensbereitstellungen erfordern in der Regel Zonenredundanz. Um Zonenredundanz in Azure zu erreichen, müssen Ressourcen Verfügbarkeitszonen unterstützen, und Sie müssen mindestens drei Instanzen der Ressource bereitstellen oder die Plattformunterstützung aktivieren, wenn die Instanzkontrolle nicht verfügbar ist. Derzeit bietet Machine Learning Compute keine Unterstützung für Verfügbarkeitszonen. Um die potenziellen Auswirkungen einer Katastrophe auf Rechenzentrumsebene auf Machine Learning-Komponenten abzumildern, müssen Cluster in verschiedenen Regionen eingerichtet und ein Load Balancer bereitgestellt werden, um die Aufrufe auf diese Cluster zu verteilen. Mit Hilfe von Integritätsprüfungen können Sie sicherstellen, dass Aufrufe nur an ordnungsgemäß funktionierende Cluster weitergeleitet werden.
Es gibt einige Alternativen zu Machine Learning-Computeclustern wie Azure Kubernetes Service (AKS), Azure Functions, Azure Container Apps und Azure-App Service. Jeder dieser Dienste unterstützt Verfügbarkeitszonen. Um eine Zonalredundanz für die Ausführung von Eingabeaufforderungen zu erzielen, ohne dass die Komplexität einer Bereitstellung mit mehreren Regionen hinzugefügt wird, sollten Sie Ihre Flows in einem dieser Dienste bereitstellen.
Das folgende Diagramm zeigt eine alternative Architektur, bei der Prompt Flows für App Service bereitgestellt werden. Der App-Dienst wird in dieser Architektur verwendet, da die Workload sie bereits für die Chat-UI verwendet und nicht von der Einführung einer neuen Technologie in die Workload profitieren würde. Workloadteams, die Erfahrung mit AKS haben, sollten die Bereitstellung in dieser Umgebung in Betracht ziehen, insbesondere, wenn AKS für andere Komponenten in der Workload verwendet wird.
Wichtige Bereiche in dieser Architektur sind in dem Diagramm nummeriert:
Flüsse werden weiterhin im Eingabeaufforderungsfluss erstellt, und die Netzwerkarchitektur ist unverändert. Ablaufautoren stellen weiterhin eine Verbindung mit der Erstellungserfahrung im AI Studio-Projekt über einen privaten Endpunkt her, und die verwalteten privaten Endpunkte werden verwendet, um beim Testen von Flüssen eine Verbindung mit Azure-Diensten herzustellen.
Diese punktierte Linie zeigt an, dass containerisierte ausführbare Flows an die Container Registry übertragen werden. Im Diagramm nicht dargestellt sind die Pipelines, die die Flows containerisieren und an die Container Registry weiterleiten. Die Berechnung, in der diese Pipelines ausgeführt werden, muss eine Netzwerklinie für Ressourcen wie die Azure-Containerregistrierung und das AI Studio-Projekt aufweisen.
Es gibt eine andere Web-App, die im selben App-Serviceplan bereitgestellt wird, der bereits die Chat-UI hosten soll. Die neue Web-App hostet den containerisierten Eingabeaufforderungsfluss, der im selben App-Serviceplan, der bereits mit mindestens drei Instanzen ausgeführt wird, verteilt auf Verfügbarkeitszonen. Diese App Service-Instanzen stellen über einen privaten Endpunkt eine Verbindung zur Container Registry her, wenn sie das Containerimage für den Prompt Flow laden.
Der Aufforderungsflowcontainer muss eine Verbindung mit allen abhängigen Diensten herstellen, um die Ablaufausführung auszuführen. In dieser Architektur stellt der Prompt Flow Container eine Verbindung mit AI Search und Azure OpenAI her. PaaS-Dienste, die nur für das Machine Learning-verwaltete Subnetz für private Endpunkte bereitgestellt wurden, müssen jetzt auch im virtuellen Netzwerk verfügbar gemacht werden, damit eine Sichtverbindung über App Service hergestellt werden kann.
Azure OpenAI – Zuverlässigkeit
Azure OpenAI unterstützt derzeit keine Verfügbarkeitszonen. Um die potenziellen Auswirkungen einer Katastrophe auf Rechenzentrumsebene auf Modellbereitstellungen in Azure OpenAI zu verringern, müssen Sie Azure OpenAI in verschiedenen Regionen bereitstellen und einen Lastenausgleich bereitstellen, um Anrufe zwischen den Regionen zu verteilen. Mit Hilfe von Integritätsprüfungen können Sie sicherstellen, dass Aufrufe nur an ordnungsgemäß funktionierende Cluster weitergeleitet werden.
Um mehrere Instanzen effektiv zu unterstützen, empfehlen wir Ihnen, die Feinabstimmungsdateien auszulagern, z. B. auf ein georedundantes Speicherkonto. Dieser Ansatz minimiert den Status, der in Azure OpenAI für jede Region gespeichert wird. Für jede Instanz, die eine Modellimplementierung hosten soll, müssen die Dateien noch feinabgestimmt werden.
Es ist wichtig, den erforderlichen Durchsatz in Form von Token pro Minute (TPM) und Anfragen pro Minute (RPM) zu überwachen. Stellen Sie sicher, dass genügend TPM aus Ihrem Kontingent zugewiesen ist, um den Bedarf für Ihre Bereitstellungen zu decken und zu verhindern, dass Aufrufe an Ihre bereitgestellten Modelle gedrosselt werden. Ein Gateway wie Azure API Management kann vor Ihrem Azure OpenAI-Dienst oder -Diensten bereitgestellt werden und kann für wiederholungsversuche konfiguriert werden, wenn vorübergehende Fehler und Drosselung auftreten. API Management kann auch als Trennschalter verwendet werden, um zu verhindern, dass der Dienst mit dem Aufruf überfordert wird und das Kontingent überschreitet. Weitere Informationen zum Hinzufügen eines Gateways für Zuverlässigkeitsbedenken finden Sie unter Access Azure OpenAI und andere Sprachmodelle über ein Gateway.
AI Search – Zuverlässigkeit
Stellen Sie AI Search mit Standardpreisebene oder höher in einer Region bereit, die Verfügbarkeitszonen unterstützt, und stellen Sie drei oder mehr Replikate bereit. Die Replikate werden automatisch gleichmäßig über Verfügbarkeitszonen verteilt.
Beachten Sie die folgenden Anleitungen zum Ermitteln der geeigneten Anzahl von Replikaten und Partitionen:
Verwenden Sie Überwachungsmetriken und -protokolle sowie Leistungsanalysen, um die angemessene Anzahl von Replikaten zu bestimmen, um abfragebasierte Drosselungen und Partitionen sowie indexbasierte Drosselungen zu vermeiden.
Azure AI Studio – Zuverlässigkeit
Wenn Sie für Computecluster hinter dem vom Machine Learning verwalteten Onlineendpunkt bereitstellen, sollten Sie die folgenden Anleitungen zur Skalierung in Betracht ziehen:
Skalieren Sie Ihre Onlineendpunkte automatisch, um sicherzustellen, dass genügend Kapazität vorhanden ist, um die Nachfrage zu befriedigen. Wenn die Nutzungssignale aufgrund von Lastspitzen nicht rechtzeitig erfolgen, sollten Sie eine Überbereitstellung in Betracht ziehen, um eine Beeinträchtigung der Zuverlässigkeit durch zu wenige verfügbare Instanzen zu vermeiden.
Erwägen Sie das Erstellen von Skalierungsregeln basierend auf Bereitstellungsmetriken wie CPU-Auslastungs- und Endpunktmetriken wie z. B. Anforderungslatenz.
Nicht weniger als drei Instanzen sollten für eine aktive Produktionsbereitstellung bereitgestellt werden.
Vermeiden Sie Bereitstellungen für nicht verwendete Instanzen. Stellen Sie stattdessen für eine neue Bereitstellung bereit und verschieben Sie den Datenverkehr nach der Bereitstellung, um Datenverkehr zu empfangen.
Verwaltete Onlineendpunkte fungieren als Lastenausgleich und Router für die verwaltete Compute, die hinter ihnen ausgeführt wird. Sie können den Prozentsatz des Datenverkehrs konfigurieren, der an jede Bereitstellung weitergeleitet werden soll, solange die Prozentsätze bis zu 100 % addieren. Sie können auch einen verwalteten Onlineendpunkt bereitstellen, bei dem 0 % Datenverkehr an jede Bereitstellung weitergeleitet wird. Wenn Sie wie in der bereitgestellten Referenzimplementierung Infrastruktur als Code (IaC) verwenden, um Ihre Ressourcen bereitzustellen, einschließlich Ihrer verwalteten Onlineendpunkte, besteht ein Zuverlässigkeitsproblem. Wenn Sie Datenverkehr so konfiguriert haben, dass er zu Bereitstellungen (erstellt über CLI oder Azure AI Studio) weitergeleitet wird und Sie eine nachfolgende IaC-Bereitstellung ausführen, die den verwalteten Onlineendpunkt enthält, auch wenn er den verwalteten Onlineendpunkt nicht auf irgendeine Weise aktualisiert, wird der Endpunktdatenverkehr auf das Routing von 0 % Datenverkehr zurückgesetzt. Dies bedeutet, dass Ihre bereitgestellten Eingabeaufforderungsflüsse nicht mehr erreichbar sind, bis Sie den Datenverkehr wieder an die gewünschte Stelle anpassen.
Hinweis
Die App Service-Skalierbarkeitsrichtlinien aus der Baselinearchitektur gelten auch, wenn Sie Ihren Flow für App Service bereitstellen.
Entwurf für mehrere Regionen
Diese Architektur ist nicht als regionaler Stempel in einer multiregionalen Architektur aufgebaut. Es bietet hohe Verfügbarkeit innerhalb einer einzelnen Region aufgrund seiner vollständigen Nutzung von Verfügbarkeitszonen, aber es fehlen einige wichtige Komponenten, um dies wirklich für eine Multi-Region-Lösung vorzubereiten. Dies sind einige Komponenten oder Überlegungen, die in dieser Architektur fehlen:
- Globales Ein- und Routing
- DNS-Verwaltungsstrategie
- Datenreplikationsstrategie (oder Isolation)
- Eine aktiv-aktive, aktiv-passive oder aktiv-kalte Bezeichnung
- Eine Failover- und Failbackstrategie, um die RTO und RPO Ihrer Workload zu erreichen
- Entscheidungen zur Verfügbarkeit von Regionen für Entwickleroberflächen in der Azure Studio Hub-Ressource
Wenn die Anforderungen Ihrer Workload eine Strategie für mehrere Regionen erfordern, müssen Sie in zusätzliche Designbemühungen rund um Komponenten und betriebliche Prozesse investieren, die über die in dieser Architektur dargestellten Elemente verfügen. Sie entwerfen, um Lastenausgleich oder Failover auf den folgenden Ebenen zu unterstützen:
- Groundingdaten
- Modellhosting
- Orchestrierungsebene (Eingabeaufforderungsfluss in dieser Architektur)
- Clientseitige Benutzeroberfläche
Darüber hinaus müssen Sie die Geschäftskontinuität in Bezug auf Observability, Portalerfahrungen und verantwortungsvolle KI-Bedenken wie Die Sicherheit von Inhalten beibehalten.
Sicherheit
Sicherheit bietet Schutz vor vorsätzlichen Angriffen und dem Missbrauch Ihrer wertvollen Daten und Systeme. Weitere Informationen finden Sie unter Erstellen einer Checkliste zur Überprüfung der Sicherheit.
Diese Architektur erweitert die Sicherheitsposition, die in der Basic-End-to-End-Chatarchitektur mit Azure OpenAI implementiert wird. Die grundlegende Architektur verwendet systemseitig zugewiesene verwaltete Identitäten und systemseitig zugewiesene Rollenzuweisungen, diese Architektur nutzt hingegen benutzerseitig zugewiesene Identitäten mit manuell erstellten Rollenzuweisungen.
Die Architektur implementiert einen Netzwerksicherheitsperimeter sowie den in der Basis-Architektur implementierten Identitätsperimeter. Aus Netzwerksicht sollte nur die Chatbenutzeroberfläche über das Application Gateway vom Internet aus zugänglich sein. Aus Identitätsperspektive sollte die Chat-UI Anforderungen authentifizieren und autorisieren. Verwaltete Identitäten werden nach Möglichkeit verwendet, um Anwendungen bei Azure-Diensten zu authentifizieren.
Zusammen mit Netzwerküberlegungen beschreibt dieser Abschnitt Sicherheitsaspekte für die Schlüsselrotation und die Feinabstimmung des Azure OpenAI-Modells.
Identitäts- und Zugriffsverwaltung
Berücksichtigen Sie bei der Verwendung von benutzerseitig zugewiesenen verwalteten Identitäten die folgenden Hinweise:
- Erstellen Sie separate verwaltete Identitäten für die folgenden Azure AI Studio- und Machine Learning-Ressourcen, sofern zutreffend:
- KI Studio-Hub
- AI Studio-Projekte für die Flusserstellung und -verwaltung
- Onlineendpunkte im bereitgestellten Flow, wenn der Flow auf einem verwalteten Onlineendpunkt bereitgestellt wird
- Implementierung von Identitätszugriffskontrollen für die Chatbenutzeroberfläche mithilfe von Microsoft Entra ID
Erstellen Sie separate Projekte und Onlineendpunkte für verschiedene Eingabeaufforderungsflüsse, die Sie von anderen Ausschau nach Berechtigungen isolieren möchten. Erstellen Sie eine separate verwaltete Identität für jedes Projekt und jeden verwalteten Onlineendpunkt. Geben Sie Autoren des Promptflusses Zugriff auf nur die projekte, die sie benötigen.
Wenn Sie Benutzer in Azure AI Studio-Projekte integrieren, um Funktionen wie Erstellungsflüsse auszuführen, müssen Sie die Ressourcen, die sie benötigen, am wenigsten Berechtigungen zuweisen.
Rollenbasierte Machine Learning-Zugriffsrollen
Wie in der grundlegenden Architektur erstellt das System automatisch Rollenzuweisungen für die vom System zugewiesenen verwalteten Identitäten. Da das System nicht weiß, welche Features des Hubs und der Projekte Sie verwenden können, werden rollenzuweisungen erstellt, die alle potenziellen Features unterstützen. Die automatisch erstellten Rollenzuweisungen können basierend auf Ihrem Anwendungsfall Berechtigungen bereitstellen. Ein Beispiel ist die Rolle "Mitwirkender", die dem Hub für die Containerregistrierung zugewiesen ist, wobei wahrscheinlich nur "Reader"-Zugriff auf die Steuerungsebene erforderlich ist. Wenn Sie Berechtigungen für die geringsten Berechtigungsziele weiter einschränken müssen, müssen Sie vom Benutzer zugewiesene Identitäten verwenden. Sie erstellen und verwalten diese Rollenzuweisungen selbst.
Aufgrund der Wartungslast für die Verwaltung aller erforderlichen Aufgaben bevorzugt diese Architektur die operative Exzellenz gegenüber absoluter Berechtigungsrollenzuweisungen. Beachten Sie, dass Sie alle in der Tabelle aufgeführten Aufgaben vornehmen müssen.
Verwaltete Identität | `Scope` | Rollenzuweisungen |
---|---|---|
Verwaltete Hubidentität | Mitwirkender | Ressourcengruppe |
Verwaltete Hubidentität | Hub | Azure AI-Administrator |
Verwaltete Hubidentität | Container Registry | Mitwirkender |
Verwaltete Hubidentität | Schlüsseltresor | Mitwirkender |
Verwaltete Hubidentität | Schlüsseltresor | Administrator |
Verwaltete Hubidentität | Speicherkonto | Leser |
Verwaltete Hubidentität | Speicherkonto | Speicherkontomitwirkender |
Verwaltete Hubidentität | Speicherkonto | Mitwirkender an Storage-Blobdaten |
Verwaltete Hubidentität | Speicherkonto | Privilegierter Mitwirkender für Speicherdateidaten |
Verwaltete Hubidentität | Speicherkonto | Mitwirkender an Storage-Tabellendaten |
Verwaltete Projektidentität | Projekt | Azure AI-Administrator |
Verwaltete Projektidentität | Container Registry | Mitwirkender |
Verwaltete Projektidentität | Schlüsseltresor | Mitwirkender |
Verwaltete Projektidentität | Schlüsseltresor | Administrator |
Verwaltete Projektidentität | Speicherkonto | Leser |
Verwaltete Projektidentität | Speicherkonto | Speicherkontomitwirkender |
Verwaltete Projektidentität | Speicherkonto | Mitwirkender an Storage-Blobdaten |
Verwaltete Projektidentität | Speicherkonto | Privilegierter Mitwirkender für Speicherdateidaten |
Verwaltete Projektidentität | Speicherkonto | Mitwirkender an Storage-Tabellendaten |
Verwaltete Identität des Onlineendpunkts | Projekt | Azure Machine Learning Workspace–Verbindungsgeheimnisse |
Verwaltete Identität des Onlineendpunkts | Projekt | AzureML Metrics Writer |
Verwaltete Identität des Onlineendpunkts | Container Registry | ACRPull |
Verwaltete Identität des Onlineendpunkts | Azure OpenAI | Cognitive Services OpenAI-Benutzer |
Verwaltete Identität des Onlineendpunkts | Speicherkonto | Mitwirkender an Storage-Blobdaten |
Verwaltete Identität des Onlineendpunkts | Speicherkonto | Leser von Speicherblobdaten |
App-Dienst (wenn der Eingabeaufforderungsfluss für App Service bereitgestellt wird) | Azure OpenAI | Cognitive Services OpenAI-Benutzer |
Portalbenutzer (Eingabeaufforderungsflussentwicklung) | Azure OpenAI | Cognitive Services OpenAI-Benutzer |
Portalbenutzer (Eingabeaufforderungsflussentwicklung) | Speicherkonto | Mitwirkender von Speicher-BLOB-Daten (bedingter Zugriff verwenden) |
Portalbenutzer (Eingabeaufforderungsflussentwicklung) | Speicherkonto | Privilegierter Mitwirkender für Speicherdateidaten |
Es ist wichtig zu verstehen, dass der AI Studio-Hub Über Azure-Ressourcen verfügt, die für projekteübergreifend freigegeben werden, z. B. ein Speicherkonto und eine Containerregistrierung. Wenn Sie über Benutzer verfügen, die nur Zugriff auf eine Teilmenge der Projekte benötigen, sollten Sie die Verwendung von Rollenzuweisungsbedingungen für Azure-Dienste, die sie unterstützen, in Betracht ziehen, um den geringsten Berechtigungszugriff auf Ressourcen bereitzustellen. Beispielsweise unterstützen Blobs in Azure Storage Rollenzuweisungsbedingungen. Verwenden Sie für einen Benutzer, der Zugriff auf eine Teilmenge der Projekte erfordert, statt Berechtigungen pro Container zuzuweisen, Rollenzugriffsbedingungen, um Berechtigungen auf die blob-Container zu beschränken, die von diesen Projekten verwendet werden. Jedes Projekt verfügt über eine eindeutige GUID, die als Präfix für die Namen der blob-Container dient, die in diesem Projekt verwendet werden. Diese GUID kann als Teil der Rollenzuweisungsbedingungen verwendet werden.
Der Hub hat eine Anforderung, Zugriff auf die Hubressourcengruppe zu haben Contributor
, um es zu ermöglichen, Hub- und Projektressourcen zu erstellen und zu verwalten. Ein Nebeneffekt davon, dass der Hub über Steuerungsebenenzugriff auf jede Ressource auch in der Ressourcengruppe verfügt. Alle Azure-Ressourcen, die sich nicht direkt auf den Hub beziehen, und ihre Projekte sollten in einer separaten Ressourcengruppe erstellt werden. Es wird empfohlen, mindestens zwei Ressourcengruppen für ein Workloadteam mit einem selbstverwalteten Azure AI Studio Hub zu erstellen. Eine Ressourcengruppe, die den Hub, seine Projekte und alle direkten Abhängigkeiten wie die Azure-Containerregistrierung, den Key Vault usw. enthält. Eine Ressourcengruppe, die alles andere in Ihrer Workload enthält.
Es wird empfohlen, die Verwendung von Azure-Ressourcen zu minimieren, die für den Betrieb des Hubs (Containerregistrierung, Speicherkonto, Key Vault, Application Insights) von anderen Komponenten in Ihren Workloads benötigt werden. Wenn Sie beispielsweise geheime Schlüssel als Teil Ihrer Workload speichern müssen, sollten Sie einen separaten Schlüsseltresor neben dem schlüsseltresor erstellen, der dem Hub zugeordnet ist. Der Hub Key Vault sollte nur vom Hub zum Speichern von Hub- und Projektgeheimnissen verwendet werden.
Stellen Sie sicher, dass für jedes einzelne Projekt die Rollenzuweisungen für ihre Abhängigkeiten keinen Zugriff auf Ressourcen bieten, die der Portalbenutzer und die verwaltete Onlineendpunktidentität nicht erfordern. Beispielsweise gewährt die Cognitive Services OpenAI User
Rollenzuweisung zu Azure OpenAI Zugriff auf alle Bereitstellungen für diese Ressource. Es gibt keine Möglichkeit, Flussautoren oder verwaltete verwaltete Onlineendpunktidentitäten mit diesem Rollenzuweisungszugriff auf bestimmte Modellbereitstellungen in Azure OpenAI einzuschränken. Für Szenarien wie dies ist unser Leitfaden die Bereitstellung von Diensten wie Azure OpenAI und Azure AI Search pro Projekt und nicht die Bereitstellung von Ressourcen für diese Dienste, die Autoren oder verwaltete verwaltete Onlineendpunktidentitäten übertragen, keinen Zugriff haben sollten. Stellen Sie beispielsweise nur Modelle in der Azure OpenAI-Instanz des Projekts bereit, auf die das Projekt Zugriff benötigt. Stellen Sie nur Indizes in der Azure AI Search-Instanz des Projekts bereit, auf die das Projekt Zugriff haben sollte.
Netzwerk
Neben dem identitätsbasierten Zugang steht Netzwerksicherheit im Zentrum der grundlegenden End-to-End-Chatarchitektur, die OpenAI verwendet. Auf hoher Ebene stellt die Netzarchitektur Folgendes sicher:
- Nur ein einziger, sicherer Eingangspunkt für den Chat-UI-Datenverkehr.
- Der Netzwerkverkehr wird gefiltert.
- Die Daten werden während der Übertragung mit Transport Layer Security (TLS) durchgängig verschlüsselt.
- Die Datenexfiltration wird durch die Verwendung von Private Link minimiert, um den Datenverkehr in Azure zu halten.
- Netzwerkressourcen werden logisch gruppiert und durch Netzwerksegmentierung voneinander isoliert.
Netzwerkflows
Zwei Flows in diesem Diagramm werden in der grundlegenden App Service-Webanwendungsarchitektur behandelt: Der eingehende Flow vom Endbenutzer/der Endbenutzerin zur Chatbenutzeroberfläche (1) und der Flow von App Service zu Azure PaaS-Diensten (2). Dieser Abschnitt befasst sich mit dem Machine Learning-Onlineendpunktflow. Der folgende Flow reicht von der Chatbenutzeroberfläche, die in der grundlegenden App Service-Webanwendung ausgeführt wird, bis zum Flow, der für Machine Learning Compute bereitgestellt wird:
- Der Aufruf von der vom App Service gehosteten Chatbenutzeroberfläche wird über einen privaten Endpunkt an den Machine Learning-Onlineendpunkt weitergeleitet.
- Der Onlineendpunkt leitet den Anruf an einen Server weiter, auf dem der bereitgestellte Fluss ausgeführt wird. Der Onlineendpunkt fungiert sowohl als Load Balancer als auch als Router.
- Aufrufe an Azure PaaS-Dienste, die vom bereitgestellten Flow benötigt werden, werden über verwaltete private Endpunkte weitergeleitet.
Eingang zu Machine Learning
In dieser Architektur ist der öffentliche Zugriff auf den Machine Learning-Arbeitsbereich deaktiviert. Benutzer*innen können über einen privaten Zugang auf den Arbeitsbereich zugreifen, da die Architektur der Konfiguration privater Endpunkt für Machine Learning-Arbeitsbereich folgt. Tatsächlich werden private Endpunkte in dieser Architektur verwendet, um die identitätsbasierte Sicherheit zu ergänzen. Beispielsweise kann Ihre von App Service gehostete Chatbenutzeroberfläche eine Verbindung zu PaaS-Diensten herstellen, die dem öffentlichen Internet nicht zugänglich sind, einschließlich Machine Learning-Endpunkten.
Ein Zugriff auf private Endpunkte ist auch erforderlich, um eine Verbindung mit dem Machine Learning-Arbeitsbereich für die Flowerstellung herzustellen.
Das Diagramm zeigt einen Aufforderungsflowautor, der eine Verbindung über Azure Bastion mit einem virtuellen Computer-Jumpbox herstellt. Von dieser Jumpbox aus kann der Autor eine Verbindung zum Machine Learning-Arbeitsbereich über einen privaten Endpunkt in demselben Netzwerk wie die Jumpbox herstellen. Die Konnektivität zum virtuellen Netzwerk könnte auch über ExpressRoute- oder VPN-Gateways und virtuelles Netzwerk-Peering erfolgen.
Fluss aus dem von Azure AI Studio verwalteten virtuellen Netzwerk zu Azure PaaS-Diensten
Es wird empfohlen, den Azure AI Studio-Hub für verwaltete virtuelle Netzwerkisolation zu konfigurieren, für die alle ausgehenden Verbindungen genehmigt werden müssen. Diese Architektur folgt dieser Empfehlung. Es gibt zwei Arten genehmigter ausgehender Regeln. Erforderliche Ausgangsregeln beziehen sich auf Ressourcen, die für das Funktionieren der Lösung erforderlich sind, z. B. Container Registry und Storage. Benutzerdefinierte Ausgangsregeln beziehen sich auf benutzerdefinierte Ressourcen, wie Azure OpenAI oder AI Search, die Ihr Workflow verwenden wird. Sie müssen benutzerdefinierte Ausgangsregeln konfigurieren. Die erforderlichen Ausgangsregeln werden bei der Erstellung des verwalteten virtuellen Netzwerks konfiguriert. Das verwaltete virtuelle Netzwerk wird bei bedarfsgesteuert bereitgestellt, wenn Sie es zum ersten Mal verwenden und ab diesem Zeitpunkt beibehalten werden.
Bei den Ausgangsregeln kann es sich um private Endpunkte, Diensttags oder vollständig qualifizierte Domänennamen (FQDNs) für externe öffentliche Endpunkte handeln. In dieser Architektur ist die Konnektivität zu Azure-Diensten wie Container Registry, Storage, Azure Key Vault, Azure OpenAI und AI Search über einen privaten Link verbunden. Auch wenn dies in dieser Architektur nicht der Fall ist, sind einige häufige Vorgänge, die möglicherweise die Konfiguration einer FQDN-Ausgangsregel erfordern, das Herunterladen eines Pip-Pakets, das Klonen eines GitHub-Repositorys oder das Herunterladen von Basis-Containerimages aus externen Repositorys.
Segmentierung und Sicherheit des virtuellen Netzwerks
Das Netzwerk in dieser Architektur umfasst getrennte Subnetze für folgende Zwecke:
Application Gateway
Integrationskomponenten des App-Diensts
Private Endpunkte
Azure Bastion
Jumpbox-VM
Schulungen und Bewertungssubnetze – beides sind für die Bereitstellung eines eigenen Computes im Zusammenhang mit Schulungen und Inferencing. In dieser Architektur werden keine Schulungen ausgeführt, und wir verwenden verwaltete Compute.
Bewertung
Jedes Subnetz verfügt über eine Netzwerksicherheitsgruppe (NSG), die den ein- und ausgehenden Datenverkehr für diese Subnetze auf das erforderliche Maß beschränkt. Die folgende Tabelle zeigt eine vereinfachte Darstellung der NSG-Regeln, die die Baseline zu jedem Subnetz hinzufügt. Die Tabelle enthält den Namen und die Funktion der Regel.
Subnet | Eingehend | Ausgehend |
---|---|---|
snet-AppGateway | Zertifikate für unsere Chat-UI-Benutzerquellen-IPs (z. B. öffentliches Internet) sowie erforderliche Elemente für den Dienst. | Zugriff auf den privaten App Service-Endpunkt sowie erforderliche Elemente für den Dienst. |
snet-PrivateEndpoints | Nur Datenverkehr aus dem virtuellen Netzwerk wird zugelassen. | Nur Datenverkehr zum virtuellen Netzwerk wird zugelassen. |
snet-AppService | Nur Datenverkehr aus dem virtuellen Netzwerk wird zugelassen. | Zugriff auf die privaten Endpunkte und Azure Monitor zulassen. |
AzureBastionSubnet | Weitere Informationen finden Sie in den Anleitungen zum Arbeiten mit NSG-Zugriff und Azure Bastion. | Weitere Informationen finden Sie in den Anleitungen zum Arbeiten mit NSG-Zugriff und Azure Bastion. |
snet-jumpbox | Eingehende RDP-Verbindungen (Remote Desktop Protocol) und SSH-Verbindungen vom Azure Bastion-Host-Subnetz zulassen. | Zulassen des Zugriffs zu den privaten Endpunkten |
snet-agents | Nur Datenverkehr aus dem virtuellen Netzwerk wird zugelassen. | Nur Datenverkehr zum virtuellen Netzwerk wird zugelassen. |
snet-training | Nur Datenverkehr aus dem virtuellen Netzwerk wird zugelassen. | Nur Datenverkehr zum virtuellen Netzwerk wird zugelassen. |
snet-scoring | Nur Datenverkehr aus dem virtuellen Netzwerk wird zugelassen. | Nur Datenverkehr zum virtuellen Netzwerk wird zugelassen. |
Sämtlicher anderer Datenverkehr wird explizit verweigert.
Berücksichtigen Sie die folgenden Punkte, wenn Sie die Segmentierung und Sicherheit virtueller Netzwerke implementieren.
Aktivieren Sie DDoS Protection für das virtuelle Netzwerk mit einem Subnetz, das Teil eines Application Gateway mit einer öffentlichen IP-Adresse ist.
Fügen Sie nach Möglichkeit jedem Subnetz eine NSG hinzu. Verwenden Sie die strengsten Regeln, die die volle Funktionalität der Lösung ermöglichen.
Verwenden Sie Anwendungssicherheitsgruppen, um NSGs zu gruppieren. Die Gruppierung von NSGs erleichtert die Erstellung von Regeln für komplexe Umgebungen.
Schlüsselrotation
In dieser Architektur gibt es einen Dienst, der schlüsselbasierte Authentifizierung verwendet: der vom Maschinellen Lernen verwaltete Onlineendpunkt. Da Sie die schlüsselbasierte Authentifizierung für diesen Dienst verwenden, ist folgendes wichtig:
Speichern Sie den Schlüssel in einem sicheren Speicher, z. B. Key Vault, für den On-Demand-Zugriff von autorisierten Clients, wie z. B. der Azure Web App, die den Prompt Flow Container hostet.
Implementieren Sie eine Schlüsseldrehungsstrategie. Wenn Sie die Schlüssel manuell drehen, erstellen Sie eine Ablaufrichtlinie für Schlüssel, und verwenden Sie Azure-Richtlinie, um zu überwachen, ob der Schlüssel gedreht wurde.
OpenAI-Modell-Feinabstimmung
Bei der Feinabstimmung von OpenAI-Modellen in Ihrer Implementierung sollten Sie die folgenden Hinweise beachten:
Wenn Sie Trainingsdaten zur Feinabstimmung hochladen, sollten Sie die Verwendung von kundenseitig verwalteten Schlüsseln für die Verschlüsselung dieser Daten in Betracht ziehen.
Wenn Sie Trainingsdaten in einem Speicher wie Azure Blob Storage speichern, sollten Sie die Verwendung eines kundenseitig verwalteten Schlüssels für die Datenverschlüsselung, einer verwalteten Identität zur Kontrolle des Datenzugriffs und eines privaten Endpunkts für die Verbindung zu den Daten in Betracht ziehen.
Governance durch Richtlinie
Um die Übereinstimmung mit der Sicherheit sicherzustellen, sollten Sie die Verwendung von Azure Policy und Netzwerkrichtlinien in Erwägung ziehen, damit die Bereitstellungen den Anforderungen der Workload entsprechen. Der Einsatz einer Plattformautomatisierung durch Richtlinien reduziert die Belastung durch manuelle Validierungsschritte und gewährleistet Governance, auch wenn Pipelines umgangen werden. Beachten Sie die folgenden Sicherheitsrichtlinien:
- Deaktivieren Sie den Zugriff auf Schlüssel oder andere lokale Authentifizierungen in Diensten wie Azure KI Services und Key Vault.
- Fordern Sie eine spezifische Konfiguration von Netzzugriffsregeln oder NSGs.
- Fordern Sie eine Verschlüsselung, z. B. die Verwendung von kundenseitig verwalteten Schlüsseln.
Azure AI Studio-Rollenzuweisungen für Azure Key Vault
Die verwaltete Azure AI Studio-Identität erfordert sowohl Steuerungsebene (Mitwirkender) als auch Datenebenen (Key Vault Administrator) Rollenzuweisungen. Dies bedeutet, dass diese Identität Lese- und Schreibzugriff auf alle Geheimnisse, Schlüssel und Zertifikate hat, die im Azure-Schlüsseltresor gespeichert sind. Wenn Ihre Workload über andere Dienste als Azure AI Studio verfügt, die Zugriff auf Geheimnisse, Schlüssel oder Zertifikate im Key Vault erfordern, ist Ihr Workload- oder Sicherheitsteam möglicherweise nicht mit der verwalteten Identität des Azure AI Studio-Hubs vertraut, die Zugriff auf diese Artefakte hat. In diesem Fall sollten Sie eine Key Vault-Instanz speziell für den Azure AI Studio-Hub und andere Azure Key Vault-Instanzen bereitstellen, die für andere Teile Ihrer Workload geeignet sind.
Kostenoptimierung
Bei der Kostenoptimierung geht es um die Suche nach Möglichkeiten, unnötige Ausgaben zu reduzieren und die Betriebseffizienz zu verbessern. Weitere Informationen finden Sie unter Erstellen einer Checkliste zur Überprüfung der Kostenoptimierung.
Verwenden Sie den Azure-Preisrechner, um ein Preisbeispiel für dieses Szenario anzuzeigen. Sie müssen das Beispiel an Ihre Bedürfnisse anpassen, da dieses Beispiel nur die in der Architektur enthaltenen Komponenten enthält. Die teuersten Komponenten im Szenario sind DDoS Protection und die Firewall, die als Teil des verwalteten Onlineendpunkts bereitgestellt wird. Weitere wichtige Kosten sind die Chat-UI und der Prompt flow Compute und AI Search. Optimieren Sie diese Ressourcen, um möglichst viel Kosten zu sparen.
Compute
Der Aufforderungsfluss unterstützt mehrere Optionen zum Hosten der ausführbaren Flüsse. Zu den Optionen gehören verwaltete Onlineendpunkte in Machine Learning, AKS, App Service und Azure Kubernetes Service. Jede dieser Optionen verfügt über ein eigenes Abrechnungsmodell. Die Wahl der Computemethode hat Auswirkungen auf die Gesamtkosten der Lösung.
Azure OpenAI
Azure OpenAI ist ein verbrauchsbasierter Dienst, und wie bei jedem verbrauchsbasierten Dienst ist die Steuerung der Nachfrage nach Angebot die primäre Kostenkontrolle. Um dies speziell in Azure OpenAI zu erreichen, müssen Sie eine Kombination von Ansätzen verwenden:
Steuern von Clients. Kundenanfragen sind die Hauptkostenquelle in einem Verbrauchsmodell, daher ist die Kontrolle des Kundenverhaltens entscheidend. Alle Clients sollten:
Vorab genehmigt sein. Vermeiden Sie die Bereitstellung des Diensts auf eine Weise, die kostenlosen Zugriff unterstützt. Beschränken Sie den Zugang sowohl durch Netzwerk- als auch durch Identitätskontrollen, wie z. B. Schlüssel oder rollenbasierte Zugriffssteuerung (RBAC).
Seien Sie selbstbeherrscht. Clients müssen die von den API-Aufrufen angebotenen Einschränkungen für Tokenbegrenzungen verwenden, z. B. max_tokens und max_completions.
Verwenden Sie die Batchverarbeitung, wo sie praktisch ist. Überprüfen Sie Clients, um sicherzustellen, dass sie entsprechende Batchaufforderungen ausführen.
Optimieren Sie die Eingabe- und Antwortlänge der Eingabeaufforderung. Längere Eingabeaufforderungen verbrauchen mehr Token, erhöhen die Kosten, aber Aufforderungen, die ausreichenden Kontext fehlen, helfen den Modellen nicht, gute Ergebnisse zu erzielen. Erstellen Sie präzise Eingabeaufforderungen, die genügend Kontext bereitstellen, damit das Modell eine nützliche Antwort generieren kann. Stellen Sie außerdem sicher, dass Sie den Grenzwert der Antwortlänge optimieren.
Die Nutzung des Azure OpenAI-Playgrounds sollte bei Bedarf und in Vorproduktionsinstanzen erfolgen, sodass für diese Aktivitäten keine Produktionskosten anfallen.
Wählen Sie das richtige KI-Modell aus. Die Modellauswahl spielt auch eine große Rolle bei den Gesamtkosten von Azure OpenAI. Alle Modelle haben Stärken und Schwächen und sind individuell bepreist. Verwenden Sie das richtige Modell für den jeweiligen Anwendungsfall, um sicherzustellen, dass Sie nicht zu viel Geld für ein teureres Modell ausgeben, wenn ein günstigeres Modell akzeptable Ergebnisse liefert. In dieser Chatreferenzimplementierung wurde GPT 3.5-Turbo über GPT-4 ausgewählt, um eine Größenordnung der Modellbereitstellungskosten zu sparen und dabei ausreichende Ergebnisse zu erzielen.
Informieren Sie sich über Abrechnungsunterbrechungen. Die Feinabstimmung wird pro Stunde berechnet. Um die größtmögliche Effizienz zu erreichen, sollten Sie möglichst viel der verfügbaren Zeit pro Stunde nutzen, um die Feinabstimmungsergebnisse zu verbessern, und gleichzeitig vermeiden, einfach in den nächsten Abrechnungszeitraum zu gelangen. Auch sind die Kosten für 100 Bilder aus der Bildgenerierung gleich hoch wie die Kosten für ein Bild. Maximieren Sie die Preisunterbrechungspunkte zu Ihrem Vorteil.
Machen Sie sich die Abrechnungsmodelle bewusst. Azure OpenAI ist über das Angebot bereitgestellter Durchsatz auch in einem verpflichtungsbasierten Abrechnungsmodell verfügbar. Wenn Sie vorhersehbare Nutzungsmuster haben, sollten Sie den Wechsel zu diesem Vorkaufsabrechnungsmodell in Betracht ziehen, wenn es bei Ihrem Nutzungsvolumen kostengünstiger ist.
Legegn Sie Bereitstellungsgrenzen fest. Stellen Sie sicher, dass alle Bereitstellungskontingente nur den Modellen zugewiesen werden, die voraussichtlich Teil der Workload sein werden, und zwar auf Modellbasis. Der Durchsatz für bereits bereitgestellte Modelle ist nicht auf dieses bereitgestellte Kontingent beschränkt, solange das dynamische Kontingent aktiviert ist. Die Kontingente stehen nicht in direktem Zusammenhang mit den Kosten, und diese Kosten können variieren.
Überwachen Sie die Pay-as-you-go-Nutzung. Wenn Sie nach dem Pay-as-you-go-Prinzip bezahlen, überwachen Sie die Nutzung von TPM und RPM. Verwenden Sie diese Informationen, um architektonische Designentscheidungen zu treffen, z. B. welche Modelle verwendet werden sollen, und um die Promptgrößen zu optimieren.
Überwachen Sie die Nutzung des bereitgestellten Durchsatzes. Wenn Sie bereitgestellten Durchsatz verwenden, überwachen Sie die Nutzung des bereitgestellten Durchsatzes, um sicherzustellen, dass Sie den bereitgestellten Durchsatz, den Sie erworben haben, nicht zu wenig nutzen.
Kostenverwaltung: Befolgen Sie die Anleitungen unter Verwendung von Kostenverwaltungsfeatures mit OpenAI, um die Kosten zu überwachen, Budgets zur Kostenverwaltung festzulegen und Warnmeldungen zu erstellen, um die Beteiligten über Risiken oder Anomalien zu informieren.
Optimaler Betrieb
Die Säule „Optimaler Betrieb“ deckt die Betriebsprozesse ab, die für die Bereitstellung einer Anwendung und deren Ausführung in der Produktion sorgen. Weitere Informationen finden Sie unter Erstellen einer Checkliste zur Überprüfung des optimalen Betriebs.
Integrierte prompt flow-Runtimes
Wie in der Basis-Architektur verwendet diese Architektur Automatic Runtime, um den Betriebsaufwand zu minimieren. Automatic Runtime ist eine Option für serverloses Computing innerhalb von Machine Learning, die die Compute-Verwaltung vereinfacht und den Großteil der prompt Flow-Konfiguration an die Datei requirements.txt
und die flow.dag.yaml
-Konfiguration der laufenden Anwendung delegiert. Dies macht diese Auswahl wartungsarm, kurzlebig und anwendungsorientiert. Für die Verwendung der Computeinstanz-Laufzeit oder des externen Compute wie in dieser Architektur ist ein stärker vom Workload-Team verwalteter Compute-Lebenszyklus erforderlich. Dieser sollte ausgewählt werden, wenn die Workloadanforderungen die Konfigurationsmöglichkeiten der automatischen Laufzeitoption überschreiten.
Überwachung
Wie bei der Basis-Architektur sind die Diagnosefunktionen für alle Dienste konfiguriert. Alle Dienste außer App Service sind so konfiguriert, dass sie alle Protokolle erfassen. App Service ist so konfiguriert, dass AppServiceHTTPLogs, AppServiceConsoleLogs, AppServiceAppLogs und AppServicePlatformLogs erfasst werden. In der Produktion sind alle Protokolle wahrscheinlich übermäßig groß. Optimieren Sie Protokolldatenströme auf Ihre betrieblichen Anforderungen. Für diese Architektur sind die Azure Machine Learning-Protokolle, die vom Azure AI Studio-Projekt verwendet werden, darunter: AmlComputeClusterEvent, AmlDataSetEvent, AmlEnvironmentEvent und AmlModelsEvent.For this architecture, the Azure AI Studio project that are of interest: AmlComputeClusterEvent, AmlDataSetEvent, AmlEnvironmentEvent, and AmlModelsEvent.
Evaluieren Sie die Erstellung benutzerdefinierter Alarme für die Ressourcen in dieser Architektur, wie sie in den Azure Monitor-Basisalarmen zu finden sind. Zum Beispiel:
Achten Sie darauf, die Verwendung von Token für Ihre Azure OpenAI-Modellbereitstellungen nachzuverfolgen. In dieser Architektur verfolgt der Prompt-Fluss die Tokennutzung durch seine Integration in Azure-App lication Insights.
Sprachmodellvorgänge
Die Bereitstellung für Azure OpenAI-basierte Chatlösungen wie diese Architektur sollte den Anleitungen in GenAIOps mit Prompt Flow mit Azure DevOps und GitHub folgen. Darüber hinaus müssen bewährte Verfahren für kontinuierliche Integration und kontinuierliche Bereitstellung (CI/CD) sowie netzwerkgesicherte Architekturen berücksichtigt werden. Die folgende Anleitung befasst sich mit der Implementierung von Flows und der zugehörigen Infrastruktur basierend auf den GenAIOps-Empfehlungen. Dieser Bereitstellungsleitfaden enthält nicht die Front-End-Anwendungselemente, die unverändert in der hochverwendeten zonenredundanten Webanwendungsarchitektur Baseline vorhanden sind.
Entwicklung
Der Eingabeaufforderungsfluss bietet sowohl eine browserbasierte Erstellungserfahrung in Azure AI Studio als auch über eine Visual Studio Code-Erweiterung. Beide Optionen speichern den Flowcode als Dateien. Wenn Sie Azure AI Studio verwenden, werden die Dateien in einem Speicherkonto gespeichert. Wenn Sie in Microsoft Visual Studio Code arbeiten, werden die Dateien in Ihrem lokalen Dateisystem gespeichert.
Um bewährte Methoden für die gemeinsame Entwicklung zu befolgen, sollten die Quelldateien in einem Onlinequellcode-Repository wie GitHub Standard enthalten sein. Dieser Ansatz erleichtert die Nachverfolgung aller Codeänderungen, die Zusammenarbeit zwischen Flowautoren und die Integration mit Bereitstellungsflows , die alle Codeänderungen testen und überprüfen.
Für die Unternehmensentwicklung sollten Sie die Microsoft Visual Studio Code-Erweiterung und das Prompt Flow SDK/CLI für die Entwicklung verwenden. Prompt-Flow-Autoren können ihre Flüsse aus Microsoft Visual Studio Code erstellen und testen und die lokal gespeicherten Dateien in das Online-Quellcodeverwaltungssystem und Pipelines integrieren. Während die browserbasierte Erfahrung gut für die explorative Entwicklung geeignet ist, kann sie mit einigen Arbeiten in das Quellcodeverwaltungssystem integriert werden. Der Flowordner kann von der Flowseite im Files
Bereich heruntergeladen, entzippt und an das Quellcodeverwaltungssystem übertragen werden.
Auswertung
Testen Sie die in einer Chatanwendung verwendeten Flows genauso wie andere Softwareartefakte. Es ist schwierig, eine einzige „richtige“ Antwort für die Ausgaben eines Sprachmodells festzulegen und durchzusetzen, aber Sie können ein Sprachmodell selbst zur Bewertung der Antworten verwenden. Erwägen Sie die Implementierung der folgenden automatisierten Auswertungen Ihrer Sprachmodellflows:
Klassifizierungsgenauigkeit: Bewertet, ob das Sprachmodell einen „richtigen“ oder „falschen“ Score abgibt, und fasst die Ergebnisse zusammen, um eine Genauigkeitsbewertung zu erstellen.
Kohärenz: Bewertet, wie gut die Sätze in der vorhergesagten Antwort eines Modells geschrieben werden und wie sie sich kohärent miteinander verbinden.
Fluency: Bewertet die vorhergesagte Antwort des Modells auf seine grammatikalische und sprachliche Genauigkeit.
Fundiertheit gegenüber Kontext: Bewertet, wie gut die vorhergesagten Antworten des Modells auf dem vorkonfigurierten Kontext basieren. Selbst wenn die Antworten des Sprachmodells korrekt sind, sind sie nicht fundiert, wenn sie nicht anhand des gegebenen Kontexts validiert werden können.
Relevanz: Bewertet, wie gut die vorhergesagten Antworten des Modells mit der gestellten Frage übereinstimmen.
Beachten Sie beim Implementieren automatisierter Auswertungen die folgenden Anleitungen:
Erstellen Sie Bewertungen aus Auswertungen, und messen Sie sie anhand eines vordefinierten Erfolgsschwellenwerts. Verwenden Sie diese Bewertungen, um Testdurchlauf/Fehler in Ihren Pipelines zu melden.
Einige dieser Tests erfordern vorkonfigurierte Dateneingaben von Fragen, Kontext und Grundwahrung.
Fügen Sie genügend Frage-Antwort-Paare ein, um sicherzustellen, dass die Ergebnisse der Tests zuverlässig sind, wobei mindestens 100-150 Paare empfohlen werden. Diese Frage-Antwort-Paare werden als Ihr "goldener Datensatz" bezeichnet. Abhängig von der Größe und Domäne Ihres Datensatzes ist möglicherweise eine größere Population erforderlich.
Vermeiden Sie die Verwendung von Sprachmodellen zur Generierung der Daten in Ihrem goldenen Datensatz.
Bereitstellungsflow
Der Aufforderungstechniker/Data-Wissenschaftler öffnet eine Featurebranch, in der sie an der spezifischen Aufgabe oder Funktion arbeiten. Der Prompt-Ingenieur/Datenwissenschaftler iteriert den Flow mithilfe des Prompt Flows für Microsoft Visual Studio Code, schreibt regelmäßig Änderungen fest und überträgt diese Änderungen an den Feature-Zweig.
Sobald die lokale Entwicklung und Experimente abgeschlossen sind, öffnet der Aufforderungstechniker/Data-Wissenschaftler eine Pull-Anforderung von der Feature-Verzweigung bis zur Hauptverzweigung. Der Pull Request (PR) löst eine PR-Pipeline aus. Diese Pipeline führt schnelle Qualitätsprüfungen durch, die Folgendes umfassen sollten:
- Ausführung von Experimentierabläufen
- Ausführung von konfigurierten Komponententests
- Kompilierung der Codebasis
- Analyse des statischen Codes
Die Pipeline kann einen Schritt enthalten, der mindestens ein Teammitglied benötigt, um die PR vor dem Zusammenführen manuell zu genehmigen. Der Genehmigende kann nicht der Commiter sein, und sie verfügen über ein promptes Flow-Know-how und vertraut mit den Projektanforderungen. Wenn die PR nicht genehmigt wird, wird die Zusammenführung blockiert. Wenn die PR genehmigt wurde oder kein Genehmigungsschritt vorhanden ist, wird die Featurebranch mit der Main-Verzweigung zusammengeführt.
Die Zusammenführung mit Main löst den Build- und Veröffentlichungsprozess für die Entwicklungsumgebung aus. Speziell:
- Die CI-Pipeline wird von der Zusammenführung zu Main ausgelöst. Die CI-Pipeline führt alle Schritte aus, die in der PR-Pipeline ausgeführt werden, und die folgenden Schritte:
- Experimentierflow
- Auswertungsflow
- Registriert die Flows in der Machine Learning-Registrierung, wenn Änderungen erkannt werden
- Die CD-Pipeline wird nach Abschluss der CI-Pipeline ausgelöst. Dieser Flow führt die folgenden Schritte aus:
- Stellt den Flow von der Machine Learning-Registrierung zu einem Machine Learning-Onlineendpunkt bereit
- Führt Integrationstests aus, die auf den Onlineendpunkt abzielen
- Führt Rauchtests aus, die auf den Onlineendpunkt abzielen
Ein Genehmigungsprozess ist in den Freigabeförderungsprozess integriert – nach Genehmigung werden die in den Schritten 4.a beschriebenen CI & CD-Prozesse verarbeitet. & 4.b. werden wiederholt und zielen auf die Testumgebung ab. Schritte a. und b. sind identisch, mit der Ausnahme, dass Benutzerakzeptanztests nach den Rauchtests in der Testumgebung ausgeführt werden.
Die in den Schritten 4.a beschriebenen CI- und CD-Prozesse. & 4.b. werden ausgeführt, um die Freigabe in die Produktionsumgebung zu fördern, nachdem die Testumgebung überprüft und genehmigt wurde.
Nach der Freigabe in eine Liveumgebung erfolgen die operativen Aufgaben der Überwachung von Leistungsmetriken und der Evaluierung der bereitgestellten Sprachmodelle. Dies umfasst u. a.:
- Erkennen von Datendrifts
- Beobachten der Infrastruktur
- Kostenverwaltung
- Kommunikation der Leistung des Modells an Projektbeteiligte
Hinweise zur Bereitstellung
Sie können Machine Learning-Endpunkte verwenden, um Modelle auf eine Weise bereitzustellen, die Flexibilität bei der Freigabe für die Produktion ermöglicht. Berücksichtigen Sie die folgenden Strategien, um die beste Modellleistung und -qualität sicherzustellen:
Blaue/grüne Bereitstellungen: Mit dieser Strategie können Sie Ihre neue Version des Webdiensts sicher für eine begrenzte Gruppe von Benutzern oder Anforderungen bereitstellen, bevor Sie den gesamten Datenverkehr an die neue Bereitstellung weiterleiten.
A/B-Tests: Blau/Grün-Bereitstellungen sind nicht nur effektiv für die sichere Einführung von Änderungen, sie können auch für die Einführung neuer Verhaltensweisen verwendet werden, die es einer Teilgruppe von Benutzer*innen ermöglichen, die Auswirkungen der Änderung zu bewerten.
Schließen Sie das Linting von Python-Dateien ein, die Teil des Aufforderungsflows in Ihre Pipelines sind. Linting überprüft die Einhaltung von Stilstandards, Fehlern, Codekomplexität, nicht verwendeten Importen und Variablenbenennung.
Wenn Sie Ihren Flow im netzwerkisolierten Machine Learning-Arbeitsbereich bereitstellen, verwenden Sie einen selbst gehosteten Agenten, um Artefakte auf Ihren Azure Ressourcen bereitzustellen.
Die Machine Learning-Modellregistrierung sollte nur aktualisiert werden, wenn es Änderungen am Modell gibt.
Die Sprachmodelle, die Flows und die Client-Benutzeroberfläche sollten lose gekoppelt sein. Aktualisierungen der Flows und der Client-UI können und sollten ohne Auswirkungen auf das Modell vorgenommen werden können und umgekehrt.
Wenn Sie mehrere Flows entwickeln und bereitstellen, sollte jeder Flow seinen eigenen Lebenszyklus haben, was eine lose Kopplung bei der Übertragung von Flows von der Erprobung zur Produktion ermöglicht.
Infrastruktur
Wenn Sie die grundlegenden Azure OpenAI End-to-End-Chatkomponenten bereitstellen, sind einige der bereitgestellten Dienste grundlegend und dauerhaft in der Architektur, während andere Komponenten eher kurzlebiger Natur sind und ihre Existenz an eine Bereitstellung gebunden ist. Außerdem wird das verwaltete virtuelle Netzwerk automatisch bereitgestellt, wenn Sie eine Computeinstanz erstellen, die zu einigen Überlegungen führt.
Grundlegende Komponenten
Einige Komponenten in dieser Architektur sind mit einem Lebenszyklus vorhanden, der über jeden einzelnen Aufforderungsflow oder eine Modellbereitstellung hinausgeht. Diese Ressourcen werden in der Regel einmal im Rahmen der grundlegenden Bereitstellung durch das Workloadteam bereitgestellt und abgesehen von neuen, entfernten oder Aktualisierungen der Aufforderungsflows oder Modellbereitstellungen verwaltet.
- Machine Learning-Arbeitsbereich
- Speicherkonto für den Machine Learning-Arbeitsbereich
- Container Registry
- KI-Suche
- Azure OpenAI
- Azure Application Insights
- Azure Bastion
- Azure Virtual Machine für die Jumpbox
Kurzlebige Komponenten
Einige Azure-Ressourcen sind enger an die Gestaltung bestimmter Prompt Flows gekoppelt. Mit diesem Ansatz können diese Ressourcen an den Lebenszyklus der Komponente gebunden und in dieser Architektur kurzlebig werden. Azure-Ressourcen sind betroffen, wenn sich die Workload ändert, z. B. wenn Flows hinzugefügt oder entfernt werden oder wenn neue Modelle eingeführt werden. Diese Ressourcen werden neu erstellt und vorherige Instanzen entfernt. Einige dieser Ressourcen sind direkte Azure-Ressourcen und einige sind Datenebenen-Manifestationen innerhalb ihres enthaltenden Diensts.
Das Modell in der Machine Learning-Modellregistrierung sollte im Rahmen der CD-Pipeline aktualisiert werden, wenn es geändert wird.
Das Containerimage sollte im Rahmen der CD-Pipeline in der Container Registry aktualisiert werden.
Ein Machine Learning-Endpunkt wird bei der Bereitstellung eines Prompt Flows erstellt, wenn die Bereitstellung auf einen Endpunkt verweist, der nicht vorhanden ist. Dieser Endpunkt muss aktualisiert werden, um den öffentlichen Zugriff zu deaktivieren.
Die Bereitstellungen des Machine Learning-Endpunkts werden aktualisiert, wenn ein Flow bereitgestellt oder gelöscht wird.
Der Key Vault für die Client-UI muss mit dem Schlüssel zum Endpunkt aktualisiert werden, wenn ein neuer Endpunkt erstellt wird.
Bei Bedarf verwaltetes virtuelles Netzwerk
Das verwaltete virtuelle Netzwerk wird automatisch bereitgestellt, wenn Sie zuerst eine Computeinstanz erstellen. Wenn Sie die Infrastruktur als Code zum Bereitstellen Ihres Hubs verwenden und keine AI Studio-Computeressourcen in Bicep haben, wird das verwaltete virtuelle Netzwerk nicht bereitgestellt, und Beim Herstellen einer Verbindung mit Azure AI Studio wird eine Fehlermeldung angezeigt. Sie müssen eine einmalige Aktion ausführen, um das verwaltete virtuelle Netzwerk nach ihrer IaC-Bereitstellung manuell bereitzustellen.
Ressourcenorganisation
Wenn Sie ein Szenario haben, in dem der Hub zentral einem anderen Team als dem Workloadteam gehört, können Sie Projekte für separate Ressourcengruppen bereitstellen. Wenn Sie die Infrastrukturstruktur als Code verwenden, können Sie dies erreichen, indem Sie eine andere Ressourcengruppe in der Bicep festlegen. Wenn Sie das Portal verwenden, können Sie die defaultWorkspaceResourceGroup
Eigenschaft unter der workspaceHubConfig
Ressourcengruppe festlegen, die Ihren Projekten erstellt werden soll.
Effiziente Leistung
Leistungseffizienz ist die Fähigkeit Ihrer Workload, eine effiziente Skalierung entsprechend den Anforderungen der Benutzer auszuführen. Weitere Informationen finden Sie unter Erstellen einer Checkliste zur Überprüfung der Leistungseffizienz.
Dieser Abschnitt beschreibt die Leistungseffizienz aus der Perspektive von Azure Search, Azure OpenAI und Machine Learning.
Azure Search – Leistungseffizienz
Folgen Sie der Anleitung zur Analyse der Leistung in AI Search.
Azure OpenAI – Leistungseffizienz
Bestimmen Sie, ob Ihre Anwendung bereitgestellten Durchsatz oder das Shared-Hosting- oder Verbrauchsmodell benötigt. Der bereitgestellte Durchsatz gewährleistet reservierte Verarbeitungskapazitäten für Ihre OpenAI-Modellimplementierungen, was eine vorhersehbare Leistung und einen vorhersehbaren Durchsatz für Ihre Modelle ermöglicht. Dieses Abrechnungsmodell unterscheidet sich vom Shared-Hosting- oder Verbrauchsmodell. Beim Verbrauchsmodell handelt es sich um ein Best-Effort-Modell, das möglicherweise durch den Noisy-Neighbor-Effekt oder andere Stressfaktoren auf der Plattform beeinträchtigt wird.
Überwachen Sie die durch Bereitstellung verwaltete Nutzung für den bereitgestellten Durchsatz.
Machine Learning – Leistungseffizienz
Wenn Sie auf Onlineendpunkten für Machine Learning bereitstellen:
Befolgen Sie die Anleitung zur Autoskalierung eines Onlineendpunkts. Auf diese Weise können Sie sich eng an der Nachfrage orientieren, ohne dass es zu einer Überbereitstellung kommt, insbesondere in Zeiten geringer Nutzung.
Wählen Sie die entsprechende SKU des virtuellen Computers für den Onlineendpunkt aus, um Ihre Leistungsziele zu erfüllen. Testen Sie die Leistung einer geringeren Instanzanzahl und größerer SKUs im Vergleich zu einer größeren Instanzanzahl und kleineren SKUs, um eine optimale Konfiguration zu finden.
Bereitstellen dieses Szenarios
Führen Sie zum Bereitstellen und Ausführen der Referenzimplementierung die Schritte in der End-to-End-Referenzimplementierung von OpenAI aus.
Beitragende
Dieser Artikel wird von Microsoft gepflegt. Er wurde ursprünglich von folgenden Mitwirkenden geschrieben:
- Rob Bagby | Patterns & Practices – Microsoft
- Freddy Ayala | Cloud Solution Architect - Microsoft
- Prabal Deb | Senior Software Engineer - Microsoft
- Raouf Aliouat | Software Engineer II - Microsoft
- Ritesh Modi | Principal Software Engineer - Microsoft
- Ryan Pfalz | Senior Solution Architect - Microsoft
Melden Sie sich bei LinkedIn an, um nicht öffentliche LinkedIn-Profile anzuzeigen.