Этот проект предоставляет набор кратких руководств, направленных на ускорение интеграции и персонализации GenAI в среде живых игр с использованием продуктов Google Cloud и игровых решений с открытым исходным кодом.
В современной игровой индустрии предоставление игрокам персонализированного и увлекательного опыта имеет решающее значение. Этот проект предлагает разработчикам игр набор ресурсов для быстрого старта, которые помогут им интегрировать возможности GenAI в свою живую игровую среду. Используя продукты Google Cloud и игровые решения с открытым исходным кодом, вы можете повысить вовлеченность игроков, открыть новые варианты использования с помощью генеративного искусственного интеллекта и создать незабываемые игровые впечатления.
ПРИМЕЧАНИЕ. Это быстро развивающийся репозиторий, который адаптируется для различных случаев использования. Если вы хотите внести свой вклад или заметить какие-либо ошибки, откройте проблему и/или отправьте запрос на рассмотрение.
Если вы используете этот проект, пожалуйста, ★отметьте этот репозиторий звездочкой, чтобы показать свой интерес!
Папка | Описание |
---|---|
терраформировать | Скрипты развертывания инфраструктуры на базе Terraform |
примеры | Отдельные краткие руководства, которые можно протестировать и развернуть в зависимости от вашего сценария использования. |
источник | Основной исходный код, который используется в наших кратких руководствах. |
Следующие шаги помогут вам выполнить руководство по настройке GenAI Quickstart . Процесс будет включать в себя соответствующие API Google Cloud , создание ресурсов через 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
Чтобы лучше следовать этому краткому руководству, установите переменную env 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
После развертывания рабочих нагрузок вы можете вместо этого перейти к использованию развертываний на графическом процессоре:
# 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
Доступ к API. Вы можете протестировать приложение и все API здесь :)
Кластер создает внутренний транзитный балансировщик сетевой нагрузки (ILB). Чтобы получить доступ к API, выполните:
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-адресу в браузере.
Протестируйте API с помощью 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, убедитесь, что вы вошли в систему и прошли аутентификацию в нужном проекте:
gcloud auth application-default login
gcloud config set project ${PROJECT_ID:?}
и следуйте процедуре аутентификации.
Весь репозиторий можно клонировать и использовать как есть, или во многих случаях вы можете создать форк этого репозитория и сохранить базу кода, которая наиболее полезна и актуальна для вашего варианта использования. Если вы хотите внести свой вклад, дополнительную информацию можно найти в нашем руководстве по участию.