Die KI-Grafiklösung von Amazon Cloud Technology für den Spielbetrieb

Da KI-Mapping-Lösungen wie Stable Diffusion allmählich an Popularität gewinnen, werden immer mehr Szenarien entwickelt und implementiert. Unter anderem wird das Szenario der KI-fotogenerierenden Marketingaktivitäten für C-Side-Spieler von Spielen schrittweise verifiziert: In einer bestimmten Spiele-Community laden Spieler mit einem Klick ein Foto von ihrem Mobiltelefon hoch, und die KI erkennt automatisch die Elemente darin Fotos hinzufügen und durch solche im Spiel ersetzen. Die entsprechenden Charaktere oder Gegenstände sowie die ersetzten Fotos können von den Spielern weiter verbreitet werden und so den Einfluss des Ereignisses vergrößern. Solche Aktivitäten wurden bei der Veröffentlichung neuer Spielversionen, Ausstellungen und anderen Szenarien eingesetzt, wodurch die Bindung zwischen Spielern und Spielen effektiv erhöht werden kann, sodass Spieler zu Botschaftern der Spielwerbung werden und neue Spieler für das Spiel gewinnen können.

 In diesem Artikel wird erläutert, wie eine Lösungsstruktur effizient aufgebaut werden kann – Spiel-KI-Mapping-Aktivitäten. Im Folgenden sind die wichtigsten Punkte aufgeführt:

  • Enthält das KI-Modell des Spielstils und der Materialien und debuggt den entsprechenden Inferenzalgorithmus.

  • Clients, die Spieler effektiv erreichen, können der Spiele-Client selbst oder soziale Medien sein, beispielsweise gemeinsame Treffpunkte für Gamer wie Discord im Ausland und Fanbook und WeChat im Inland.

  • Eine Reihe von Back-End-Architekturen, die sich schnell skalieren lassen, um hohe und gleichzeitige Grafikanforderungen zu verarbeiten: Diese Lösung verwendet EKS, das mit Komponenten wie EFS, Bottlerocket, GPU-Time-Slicing-Virtualisierung und Karpenter als Back-End-Architektur ausgestattet ist Demonstration.

 Lösungsarchitektur

 Der Plan lässt sich grob in zwei Teile gliedern:

 Client- und Anforderungszugriffsschicht:

 Zuerst wählen wir Discord als unseren Kunden. Discord ist eine Service-Software, die Sprach-, Video- und Text-Chat integriert. Es diente zunächst der Videospiel-Community, wird aber mittlerweile auch in den Bereichen KI, Web 3.0, Kunst, Musik und anderen Bereichen eingesetzt. Benutzer können auf Discord verschiedene Arten von Servern erstellen und diesen beitreten, um in Echtzeit mit anderen Benutzern zu chatten und zu kommunizieren. Der Discord-Server ist die Kernfunktion von Discord. Jeder Server kann auch einen eigenen Kanal haben. Benutzer können in dem Kanal Text-, Sprach- und Video-Chats in Echtzeit mit anderen Benutzern führen. In unserem Szenario initiieren die Spieler über diese Kanäle Bildgenerierungsanfragen und leiten sie über den Discord-Server an die Zugriffsebene weiter.

 Die Zugriffsschicht implementiert einen Discord-Bot, der zwei Funktionen enthält: 1. Aktualisieren Sie den Befehl. Der Befehl wird verwendet, um Spieler bei der einfachen Eingabe von Fotos und Aufforderungswörtern zu unterstützen und die entsprechenden Ausgabefotos zu erhalten. 2. Anfragen von Spielern filtern und zunächst verarbeiten, innerhalb von 3 Sekunden eine vorläufige Antwort geben (Discord-Protokollbestimmungen) und qualifizierte Anfragen, die Grafiken erfordern, an SQS weiterleiten.

 Die Implementierung des Discord-Bots auf der Zugriffsebene bezieht sich auf Amazon Blog: Eine elastische Bereitstellung von Stable Diffusion mit Discord auf AWS. Es verwendet die serverlose Architektur von API Gateway+Lambda. Diese Architektur bietet ereignisgesteuerte Computerdienste, die Benutzer nicht benötigen um sie voreinzustellen. Der Server kann schnell automatisch skalierende Programme erstellen. Der Discord-Bot stellt das Produktionsende der SQS-Nachrichtenwarteschlange dar. Er verwendet SQS, um eine Entkopplung von der Back-End-KI-Argumentationsschicht zu erreichen.

 Backend-KI-Inferenzcluster:

 Die Verbraucherseite von SQS basiert auf dem auf EKS basierenden Back-End-KI-Inferenzcluster.

 Erstens handelt es sich um ein Controller-Modul, das Nachrichten von Spielern und entsprechende Nachrichtenrückrufschnittstellen von SQS verarbeitet und die Nachrichten dann entsprechend den Kanälen an verschiedene Stable Diffusion (SD)-Graphgenerierungsdienste verteilt. Nachdem die Graphgenerierung abgeschlossen ist, wird dies der Fall sein Senden Sie dann die generierten Bilder und andere Ergebnisse an die angegebene Nachrichtenrückrufschnittstelle. An diesem Punkt ist die Bildanfrage eines Spielers endgültig abgeschlossen.

 Zweitens gibt es den sd-svc-Dienst. Jeder Dienst hostet eine Kombination unserer voreingestellten Stable Diffusion-Modelle und -Algorithmen. Im Rest dieses Artikels werden wir AUTOMATIC1111/stable-diffusion-webui verwenden, um unsere Modelle und Algorithmen zu hosten. AUTOMATIC1111/stable-diffusion-webui ist eine derzeit beliebte Tool-Anwendung auf Basis von Stable Diffusion, mit der Sie problemlos Texte und Grafiken erstellen und Plug-Ins aus verschiedenen Communities wie LoRA und ControlNet integrieren können. Es verfügt über eine eigene Webschnittstelle und unterstützt auch den Web-API-Zugriff. In diesem Artikel wird die Web-API für den Zugriff verwendet.

 Was die Modellauswahl betrifft, werden wir ein vorab trainiertes Modell rpg_V4.safetensors mit World of Warcraft-Spielmaterialien und ein ControlNet Canny-Modell control_v11p_sd15_canny als Demonstration auswählen. In tatsächlichen Projekten können Sie die Spielmaterialien auch verwenden, um ein Modell mit den Eigenschaften des Spiels basierend auf dem tatsächlichen Spiel zu trainieren (das Training des Stable Diffusion-Modells steht nicht im Mittelpunkt dieses Artikels. Wenn Sie interessiert sind, können Sie darauf verweisen zum Trainieren eines Diffusionsmodells wie der Hugging Face-Modelldokumentation).

 In Szenarien, die sich an C-Seite-Gamer richten, ist die Bereitstellung von Diensten mit hoher Parallelität und gleichzeitiger Berücksichtigung der Kosteneffizienz ein unvermeidbares Thema. Aus diesem Grund haben wir die folgenden Optimierungen vorgenommen:

  • Bottlerocket-Images-Cache + Hochleistungs-EBS: Erzielen Sie eine schnelle Clustererweiterung. Der allgemeine Erweiterungsprozess lautet: Einen neuen Knoten anfordern → Knoten starten und initialisieren → Pod starten → Container-Image abrufen → Prozessinitialisierung starten → Dienste bereitstellen. Da das von Stable Diffusion verwendete Pytorch-Framework und die entsprechenden abhängigen Toolkits und Modelle verwendet werden sind sehr groß. Ein Image, das diese vollständigen Toolketten + Modelle enthält, erreicht oft mehr als 10 G. Darüber hinaus hat die Stable Diffusion-WebUI selbst beim ersten Start einen Initialisierungsprozess, der dazu führt, dass der Cluster-Erweiterungsprozess langsam ist. Eine Erweiterung oft Dauert länger als 10 Minuten. . Diese Art der Expansionsgeschwindigkeit scheint in C-seitigen Szenarien hinterherzuhinken. Unser Ansatz besteht darin, das optimierte Container-Image im Voraus voreinzustellen und mithilfe von Bottlerocket-Image-Cache aus dem Image einen Snapshot zu erstellen. Als Volume wird es beim Start vom Knoten gemountet. Gleichzeitig wird der E/A-Durchsatz des Volumes erhöht wird entsprechend verbessert und spart dadurch Geld. Viel Inbetriebnahme- und Initialisierungszeit. In unserer experimentellen Umgebung werden insgesamt 13 GB (Laufumgebung 78 G + 2 G Checkpoint-Modelldatei + 1,3 G ControlNet-Modelldatei) optimiert und mit GP3 ​​EBS mit einem IO-Durchsatz von 500 MB gepaart, vom anfordernden Knoten bis zum Beginn der Bereitstellung von Diensten (CKPT). Modell geladen) Es dauerte insgesamt 1:40 Minuten.

  • EFS: Implementiert die Speicherung und das dynamische Laden von Modelldateien. Alle Pods können den Effekt des dynamischen Ladens von Modellen erzielen, indem sie dasselbe EFS-Dateisystem bereitstellen, und das Betriebs- und Wartungspersonal muss nur eine Modelldatei verwalten. Gleichzeitig gewährleistet der hervorragende E/A-Durchsatz (Gbit/s-Niveau) von EFS auch die Geschwindigkeit beim Laden des Modells.

  • GPU-Sharding: Verbessern Sie die GPU-Nutzung und senken Sie die Kosten. Wenn die Leistung der von Ihnen gewählten GPU-Karte sehr hoch ist und die KI-Inferenzaufgaben relativ einfach sind und die GPU-Karte nicht vollständig belegen können, können Sie erwägen, eine GPU-Karte für mehrere Inferenzaufgaben gleichzeitig wiederzuverwenden, um die Auslastung zu erhöhen der GPU-Karte. Die Time-Slicing-Funktion von NVIDIA/k8s-device-plugin kann zur einfachen Verwaltung der Rechenleistung der GPU genutzt werden. In unserer experimentellen Umgebung haben wir ein Grafikkartenmodell A10g in 3 Shards aufgeteilt und auf jedem Shard wurde ein Pod ausgeführt. Wenn die Inferenzaufgaben kontinuierlich voll ausgelastet sind, kann die GPU-Auslastung verbessert werden. 9 % (für Aufgaben mit der gleichen Arbeitslast, die gesamte Fertigstellungszeit wird um 11,9 % verkürzt.

  • Karpenter+Spot: Höhere Clusterauslastung gepaart mit besseren Kostenlösungen optimieren die Kosten weiter.

 Zusammenfassen

 Im Gaming-Bereich sind KI-generierte Image-Marketing-Kampagnen auf dem Vormarsch. Basierend auf der Lösungsarchitektur werden in diesem Artikel technische Lösungen für spielerorientierte KI-Mapping-Aktivitäten erörtert. Durch die Einführung des AIGC-Fotogenerierungsdienstes auf Plattformen wie Discord können Spieler Fotos in Spielelemente umwandeln und so die Interaktion und Werbeeffekte verbessern. Zusammen verbessern diese Innovationen die Kampagnenleistung und Skalierbarkeit, sorgen für ein reibungsloses und personalisiertes Erlebnis für die Spieler und senken gleichzeitig die Betriebskosten.

Ich denke du magst

Origin blog.csdn.net/caijingshiye/article/details/132870506
Empfohlen
Rangfolge