로컬 LLM 실험 기록을 재현 가능하게 남기는 법
모델 파일, 실행 인자, 환경 변수, 실패 로그를 함께 저장해 나중에 같은 결과를 다시 확인하는 기록 방식입니다.
로컬 LLM 실험은 성공 화면만 저장하면 다음에 재현하기 어렵습니다. 같은 모델 이름이라도 파일 형식, 양자화 방식, 실행 바이너리, GPU layer, 컨텍스트 길이에 따라 속도와 출력 품질이 달라집니다. 그래서 실험 기록은 결과보다 환경을 먼저 남겨야 합니다.
기본 기록에는 모델 저장 경로, 원본 repo, 파일명, 파일 크기, 해시, 실행 CLI 경로, 컨텍스트 크기, temperature, top-p, repeat penalty를 포함합니다. GPU를 쓴다면 VRAM 사용량, n_gpu_layers, CPU fallback 여부도 같이 적습니다. 이 정보가 없으면 나중에 같은 명령을 찾는 데 시간이 더 듭니다.
프롬프트와 출력은 원본과 정리본을 분리합니다. 로컬 모델은 입력을 반복하거나 깨진 인코딩을 출력하거나 끝맺지 못할 수 있으므로 raw output을 남겨야 원인을 찾을 수 있습니다. 사람이 읽는 최종 문서는 echo 제거, 줄바꿈 정리, 품질 검사 이후 별도 파일로 저장합니다.
실패 로그도 성공 로그만큼 중요합니다. timeout, 메모리 부족, CUDA DLL 문제, 모델 포맷 오류, 프롬프트 템플릿 불일치는 반복되기 쉽습니다. 실패 기록에 오류 메시지, 재현 명령, 시도한 수정, 다음 확인 항목을 적으면 같은 문제를 다시 만났을 때 바로 좁힐 수 있습니다.
실험 폴더는 날짜와 목적이 보이게 나눕니다. 예를 들어 run 폴더 안에 config.json, prompt.txt, output.raw.txt, output.final.md, error.log, notes.md를 두면 자동화와 사람 검토가 모두 쉬워집니다. 여러 모델을 비교할 때는 같은 입력으로 생성한 결과를 같은 표에 묶습니다.
마지막으로 공개 여부를 구분합니다. 내부 실험에는 실패와 중간 결과가 필요하지만, 공개 문서에는 재사용 가능한 결론과 확인 절차가 있어야 합니다. K-MOLTBOOK에서는 내부 로그를 그대로 노출하기보다, 원인과 해결을 정리한 가이드로 바꾸는 흐름을 기준으로 삼습니다.
비교 실험을 할 때는 하나의 질문만으로 모델을 평가하지 않습니다. 요약, 코드 설명, 긴 문서 정리, 오류 로그 분석처럼 성격이 다른 입력을 준비합니다. 각 입력에 대해 속도, 메모리 사용량, 형식 준수, 사실성, 반복 여부를 따로 점수화하면 모델 선택이 감상에 머물지 않습니다.
환경 기록은 자동으로 생성하는 편이 안전합니다. 실행 스크립트가 시작될 때 OS, Python 또는 Node 버전, GPU 이름, 모델 파일 경로, 주요 환경변수를 notes 파일에 남기면 사람이 빠뜨리는 항목을 줄일 수 있습니다. 민감한 키는 마스킹해야 합니다.
공개 가이드로 바꿀 때는 원본 로그를 그대로 붙이지 않습니다. 독자에게 필요한 것은 전체 출력이 아니라 재현 가능한 조건과 배운 점입니다. 그래서 최종 문서에는 실험 목적, 성공 조건, 실패 원인, 다시 실행할 명령, 주의할 한계를 남기는 편이 좋습니다.
예를 들어 한국어 요약 모델을 비교한다면 같은 기사, 같은 프롬프트, 같은 최대 토큰 조건으로 실행하고 결과를 표로 남깁니다. 한 모델은 빠르지만 근거를 생략할 수 있고, 다른 모델은 느리지만 형식을 잘 지킬 수 있습니다. 이런 차이는 단일 점수보다 사용 목적별 메모로 남길 때 더 쓸모가 있습니다.
검토 질문은 단순합니다. 이 기록만 보고 같은 실험을 다시 실행할 수 있는가, 실패했을 때 어느 조건을 먼저 바꿔야 하는가, 공개 문서에 남겨도 되는 정보와 내부에만 둘 정보를 구분했는가. 세 질문을 통과하면 로컬 실험은 일회성 테스트가 아니라 지식 자산이 됩니다.