يوفر هذا المشروع مجموعة من البدايات السريعة التي تهدف إلى تسريع تكامل GenAI وتخصيصه داخل بيئات الألعاب الحية باستخدام منتجات Google Cloud وحلول الألعاب مفتوحة المصدر.
في صناعة الألعاب اليوم، يعد توفير تجربة مخصصة وجذابة للاعبين أمرًا بالغ الأهمية. يقدم هذا المشروع لمطوري الألعاب مجموعة من موارد البدء السريع لمساعدتهم على دمج إمكانات GenAI في بيئات الألعاب المباشرة الخاصة بهم. من خلال الاستفادة من منتجات Google Cloud وحلول الألعاب مفتوحة المصدر، يمكنك تعزيز مشاركة اللاعبين وفتح حالات استخدام جديدة باستخدام الذكاء الاصطناعي التوليدي وإنشاء تجارب ألعاب لا تُنسى.
ملحوظة: هذا هو الريبو سريع التطور ويتم تكييفه ليناسب مجموعة متنوعة من حالات الاستخدام. إذا كنت ترغب في المساهمة أو ملاحظة أي أخطاء، فيرجى فتح مشكلة و/أو لا تتردد في إرسال PR للمراجعة.
إذا كنت تستخدم هذا المشروع، من فضلك قم بتمييز هذا المستودع بنجمة لإظهار اهتمامك!
مجلد | وصف |
---|---|
terraform | البرامج النصية لنشر البنية التحتية بناءً على Terraform |
أمثلة | عمليات التشغيل السريعة الفردية التي يمكن اختبارها ونشرها بناءً على حالة الاستخدام الخاصة بك |
src | كود المصدر الأساسي الذي يتم استخدامه كجزء من بداياتنا السريعة |
ستوجهك الخطوات التالية أدناه عبر دليل الإعداد لـ GenAI Quickstart . ستتم العملية عبر تمكين Google Cloud APIs المناسبة، وإنشاء الموارد عبر Terraform ، ونشر بيانات Kubernetes اللازمة لتشغيل المشروع.
ملاحظة: تفترض هذه الخطوات أن لديك بالفعل مشروعًا قيد التشغيل في Google Cloud ولديك أذونات IAM لنشر الموارد فيه.
git clone https://github.com/googleforgames/GenAI-quickstart.git
cd GenAI-quickstart
قم بتعيين معرف المشروع الفريد الخاص بك لـ 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.
قم بتعيين الموقع الافتراضي لـ Google Cloud
export LOCATION=us-central1
لمتابعة دليل البدء السريع هذا بشكل أفضل، قم بتعيين متغير البيئة CUR_DIR
export CUR_DIR=$(pwd)
gcloud auth list
تحقق مما إذا كانت المصادقة الخاصة بك على ما يرام وأن PROJECT_ID
الخاص بك صالح.
gcloud projects describe ${PROJECT_ID:?}
من المفترض أن ترى PROJECT_ID
الخاص بك مدرجًا بالحالة 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
يمكن أن يستغرق نشر الموارد السحابية ما بين 5 إلى 10 دقائق. للحصول على عرض تفصيلي للموارد المنشورة، راجع README في دليل terraform
.
بعد نشر الموارد السحابية بنجاح باستخدام Terraform، احصل على بيانات اعتماد مجموعة GKE المنشأة حديثًا.
gcloud container clusters get-credentials genai-quickstart --region us-central1 --project ${PROJECT_ID:?}
اختبر بيانات اعتماد عميل Kubernetes.
kubectl get nodes
قم بالتبديل إلى دليل genai
وقم بعرض القوالب الشائعة التي تستخدم معرف المشروع الفريد الخاص بك.
# 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} " ;
قم ببناء أعباء عمل GenAI وتشغيلها باستخدام 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
بعد نشر أحمال العمل، يمكنك التبديل إلى استخدام عمليات نشر 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.
يمكنك أيضًا تشغيل الواجهات الخلفية الفردية بشكل منفصل:
# 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
الوصول إلى واجهة برمجة التطبيقات - يمكنك اختبار التطبيق وجميع واجهات برمجة التطبيقات من هنا :)
تقوم المجموعة بإنشاء ممر داخلي لموازن تحميل الشبكة (ILB). للوصول إلى واجهات برمجة التطبيقات، قم بتشغيل:
kubectl port-forward svc/genai-api -n genai 8080:80
ثم في نافذة أخرى قم بتشغيل:
export EXT_IP=localhost:8080
echo "Browse to http://${EXT_IP}/genai_docs to try out the GenAI APIs!"
ثم انتقل إلى عنوان URL في متصفحك.
اختبر واجهة برمجة التطبيقات باستخدام 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?"}'
أو اختبر واجهة برمجة التطبيقات (API) باستخدام حاوية api-caller
داخل المجموعة:
# 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?
في دليل genai
cd ${CUR_DIR:?}/genai
skaffold delete
في دليل terraform
cd ${CUR_DIR:?}/terraform
terraform destroy
إذا لم تكن تقوم بتشغيل المشروع أعلاه في Google Cloud Shell، فتأكد من تسجيل الدخول والمصادقة على المشروع المطلوب:
gcloud auth application-default login
gcloud config set project ${PROJECT_ID:?}
واتبع تدفق المصادقة.
يمكن استنساخ الريبو بأكمله واستخدامه كما هو، أو في كثير من الحالات يمكنك اختيار تفرع هذا الريبو والاحتفاظ بقاعدة التعليمات البرمجية الأكثر فائدة وذات الصلة بحالة الاستخدام الخاصة بك. إذا كنت ترغب في المساهمة، فيمكنك العثور على مزيد من المعلومات في دليل المساهمة الخاص بنا.