Keras 3에서는 환경 변수 하나로 TensorFlow, PyTorch, JAX 가운데 실행 백엔드를 고를 수 있어. 모델을 만드는 코드도 .fit()을 호출하는 방식도 그대로야. 이 트랙에서는 그 분리가 어떻게 가능한지, 서로 다른 백엔드의 텐서를 섞으면 왜 깨지는지, keras.ops로 이동 가능한 연산을 작성하는 법을 배워.
계산의 의도와 실행 방법을 나눈다
레이어를 만들고 연결하며 학습 방법을 정하는 코드는 무엇을 계산할지 설명해. 실제로 그 계산을 어떤 커널과 장치에서 수행할지는 백엔드가 결정하지. Keras 3는 이 두 책임을 명확히 나눴기 때문에 같은 모델 파일을 세 실행 엔진 위에 올릴 수 있어.
자동 미분, 장치 배치, 커널 선택, 그래프 컴파일은 모두 실행 엔진의 깊은 기능이라 이 분리는 쉽지 않아. Keras 3는 별도의 엔진을 흉내 내지 않고 가장 작은 연산부터 현재 불러온 백엔드의 실제 구현으로 전달하는 방식을 택했어.
keras.ops가 연결 고리야
keras.ops.matmul을 호출하면 선택된 백엔드에 따라 jax.numpy.matmul, tf.matmul, torch.matmul 가운데 알맞은 연산이 실행돼. 기본 레이어, 손실 함수, 평가지표, 옵티마이저도 모두 이 공통 연산 계층 위에 작성돼 있어서 별도 설정 없이 같은 이동성을 얻어.
저장 파일도 백엔드에서 자유롭다
KerasTensor는 모델을 구성할 때 계산 그래프만 표현하는 기호 텐서야. 특정 프레임워크의 텐서에 묶이지 않으므로 .keras 파일에도 특정 백엔드 연산이 들어가지 않아. 오늘 JAX로 학습한 파일을 내일 TensorFlow를 쓰는 동료가 그대로 불러올 수 있는 이유가 여기 있어.