GoodSeed, 로컬 SQLite와 Neptune migration을 앞세운 가벼운 ML experiment tracker를 제안하다

Reddit 스레드: MachineLearning 토론
웹사이트: goodseed.ai
GitHub: Kripner/goodseed
Migration guide: Neptune to GoodSeed

GoodSeed는 MachineLearning 커뮤니티에 “의도적으로 좁은 범위에 집중한” experiment tracker로 소개됐다. orchestration, labeling, feature store, deployment까지 한 번에 품으려는 거대한 platform이 아니라, 연구자와 engineer가 매일 실제로 하는 일에 집중하겠다는 접근이다. run을 기록하고, metric을 보고, config를 비교하고, 어떤 training job이 왜 달랐는지 다시 추적할 수 있을 정도의 맥락만 정확히 남기겠다는 것이다. Reddit 글과 product site 모두 GoodSeed를 full ML Ops suite가 아니라 experiment tracker라고 분명히 규정한다.

핵심 기술 선택도 단순하다. README에 따르면 GoodSeed는 metric과 config를 로컬 SQLite 파일에 저장하고, built-in HTTP server로 이를 browser에서 시각화한다. Python API도 가볍다. 사용자는 goodseed.Run을 만들고 scalar config나 metric series를 기록한 뒤 training이 끝나면 run을 닫으면 된다. 저장 방식은 세 가지다. cloud는 로컬 SQLite를 유지하면서 background로 remote API에 sync하고, local은 완전한 로컬 모드, disabled는 기록을 no-op로 바꾼다. 덕분에 개인 laptop 실험부터 hosted access가 필요한 팀 환경까지 같은 인터페이스로 커버할 수 있다.

과도하게 무거운 stack 없이도 되는 monitoring

GoodSeed의 범위는 단순한 loss chart에 그치지 않는다. README와 Reddit post에 따르면 stdout, stderr, unhandled traceback, CPU와 memory 사용량, NVIDIA와 AMD GPU metric, 그리고 active repository의 Git metadata까지 수집할 수 있다. 특히 Git tracking이 실용적이다. dirty state, diff, commit 정보, branch, remote까지 남기므로, 나중에 “그때 머신에 뭐가 올라가 있었지?”라는 식의 추측 대신 구체적인 source tree 상태로 실험 결과를 되짚을 수 있다.

migration 관점도 눈에 띈다. 작성자들은 Reddit에서 이미 GoodSeed를 Neptune 대체재로 사용 중이라고 설명했고, 프로젝트는 Neptune의 transition 자료와 neptune-exporter 기반 migration 흐름을 직접 연결한다. 또 Neptune proxy view를 제공해, 기존 run을 GoodSeed UI로 먼저 확인한 뒤 본격 이전할 수 있게 한다.

물론 아직 초기 단계다. README는 beta를 명시하고 있고, Reddit 글도 remote server가 현재 일부 data type만 지원하며 좌석이 제한적이라고 밝힌다. 그럼에도 이 글이 호응을 얻은 이유는 분명하다. 더 많은 기능이 아니라, 로컬 저장을 기본으로 하면서 experiment tracking 자체를 깔끔한 developer workflow로 다루는 도구에 대한 수요가 실제로 존재한다는 점을 보여주기 때문이다.