본문 바로가기
C.W.K.
Stream
Lesson 04 of 07 · published

백엔드 사이에서 모델 옮기기

~8 min · serialize

Level 0Keras 도제
0 XP0/97 lessons0/20 achievements
0/120 XP to next level120 XP to go0% complete

한 실행 엔진에서 학습하고 다른 엔진에서 불러와

Keras 3에서는 한 백엔드에서 저장한 모델을 다른 백엔드에서 불러올 수 있어. JAX의 빠른 JIT 컴파일로 학습하고 .keras로 저장한 뒤 TensorFlow에서 열어 TF Serving으로 넘기는 식이야. 저장 파일은 어느 엔진이 만들었는지에 묶이지 않아.

백엔드 간 이동이 가능한 원리

.keras는 백엔드 고유 연산 그래프를 저장하지 않고 레이어 설정과 가중치를 백엔드 독립 배열로 기록해. 추적된 JAX 그래프나 고정된 TensorFlow 함수가 파일에 박히지 않는 거야. 다른 백엔드가 불러오면 설정으로 같은 레이어를 다시 만들고 연산을 자신의 keras.ops 구현에 연결해. 숫자상 같은 모델을 유지하면서 아래 실행 엔진만 바뀌어.

휴대성이 깨지는 경계

이 보장은 모델이 Keras 안에 머물 때 유지돼. 레이어가 keras.ops를 벗어나 tf.signal.fft나 직접 만든 PyTorch 연산 같은 백엔드 고유 API를 호출하면 다른 백엔드에 대응 연산이 없어 이동이 실패해. Keras 레이어와 keras.ops만 사용하면 휴대성을 얻고, 고유 연산으로 내려가면 하나의 엔진에 의존하게 된다는 단순한 규칙이야.

Code

JAX에서 저장하고 TensorFlow에서 불러와 서빙 형식으로 내보내기·python
# Train on JAX (fast JIT compilation)
os.environ["KERAS_BACKEND"] = "jax"
model.fit(x_train, y_train, epochs=10)
model.save("trained_on_jax.keras")

# Later: load on TensorFlow for deployment
os.environ["KERAS_BACKEND"] = "tensorflow"
model = keras.models.load_model("trained_on_jax.keras")
model.export("tf_serving_model", format="tf_saved_model")

External links

Exercise

KERAS_BACKEND=tensorflow에서 MNIST를 학습해 mnist.keras로 저장해. 새 셸에서 KERAS_BACKEND=torch로 불러와 시험 세트를 예측하고 원래 정확도와 일치하는지 확인해.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.