프로덕트

아직 프로덕트가 없습니다.

아티클

전체 보기
최이현

최이현

AI로 FIFA 해설을 대체해서 경기마다 새로운 해설 듣는 서비스?

생성형 인공지능은 아직 현실에서 부자연스럽다.

chatgpt, dall e, whisper 모두 자연스러움과는 거리가 있다.

약간 기계 냄새 난다고 해야 하나?

그래도 Ai는 우리가 여태껏 풀지 못했던 수많은 문제들을 풀 도구로써 활용될 거라고 생각한다.

GdI9KWAY57x5MeOeHnk33GGJRXzbmvNfaaCHUCHzfabbXZsewmV4pZAYHPufKS5ToTGpeeoGoD-xq8sfvCwlrg.webp

학창 시절에 축구와 피파를 정말 많이 좋아했었다.

피파를 하면 짜증나는 점이 한두가지가 아니었다.

일단, 매 경기마다 같은 해설이 나오고 경기 상황과 전혀 맞지 않는 내용이었기 때문이다.

게임 내 실시간 데이터를 읽고, 그걸 오디오로 전환할 수 있는 생성형 인공지능이 있다면 어떨까? 요런 생각을 꿈꿔오고 있었다.

그러면 게임의 완성도는 크게 올라갈 것이다.

피파를 오래 해본 사람들이라면, 100이면 100 공감할 내용이다.

알다시피 피파 시리즈는 1년 마다 새로 나오는데, 거의 바뀌지 않는 점이 아쉽다.

2qzs8jvhkaa41.jpg

그래서 엉성하게 만들어봤다.

4년 전 인공지능 붐이 불기 이전에 나온 인도 프로그래머가 만든 프로젝트를 보고

나도 할 수 있겠다 싶었다.

터무니없는 코딩 실력과, 수려한 GPT 프롬프트 엔지니어링 기술을 사용했다.

일단 개요는 다음과 같다.

축구 게임 설치하기

축구 게임 실시간 데이터 가져오기

실시간 데이터를 텍스트로 전환하기

텍스트를 읽는 GPT-3.5 API를 활용해서 축구 해설 생성하기

만들어진 축구 해설 텍스트를 TTS (text to speech)를 활용해서 오디오로 만들기

일단 피파나 위닝 같은 큰 상업용 축구 게임은 게임 내부 데이터에 접근하는 데 한계가 있는 걸로 알고 있다.(시도해본 적은 없음)

그래서 오픈 소스 축구 시뮬레이터를 사용해야 했고,

마침 구글에서 4년 전 쯤에 만든 Google Research Football을 사용했다.

Google Research Football은 구글에서 만든 강화 학습 환경이다.

스크린샷 2023-09-18 211330.png

이런 거 하라고 만들어진 거는 아니지만, 게임 내부 데이터에 전부 접근이 가능하고,

일단 오픈 소스에다 내부 데이터가 접근 가능한 유일한 3D 환경이었을 거다.

그래서 Google Research Football을 다운받는데도 좀 힘이 들었는데,

4년 전에 나와서 업데이트가 안된 부분들을 이전 버전으로 되돌리는 작업을 거쳤다.

그렇게 Google Research Football을 설치했고, 깃허브의 내용을 참고해서

게임 내부 데이터에 접근할 수 있었다.

코너킥이나, 옐로카드, 골, 스로인, 골킥 등등

그렇게 게임 내부 데이터를 텍스트로 전환하는 코드를 GPT의 도움으로 만들 수 있었다.

(진짜 chatGPT 나온 이후로 오류를 구글이나 커뮤니티에 검색할 필요가 없어졌다.)

이제, OpenAI의 API를 가져와서 게임 내부에서 나온 실시간 텍스트 데이터를 프롬프트로써 제공하면 약간 이런 형식이 된다.

GPT의 역할 = 전문 축구 해설 위원

프롬프트 = "골이 들어갔습니다"

그러면 GPT가 프롬프트를 읽고, 이런 해설 텍스트를 생성한다.

"기가 막힌 득점이네요! 원정 팀의 사기를 꺾는 멋진 골입니다."


(물론 이 정도로 완벽한 해설이 지금은 나오지 않고, 영어이다.)

축구 해설을 학습한 GPT 모델이 필요했고, 처음에는 축구 경기의 해설을 다운받아서

자막만 추출하는 코드를 만들어서 사용했다.

하지만, 내용이 정제되지 않고, 뒤죽박죽 엉터리여서 결국 방황 끝에 GPT가 만들어준 해설 텍스트를 사용하기로 했다.
약 10000자 이내.

스크린샷 2023-09-18 212639.png

그리고 만들어진 텍스트 파일을 토큰화해서 gpt가 읽기 쉽도록 만든 후

학습을 시켰다 (파인튜닝)

스크린샷 2023-09-18 212723.png

openai가 gpt3.5 파인튜닝을 출시한게 7월 28일 즈음 이었을 테니 따끈따끈한 신상 인 셈이다.

그렇게 OpenAI의 API를 가져오고, google research fooball의 실시간 데이터를

GPT에게 프롬프트로 제공했다.

나온 텍스트를 TTS (Text_to_speech)를 사용해서 오디오로 변환했다.

중간중간 생략한 과정도 있긴 한데, 엔지니어가 아닌 입장에서 일주일 만에 만들어낸 MVP 치고는 그래도 엉성했다.

결과물 코드 (주요 파일) =

스크린샷 2023-09-18 212056.png스크린샷 2023-09-18 211809.png

MVP를 만들고 나니 문제점들을 발견했는데, 이는 다음과 같다.

  1. GPT가 해설을 만들고 나면 상황이 이미 늦어있다.(골이 터지고, 10초 뒤에 해설 나옴)

    개선점 = openAI가 아니라 Llama-2를 사용할 것.(API와 로컬의 속도 차이가 크다)

  2. 서비스가 너무 엉성하고 풍부한 내용의 실제 해설과 거리가 있다.

    개선점 = Google Research Football의 실시간 데이터 뿐만 아니라, 로직 구현, 일반 해설 코드도 추가할 것.

    (MVP에서는 프리킥, 골킥, 골, 파울, 옐로 카드 등 실시간 데이터만 해설을 생성했지만, 이후에는 선수의 위치를 파악해서 역습 상황을 분석하고, 장거리 드리블을 인식 하는 등의 로직을 추가할 수 있다, 그리고 외부 데이터를 학습하면, 클럽이나 선수에 대한 자세한 정보를 해설에서 내보낼 수 있다.)

  3. 환각 문제

    GPT-3.5의 환각 문제는 심각하다. (골이 들어갔는데, 멋진 세이브라는 해설이 나오기도 한다;;)

  4. GRF의 태생적인 불완전성

    (GRF이 원래 무거운 상황을 견디기 어려운 거 같다. 너무 많이 튕기고, 너무 많이 끊긴다. 상업용이 아니라 연구 목적이라 최적화가 아예 되어 있지 않다.)

  5. 뻣뻣한 인조인간 목소리 TTS 버려야 한다.

    이건 tensorflow 같은 거로 새로운 모델을 만들어야 한다.

    Google Cloud Console API 사용해서 진짜 세상 간단한 TTS 모델을 만들어본적이 있는데, 별 차이 없이 딱딱했다.

    구글이나, 마이크로소프트나, 오픈AI도 해결 못한 거로 봐서는 텍스트만 가지고

    감정 실린 목소리를 만드는 데는 아직 무리가 있다. (데이터 부족)

    [약간 상용화의 최종 보스 느낌이다.] 다만 축구 해설용 모델을 따로 만드는 게 더 적은 리소스를 이용해 더 좋은 결과를 만드는 좋은 기회가 될 수도 있다고 생각한다.

이 정도가 있겠다.

매 경기 같은 해설이 나오는 피파를 하면서 고통받았던 사람이 있다면, 한번 같이 문제를 해결해보고 싶다.

또, 조언을 주시거나, 피드백을 해주실 고마운 분이 계시다면 아래 메일을 보내주시면 감사하겠습니답 ;)

choidlgus629@gmail.com

일단 내가 MVP로 증명한 것은 실시간 데이터를 가져와서 축구 해설이 생성 가능하다는 것이다.

10년 뒤에는 너무나 당연한 듯이 세상에 나와있겠지만, 그 문제를 해결하는 시간을 앞당길 수 있거나, 내가 그 문제를 해결하는 데 도움이 될 수 있으면 좋겠다.

혹시나 위에 설명한 내용이 약간 괴짜 너드 같다고 느껴질 수도 있겠지만,

내가 만든 코드는 혼돈과 엉터리 그 자체이고 절대 어려운 일이 아니며,

나는 절대 이런 모습이 아니다.

1-44.jpg

MVP를 만들어보고, chatgpt같은 Ai가 적어도 내 레벨에서는 코딩이라는 것을 재정의 해버렸다고 느꼈다.

그리고 생각보다 나온 결과물이 부끄럽게 느껴지는 것도 사실이다.

위에서 나온 문제점들이 짬뽕되어 혼돈 그 자체가 되었으니까.

그래도 MVP를 1주일 안에 만들었고, 그 사이에서 정말 많은 것을 배울 수 있었으며,

내가 풀고 싶은 문제이고, 내가 가장 열정적인 고객이 될 서비스를 만든다는 게 맘에 들었다.

MVP를 만들기 전에 상상하던 거 =

3105.webp

일주일 뒤 =

The-Simpsons-Hans-Moleman-Kiss-600x338.jpg

8
7
최이현

최이현

22살 치기어린 몽상가의 깨달음 및 개1소리

물을 판다면 아무나 붙잡고 물을 팔려고 하는 것보다,

머리카락에 불이 붙은 사람에게 물을 파는 게 더 쉬울 것이라는 말을 들었다.

flaming-homer-sg-2.jpg

왜냐하면, 그 사람은 진짜로 문제를 해결하기 원할 것이기 때문이다.

오래 전부터 YC의 폴 그레이엄이나, 여러 실리콘밸리에 있는 창업가로부터 “스타트업은 유저의 문제를 해결해야 하며, 서비스는 가장 PainPoint가 높은 고객부터 시작하는 것이다.” 라는 내용의 인터뷰를 본 적이 있다.

137275735_6ba4ac4e5a_b.jpg

AI 스타트업에서 짧은 기간동안 프로젝트를 진행해보고, 머리에 불이 붙은 고객을 찾는다면, 가장 가까운 고객은 나 자신이라는 것을 느꼈다.

c1f0072597cb86e42570779bea757516.jpg

처음에는 현금흐름 비즈니스(프리랜서나 에이전시 같은 거)→저투자/고확장 비즈니스 (SAAS 같은거)→고투자/저확장 비즈니스(부동산, 주식 같은거)로 비즈니스 규모를 키워야 한다고 생각했다.

이 접근법이 유효하지 않다는 게 아니다.

하지만 초반에 무리하게 현금흐름 비즈니스를 구축하려다 보면, 제대로 된 가치를 창출하고, 문제를 해결하기 어렵다고 느꼈다.

따라서 스스로가 느낀 삶의 문제를 인식하고, 같은 문제를 공유하는 사람들과 공동의 목표를 세워 문제를 해결해나가는 과정이 단순히 ‘비즈니스’보다 더 중요하다는 것이라고 생각한다.

‘비즈니스’를 하기 위해, ‘기업가’가 되기 위해. ‘스타트업’이 되기 위해.

이것들은 그냥 단순한 선택일 뿐이다. (피터 틸에게서 많은 영감을 받았다.)

5460ce2969beddcc23b76faf.webp

하지만 이전의 나 자신을 돌아보면, 경제적 자유를 이루고 싶었고, 스타트업이나 비즈니스를 하는 게 내 경제적 문제를 해결해줄 수 있을 것이라고 생각했었다.

지금도 그런 마음이 뭉실뭉실 떠오를 때가 있지만, 곰곰히 생각하면서 그 뜬구름을 날린다.

편안한 삶을 살기 위해 불편한 삶을 사는 선택은 내가 할 수 있는 가장 어리석은 짓이었다.

돈을 버는 것은 항상 가치 있는 것을 만드는 것의 결과이다.

가치 있는 것을 만드는 과정에 관심이 없다면, 돈을 버는 데도 분명 문제가 생길 거라고 생각한다.

아직 돈도 벌지 못했고, 가치 있는 것을 만들지도 못했지만 내 직감은 절대로 결과에서 시작하지 말라고 말한다.

생각해보자.

두 명의 복서가 챔피언과의 경기를 준비하고 있다.
챔피언 =

16865063696948.jpg

한 명은 경기를 이겨서 멋진 집과 멋진 차를 사고 싶어한다.

MV5BNDgwN2U2YjgtNjg3Mi00MWE1LWFiNmYtNzE2YmYzOWVlZjBhXkEyXkFqcGdeQXVyNTA4NzExMDg@._V1_.jpg

다른 한 명은 위대한 복싱 경기의 한 부분이 되고 싶어한다.

NINTCHDBPICT000755291960.webp

둘 중 누가 챔피언을 쓰러트릴 확률이 높을까?

아마 위대한 복싱 경기를 만들려는 선수가 챔피언을 이길 확률이 더 높을 것이다.

왜냐하면, 한 명은 편안한 삶을 살기 위해서 링에 오르고, 다른 한 명은 싸우기 위해서 링에 오르기 때문이다.

이 두 복서가 할 수 있는 게 완벽하게 똑같다고 하자.

할 수 있는 건 똑같아도 하는 거는 다를 것이다.

챔피언에게 두들겨 맞고 쓰러졌을 때 한 명은 더 힘들어지는 것을 원하지 않을 테고, 한 명은 더 힘들어져야만 목표를 이룰 수 있으니 말이다.

한 명은 과정을 스킵하기 원할 테고 다른 한 명은 과정 그 자체를 원할 것이다.

b52e2ecfc53c2bf8f7695e9fe9da7d2c.jpg

결과를 간절하게 원한다면, 역설적으로 그 과정에 집중해야 하는 거 같다.

비즈니스에서도 마찬가지인 거 같고, 삶에서도 마찬가지인 거 같다.

내가 깨달은 점은, 스타트업 팀이 과정을 즐길 수 없고 결과만 원한다면, 동기부여를 받는 레벨이 크게 떨어진다는 것이었다.

그래서 나는 나 스스로가 느낀 문제들을 해결하는 것을 우선이라고 생각하게 됬다.

비즈니스를 하고 스타트업을 하는 것이 먼저가 아니라.

멋진 제품이나 서비스를 만드는 게 아니라, 멋진 문제를 찾는 게 더 천재적인 것이라고 생각하게 됬다.

멋진 제품과 서비스를 원했던 나를 돌아보면, 그 결과가 엉망이었을 때, 방황하게 되었다. 고객들이 내 서비스를 원하지 않는다는 것을 깨닫는 데 쏟아부은 것들이 많으니까.

하지만 멋진 문제를 풀고, 내가 즐길 수 있는 과정에서 시작한다면, 그 결과를 바꿀 필요가 적어지지 않을까 생각한다.

내가 만든 솔루션이 문제를 해결하지 못한다면, 그 솔루션을 바꾸면 된다. 문제를 바꾸는 게 아니라.

결과가 아니라, 과정에 집중할 수 있다면, 장기적으로 그 결과가 좋을 확률이 더 높다는 생각이다.

물론 검증된 거 없고, 그냥 22살짜리의 치기어린 몽상이며, 늦은 사춘기일 수도 있다.

하지만, 인생의 어느 부분에서는 확실히 효과가 있는 거 같다.

내가 ‘해야하는 일’을 했을 때보다 ‘하고 싶은 일’을 했을 때, 결과가 더 좋았다.

예를 들어서 나는 몇 달 전부터 Bulid_IN_Public(내가 하는 과정을 인터넷에 공유하는 것) 에 사로잡혀

“이거 해서 사람들한테 인정받아야 해. 내가 뭘 하는지 세상에 알린다면 돈을 많이 벌어서 먹고 싶은 거 다 먹고 평생 마이애미 리조트에서 배 두드리며 살 수 있겠지.”

이런 생각을 했었다.

이렇게 결과에만 집중하다 보니까,

실제로 별로 내가 하는 일을 촬영하고 편집하는 게 재미가 없었다.

그니까 결과만 바라보니, 과정은 고통스러웠고, 고통스러우니까 점점 미루게 됬다.

그래서 방향을 틀어서 내가 하고 싶은 거. 남한테 보여주는 게 아니라 미래의 나 자신이 볼 수 있게 해보았다.

그랬더니, 정말 지금 22살의 나를 기록하는 게 어렵지 않은 일이 되었다. 하루에 40분은 기본으로.

지금 이 글도 마찬가지이다.

의식의 흐름대로 쓰는 매우 엉성한 글이며, 이걸 쓰는 나조차도 내가 뭔 말을 쓰는 지 모르겠다.

지금 노션에서 띄어쓰기나 맞춤법이 틀려서 온통 글이 빨간 줄 투성이지만, 신경쓰지 않는다.

남들을 위해서 만드는 게 아니라, 나 스스로의 재미를 위해서 만드는 것임을 생각한다면

오직 그 상황에서만 완벽주의를 내려놓고 성장할 수 있는 기회들을 만들어낼 수 있는 것임을 느낀다.

비즈니스도 마찬가지가 아닐까 생각한다.

내가 해결하고 싶은 문제를 해결하는 것이 장기적으로 봤을 때, 같은 문제를 해결하고 싶은 인재들의 마음을 움직일 수 있는 힘을 가지고 있지 않을까?

내가 해결하고 싶은 문제를 해결하는 것이 내가 더 몰입하고, 투자할 수 있는 기회를 나 스스로에게 줄 수 있는 게 아닐까?

내가 해결하고 싶은 문제를 해결하는 것이 실패하거나, 누군가 나보다 먼저 그 문제를 해결하는 것의 충격을 줄일 수 있는 방법이 아닐까? 왜냐면 내가 해결하고 싶은 문제가 해결되었으니까.

12
9

포스트

아직 포스트가 없습니다.