청구서를 받아도 어디서 난 값인지 되짚을 수 없다는 문제에서 출발해, 예산에 닿으면 죽이는 대신 시스템 지시문에 끼워 넣어 출력을 줄이는 조향형 통제를 시연함. 부르는 자리마다 표시를 달아 코드 바깥에 판을 두는 구조, 가져오는 조각을 스무 개에서 다섯 개로 깎는 사례, 자기네 벤치마크에서 평균 지출이 78% 줄고 끝맺는 비율이 67%에서 96%로 올랐다는 값이 나옴. 다만 그 값은 자기네가 만든 정책 묶음으로 자기네가 잰 것임.
한줄 코멘트. 예산을 넘겼을 때 죽이는 것 말고 할 일이 있다는 것이 이 발표의 값이다. 길게 쓰지 말라고 지시문에 끼워 넣고 가져올 양을 깎아서, 살려 둔 채 예산 안에 맞춘다. 끊는 것은 맨 마지막에만 쓴다. 다만 78%니 96%니 하는 수는 자기네가 만든 정책 묶음으로 자기네가 잰 것이다.
두 사람이 나온다. 앞사람만 자막 안에서 자기 이름을 댄다.
여는 문제가 또렷하다. 청구서를 받아도 그 값이 어디서 났는지 되짚을 수가 없다.
지금 판을 이렇게 부른다. 토큰을 최대한 쓰는 것을 값있게 여기는 판이고, 사람들이 스스로를 토큰 억만장자라 부르며 자랑스러워한다는 것이다.
사고 사례도 든다. 어느 큰 회사의 AI 예산이 넉 달 만에 바닥났다는 소식, 그리고 며칠에서 몇 달 사이 수억 달러로 치솟은 회사들이 있었다는 것이다. 돌고 도는 고리가 값을 키웠는데 그것을 막을 장치가 없었다.
앞선 두 시대와 견준다.
무엇으로 통제했나
| 시대 | 마주하는 곳 | 통제하던 방식 |
|---|---|---|
| 구독 | 화면 | 쓸 수 있는 양의 한도, 자리 수, 등급 |
| 클라우드 | 쓴 만큼 내기 | 자동으로 늘리고 줄이는 규칙 |
| 지금 | 모델을 부르는 것 | 여기에 제대로 된 통제 자리가 없다 |
모델 앞에 문을 세워 한도를 걸거나 더 싼 모델로 내려 보내는 것은 있다고 인정한다. 그런데 그것은 부르는 요청 하나하나를 볼 뿐이다.
필요한 것은 한 번의 실행 전체를 보는 것이라고 말한다. 도구와 에이전트 사이에서 도는 고리, 하나가 여럿을 새로 띄우는 것, 맥락이 계속 불어나는 것을 봐야 한다는 것이다.
발표가 세우는 순서
| 원칙 | 무슨 뜻인가 |
|---|---|
| 값의 단위가 토큰이다 | 값을 토큰으로 무니 값어치도 토큰으로 봐야 한다 |
| 값은 모델을 부르는 경계에서 난다 | 그러니 그 자리를 짚어야 한다 |
| 누가 불렀는지 못 대면 못 막는다 | 어느 에이전트의 어느 실행인지가 붙어야 한다 |
| 막는 것은 맨 나중이다 | 먼저 줄이고, 정책을 다 쓴 뒤에야 끊는다 |
셋째가 *귀속이다. 이것이 없으면 무엇이 잘못됐는지 큰 그림만 알고 되짚어 좁힐 수가 없다고 말한다.
판이 세 겹으로 선다
만든 것은 코드 바깥에 따로 두는 판이다. 그래서 코드에 끼어들지 않는다는 것을 설계에서 일부러 골랐다고 밝힌다.
바꾸는 것은 하나뿐이다. 부르는 자리에 표시를 다는 것이다. 어떤 틀의 어떤 함수든 붙일 수 있다.
그 표시가 두 가지 일을 한다. 드나든 것을 위로 올려 원장에 적고, 반대로 통제 판이 내리는 명령을 받아 오는 통로가 된다. 명령을 실제로 적용하는 몫은 따로 있는데, 개발자가 허용한 행동이 무엇인지 알고 있어서 부수지 않는 방식으로 먹인다.
통제 판 쪽은 층으로 나뉜다. 사용자를 묶은 무리, 실행 하나의 기록을 모은 원장, 시간 창에 걸린 예산, 할 수 있는 행동, 그리고 그것을 엮는 정책이다.
담아 두는 자리가 쓰는 쪽의 울타리 안이라 자료가 새 나갈 걱정이 없다고 말한다.
끊는 대신 돌려세운다
예산에 닿았을 때 무엇을 하나
행동이 두 갈래다. 넘으면 끊는 쪽과, 죽이지 않고 행동을 돌려세우는 쪽이다.
구체적인 예가 좋다. 자료를 가져오는 도구가 부를 때마다 조각 스무 개를 만드는데 모델이 다섯 개 넘어서는 쓰지도 않는 경우다. 그러면 통제 판이 가져올 것을 다섯 개로 깎으라는 명령을 내려보낸다.
값을 지키는 장치도 하나 든다. 쓴 예산의 비율과 쓰는 속도 둘을 보다가 바닥날 것 같으면, 시스템 지시문에 「예산이 모자라니 짧게 내라」는 식으로 끼워 넣는다.
시험용으로 든 것은 찾아보는 에이전트와 간추리는 에이전트 둘이 이어진 흐름이다.
먼저 정책은 다 돌되 집행은 안 하는 모드로 보인다. 실행은 끝까지 가고 화면에는 어떤 정책이 돌았는지가 남는다.
다음은 켠 채로 돌린다. 미리 정한 값을 넘겨 그 자리에서 죽는다. 스스로 이것을 차단기에 빗댄다.
마지막이 돌려세우는 쪽이다.
자기네가 잰 값
| 무엇 | 값 |
|---|---|
| 평균 지출 | 78% 줄었다 |
| 끝맺는 비율 | 67%에서 96% 남짓으로 |
| 견준 대상 | 그냥 조여 막는 방식 |
그냥 조여 막으면 무슨 일이 있어도 실행이 죽는다는 것이 대비의 근거다.
여기서 끝이 아니라고 말한다. 앞으로는 원장을 보고 아직 못 잡는 실패 갈래를 스스로 묻게 해서, 새 정책을 만들거나 있는 값을 다듬게 하고 싶다는 것이다.
잰 값이 전부 자기네 것이다. 78%도 96%도 자기네가 만든 정책 묶음으로 자기네가 쟀다. 견준 대상도 「그냥 조여 막기」 하나뿐이라, 손으로 잘 짠 한도와 견주면 어떤지가 없다.
무엇을 잃었는지 없다. 지출이 78% 줄었다면 답의 품질은 어떻게 됐는지가 나오지 않는다. 짧게 내라고 끼워 넣는 방식은 답을 바꾸는 일인데 그 대가가 없다.
저장소 둘에서 잰 값이다. 오픈소스 두 곳에서 돌렸다고만 하고 실제 업무에서 잰 값이 없다.
우버 넉 달과 수억 달러는 남의 소식이다. 어디서 본 것인지, 무엇이 그렇게 만들었는지가 없다.
판을 얹는 값이 없다. 부르는 자리마다 표시를 달고 명령을 오가게 하면 느려질 텐데 그 값이 나오지 않는다.
공동 발표자는 자막에서 자기 이름을 대지 않는다. 그 이름과 몇몇 도구 이름이 자막에서 어긋나 있어 정확한 표기는 원문에서 갈린다.
용어