한 GPU 메모리 / 속도 부족할 때 multi-GPU. Keras 의 distribution: strategy = keras.distribution.DataParallel(); strategy.scope() 안에서 model 만들고 학습. data parallel — 같은 모델, GPU 별 다른 batch.
큰 모델용 model parallel 도 있음 — 모델 자체를 GPU 사이 분할. 보통은 data parallel 이 충분. fit() 인프라가 알아서 batch 분배 + gradient 합산.
백엔드 노트:
⚙️ Backend Note
Code
# Data parallelism: same model on each GPU, split data
devices = keras.distribution.list_devices("gpu")
data_parallel = keras.distribution.DataParallel(devices=devices)
# Set distribution before building the model
keras.distribution.set_distribution(data_parallel)
model = build_model()
model.compile(optimizer="adam", loss="mse")
model.fit(x_train, y_train) # Automatically distributed!
# Model parallelism: split model across GPUs
device_mesh = keras.distribution.DeviceMesh(
shape=(2,), axis_names=["model"], devices=devices
)
layout_map = keras.distribution.LayoutMap(device_mesh)
layout_map["dense/kernel"] = keras.distribution.TensorLayout(["model", None])