Proyek ini menyediakan serangkaian panduan mulai cepat yang bertujuan untuk mempercepat integrasi dan personalisasi GenAI dalam lingkungan game langsung menggunakan produk Google Cloud dan solusi game sumber terbuka.
Dalam industri game saat ini, memberikan pengalaman yang dipersonalisasi dan menarik bagi para pemain sangatlah penting. Proyek ini menawarkan kepada pengembang game serangkaian sumber daya mulai cepat untuk membantu mereka mengintegrasikan kemampuan GenAI ke dalam lingkungan game langsung mereka. Dengan memanfaatkan produk Google Cloud dan solusi game sumber terbuka, Anda dapat meningkatkan interaksi pemain, membuka kasus penggunaan baru dengan AI Generatif, dan menciptakan pengalaman bermain game yang berkesan.
CATATAN: Ini adalah repo yang berkembang pesat dan diadaptasi untuk berbagai kasus penggunaan. Jika Anda ingin berkontribusi atau melihat adanya bug, silakan buka terbitan dan/atau kirimkan PR untuk ditinjau.
Jika Anda menggunakan proyek ini, harap ★Bintangi repositori ini untuk menunjukkan minat Anda!
Map | Keterangan |
---|---|
terraform | Skrip penerapan infrastruktur berdasarkan Terraform |
contoh | Mulai cepat individual yang dapat diuji dan diterapkan berdasarkan kasus penggunaan Anda |
src | Kode sumber inti yang digunakan sebagai bagian dari mulai cepat kami |
Langkah-langkah berikut di bawah ini akan memandu Anda melalui panduan pengaturan untuk Mulai Cepat GenAI . Prosesnya akan berjalan melalui pengaktifan Google Cloud API yang tepat, pembuatan sumber daya melalui Terraform , dan penerapan manifes Kubernetes yang diperlukan untuk menjalankan proyek.
Catatan: Langkah-langkah ini mengasumsikan Anda sudah memiliki proyek yang berjalan di Google Cloud dan Anda memiliki izin IAM untuk menerapkan sumber dayanya.
git clone https://github.com/googleforgames/GenAI-quickstart.git
cd GenAI-quickstart
Tetapkan ID Proyek unik Anda untuk 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.
Tetapkan lokasi default untuk Google Cloud
export LOCATION=us-central1
Untuk mengikuti panduan memulai cepat ini dengan lebih baik, setel variabel env CUR_DIR
export CUR_DIR=$(pwd)
gcloud auth list
Periksa apakah autentikasi Anda baik-baik saja dan PROJECT_ID
Anda valid.
gcloud projects describe ${PROJECT_ID:?}
Anda akan melihat PROJECT_ID
Anda terdaftar dengan status 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
Penyebaran sumber daya cloud dapat memakan waktu antara 5 - 10 menit. Untuk tampilan mendetail tentang sumber daya yang dikerahkan, lihat README di direktori terraform
.
Setelah resource cloud berhasil di-deploy dengan Terraform, dapatkan kredensial cluster GKE yang baru dibuat.
gcloud container clusters get-credentials genai-quickstart --region us-central1 --project ${PROJECT_ID:?}
Uji kredensial klien Kubernetes Anda.
kubectl get nodes
Beralih ke direktori genai
dan render template umum yang menggunakan id proyek unik Anda.
# 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} " ;
Bangun dan jalankan beban kerja GenAI dengan 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
Setelah beban kerja diterapkan, Anda dapat beralih menggunakan penerapan 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.
Anda juga dapat menjalankan masing-masing backend secara terpisah:
# 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
Akses API - Anda dapat menguji aplikasi dan semua API dari sini :)
Kluster membuat Network Load Balancer (ILB) passthrough internal. Untuk mengakses API, jalankan:
kubectl port-forward svc/genai-api -n genai 8080:80
lalu di jendela lain jalankan:
export EXT_IP=localhost:8080
echo "Browse to http://${EXT_IP}/genai_docs to try out the GenAI APIs!"
lalu navigasikan ke URL di browser Anda.
Uji API menggunakan 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?"}'
Atau uji API menggunakan kontainer api-caller
di dalam 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?
Di direktori genai
cd ${CUR_DIR:?}/genai
skaffold delete
Di direktori terraform
cd ${CUR_DIR:?}/terraform
terraform destroy
Jika Anda tidak menjalankan proyek di atas di Google Cloud shell, pastikan Anda masuk dan diautentikasi dengan proyek yang Anda inginkan:
gcloud auth application-default login
gcloud config set project ${PROJECT_ID:?}
dan ikuti alur autentikasi.
Seluruh repo dapat dikloning dan digunakan apa adanya, atau dalam banyak kasus Anda dapat memilih untuk membagi repo ini dan mempertahankan basis kode yang paling berguna dan relevan untuk kasus penggunaan Anda. Jika Anda ingin berkontribusi, informasi lebih lanjut dapat ditemukan di panduan berkontribusi kami.