-
유니티 학습 프로젝트 - < 1 > TOP NEW
개요 지난 글에서 이런 다짐을 적었다. 다음에는 AI에게 완성 코드를 먼저 요청하지 말고, 구현 방법과 그 이유, 다른 방법과의 trade-off를 먼저 물어보겠다고. 말은 쉽다. 그래서 진짜로 해봤다. 새 Unity 프로젝트를 시작하면서 AI의 역할을 아예 둘로 쪼갰다. 하나는 프로젝트 설계를 도와주는 기획 AI, 다른 하나는 코드를 절대 주지 않고 조언만 하는 멘토 AI다. 그리고 첫날, 코드는 한 줄도 안 썼다. 대신 기획서(spec)를 내 손으로 처음부터 썼다. 이번 글이 답할 질문은 하나다. 코드를 주지 않는 AI는 과연 쓸모가 있었을까? 1. 역할을 둘로 나눴다 — 기획 AI와 멘토 ... Read More
-
OpenAI Game Builders - < 6 > TOP NEW
개요 지난 글에서는 Role A로 spec 기반 코어 기능을 구현하고, PixelLab.ai와 GPT를 섞어 캐릭터 애니메이션을 만든 과정을 정리했다. 마지막 날에는 새 기능을 더 만드는 대신 디버깅과 제출용 Web build에 시간을 사용했다. 이때 만난 두 문제는 겉으로 보이는 증상과 실제 원인이 달랐다. 하나는 작은 문턱에서 트라우마가 하늘로 사라지는 문제였고, 다른 하나는 Web build에서 한국어가 보이지 않는 문제였다. 이번 글이 답할 질문은 하나다. AI가 spec을 보고 코드를 만들었는데도, 왜 마지막에는 사람이 코드와 Unity 동작을 직접 이해해야 했을까? 1. 트라우마가 문... Read More
-
SSAFY - < 42 > TOP NEW
개요 35편부터 41편까지, 모델을 현장에 내놓기 위한 방법을 순서대로 다 봤다. 숫자를 줄이고, 모델을 깎고, 칩에 맞춰 소수점을 지우고, 현장에서 흔들리면 파라미터를 밀거나 센서를 조절하고. 그런데 그 전부를 동원해도 안 풀리는 지점이 있다. 애초에 문제를 잘못 세팅했을 때다. 이번 편은 도구가 아니라 문제를 세우는 쪽 이야기다. 그 분야를 아는 사람이 설계에 들어가면 무엇이 달라지는가. 그리고 자료가 든 사례가 하필 수면의학이라, 앞의 편들과 이어지는 지점이 많았다. 이번 글이 답할 질문 도메인 전문지식을 안다는 게 모델 설계에서 구체적으로 무슨 일을 하는가. 그게 경량화까지 되는가. 교... Read More
-
SSAFY - < 41 > TOP NEW
개요 40편에서 분포 이동을 봤다. 학습할 때 본 데이터와 현장에 들어오는 데이터가 다른 문제. 그리고 그 답으로 모델을 데이터 쪽으로 살짝 옮기는 방법(TTA)을 봤다. 이번 편은 같은 문제에 대한 정반대 답이다. 모델을 옮기지 말고, 데이터를 모델 쪽으로 옮기면 되지 않나? 처음 들었을 때 이게 무슨 소린가 싶었다. 데이터는 그냥 들어오는 거 아닌가. 그런데 생각해보면 아니었다. 카메라가 찍어서 들어오는 것이라면, 카메라 설정을 바꾸면 들어오는 데이터가 바뀐다. 이번 글이 답할 질문 모델도 안 키우고 모델을 고치지도 않으면서 정확도를 올릴 수 있을까. 센서만 만져서. 교육 과정 자... Read More
-
SSAFY - < 40 > TOP NEW
개요 38편과 39편은 모델을 기기에 올리는 이야기였다. 어떤 칩에 올리고, 어떻게 소수점을 지워내는지. 그래서 올렸다고 하자. 그럼 끝일까. 자료가 여기서 좀 얄궂은 숫자를 보여준다. 학습할 때 검증 정확도가 97%였던 모델을 현장에 내놨더니 68%가 됐다. 모델은 하나도 안 바뀌었다. 바뀐 건 들어오는 데이터다. 학습할 땐 깨끗한 사진으로 배웠는데, 실제 현장의 카메라는 어둡고 흐리고 노이즈가 낀다. 이번 글이 답할 질문 이미 배포한 모델을, 정답 라벨도 없고 다시 학습할 시간도 없는 상태에서, 어떻게 그 자리에서 고쳐 쓰는가. 교육 과정 자료는 대외비라 원본 자료는 싣지 않는다. ... Read More
-
SSAFY - < 39 > TOP NEW
개요 38편에서 이런 이야기를 했다. 가속기가 모르는 연산이 모델 안에 하나라도 있으면, 그 부분만 CPU로 되돌아간다. 그리고 그 왕복이 제일 비싸다고. 그때는 그 “모르는 연산”을 연산자 종류 문제로만 봤다. 커스텀 연산을 직접 짜 넣었다거나, opset 버전이 안 맞는다거나. 그런데 자료를 더 보니 그게 아니었다. 연산자 이름이 멀쩡해도 걸리는 게 있었다. 가속기는 소수를 모른다. 아무리 흔한 곱셈이라도 소수가 끼어 있으면 그 계층은 못 맡는다. 38편에서 NPU와 TPU를 “행렬 곱 전용 회로”라고만 소개하고 넘어갔는데, 정확히는 정수 행렬 곱 전용이었던 것이다. 35편에서 양자화를 배울 때는 “3... Read More
-
SSAFY - < 38 > TOP NEW
개요 35~37편은 계속 모델을 줄이는 이야기였다. 숫자를 몇 비트에 담을지, 가중치를 어떻게 깎을지, 어디만 학습시킬지. 그런데 줄이는 데는 목적이 있었다. 어딘가에 올리려고 줄인 거다. 그럼 그 어딘가가 어디인지, 거기서 뭐가 기다리고 있는지를 봐야 한다. 이번 편이 그 이야기다. 솔직히 이 파트는 처음부터 끝까지 새로 배우는 내용이었다. 나는 서버 개발을 하다가 왔고, 지금까지 내가 만든 건 전부 서버 어딘가에서 돌아가는 것이었다. 모델이 폰이나 로봇이나 공장 기계 안으로 들어간다는 상황 자체를 생각해본 적이 없었다.. 이번 글이 답할 질문 왜 굳이 기기 안에서 모델을 돌리려고 하고, 왜 내가 만... Read More
-
SSAFY - < 37 > TOP NEW
개요 35편에서 숫자를 담는 법을, 36편에서 모델을 줄이는 법을 봤다. 이번이 마지막 편이다. 줄인 모델을 내 것으로 만드는 법. 경량화까지는 어떻게든 됐다고 치자. 그런데 서비스를 만들려면 그다음 문제가 남는다. 범용 모델은 일반적인 능력은 강하지만, 특정 도메인에 특화시키려면 조정이 필요하다. 사내 문서를 이해해야 한다거나, 특정 말투로 답해야 한다거나. 새로 모델을 만들 수는 없다. 그럼 있는 모델을 튜닝해야 하는데, 700억 개짜리 모델의 가중치를 전부 갱신하는 건 사실상 처음부터 학습하는 것과 비슷한 비용이 든다. 이번 글이 답할 질문 모델 전체를 건드리지 않고 모델을 내 것으로 만들 수 있... Read More