계기
ollama에 decision model이라는 종류의 모델이 들어왔습니다. 텍스트를 생성하는 대신, 주어진 상황과 선택지에 대해 '무엇을 선택할지'를 확률과 함께 반환합니다. 원조는 TypeSafe AI의 Jev라는 클로즈드 API였으며, 이후 그 가중치가 공개된 것이 tev1입니다.
궁금했던 점은 크기였습니다. tev1에는 4B와 0.8B 두 가지밖에 없습니다. 큰 쪽인 4B임에도 불구하고 이 정도의 작은 크기인데도, 공개 벤치에서는 Jev의 76.0%에 대해 73.3%라는 거의 비슷한 수치를 보여주고 있었습니다. 4B라면 집의 GPU에 여유롭게 올릴 수 있는 크기입니다. 정말 그렇게 쓸 만한지 시험해보고 싶어졌습니다.
제작물
가로 스크롤 게임을 만들고, 조작 전체를 tev1에게 맡겼습니다.
하는 일은 단순합니다. 게임의 상황(발밑에 지면이 있는지, 다음 구덩이나 적이 '지금 점프하면 건널 수 있는 거리인지' 등)을 말로 풀어서 전달하고, run / /jump / /wait 중 어떤 것을 선택할지 매번 고르게 하는 것뿐입니다. 오른쪽 패널의 바는 tev1이 반환한 확률 그 자체입니다.
판정은 1회당 30ms대에 응답하기 때문에, 초당 약 20번 정도 판단을 다시 내리고 있습니다. 게임은 모델의 답변을 기다리지 않고 진행하며, 답변이 돌아오는 시점에 조작이 전환됩니다. 도중에 몇 번이나 죽는 일이 있었지만, 구덩이를 뛰어넘고, 적을 밟고, 골인까지 달려 나갔습니다.
소감
솔직히 이것이 집의 머신에서, 4B 모델로, 실시간으로 돌아간다는 것이 대단하다고 생각했습니다.
같은 tev1이라도 일반적인 생성 API를 사용해서 선택지 기호를 문장으로 답하게 하면, 생각이 깊어지는 동안 답변을 주지 않는 경우가 있거나 정답률이 떨어졌습니다. decision API는 선택지의 확률을 직접 반환하기 때문에 그런 일이 발생하지 않습니다. 이 3가지 선택지로 줄일 수 있다면, 4B로도 이렇게 빠르게 돌아갈 수 있습니다.
게임은 장난감이지만, 같은 형태의 판단을 대량으로 처리하고 싶은 상황은 주변에 얼마든지 있습니다. 당분간 계속 가지고 놀아보려고 합니다.
이 기사는 wada-dev.com에 게재된 것입니다.
Discussion