Dieses Projekt bietet eine Reihe von Schnellstarts, die darauf abzielen, die GenAI-Integration und Personalisierung in Live-Spielumgebungen mithilfe von Google Cloud-Produkten und Open-Source-Gaming-Lösungen zu beschleunigen.
In der heutigen Gaming-Branche ist es von entscheidender Bedeutung, den Spielern ein personalisiertes und ansprechendes Erlebnis zu bieten. Dieses Projekt bietet Spieleentwicklern eine Reihe von Schnellstartressourcen, die ihnen dabei helfen, GenAI-Funktionen in ihre Live-Spielumgebungen zu integrieren. Durch die Nutzung von Google Cloud-Produkten und Open-Source-Gaming-Lösungen können Sie das Spielerengagement steigern, neue Anwendungsfälle mit generativer KI erschließen und unvergessliche Spielerlebnisse schaffen.
HINWEIS: Dies ist ein sich schnell entwickelndes Repo, das für eine Vielzahl von Anwendungsfällen angepasst wird. Wenn Sie einen Beitrag leisten möchten oder Fehler bemerken, öffnen Sie bitte ein Problem und/oder reichen Sie gerne eine PR zur Überprüfung ein.
Wenn Sie dieses Projekt verwenden, ★markieren Sie dieses Repository bitte, um Ihr Interesse zu zeigen!
Ordner | Beschreibung |
---|---|
Terraform | Auf Terraform basierende Infrastrukturbereitstellungsskripte |
Beispiele | Individuelle Schnellstarts, die je nach Anwendungsfall getestet und bereitgestellt werden können |
src | Kernquellcode, der als Teil unserer Schnellstarts verwendet wird |
Die folgenden Schritte führen Sie durch die Einrichtungsanleitung für GenAI Quickstart . Der Prozess umfasst die Aktivierung der richtigen Google Cloud-APIs , die Erstellung der Ressourcen über Terraform und die Bereitstellung der Kubernetes-Manifeste , die zum Ausführen des Projekts erforderlich sind.
Hinweis: Bei diesen Schritten wird davon ausgegangen, dass Sie bereits über ein laufendes Projekt in Google Cloud verfügen, für das Sie über IAM-Berechtigungen zum Bereitstellen von Ressourcen verfügen.
git clone https://github.com/googleforgames/GenAI-quickstart.git
cd GenAI-quickstart
Legen Sie Ihre eindeutige Projekt-ID für Google Cloud fest
# To just use your current project
export PROJECT_ID=$(gcloud config list --format 'value(core.project)' 2>/dev/null)
# Otherwise set it to the project you wish to use.
Legen Sie den Standardstandort für Google Cloud fest
export LOCATION=us-central1
Um dieser Schnellstartanleitung besser folgen zu können, legen Sie die Umgebungsvariable CUR_DIR
fest
export CUR_DIR=$(pwd)
gcloud auth list
Überprüfen Sie, ob Ihre Authentifizierung in Ordnung ist und Ihre PROJECT_ID
gültig ist.
gcloud projects describe ${PROJECT_ID:?}
Ihre PROJECT_ID
sollte mit dem Status ACTIVE
aufgelistet sein.
gcloud services enable --project ${PROJECT_ID:?}
aiplatform.googleapis.com
artifactregistry.googleapis.com
cloudbuild.googleapis.com
cloudresourcemanager.googleapis.com
compute.googleapis.com
container.googleapis.com
containerfilesystem.googleapis.com
containerregistry.googleapis.com
iam.googleapis.com
servicecontrol.googleapis.com
spanner.googleapis.com
cd ${CUR_DIR:?}/terraform
cat terraform.example.tfvars | sed -e "s:your-unique-project-id:${PROJECT_ID:?}:g" > terraform.tfvars
terraform init
terraform plan
terraform apply
Die Bereitstellung von Cloud-Ressourcen kann zwischen 5 und 10 Minuten dauern. Eine detaillierte Ansicht der bereitgestellten Ressourcen finden Sie in der README-Datei im terraform
-Verzeichnis.
Nachdem Cloud-Ressourcen erfolgreich mit Terraform bereitgestellt wurden, erhalten Sie neu erstellte GKE-Cluster-Anmeldeinformationen.
gcloud container clusters get-credentials genai-quickstart --region us-central1 --project ${PROJECT_ID:?}
Testen Sie die Anmeldeinformationen Ihres Kubernetes-Clients.
kubectl get nodes
Wechseln Sie in das genai
-Verzeichnis und rendern Sie allgemeine Vorlagen, die Ihre eindeutige Projekt-ID verwenden.
# Find all files named .template.yaml, replace `your-unique-project-id` with PROJECT_ID, and output to .yaml.
cd ${CUR_DIR:?}/genai && find common -type f -name "*.template.yaml" -exec
bash -c "template_path={}; sed "s:your-unique-project-id:${PROJECT_ID:?}:g" < ${template_path} > ${template_path/%.template.yaml/.yaml} " ;
Erstellen und führen Sie GenAI-Workloads mit Skaffold aus
gcloud auth configure-docker ${LOCATION:?}-docker.pkg.dev
export SKAFFOLD_DEFAULT_REPO=${LOCATION:?}-docker.pkg.dev/${PROJECT_ID:?}/repo-genai-quickstart
cd ${CUR_DIR:?}/genai
# To run all apis and models (requires a GPU node for stable-diffusion)
skaffold run --build-concurrency=0
Nachdem Workloads bereitgestellt wurden, können Sie stattdessen zur Verwendung von GPU-Bereitstellungen wechseln:
# Scale up a 2xL4 Mixtral 8x7B Deployment:
kubectl scale -n genai deployment huggingface-tgi-mixtral-small --replicas=1
# Or scale up a 8xL4 Mixtral 8x7B Deployment:
kubectl scale -n genai deployment huggingface-tgi-mixtral-big --replicas=1
# Scale down CPU Deployment:
kubectl scale -n genai deployment huggingface-tgi-mistral-cpu --replicas=0
# Note that the `huggingface-tgi-api` Service matches all of the huggingface-tgi-*
# Deployments, so if you have multiple replicas running, it will load balance
# between them.
Sie können die einzelnen Backends auch isoliert betreiben:
# To run only stable-diffusion (requires a GPU node)
#skaffold run --module stable-diffusion-api-cfg,stable-diffusion-endpt-cfg
# To run only Vertex chat (Vertex AI is required)
#skaffold run --module vertex-chat-api-cfg
Greifen Sie auf die API zu – Sie können die Anwendung und alle APIs von hier aus testen :)
Der Cluster erstellt einen internen Passthrough Network Load Balancer (ILB). Um auf die APIs zuzugreifen, führen Sie Folgendes aus:
kubectl port-forward svc/genai-api -n genai 8080:80
Führen Sie dann in einem anderen Fenster Folgendes aus:
export EXT_IP=localhost:8080
echo "Browse to http://${EXT_IP}/genai_docs to try out the GenAI APIs!"
und navigieren Sie dann in Ihrem Browser zur URL.
Testen Sie die API mit curl
:
curl -X 'POST' "http://${EXT_IP}/genai/text"
-H 'accept: application/json'
-H 'Content-Type: application/json'
-d '{"prompt": "Who are the founders of Google?"}'
Oder testen Sie die API mithilfe des api-caller
Containers im Cluster:
# See available service endpoints. The `genai` endpoint wraps them all.
kubectl get svc -ngenai
# Start `api-caller` pod interactively
kubectl run -it -ngenai --rm --restart=Never api-caller --image=${SKAFFOLD_DEFAULT_REPO}/api-caller:latest
# Examples:
# See available example scripts
root@api-caller:/app# ls
embeddings.py genai_api.py huggingface_tgi.py npc_chat_api.py stable_diffusion_api.py vertex_chat_api.py vertex_code_api.py vertex_gemini_api.py vertex_image_api.py vertex_text_api.py
# The genai_api script works for text prompts
root@api-caller:/app# python3 genai_api.py --endpoint=http://genai-api/genai/text --prompt "Describe a wombat"
INFO:root:Status Code: 200
INFO:root:Response: "A wombat is a marsupial native to Australia. [...]"
# To try the Smart NPC, first reset the world data:
root@api-caller:/app# python3 npc_chat_api.py --endpoint http://genai-api/genai/npc_chat/reset_world_data --empty
INFO:root:Status Code: 200
INFO:root:Response: {"status":"ok"}
# Then you can use the interactive chat:
root@api-caller:/app# python3 npc_chat_api.py --endpoint http://genai-api/genai/npc_chat --chat
>>> hey, how are you?
<<< I am doing my best here at the distribution center. It's a tough situation, but I am staying focused on helping those in need. How about you? How are you holding up?
# You can also interact with the services underneath, e.g.: Hugging Face TGI supports an interactive chat
root@api-caller:/app# python3 huggingface_tgi.py --endpoint=http://huggingface-tgi-api:8080/v1
>>> hello!
INFO:httpx:HTTP Request: POST http://huggingface-tgi-api:8080/v1/chat/completions "HTTP/1.1 200 OK"
<<< Hello! How can I help you today? If you have any questions or need assistance with something, feel free to ask and I'll do my best to help. If you just want to chat, we can talk about pretty much anything. What's on your mind?
Im genai
Verzeichnis
cd ${CUR_DIR:?}/genai
skaffold delete
Im terraform
Verzeichnis
cd ${CUR_DIR:?}/terraform
terraform destroy
Wenn Sie das oben genannte Projekt nicht in der Google Cloud Shell ausführen, stellen Sie sicher, dass Sie angemeldet und bei Ihrem gewünschten Projekt authentifiziert sind:
gcloud auth application-default login
gcloud config set project ${PROJECT_ID:?}
und folgen Sie dem Authentifizierungsablauf.
Das gesamte Repo kann geklont und unverändert verwendet werden. In vielen Fällen können Sie sich auch dafür entscheiden, dieses Repo zu forken und die Codebasis beizubehalten, die für Ihren Anwendungsfall am nützlichsten und relevantesten ist. Wenn Sie einen Beitrag leisten möchten, finden Sie weitere Informationen in unserem Beitragsleitfaden.