Efaimo Dashboard 소개: 실용적인 ML 학습 로그 분석 도구

신경망 압축 기술을 연구하면서, 우리는 끊임없이 터미널 창과 텍스트 파일에 흩어진 학습 로그들과 씨름해왔습니다. 과적합(overfitting) 진단이나 검증 손실 추이 비교를 위해 이 로그들을 수동으로 파싱하는 일은 점점 더 지루해졌죠.

그래서 우리는 Efaimo Dashboard (app.efaimo.com)를 만들었습니다. 브라우저 기반의 가볍고 실용적인 ML/DL 학습 로그 실시간 분석 도구입니다.


문제: 학습 로그는 너무 복잡하다

딥러닝 모델을 학습시켜본 적이 있다면, 다음과 같은 상황에 익숙할 겁니다. 터미널에는 이런 로그가 출력되죠:

Epoch 1/100 - train_loss: 0.523 - val_loss: 0.487 - val_r2: 0.89
Epoch 2/100 - train_loss: 0.412 - val_loss: 0.398 - val_r2: 0.92
...

아니면 TensorBoard에서 추출한 CSV 로그, 커스텀 로거가 만든 파이프 구분 형식, 또는 각 지표가 별도 줄에 있는 멀티라인 형식일 수도 있습니다. 프레임워크나 로깅 라이브러리, 개인 취향에 따라 형식은 천차만별입니다.

대부분의 경우, 우리는 수천 줄을 수동으로 스크롤하며 최적 에폭을 찾거나, 엑셀에 복붙해서 일회용 Python 스크립트를 작성하게 됩니다. 터미널 출력을 눈으로 보며 과적합 패턴을 찾으려 애쓰고, 어떤 실험에 어떤 하이퍼파라미터를 썼는지 결국 까먹죠. 더 나은 방법이 필요했습니다.


해결책: 스마트 파싱 + 자동 분석

Efaimo Dashboard는 단일 페이지 웹 애플리케이션으로, 거의 모든 형식의 학습 로그를 받아서 자동으로 파싱합니다. 대부분의 형식에서 수동 컬럼 매핑이 필요 없습니다. 그 다음에는 스무딩 옵션이 있는 인터랙티브 차트로 지표를 시각화하고, 학습 패턴을 진단해서 과적합이나 과소적합을 찾아내며, 손실 곡선을 기반으로 실행 가능한 권장사항을 제공합니다.

가장 좋은 점은 모든 작업이 브라우저의 클라이언트 측에서 실행된다는 겁니다. 서버 업로드도, API 키도, 개인정보 걱정도 없습니다.


핵심 기능

1. 자동 포맷 감지

파서는 놀라울 정도로 다양한 로그 형식을 기본적으로 처리합니다. 헤더가 있는 CSV와 TSV 파일은 문제없고, Epoch 1/100 - train_loss: 0.523 - val_loss: 0.487 같은 하이픈 구분 텍스트 로그도 올바르게 파싱됩니다. 파이프 구분 형식이나 각 지표가 별도 줄에 있는 멀티라인 형식도 모두 지원합니다.

내부적으로는 여러 구분자(쉼표, 세미콜론, 탭, 파이프, 공백)를 테스트하고 점수 평가 휴리스틱을 사용해서 최적의 것을 선택합니다. 시스템은 또한 지표 이름을 적극적으로 정규화하므로 train_loss, Training Loss, TRAIN_LOSS가 모두 동일한 내부 키로 매핑됩니다.

2. 지능적 패턴 인식

로그가 파싱되면, 분석 엔진이 학습 곡선을 검사하고 무슨 일이 일어나고 있는지 분류합니다. Train loss는 계속 감소하는데 validation loss가 증가한다면 과적합으로 플래그를 겁니다. 두 손실 모두 높은 수준에서 정체되어 있으면 과소적합입니다. 에폭 전반에 걸쳐 validation loss의 분산이 크면 불안정한 학습을 신호합니다. Best epoch이 끝부분에 있고 validation loss가 여전히 개선되고 있다면, 더 학습하면 도움이 될 수 있습니다. 그리고 손실이 적절한 수준에서 안정화되었다면 좋은 수렴 상태입니다.

각 진단에는 평이한 언어로 된 설명과 구체적인 권장사항이 함께 제공됩니다. 차트만 보여주는 게 아니라, “드롭아웃 비율을 높이세요” 또는 “학습률을 50% 줄이세요” 같은 구체적인 조언을 해줍니다. 잠재적인 데이터 문제에 대한 경고도 제공합니다.

이 자동화된 피드백 루프는 수동으로 플롯을 검사하고 문제를 추측하는 것에 비해 많은 시간을 절약해줍니다.

3. 실시간 시각화

대시보드는 Recharts를 사용하여 지표를 렌더링합니다. Loss 추이(train/val), accuracy 또는 R² 점수, 오차 지표(MAE, RMSE, MAPE, MSE), 그리고 추적 중인 기타 커스텀 지표들을 위한 별도 차트가 있습니다.

Exponential Moving Average (EMA) 스무딩을 토글해서 노이즈를 줄이고 추세를 더 명확하게 볼 수 있습니다. 스무딩 강도는 슬라이더로 조절 가능합니다. 수천 에폭이 있는 대용량 로그의 경우, 도구가 자동으로 데이터 포인트를 다운샘플링해서 중요한 추세를 잃지 않으면서도 렌더링 속도를 빠르게 유지합니다.

4. 메트릭 매핑 (수동 재정의)

컬럼명이 규칙을 따르지 않는 경우, 수동으로 매핑할 수 있습니다. 어떤 컬럼이 train_loss, val_loss 등을 나타내는지 선택하기만 하면 됩니다. 커스텀 로깅 설정이나 비표준 명명에 유용합니다.

5. 내보내기 및 공유

결과를 팀과 공유하거나 보고서용으로 저장해야 하나요? CSV로 내보내기해서 파싱된 데이터를 깔끔한 스프레드시트로 다운로드하거나, best epoch과 최종 손실 같은 지표를 노트에 복사하면 됩니다.


기술 설계

우리는 의도적으로 아키텍처를 단순하고 클라이언트 중심으로 유지했습니다. 프론트엔드는 UI 컴포넌트용 React와 차트 렌더링용 Recharts를 사용합니다. 테마 및 언어 상태(라이트/다크 모드, 영어/한국어)는 Context API로 관리됩니다.

파싱 엔진은 다중 전략입니다. CSV를 먼저 시도한 다음 텍스트 기반 패턴으로 폴백합니다. 폴백 휴리스틱이 있는 정규식 기반 지표 추출을 사용하고, 견고성을 위해 지표 키를 정규화합니다.

분석 로직은 최근 에폭의 선형 회귀로 추세를 감지하고, 분산 기반 불안정성 감지를 사용하며, analysisConfig.js에서 설정 가능한 임계값을 적용합니다.

모든 것이 JavaScript를 사용하여 브라우저에서 처리됩니다. 데이터가 컴퓨터를 떠나지 않으므로 개인정보 보호 문제가 완전히 제거됩니다. 학습 로그에는 모델 아키텍처, 하이퍼파라미터, 데이터셋 이름 같은 독점 정보가 포함될 수 있습니다. 모든 것을 로컬로 유지함으로써 이 문제를 완전히 피합니다. 도구는 첫 로드 후 오프라인에서도 작동합니다.


사용 방법

app.efaimo.com에 접속해서 로그를 텍스트 영역에 붙여넣거나 .txt, .log, .csv 파일을 업로드합니다. “분석 시작”을 클릭하면 대시보드가 로그를 자동으로 파싱하고, 모든 파싱된 에폭의 테이블을 표시하며, 인터랙티브 차트를 렌더링하고, 권장사항과 함께 학습 패턴 진단을 보여줍니다.

자동 감지가 실패하면 (드뭅니다), 메트릭 매핑 섹션을 사용해서 어떤 컬럼이 어떤 지표에 해당하는지 수동으로 지정할 수 있습니다.


사용 사례

우리는 빠른 확인을 위해 Efaimo Dashboard를 내부적으로 사용하고 있습니다. “밤새 돌린 학습이 과적합되었나?” 또는 “최종 체크포인트로 어떤 에폭을 사용해야 하나?” 같은 질문에 몇 초 만에 답을 얻습니다.

실험 비교에도 유용합니다. 다른 실험의 로그를 나란히 붙여넣으면 (별도 탭에서), 어떤 하이퍼파라미터가 안정적인 수렴으로 이어졌는지 빠르게 파악할 수 있습니다.

교육 목적으로도 훌륭합니다. 학생이나 동료에게 과적합 대 과소적합을 시연하거나, 정규화 기법의 영향을 시각화하는 데 사용할 수 있습니다.

실패한 실험을 디버깅할 때는 불안정한 학습을 조기에 식별하고 수백 개의 에폭을 수동으로 분석하지 않고도 실행 가능한 제안을 받을 수 있습니다.


한계점 및 향후 작업

현재 대시보드는 단일 실행 분석만 처리합니다. 아직 내장된 다중 실험 비교가 없고, 숫자 지표로 제한됩니다 (텍스트 주석이나 이미지는 파싱할 수 없습니다). TensorBoard나 Weights & Biases와의 통합도 아직 없습니다.

다중 실행 비교 뷰와 하이퍼파라미터 추적을 추가할 계획입니다. 차트를 PNG/SVG로 내보내는 기능이 곧 나올 예정이고, 인기 있는 로깅 라이브러리와의 통합 옵션도 준비 중입니다 (원하는 팀을 위한 선택적 백엔드 서비스 가능).

특히 흥미로운 방향 중 하나는 언어 모델 보조 분석입니다. 단순한 패턴 매칭 대신, 언어 모델을 사용해서 학습 실행에서 일어나는 일에 대한 더 미묘한 설명을 제공하고 싶습니다. “왜 47번째 에폭에서 validation loss가 급증했나요?”라고 물으면 특정 설정을 고려한 맥락적인 답변을 받는 상상을 해보세요. 단순한 분산 임계값을 넘어서는 이상 감지도 연구하고 있으며, 현재 휴리스틱이 놓칠 수 있는 미묘한 문제들을 잡아낼 수 있을 것으로 기대합니다.


”Efaimo”의 의미는?

EfaimoEfficient AI Models의 약자로, 신경망 압축 및 배포 최적화에 대한 우리의 광범위한 연구 초점을 반영합니다. 대시보드는 양자화 실험 추적을 위한 내부 도구로 시작했지만, 충분히 유용하다고 판단하여 다듬고 공개했습니다.

압축 연구에 관심이 있다면, 양자화 기법대칭 vs. 비대칭 양자화에 대한 우리 글을 확인해보세요.


지금 바로 사용해보세요

라이브 데모: app.efaimo.com 피드백: 여러분의 생각을 듣고 싶습니다. [email protected] 으로 의견을 보내주세요.


신경망 학습은 이미 충분히 어렵습니다. 로그 파싱까지 어려울 필요는 없죠.

↑↓ 이동 · enter 열기 · esc 닫기