기록
직접 만들고 실험하며 남긴 기록 가운데, 외부에 공개할 만한 것만 골라 다시 썼습니다.
-
13배 느렸다, 원인은 못 밝혔다
평소 4.7분이면 끝나는 영상 생성 작업이 1시간을 넘겼다. 스케줄러의 타임아웃은 원격 GPU 작업을 멈추지 못한 채 다음 작업을 뒤에 쌓았고, GPU는 100% 사용 중인데 전력은 4분의 1도 안 썼다 — 다른 클라이언트가 같은 GPU를 쓰고 있었다는 정황은 있지만 인과관계는 끝내 증명하지 못했다.
-
격자가 스스로를 다시 짓고 있었다
매일 쓰는 이미지 브라우저가 빠르게 스크롤하면 빈 칸을 번쩍인다. 범인은 이미지 쪽이 아니라 목록이 늘어날 때마다 격자 전체를 부수고 다시 짓던 한 줄이었고, 하마터면 백그라운드 탭에서 잰 숫자가 나를 반대로 이끌 뻔했다.
-
거절 통지로 API를 배웠다
대형 마켓플레이스에 실제 상품 하나를 판매자 API로 직접 등록했다. 흥미로운 쪽은 성공이 아니라 거절이었다 — 지금 내가 그 API에 대해 아는 것의 대부분은, 그쪽이 내 요청을 물리며 보낸 메시지에서 배운 것이다.
-
선택자가 스스로 이상을 알리게 됐다
가격 수집기가 하루 넘게 아무것도 못 가져왔는데 아무런 경보도 울리지 않았던 사건 이후, 재구축하면서 넣은 것은 '뭔가 잘못됐다'는 뭉뚱그린 경보가 아니라 정확히 그 침묵을 다시 잡기 위한 장치였다.
-
수집 0건은 한산한 하루와 똑같이 생겼다
가격 수집기가 하루 넘게 아무것도 가져오지 않았는데 대시보드는 초록색이었다. 사이트가 막은 게 아니라 이사를 간 것이었고, 진짜 문제는 '데이터 없음'이 경고로만 취급돼 아무도 깨우지 않았다는 점이었다.
-
실패의 대부분은 실패가 아니었다
무인으로 돌던 파이프라인의 실패 로그가 168건까지 쌓였다. 고치기 전에 항목의 의미부터 갈라봤더니 124건은 설계대로 동작한 '건너뜀'이었고, 남은 진짜 실패는 하나의 사고와 증거를 스스로 지우는 두 개의 결함이었다.
-
지표는 넷 다 통과시켰다. 좋았던 건 하나였다.
일주일 넘게 멈춰 있던 이미지-투-비디오 파이프라인을 다시 켜고 영상 네 편을 뽑았다. 자동 붕괴 감지 지표는 네 편 모두 통과시켰는데, 실제로 재생해서 본 것 중 좋았던 건 한 편뿐이었다.
-
LoRA가 서 있는 자세만 배웠다
캐릭터 하나를 이미지 생성 모델에 소규모로 파인튜닝(LoRA)했다. 강도별 테스트와 캡션 원칙까지는 예상대로 흘렀는데, 포즈 테스트에서 학습 데이터에 없던 자세만 골라 전부 실패했다 — 원인은 명확했다.
-
평균값이 실제 차이를 가릴 때
이미지 생성 파이프라인 두 개를 정면 비교했더니 평균은 거의 무승부였다. 그런데 주제별로 나눠보니 완전히 반대되는 두 결과가 서로를 지워버리고 있었고, 이어서 세운 AI 판정자도 겉보기와 다른 문제를 안고 있었다.
-
배포는 되었는데 사이트는 바뀌지 않았다
홈페이지를 실제 링크로 연결된 카드 형태로 새로 짰다. 문제는 그다음이었다 — 여러 번 푸시해도 라이브 사이트가 그대로였고, 원인은 캐시가 아니라 배포 경로 자체가 엉뚱한 곳에 고정된 것이었다.
-
화면은 옛 모델 이름을 계속 말하고 있었다
이미지를 읽고 판독하는 파이프라인의 판독기를 다른 기계로 옮겼다. 값 하나만 바꿨을 뿐인데 실제로는 즉시 반영됐다. 그런데 화면 머리말은 계속 옛 판독기 이름을 표시하고 있었다.
-
판독기에게 무엇을 찾는지 미리 말해버렸다
이미지 판독기를 검증하다가 프롬프트 한 줄이 눈에 걸렸다. 연구 질문을 그대로 흘려 넣고 있었고, 결과는 재현율 100%·정밀도 12% 안팎 — 다 맞히는 게 아니라 거의 다 그렇다고 부르는 판독기였다.
-
끝났다고 거짓말하지 않는 전송 도구
내장 디스크와 외장 SSD, 네트워크 저장소 사이를 오가는 파일 복사를 안전하게 하려고 작은 도구를 만들었다. 빠른 게 아니라 안전한 쪽이 목표였고, 10GiB 전송을 40% 지점에서 일부러 끊어보는 것으로 그 안전을 확인했다.
-
한 단어로만 학습된 세 개의 캐릭터 모델
새 캐릭터 파인튜닝을 시작하기 전 8스텝짜리 스모크 테스트를 돌렸다가 로그 한 줄을 발견했다. 학습 스크립트에 캡션 확장자 지정이 빠져 있었고, 그 결과 앞서 만든 캐릭터 모델 세 개가 전부 캡션 파일이 아니라 폴더 이름 한 단어로만 학습돼 있었다.
-
더 큰 모델이 더 느리고 더 틀렸다
화면 원문을 한국어 직역으로 바꿔주는 도구의 번역 엔진을 실제 모델로 교체하면서 네 가지 크기의 모델을 같은 문장으로 비교했다. 가장 큰 모델이 가장 느렸고, 가장 많이 틀렸다.
-
메뉴는 디스플레이 둘이라면서 셋을 나열했다
모니터를 켜고 끄는 메뉴바 유틸에서 머리글은 '활성 2개'인데 목록엔 3개가 떴다. 숫자는 실시간 조회였고 목록은 과거 이력이 쌓인 것 — 디스플레이 ID가 연결 순서에 따라 다시 배정된다는 사실이 그 틈을 만들었다.
-
스케줄러를 멈춰도 일은 멈추지 않는다
영상 생성 스케줄러를 밤새 돌리다가 두 가지를 놓쳤다 — 코드를 고쳐도 이미 뜬 프로세스는 옛 코드를 들고 있었고, 스케줄러를 내려도 이미 넘어간 작업은 렌더 서버에서 계속 돌고 있었다.
-
계측기가 첫날부터 나를 반박했다
영상 생성 실험실을 눈이 아니라 기록으로 보려고 관측 층을 하루 만에 지었다. 올라온 첫날, 그것이 가장 먼저 한 일은 내가 전날 내린 결론을 뒤집는 것이었다 — 열두 번의 확인이 전부 같은 시드였다.
-
제재가 아니라 검문이었다
예약 발행기가 소셜 플랫폼 API에 글을 올리지 못하게 됐다. 열네 시간 반 동안 모든 호출이 차단으로 돌아왔고, 나는 누구나 할 법한 추측을 두 번 했고 두 번 다 틀렸다. 결정적 단서는 내가 배경 잡음으로 넘겼던 사실이었다.
-
움직이지 않게 된 환율
매일 아침 아홉 시에 나가는 자동 뉴스레터의 환율 줄이 사흘 연속 0.00%였다. 빠진 것도 오류도 아닌, 자신만만한 0이었다. 환율은 움직였고, 비교가 같은 값 두 벌을 들여다보고 있었을 뿐이다.
-
키워드 도구는 수요만 재어준다
팔릴 만한 틈새를 찾으려고 검색 포털 광고 도구의 키워드 자료 23개를 한 표로 합쳤다. 만드는 건 쉬운 쪽이었고, 그 숫자들이 말해주지 못하는 것을 알아내는 데 저녁의 나머지가 들어갔다.
-
산수는 맞았는데 살 수 없는 물건이었다
해외 중고 매물 차익 수집기의 첫 실행에서 1위로 뜬 것은 파손품이었다. 계산은 끝까지 맞았다 — 문제는 가장 싼 매물이 항상 1등으로 오르는 구조 자체였다.
-
실행 중인데 아무것도 만들지 않았다
야간 이미지 생성 라인이 9.6시간 동안 산출물을 만들지 않았다. 소비 작업자는 실행 중이었지만 자동 공급은 꺼져 있었다. 명령 수락, 전환 중, 실제 진행을 나눠 보여주도록 상태 표시를 바꿨다.
-
동영상 이름을 단 이미지
PNG 이미지에 .mp4 이름을 붙여 올렸다. 서버는 확장자를 보존하되 실제 내용은 이미지, 비율은 4:3으로 판별했다. 기존 자산 174개를 재검사해 분류 168개를 바로잡았다.
-
브라우저만 읽을 수 있던 SVG
다이어그램은 브라우저 미리보기에서 멀쩡했지만 저장한 SVG는 다른 뷰어에서 제대로 열리지 않았다. 화면용 HTML 라벨과 파일용 순수 SVG를 별도로 렌더링해 경계를 나눴다.
-
600번 나타난 기사, 서로 다른 URL은 194개
뉴스 수집 기록의 600개 항목을 URL 기준으로 정규화하니 서로 다른 항목은 194개였다. 재등장을 구별하는 식별자와 제외 원본 보존은 이후 판정을 설명하고 고치기 위한 출발점이었다.
-
아무도 못 본 72GB
부팅 30분 만에 72.5GB가 조용히 빠져나가고 있었다. 백업 도구가 전날 들어온 118GB 폴더를 다른 기기로 밀고 있었을 뿐 잘못된 동작은 아니었다 — 다만 그것을 알려주는 장치가 없었다.
-
브라우저가 조용히 놓아버린 파일
자산 브라우저에서 이미지를 데스크톱으로 드래그하던 기능이 어느 순간 멈췄다. "예전엔 됐다"는 말을 git blame으로 좇아가니 커밋 하나가 기능을 빼면서 대신할 구현을 약속만 하고 쓰지 않았다.
-
쉬운 벤치마크에는 승자가 없었다
비전 모델 세 개가 모두 통과한 이미지 세 장으로는 우열을 가릴 수 없었다. 같은 이미지에 더 까다로운 질문을 던지자 가장 큰 모델을 택했던 결론이 뒤집혔다.
-
양자화된 모델은 보지 못했다
27B 모델을 4비트로 더 압축하면 용량은 줄여도 볼 수는 있을 거라 기대했다. 벤치마크는 두 장 다 '이미지가 제공되지 않았다'는 답만 돌려줬다 — 언어 능력은 멀쩡한데 이미지와 토큰 공간을 잇는 다리만 압축 과정에서 사라져 있었다.