실제 ML 작업에서의 Astra vs. Fable 5.1 비교 — 장단점 및 트레이드오프
Astra vs. Fable 5.1 on real ML tasks -- tradeoffs, strengths, shortcomings
핵심 요약
Astra와 Fable 5.1을 실제 ML 워크플로우에 투입해 비교한 결과, Astra는 기술적 엄밀함이, Fable은 코드 가독성과 분석의 통찰력이 뛰어났습니다.
- 모델 비교 — Astra는 에이전트적이고 엄밀한 디버깅에 강하며, Fable은 코드 가독성과 분석 보고서의 통찰력이 우수함
- 기술적 차이 — Astra는 환경 설정과 재현성에 집중하는 반면, Fable은 더 자연스럽고 관용적인 코드를 작성함
- 성능 결과 — 두 모델 모두 인간의 피드백 이후 F1/정확도가 0.02~0.04 향상되었으며 최종 수치는 비슷함
- 사용성 평가 — Astra는 과도한 분석으로 중요도 판단에 어려움을 겪는 반면, Fable은 핵심을 짚는 판단력이 돋보임
Fable 5.1이랑 Astra(둘 다 xhigh) 돌려서 ML 텍스트 처리랑 모델 학습 워크플로우 비교해 봤는데, 결과가 진짜 극과 극이네. 글 좀 기니까 주의해라.
세 줄 요약 -- Astra는 에이전트처럼 코딩을 잘하고, Fable은 훨씬 논리적임. Fable이 글도 더 잘 쓰고 지시 사항도 잘 따름. 최종 결과물은 Astra가 아주 살짝 더 나았고, 과학적 엄밀함이나 재현성 측면에서 확실히 우위였음. 둘 다 사람 피드백 받고 나서 F1/정확도가 0.02~0.04 정도 올랐는데, 아직 AI/ML 텍스트 처리, 벡터화, 모델 학습 과정을 완벽하게 마스터한 건 아니라는 소리임.
Astra는 코딩을 더 잘함. Fable이 80/20으로 나눈 거랑 다르게 70/15/15(학습/검증/테스트)로 엄격하게 평가 프로토콜 짜고, 검증 셋으로 모델 고르는 식으로 훨씬 체계적이었음. Fable은 그냥 테스트 F1 점수 보고 고르더라. 디버깅도 Astra가 훨씬 깊게 파고듦. 둘 다 gensim 4.4 컴파일된 커널 버그 만났는데, Fable은 해결하려다 실패하고는 그냥 stderr 알림 숨겨버리더라(나한테 말은 해줬음). 반면에 Astra는 원인 끝까지 파고들어서 gensim 버전 낮추고 호환되는 NumPy/SciPy 의존성까지 싹 다 맞춰서 환경 고쳐버림.
Astra는 training-run.py 코드를 아주 단단하게 짰음. 내 기본 환경 안 건드리고 uv venv 새로 만들어서 돌리고, 나중에 재현 가능하게 말뭉치 SHA-256 해시값 따고, 분할 매니페스트랑 run-summary.json까지 뽑아냄. 심지어 QA용으로 헤드리스 브라우저 띄워서 스크린샷까지 찍더라(이게 필요한지는 모르겠는데, 암튼 과할 정도로 꼼꼼함). Fable 빌더 스크립트는 tmp 폴더에만 잠깐 생겼다 사라지는 식이라 Astra에 비하면 좀 허술함.
Astra는 서브 에이전트 활용도 훨씬 잘함. 내가 미리 만들어둔 노트북 리뷰어랑 인용문 체크 에이전트까지 끌어다 썼는데, 리뷰어가 문장 끝 단어 잘리는 토큰화 결함을 잡아내서 고치고 회귀 테스트까지 남겨둠. Fable은 왜인지 내가 쓸 수 있게 해둔 서브 에이전트를 아예 안 불러서 이 문제를 놓침(보통은 잘하는데 이번엔 좀 의외였음).
망가진 환경에서 포렌식 수준으로 기록 남기면서 알아서 굴러가는 에이전트가 필요하면 무조건 Astra임. 근데 아직 리뷰 안 끝났다. Fable이 반격할 차례임.
Astra는 텍스트 인코딩에서 확실하게 검증 가능한 결함을 하나 터뜨림. UTF-8 데이터 다루는데, Astra는 Windows-1252 디코딩으로도 통화 기호가 보존된다고 우기더니, 최종 HTML 결과물 보니까 통화 기호 있던 자리가 다 깨져서 나옴. Fable은 UTF-8 제대로 읽어서 검증하고, 그냥 정석대로 깔끔하게 출력함.
두 모델한테 이번 작업 분석 보고서도 써보라고 시켰는데, Fable 쪽이 훨씬 통찰력 있었음. Claude 특유의 말투를 내가 진짜 싫어하는데도, a) 5.1 버전은 그 'Claude스러운' 느낌이 많이 줄었고, b) Fable은 내가 준 평가 기준을 훨씬 뛰어넘음. 텍스트 전처리 파이프라인에서 별 쓸모도 없는데 비용만 많이 드는 단계를 찾아내려고 어블레이션(ablation)까지 돌리고, 내가 놓쳤던 분류 랭킹의 복잡성까지 짚어내더라. 글 쓰는 거라면 난 무조건 Fable 5.1 고름. Claude한테 이런 말 해본 게 얼마 만인지 모르겠네.
글 얘기가 나와서 말인데, Fable이 짜는 코드가 훨씬 읽기 편하고 관용적임. LLM이 제약 없이 짠 코드라기보다는 내가 짰을 법한 코드랑 비슷함(물론 coding-conventions.md 파일 만들어서 둘 다한테 내 요구사항 적용하긴 했는데, Fable이 훨씬 잘 따르고 애초에 코드를 자연스럽게 짬). Astra 코드는 가끔 보다가 '이게 왜 여기서 이렇게 돌아가지?' 싶어서 눈 가늘게 뜨고 한참 들여다봐야 할 때가 있었음. 난 코딩 고수도 아니고(아직 배우는 중임) 코드를 보면서 배워야 하는 입장이라, 이런 가독성이 나한테는 꽤 중요함.
마지막으로, Fable은 작업 범위를 더 잘 잡았어. Fable은 시간을 들여 토큰을 소모하면서 반복적으로 실행하고, 하이퍼파라미터를 조정하고, 모델을 재학습시키면서 최적의 설정을 찾아냈지. 그동안 Astra는 gensim 에러를 깊게 파고들었어. Fable은 이 과정을 통해 성능을 상당히 끌어올렸지만, 결과적으로 Astra의 수치와 비슷해지는 수준이었어(아래 표 참고). Astra는 학습 과정에서 처음부터 홈런을 친 것 같아서, 똑같은 워크플로우를 탔을지는 잘 모르겠네. 그리고 Astra는 내가 코드를 더 간결하게 짜려고 TensorFlow+Keras를 쓰도록 venv를 특정 방식으로 빌드해놨는데, 멋대로 PyTorch를 추가해서 내 설정을 망쳐놓더니 결국엔 다시 TF로 돌아가더라. 모델 학습에 걸린 실제 시간은 거의 비슷했어.


