행인로 개인 작업실

계측기가 첫날부터 나를 반박했다

영상 생성 실험실을 위한 관측 층을 하루 들여 지었다. 색인기 하나, 작은 로컬 서버 하나, 그리고 파이프라인별·파라미터별·프롬프트별·입력 이미지별로 클립을 견주는 화면 일곱 개. 만든 목적은 생성된 영상을 기억으로 판정하는 일을 그만두는 것이었다. 그것이 올라온 날, 가장 먼저 한 일은 내가 전날 도달한 결론을 뒤집는 것이었다.

그것이 깨뜨린 결론

앞선 이틀에 걸쳐 원치 않는 움직임을 잠그는 것처럼 보이는 프롬프트 문구를 찾아냈다. 자꾸 문을 통과해 걸어 나가던 인물이 걸음을 멈췄다. 꼼꼼히 시험했다고 생각했다 — 클립 열두 개, 가이던스 수치와 스텝 수와 스케줄링 파라미터를 바꿔가며, 전부 같은 문구가 통한다고 확인해줬다.

열두 개 전부 같은 랜덤 시드로 생성한 것이었다.

시드를 1만큼 바꾸자 — 같은 문장, 같은 제외 단어, 같은 파이프라인, 데이터베이스에서 동일함을 확인 — 문이 열리고 인물이 걸어 나갔다. 내가 써넣은 모든 금지 문구는 프롬프트에 그대로 있었다.

그래서 “그 문구가 움직임을 잠근다”는 “그 문구가 때때로 움직임을 잠근다”가 되었고, 이건 다른 종류의 증거를 요구하는 다른 주장이다. 여기서 움직임 통제는 켜고 끄는 스위치가 아니라 밀어 올리는 확률이고, 확률은 클립 하나씩으로는 평가할 수 없다. 판정의 단위가 여러 시드에 걸친 성공률이어야 한다.

적어둘 가치가 있는 건 이 발견이 아니라 순서다. 나는 별 이유 없이 직감으로 재현성 확인을 계획의 앞쪽에, 범위 확장을 뒤쪽에 뒀다. 반대로 갔다면 밤새 한 시드로 클립 열여섯 개를 더 뽑고 확신만 얻었을 것이다.

조용히 무의미했던 측정 셋

이런 종류의 오류를 찾기 시작하면, 드물지 않다는 걸 알게 된다.

파이프라인 사이의 클립 개수를 비교하고 있었다. 한쪽은 초당 24프레임, 다른 쪽은 16프레임으로 돌고, 각자의 모델에서는 둘 다 맞다. 그러니 “하나는 22분, 다른 하나는 37분”은 3.4초짜리와 5.1초짜리를 견준 것이었다. 완성 영상 1초당으로 따지면, 비싸 보이던 쪽이 실은 싼 쪽이다. 밤새 돌리는 예산은 이제 클립이 아니라 산출 초로 센다.

움직임 지표를 하나 도입했다 — 프레임 사이 평균 밝기 차이. 두 자릿수 규모에 걸쳐 클립을 잘 갈라주고, 정확히 한 가지 일을 잘한다. 얼어붙은 출력을 잡아내는 것. 첫날 이 지표는 인물이 문으로 걸어 나간 클립을, 인물이 가만히 서 있는 클립보다 낮게 매기기도 했다. 무언가 움직였다는 것은 재지만, 무엇이 움직였는지는 영영 재지 못한다. 그 한계를 옆에 적어둔 채, 1차 거름망으로 남긴다.

그리고 메모리 보호 장치가 하룻밤 생성을 통째로 날릴 뻔했다. 스왑 사용 비율이 문턱을 넘으면 새 작업을 멈추게 해뒀는데, 신중하게 들린다. 그런데 OS는 스왑 파일을 필요할 때마다 키우기 때문에 그 비율은 영구히 90% 근처에 앉아 있고, 보호 장치는 영원히 기다렸을 것이다. 아침까지 클립 하나. 같은 순간을 다른 방식으로 재보니 실제 메모리 압력은 넉넉했다. 지금 그 장치는 시스템이 스스로 움직이는 숫자에 대한 비율 대신 남은 메모리를 읽는다.

장부가 말해준 것

뷰어를 만드는 일은 그동안 무엇이 기록되었는지를 감사하게 만들기도 했고, 그 기록은 세 곳에서 새고 있었다. 한 배치 실행기는 작업 항목을 아예 쓰지 않았고, 상태 조회가 빠져 끝난 작업이 “실행 중”으로 얼어 있었고, 벤치마크 스크립트는 아무것도 남기지 않았다. 생성 기계에서 걷어 온 클립 42개 중 19개는 파일명을 보고 짐작해서 신원을 붙여야 했다.

조회를 제대로 붙인 첫 실행이 이 프로젝트 최초의 온전한 작업 기록을 만들었다. 그게 관측 층의 볼품없는 절반이다 — 무언가를 알려주기 전에, 먼저 당신이 이미 갖고 있다고 믿었던 것 중 얼마나 많은 부분이 한 번도 기록된 적 없는지를 알려준다.

마음에 든 작은 것 하나. 이미지에서 영상으로 가는 경로에 처음 먹인 입력 이미지가 아예 모양이 틀린 것이었다 — 프로젝트의 다른 모든 것이 세로인데 혼자 가로였다. 그건 저장소 바깥, 스키마도 검사도 없는 폴더에 앉아 있었다. 아무도 그것을 들여다볼 일이 없었던 이유가 바로 그것이다.