Gigax, Local LLM 기반 게임 내 NPC
소개
Gigax 프로젝트는 사용자의 하드웨어에서 실행되는 LLM(Language Model) 기반의 NPC(Non-Player Character)를 제공합니다. 이 프로젝트는 개발자들이 게임 또는 다른 인터랙티브 어플리케이션에 인공지능 캐릭터를 쉽게 통합할 수 있도록 하는 것을 목표로 하고 있습니다. 이 프로젝트는 게임 개발자들이 보다 실감나고 동적인 게임 환경을 만들 수 있도록 지원하며, 기존 NPC에 비해 훨씬 자연스럽고 다양한 반응을 보여줄 수 있습니다.
Gigax는 다른 NPC 생성 도구들과 비교했을 때, GPU를 사용한 빠른 처리 속도와 다양한 고급 AI 모델을 통한 미세 조정 기능이 특징입니다. 또한, 사용자가 정의한 출력 형식을 엄격히 준수하는 구조화된 생성을 지원하며, 언어에 구애받지 않는 API를 통해 지역 서버 모드를 곧 지원할 예정입니다.
주요 기능
- 다양한 동작 지원: Gigax의 NPC는 말하기, 뛰기, 공격하기 등 사용자가 정의한 모든 동작을 수행할 수 있습니다.
- 빠른 GPU 추론: 대부분의 기계에서 1초 내에 추론을 완료할 수 있습니다.
- 모델 공개: Llama-3, Phi-3, Mistral 등의 모델을 기반으로 미세조정된 공개 모델을 제공합니다.
- 구조화된 생성: Outlines를 사용하여 출력 형식이 항상 지켜지도록 합니다.
- API 지원: 퀘스트 생성, NPC 및 플레이어를 위한 메모리 생성, 저장 및 검색 등의 기능을 API를 통해 제공합니다.
사용 방법
Gigax는 Hugging Face를 통해 2가지 모델을 제공하고 있습니다:
- NPC-LLM-7B (our Mistral-7B fine-tune)
- NPC-LLM-3_8B (our Phi-3 fine-tune)
- NPC-LLM-3_8B-128k (준비 중)
예를 들어, NPC-LLM-7B
모델을 사용하여 다음과 같이 모델을 초기화할 수 있습니다:
from outlines import models
from gigax.step import NPCStepper
from transformers import AutoTokenizer, AutoModelForCausalLM
model_name = "Gigax/NPC-LLM-7B"
llm = AutoModelForCausalLM.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = models.Transformers(llm, tokenizer)
stepper = NPCStepper(model=model)
NPC를 동작시키는 것은 간단한 한 줄의 코드로 가능합니다:
action = stepper.get_action(
context=context,
locations=locations,
NPCs=NPCs,
protagonist=protagonist,
items=items,
events=events,
)
더 읽어보기
Gigax GitHub 저장소
Gigax 제공 모델 @ Hugging Face
이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다.
파이토치 한국 사용자 모임이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)
아래쪽에 좋아요를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~