Path: blob/master/site/ko/guide/migrate/fault_tolerance.ipynb
25118 views
Copyright 2021 The TensorFlow Authors.
내결함성 메커니즘 마이그레이션하기
내결함성은 매개변수 및 모델과 같은 추적 가능한 객체의 상태를 주기적으로 저장하는 메커니즘을 말합니다. 훈련하는 동안 프로그램/머신 오류가 발생한 경우 이를 사용하여 복구할 수 있습니다.
이 가이드에서는 먼저 tf.estimator.RunConfig
를 사용하여 메트릭 저장 설정을 지정하고 TensorFlow 1에서 tf.estimator.Estimator
를 사용하여 훈련에 내결함성을 추가하는 방법을 보여줍니다. 그런 다음 Tensorflow 2에서 훈련에 내결함성을 구현하는 방법 2가지를 배우게 됩니다.
Keras
Model.fit
API를 사용하는 경우 해당 API로tf.keras.callbacks.BackupAndRestore
콜백을 전달할 수 있습니다.사용자 정의 훈련 루프(
tf.GradientTape
사용)를 사용하는 경우tf.train.Checkpoint
및tf.train.CheckpointManager
API를 사용하여 체크포인트를 임의로 저장할 수 있습니다.
이 두 가지 메서드 모두 체크포인트 파일의 훈련 상태를 백업하고 복원합니다.
설치하기
tf.keras.callbacks.BackupAndRestore
의 save_freq
인수를 사용하여 특정 단계에서 체크포인트의 빈도를 저장하는 기능이 TensorFlow 2.10부터 도입되었으므로 tf-nightly
를 설치합니다.
TensorFlow 1: tf.estimator.RunConfig
를 사용하여 체크포인트 저장하기
TensorFlow 1에서는 tf.estimator.RunConfig
를 구성하여 모든 단계마다 체크포인트를 저장하도록 tf.estimator
를 구성할 수 있습니다.
이 예제에서는 다섯 번째 체크포인트를 진행하는 동안 인위적으로 오류를 발생시키는 후크를 먼저 작성합니다.
다음으로 모든 체크포인트를 저장하고 MNIST 데이터세트를 사용하도록 tf.estimator.Estimator
를 구성합니다.
모델 훈련을 시작합니다. 앞에서 정의한 후크로 의해 인위적인 예외가 발생합니다.
마지막으로 저장한 체크포인트를 사용하여 tf.estimator.Estimator
를 다시 빌드하고 훈련을 계속 진행합니다.
TensorFlow 2: 콜백 및 Model.fit
으로 백업 및 복원하기
TensorFlow 2에서는 훈련에 Keras Model.fit
API를 사용하는 경우 tf.keras.callbacks.BackupAndRestore
콜백을 제공하여 내결함성 기능을 추가할 수 있습니다.
이를 보여주기 위해 우선적으로 네 번째 epoch 체크포인트를 진행하는 동안 인위적으로 오류를 발생시키는 Keras Callback
클래스를 정의합니다.
그런 다음 간단한 Keras 모델을 정의 및 인스턴스화하고, 손실 함수를 정의하고, Model.compile
을 호출하고, epoch 경계에서 임시 디렉터리에 체크포인트를 저장하는 tf.keras.callbacks.BackupAndRestore
콜백을 설정합니다.
Model.fit
을 사용하여 모델 훈련을 시작합니다. 훈련을 진행하는 동안 위에서 인스턴스화한 tf.keras.callbacks.BackupAndRestore
덕분에 체크포인트가 저장되지만 InterruptAtEpoch
클래스는 인위적으로 예외를 발생시켜 네 번째 epoch 이후에 실패를 시뮬레이션합니다.
그런 다음 Keras 모델을 인스턴스화하고 Model.compile
을 호출한 다음 이전에 저장한 체크포인트의 Model.fit
을 사용하여 모델을 계속 훈련합니다.
140번째 단계에서 인위적으로 오류를 발생시키는 다른 Callback
클래스를 정의합니다.
참고: 이 섹션에서는 Tensorflow 2.10이 릴리스될 때까지 tf-nightly
에서만 사용할 수 있는 특성을 사용합니다.
체크포인트가 30단계마다 저장되도록 하려면 BackupAndRestore
콜백의 save_freq
를 30
으로 설정합니다. InterruptAtStep
이 epoch 1 및 40단계(총 단계 수 140)에서 실패를 시뮬레이션하기 위해 인위적으로 예외를 발생시킵니다. 체크포인트는 epoch 1과 20단계에서 마지막으로 저장될 것입니다.
그런 다음 Keras 모델을 인스턴스화하고 Model.compile
을 호출한 다음 이전에 저장한 체크포인트의 Model.fit
을 사용하여 모델을 계속 훈련합니다. 훈련은 epoch 2와 21단계부터 시작합니다.
TensorFlow 2: 사용자 정의 훈련 루프를 사용하여 수동 체크포인트 작성하기
TensorFlow 2에서 사용자 정의 훈련 루프를 사용하는 경우 tf.train.Checkpoint
및 tf.train.CheckpointManager
API로 내결함성 메커니즘을 구현할 수 있습니다.
이 예제는 다음을 수행하는 방법을 보여줍니다.
저장하려는 추적 가능한 객체를 속성으로 설정한 체크포인트를 수동으로 생성하려면
tf.train.Checkpoint
객체를 사용합니다.여러 체크포인트를 관리하려면
tf.train.CheckpointManager
를 사용합니다.
먼저 Keras 모델, 옵티마이저, 손실 함수를 정의하고 인스턴스화합니다. 그런 다음 추적 가능한 상태가 있는 두 객체(모델 및 옵티마이저)를 관리하는 Checkpoint
와 임시 디렉터리에서 여러 체크포인트를 기록하고 유지하는 CheckpointManager
를 생성합니다.
이제 새 epoch가 시작될 때마다 첫 번째 epoch 이후 마지막 체크포인트를 로드하는 사용자 정의 훈련 루프를 구현합니다.
다음 단계
TensorFlow 2의 내결함성 및 체크포인트에 대해 자세히 알아보려면 다음 문서를 고려합니다.
tf.keras.callbacks.BackupAndRestore
콜백 API 설명서.tf.train.Checkpoint
및tf.train.CheckpointManager
API 설명서.체크포인트 작성 섹션 등 체크포인트 훈련하기 가이드.
분산 훈련과 관련된 다음 자료도 유용할 수 있습니다.
Keras를 사용하는 다중 작업자 훈련 가이드의 내결함성 섹션.
매개변수 서버 훈련 가이드의 작업 실패 처리하기 섹션.