Ce projet fournit un ensemble de démarrages rapides visant à accélérer l'intégration et la personnalisation de GenAI dans les environnements de jeu en direct à l'aide des produits Google Cloud et des solutions de jeu open source.
Dans l’industrie du jeu vidéo d’aujourd’hui, il est crucial d’offrir une expérience personnalisée et engageante aux joueurs. Ce projet offre aux développeurs de jeux un ensemble de ressources de démarrage rapide pour les aider à intégrer les fonctionnalités GenAI dans leurs environnements de jeu en direct. En tirant parti des produits Google Cloud et des solutions de jeu open source, vous pouvez améliorer l'engagement des joueurs, débloquer de nouveaux cas d'utilisation avec l'IA générative et créer des expériences de jeu mémorables.
REMARQUE : Il s'agit d'un référentiel en évolution rapide et en cours d'adaptation pour une variété de cas d'utilisation. Si vous souhaitez contribuer ou remarquer des bugs, veuillez ouvrir un problème et/ou n'hésitez pas à soumettre un PR pour examen.
Si vous utilisez ce projet, veuillez ★Starter ce référentiel pour montrer votre intérêt !
Dossier | Description |
---|---|
terraformer | Scripts de déploiement d'infrastructure basés sur Terraform |
exemples | Démarrages rapides individuels qui peuvent être testés et déployés en fonction de votre cas d'utilisation |
src | Code source principal utilisé dans le cadre de nos démarrages rapides |
Les étapes suivantes ci-dessous vous guideront à travers le guide de configuration de GenAI Quickstart . Le processus consistera à activer les API Google Cloud appropriées, à créer les ressources via Terraform et à déployer les manifestes Kubernetes nécessaires à l'exécution du projet.
Remarque : Ces étapes supposent que vous disposez déjà d'un projet en cours d'exécution dans Google Cloud pour lequel vous disposez des autorisations IAM dans lesquelles déployer des ressources.
git clone https://github.com/googleforgames/GenAI-quickstart.git
cd GenAI-quickstart
Définir votre ID de projet unique pour Google Cloud
# 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.
Définir l'emplacement par défaut pour Google Cloud
export LOCATION=us-central1
Pour mieux suivre ce guide de démarrage rapide, définissez la variable d'environnement CUR_DIR
export CUR_DIR=$(pwd)
gcloud auth list
Vérifiez si votre authentification est correcte et votre PROJECT_ID
est valide.
gcloud projects describe ${PROJECT_ID:?}
Vous devriez voir votre PROJECT_ID
répertorié avec un état ACTIVE
.
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
Le déploiement des ressources cloud peut prendre entre 5 et 10 minutes. Pour une vue détaillée des ressources déployées, voir README dans le répertoire terraform
.
Une fois les ressources cloud déployées avec succès avec Terraform, obtenez les informations d'identification du cluster GKE nouvellement créé.
gcloud container clusters get-credentials genai-quickstart --region us-central1 --project ${PROJECT_ID:?}
Testez vos informations d'identification client Kubernetes.
kubectl get nodes
Basculez vers le répertoire genai
et affichez les modèles communs qui utilisent votre identifiant de projet unique.
# 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} " ;
Créez et exécutez des charges de travail GenAI avec Skaffold
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
Une fois les charges de travail déployées, vous pouvez plutôt utiliser des déploiements GPU :
# 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.
Vous pouvez également exécuter les backends individuels de manière isolée :
# 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
Accédez à l'API - Vous pouvez tester l'application et toutes les API à partir d'ici :)
Le cluster crée un équilibreur de charge réseau (ILB) interne. Pour accéder aux API, exécutez :
kubectl port-forward svc/genai-api -n genai 8080:80
puis dans une autre fenêtre, exécutez :
export EXT_IP=localhost:8080
echo "Browse to http://${EXT_IP}/genai_docs to try out the GenAI APIs!"
puis accédez à l'URL dans votre navigateur.
Testez l'API en utilisant 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?"}'
Ou testez l'API à l'aide du conteneur api-caller
à l'intérieur du 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?
Dans l'annuaire genai
cd ${CUR_DIR:?}/genai
skaffold delete
Dans le répertoire terraform
cd ${CUR_DIR:?}/terraform
terraform destroy
Si vous n'exécutez pas le projet ci-dessus dans Google Cloud Shell, assurez-vous d'être connecté et authentifié auprès du projet souhaité :
gcloud auth application-default login
gcloud config set project ${PROJECT_ID:?}
et suivez le flux d'authentification.
L'intégralité du dépôt peut être clonée et utilisée telle quelle, ou dans de nombreux cas, vous pouvez choisir de créer ce dépôt et de conserver la base de code la plus utile et la plus pertinente pour votre cas d'utilisation. Si vous souhaitez contribuer, vous trouverez plus d'informations dans notre guide de contribution.