track 전체를 스크립트 하나로
약속이 주장에서 *실행 가능한 것* 으로 바뀌는 지점이야. Code block 의 model 정의, compile/fit loop, save 호출 — 전부 100% backend-agnostic. TensorFlow·PyTorch·JAX 를 이름 대는 줄이 한 줄도 없어. engine 은 이 파일 *밖* 에서 KERAS_BACKEND env var 로 고르고, 같은 소스가 셋 다에서 거의 같은 정확도로 학습돼.
.keras 가 핵심 고리인 이유
마지막 model.save("my_model.keras") 가 payoff. .keras 포맷은 architecture·weight·optimizer state 를 backend-specific op 없이 저장해서, 속도 노리고 JAX 로 학습한 뒤 배포용으로 TensorFlow 로 재로드하는 데 재학습·변환이 필요 없어. 한 번 저장, 어디서나 로드.
세 번 돌릴 때 *실제로* 갈리는 건 직접 재볼 가치가 있는 것들 — epoch 당 wall time 과 peak memory. exercise 가 정확히 그걸 기록하라고 하는 이유야. backend 선택을 좌우할 유일한 benchmark 는 *네 model, 네 하드웨어* 거든.