폭풍 속의 사투
나는 Angelo라는 이름의 기계를 만드는 데 몇 달을 보냈다.
코드를 응시하며 차가운 의구심이 들었다. 이 장치가 정말 작동할까?
마지막으로 코드를 확인했다. 실수를 발견했다. 나는 노트에 적었다: 세 에이전트 모두 영원히 기다리게 될 것이다.
버튼을 눌렀다. 세 명의 디지털 에이전트가 시작되었다. 한 명은 성급했고, 한 명은 판사였으며, 한 명은 회의론자였다.
모두 침묵에 빠졌다. 1분이 지났다. 3분이 지났다. 화면에는 아무런 출력도 나타나지 않았다.
LLM 에이전트는 확률에 따라 작동한다. 입력이 비어 있다면, 출력이 나올 확률은 0이다. 대기 시간은 무한대가 된다.
수정에는 20줄의 코드가 필요했다. 에이전트들에게 지침을 주고 다시 버튼을 눌렀다. 이번에는 작동했다. 회의론자가 승리했다.
안도감이 들었다. 그러다 시스템이 다시 고장 났다.
Git 에러가 나타났다. lock 파일을 삭제했다. 다음은 컴파일러 오류였다. 나는 내 코드 속의 보이지 않는 적과 싸우고 있었다.
그때 경고가 나타났다: 개입 필요(INTERVENTION REQUIRED).
문제는 모니터링 펄스였다. 체크가 45분마다 발생한다면, 감지 지연 시간은 22분이 된다.
원인을 찾아냈다. 큐잉(queueing) 문제였다.
시스템에는 스캔 시간(scan time)과 폴링 시간(poll time)이 있었다. 스캔 시간이 폴링 시간보다 길어지면 큐는 무한히 늘어난다. 마지막 작업이 끝나기도 전에 새로운 작업이 시작되었다. 락(lock)이 쌓여갔다.
시스템 전체를 다시 쓰지는 않았다. 코드 한 줄로 해결했다.
에이전트들이 다시 실행되었다. 판사가 판결을 내렸다. 기계는 기억했다.
기계는 수학을 사용하여 신뢰를 추적한다. 베타 분포(Beta distribution)를 사용한다. 시작할 때 모든 에이전트는 동일한 신뢰도를 가진다. 에이전트가 승리하면 신뢰 점수가 올라가고, 패배하면 점수가 내려간다. 기계는 패배자를 추방하지 않는다. 그저 그들의 이력을 기억할 뿐이다.
오늘 다섯 개의 진짜 버그를 찾아냈다. 다섯 개 모두 고쳤다.
로그는 거짓말을 하지 않는다. 이야기는 단지 내가 어떻게 말하느냐의 문제일 뿐이다.
Source: https://dev.to/turacthethinker/the-fight-in-the-storm-1l6b
선택 사항 학습 커뮤니티: https://t.me/GyaanSetuAi
