pytorch: optuna ddp 적용하는 방법

djlee·2023년 3월 29일
0

DDP optuna 적용 방법

DDP에서 적용하는 방법을 알아볼게요.
생각보다 간단하답니다.

먼저, DDP 학습을 위해서 초기화를 해주어야 해요.

dist.init_process_group("gloo")
rank = dist.get_rank()

그런 다음 study.optimize를 하나의 gpu만 실행할 수 있도록 if rank == 0 구문으로 나누어줘요.

study = None
n_trials = 20
if rank == 0:
    study = optuna.create_study(direction="maximize")
    study.optimize(objective, n_trials=n_trials)
else:
    for _ in range(n_trials):
        try:
            objective(None)
        except optuna.TrialPruned:
            pass

마지막으로 objective에서 trial = optuna.integration.TorchDistributedTrial(single_trial)을 해주면 끝이에요.

def objective(single_trial):
    trial = optuna.integration.TorchDistributedTrial(single_trial)

    # Generate the model.
    model = DDP(define_model(trial).to(DEVICE))
    
    ...

전체 코드를 보고 싶다면 참고에 있는 링크를 클릭해주세요!

참고

https://github.com/optuna/optuna-examples/blob/main/pytorch/pytorch_distributed_simple.py

0개의 댓글