콘텐츠로 이동하기
Gaming

클라우드에서 라이브 서비스 게임을 위한 머신러닝 실행하기

2024년 3월 12일
https://storage.googleapis.com/gweb-cloudblog-publish/images/gaming.max-1800x1800.png
Patrick Smith

Head of Specialist Customer Engineers, Google Cloud for Games

Dan Zaratsian

Tech Lead, AI/ML Solutions Architect, Google Cloud for Games

Gemini 1.5 모델 사용해 보기

Google Vertex AI의 가장 진보한 멀티모달 모델

사용해 보기

*본 아티클의 원문은 2024년 2월 23일 Google Cloud 블로그(영문)에 게재되었습니다.

생성형 AI는 작년 한 해 동안 여러 산업 분야에 걸쳐 가장 많은 관심을 받은 기술입니다. Google Cloud for Games에서는 온라인 게임이 가장 유망한 생성형 AI 사용 사례라고 생각합니다. 게임 개발자는 생성형 AI를 사용해 더 역동적인 게임을 빌드하고, 더 많은 수익을 창출하며, 제품 출시 기간을 단축할 수 있습니다. 우리가 지향하는 목표를 위해 Google Cloud for Games에서는 게임 회사가 Google Cloud를 활용하여 생성형 AI를 학습시키고 배포, 유지 관리할 수 있는 방법을 연구해 왔습니다. 이제 그 방법을 소개하고 지금 바로 게임에 어떻게 사용할 수 있는지도 알려드리겠습니다. 생성형 AI 애플리케이션에 중점을 두고 설명하겠지만 여기서 소개할 프레임워크는 생성형 AI 모델 뿐만 아니라 모든 머신러닝을 염두에 두고 개발되었습니다.

장기적으로 볼 때 게임에서 생성형 AI의 가능성은 무궁무진하지만, 단기적으로 향후 1~2년간 게임 산업에 가장 현실적이고 가치가 있으리라 생각하는 분야는 다음과 같습니다.

  1. 게임 개발
  2. 적응형 게임플레이(Adaptive gameplay)
  3. 인게임 광고

이들 각 분야는 게임 개발과 퍼블리싱 프로세스의 핵심 부분에 도움이 됩니다. 게임 개발 과정에서 생성형 AI는 주로 2D 텍스처, 3D 애셋, 코드의 개발과 관련하여 신규 게임 제작의 수고를 덜고, TTM(time to market)을 단축하고, 게임 개발자의 전반적인 작업 효율성을 높이는 데 도움이 됩니다. 플레이어의 참여를 지속시키고 기존 타이틀에서 수익을 창출하기 위해서는 적응형 대화, 게임플레이와 같은 시스템으로 플레이어의 참여를 계속 유도하고 맞춤 인게임 오브젝트로 플레이어의 흥미를 끌 수 있습니다. 수익 창출의 새로운 세계를 열어준 인게임 광고를 통해서는 고도로 개인화된 맞춤 광고 팝업과 함께 게재 위치를 세부적으로 설정하여 게임에 통합할 수 있으며 광고 조회수와 참여를 최적화하는 원활한 광고 경험을 제공할 수 있습니다. AAA 블록버스터 게임은 말할 것도 없고 소규모 게임 하나를 제작하는 데 드는 시간만 따져 봐도 개별 게임 애셋을 개발하는 데에는 막대한 시간이 소요됩니다. 생성형 AI 모델이 개발자의 반복 업무를 줄이고 스튜디오 개발팀의 생산성을 조금이라도 높여줄 수 있다면 TTM(time to market)을 단축하고 모두에게 더 나은 게임을 제공할 수 있을 것입니다.

이 게시물에서는 Google Cloud에서 게임용 생성형 AI를 실행하기 위한 템플릿과 이러한 라이브 모델을 지원하는 데이터 수집 및 저장 프레임워크를 제공하는 Generative AI Framework for Games(게임용 생성형 AI 프레임워크)에 대해서도 알아보겠습니다. 아래에서 이 프레임워크의 데모를 살펴보며 샘플 게임 환경에서의 이미지 생성, 코드 생성과 관련된 두 가지 사례를 구체적으로 보여 드리겠습니다.

이러한 Google Cloud의 노력을 소개하기 전에 먼저 게임에서의 머신러닝에 대한 일반적인 오해를 풀어보겠습니다.

클라우드 기반 ML과 라이브 서비스 게임의 가능성

흔히 클라우드에서 라이브 게임 서비스를 위해 머신러닝을 실행하면 비용이 너무 높거나 최종 사용자가 경험하는 지연 시간이 너무 길어진다고 지적합니다. 라이브 게임은 항상 클라이언트-서버 패러다임으로 실행되어 왔으며 권한이 필요하지 않은 컴퓨팅 집약적인 프로세스는 클라이언트 측에서 실행하는 편이 더 바람직할 때가 많습니다. 이는 일부 모델과 프로세스에 효과적인 배포 패턴이기는 하지만, 유일한 방법은 아닙니다. 클라우드 기반 생성형 AI 또는 모든 형태의 AI/ML이 가능할 뿐 아니라, 이를 사용하면 개발자의 반복 업무가 크게 줄어들고, 게임 배급사의 유지 보수 비용이 절감되며, 오늘날 라이브 게임에 필요한 지연 시간도 지원할 수 있습니다. 또한 더 안전합니다. 클라우드 기반 AI는 공격, 조작, 사기로부터 모델을 보호합니다.

스튜디오의 설정에 따라 Google Cloud는 적응형 게임 분야를 위한 생성형 모델의 완전한 인클라우드 또는 하이브리드 배포를 지원할 수 있습니다. 일반적으로 기술 스택과 니즈에 따라 두 가지 접근 방식을 권장합니다.

  1. 처음부터 시작하는 경우, LowOps 솔루션을 찾고 있거나 라이브 게임 환경과 상호작용하지 않는 서비스를 실행 중이라면 서빙 지연 시간이 짧은 Vertex AI의 비공개 엔드포인트를 활용하는 것이 좋습니다.
  2. Google Cloud에서, 특히 Google Kubernetes Engine(GKE)에서 게임 서버를 실행 중이고 서빙 지연 시간이 매우 짧은 환경을 활용하고 싶다면 모델을 GKE와 자체 게임 서버에 함께 배포하는 것이 좋습니다.

Vertex AI부터 알아보겠습니다. Vertex AI는 공개 및 비공개 엔드포인트를 모두 지원하지만 일반적으로 게임의 경우 원하는 지연 시간으로 줄이려면 비공개 엔드포인트를 활용하는 것이 좋습니다. Vertex AI 모델은 어댑터 레이어(adaptor layer)라는 것을 활용하는데 여기에는 두 가지 이점이 있습니다. 즉, 예측을 수행할 때 전체 모델을 호출하지 않아도 되고, 개발자가 설정하는 모든 세부 조정사항이 자체 테넌트에 저장됩니다. 모델을 온프렘 또는 클라우드에서 직접 실행하는 경우와 달리, 방대한 기본 모델과 이를 지원하는 관련 서빙 및 스토리지 인프라를 처리하지 않아도 됩니다. 앞서 언급했듯이 이 두 가지를 아래의 데모에서 보여드리겠습니다.

이미 GKE에서 게임 서버를 실행하고 있다면 독점 또는 오픈소스 머신러닝 모델을 모두 GKE에서 실행할 수 있고 GKE의 기반 네트워킹도 활용할 수 있어 많은 이점을 누릴 수 있습니다. 테스트 결과 GKE Autopilot을 사용하면 모델이 자체 게임 서버에 함께 배포된 경우 밀리초 이하 범위의 예측 성능을 달성할 수 있는 것으로 나타났습니다. 퍼블릭 인터넷에서는 기존 클라이언트 측 배포에서 확인한 것보다 더 짧지는 않지만 일관성 있는 밀리초 단위의 짧은 지연 시간을 달성했습니다. GKE에서 실행할 때 발생할 수 있는 잠재 비용이 걱정된다면 다른 관점에서 접근해보세요. 대다수의 게임 분야 고객이 GKE에 배포하여 비용을 절감하였고 개발자 생산성이 약 30% 향상되었습니다. 머신러닝 배포와 자체 게임 서버를 모두 GKE Autopilot으로 관리하면 운영 부담도 크게 줄어듭니다. 테스트 결과, 모델을 Vertex에 배포하든 GKE에 배포하든 비용은 거의 비슷하다는 것을 확인했습니다.

실시간 AI를 지원하는 통합된 데이터 플랫폼

AI/ML 기반 맞춤설정은 플레이어 환경설정, 게임플레이, 게임의 세계관과 서사에 관한 데이터의 양이 많을수록 효과적입니다. 게임용 생성형 AI를 위한 노력의 일환으로 Google Cloud for Games에서는 일관성과 가용성을 보장하기 위해 최고의 Google Cloud 기능을 활용하는 데이터 파이프라인과 데이터베이스 템플릿을 개발했습니다.

라이브 게임에는 strong consistency가 필요하고, 모델에는 생성형 AI 모델 여부와 상관없이 플레이어와 플레이어의 행동 패턴에 관한 최신 정보가 필요합니다. 모델을 최신 상태로 안전하게 유지하려면 주기적인 재학습이 필요하며 Spanner, BigQuery 등 전 세계적으로 이용 가능한 데이터베이스를 사용하면 생성형 AI 모델 여부에 관계없이 모델에 입력되는 데이터를 최신 상태로 안전하게 유지할 수 있습니다. 현재 많은 게임에서는 사용자가 maps/realms으로 분류되어 있고 그 사이에 엄격한 경계를 두어 천편일률적인 결정과 조치로 플레이어의 경험을 제한하고 있습니다. 게임이 사용자가 단일 realms에 상주하는 모델로 전환함에 따라 이제 게임에는 전 세계적으로 사용 가능한 단일 데이터 스토어가 필요합니다. 인게임 맞춤설정에는 플레이어 활동의 실시간 상태 데이터도 필요합니다. LiveOps 환경에서 머신러닝 모델을 실행하는 경우 데이터 파이프라인과 데이터 사용 공간도 모델 자체만큼이나 중요합니다. 자체 관리형 데이터 센터 공간 전반에서 모델이 자주 업데이트된다는 복잡성을 고려할 때 차라리 모델의 학습, 배포, 전반적인 유지 보수를 클라우드에서 관리하는 것이 더 쉬울 수 있습니다.

실시간 데이터 파이프라인과 생성형 AI 모델을 결합하면 플레이어 환경설정에 관한 프롬프트를 모델에 제공하거나 위치, 시간, 이유를 추적할 수 있는 다른 모델과 결합하여 게임 상태를 맞춤설정할 수도 있습니다. 현재 제공되는 기능에는 사용자와 관련된 3D 메시를 사전 생성하거나, 플레이어 환경설정이나 분위기에 맞게 메시를 다양한 색상, 패턴, 조명으로 재설정하거나, 플레이어가 자연어를 기반으로 게임 환경을 완전히 맞춤설정할 수 있는 기능까지 다양한 기능이 있습니다. 이 모든 기능은 플레이어가 게임에 만족하고 몰입할 수 있도록 하기 위한 서비스입니다.

기능 시연

이제 프레임워크를 살펴보겠습니다. 이 데모에서는 Google Cloud의 데이터, AI, 컴퓨팅 기술을 결합하여 게임 상태를 실시간으로 맞춤설정할 수 있는 기능을 제공하는 방법을 집중적으로 알아보겠습니다.

https://storage.googleapis.com/gweb-cloudblog-publish/images/1_live_service_games_.max-1800x1800.png

프레임워크에는 다음이 포함됩니다.

  • 클라이언트 및 서버용 Unity

오픈소스:

  • Terraform
  • Agones

Google Cloud:

  • GKE
  • Vertex AI
  • Pub/Sub
  • Dataflow
  • Spanner
  • BigQuery

이 프레임워크를 위해 Google Cloud for Games는 Unity에서 Unity 스토어의 애셋을 사용하는 오픈 월드 데모 게임을 제작했습니다. 플레이어가 NPC와 상호작용해야 하고 동적 빌보드를 통해 게임 목표 달성에 도움이 되는 안내를 받는 오픈 월드 게임으로 설계했습니다. 이 게임은 GKE와 Agones에서 실행되며 여러 플레이어를 지원하도록 설계되었습니다. 여기서는 간단하게 한 명의 플레이어와 이 플레이어의 활동에 중점을 두고 살펴보겠습니다.

https://storage.googleapis.com/gweb-cloudblog-publish/images/2_live_service_games_.max-1300x1300.png

이제 프레임워크로 돌아가 보겠습니다. 백엔드 Spanner 데이터베이스에는 해당 플레이어와 이 플레이어의 과거 활동 정보가 저장되어 있습니다. Google Marketing Platform과의 연결을 통해 이 가상 게임 세계에서의 구매 습관에 관한 데이터도 보유하고 있습니다. 따라서 데모 게임에서 플랫폼 전반에 걸친 광범위한 플레이어 데이터를 수집할 수 있습니다. Spanner는 Google Cloud의 트랜잭션 데이터베이스이고 BigQuery는 Google Cloud의 분석 데이터베이스이며, 데이터 흐름이 두 제품 사이에서 자유롭게 일어납니다.

이 프레임워크에는 플레이어에 대한 모든 정보를 활용하여 학습시킨 Vertex AI의 추천 모델이 포함되어 있으므로 인게임 혜택과 광고를 맞춤설정할 수 있습니다. 이 데모에서는 이러한 모델에 대한 설명은 잠시 미뤄두고, 두 가지 생성형 AI 사용 사례, 즉 적응형 게임플레이 사용 사례에 대한 이미지 생성, NPC 채팅, 코드 생성을 중점적으로 살펴보겠습니다. 게임에 권장하는 두 가지 배포 패턴, 즉 GKE와 게임 서버에 함께 배포하는 방법과 Vertex AI를 활용하는 방법을 모두 보여드리겠습니다. 이미지 생성에는 GKE에서 안정적인 오픈소스 확산 모델을 호스팅하고, 코드 생성과 NPC 채팅에는 Vertex AI 내의 Gemini Pro 모델을 사용합니다. 텍스처를 수정하거나 게임 오브젝트의 위치를 조정해야 하는 경우에는 Gemini LLM을 사용하여 게임 환경에서 프리팹(prefabs)을 렌더링, 위치 지정, 구성할 수 있는 코드를 생성합니다.

캐릭터로 게임을 진행할 때 플레이어에게 다음 동작과 경로를 제안하는 이미지를 조정하여 표시합니다. 실제로는 게임 테마 이미지나 광고가 될 수도 있습니다. 이 사례에서는 플레이어가 게임플레이를 진행하려면 무엇을 찾아야 하는지 제안하는 이미지를 표시합니다.

https://storage.googleapis.com/gweb-cloudblog-publish/images/3_live_service_games_.max-1300x1300.png

위 예시에서 플레이어에게 책에 둘러싸인 남성을 보여주어 다음 목표로 도서관을 찾아야 할 수도 있다는 힌트를 제공합니다. 이 힌트는 NPC가 게임 초반에 공유한 수수께끼와도 일치합니다. 플레이어가 빌보드 중 하나와 상호작용하면, 즉 빌보드로 더 가까이 이동하거나 미리 설정된 시간 동안 빌보드를 보기만 해도 게임의 스토리라인이 이러한 맥락에 맞게 조정됩니다.

코드 생성으로 프리팹을 빠르게 로드하여 구성할 수도 있습니다. 아래에 현재 상태의 게임 환경이 나와 있으며 NPC에게 버스 색상을 노란색으로 바꿔 달라고 요청하면 버스의 색상과 텍스처가 동적으로 업데이트됩니다.

https://storage.googleapis.com/gweb-cloudblog-publish/images/4_live_service_games_.max-1700x1700.png

텍스트나 음성으로 이를 요청하면 Google Cloud 생성형 AI 모델이 해당 환경에서 프리팹을 업데이트하는 데 필요한 정확한 코드를 생성한 다음, 이를 게임에서 실시간으로 렌더링합니다.

이 예시는 게임 중에 코드 생성이 어떻게 사용되는지를 보여줍니다. 한편 게임 개발자도 비슷한 프로세스를 사용하여 게임 오브젝트를 게임 환경에 배치하고 구성하여 게임 개발 속도를 높일 수 있습니다.

다음 단계를 수행하며 기술을 확인하고 싶다면 아래 GitHub 링크와 리소스를 살펴보세요.

또한 모든 개발자가 프레임워크의 모든 속성에 관심이 있는 것은 아니라는 점을 잘 알고 있습니다. 그래서 프레임워크를 유연하게 만들었습니다. 전체 프로젝트를 살펴보고 싶든, 특정 기능을 구현한 방법을 이해하기 위해 코드의 특정 부분만 살펴보고 싶든, 선택은 사용자의 몫입니다.

Google Cloud 생성형 AI에 대해 더욱 깊이 이해하고 싶다면 아래에 선별해 놓은 유용한 리소스 모음을 확인해 보세요.

마지막으로, 이 프로젝트의 작업에 관심이 있거나 프로젝트에 기여하고 싶다면 이 데모에 사용된 생성형 AI 서비스에 초점을 맞춘 코드를 GitHub에서 자유롭게 살펴보세요.

게시 위치