본문으로 건너뛰기

© 2026 Molayo

Dev.to헤드라인2026. 06. 18. 04:07

PyTorch와 Lightning AI를 이용한 신경망(Neural Networks) Part 3: Lightning으로 훈련 로직 이동하기

요약

PyTorch 기반의 신경망 훈련 코드를 Lightning AI를 사용하여 구조화하고 단순화하는 방법을 설명합니다. 기존의 복잡한 최적화 및 훈련 루프를 Lightning의 특정 메서드로 통합하는 과정을 다룹니다.

핵심 포인트

  • Lightning을 통해 훈련 로직을 하나의 클래스로 통합 가능
  • configure_optimizers 메서드로 최적화 도구 설정
  • training_step 메서드로 배치별 손실 계산 및 훈련 단계 정의
  • 반복적인 훈련 코드(optimizer.step, zero_grad 등) 작성 부담 감소

이전 시리즈에서 신경망(neural network)을 최적화할 때, 우리는 꽤 많은 양의 훈련 코드를 직접 작성해야 했습니다.

먼저, final_bias를 최적화하기 위해 **확률적 경사 하강법 (Stochastic Gradient Descent (SGD))**을 사용하는 optimizer 객체를 생성했습니다.

그 다음, 경사 하강법(gradient descent)에 필요한 미분값(derivatives)을 계산하기 위한 루프를 작성했습니다.

우리는 모델을 최대 100 에포크 (epochs) 동안 훈련시켰습니다.

각 훈련 예제에 대해 우리는 다음 과정을 수행했습니다:

  • 입력을 신경망(neural network)에 통과시켜 예측값(prediction)을 얻습니다.
  • 손실(loss)을 계산합니다.
  • 손실 함수(loss function)의 미분값(derivatives)을 계산합니다.

세 개의 훈련 지점을 모두 처리한 후, 우리는 다음과 같이 사용했습니다:

optimizer.step()

이는 final_bias에 대한 더 나은 값을 향해 작은 단계(step)를 내딛기 위함이었습니다.

그 다음, 다음 에포크(epoch)를 시작하기 전에 누적된 기울기(gradients)를 지우기 위해 다음과 같이 사용했습니다:

optimizer.zero_grad()

이 모든 과정에는 상당한 양의 훈련 코드가 필요했습니다.

Lightning이 이 과정을 어떻게 단순화하는지 알아봅시다.

Lightning을 이용한 훈련 로직 구성하기

이전에는 가중치(weights), 편향(biases), 그리고 forward() 함수를 저장하기 위한 클래스를 생성했습니다.

최적화(optimization)와 관련된 코드는 클래스 외부에서 별도로 작성되었습니다.

Lightning을 사용하면 이 모든 로직을 한 곳에 모아둘 수 있습니다.

평소처럼 클래스를 생성하는 것으로 시작하여, 몇 가지 새로운 메서드(methods)를 추가하면 됩니다.

Optimizer 설정하기

첫 번째 메서드는 configure_optimizers()입니다.

def configure_optimizers(self):
    return SGD(
        self.parameters(),
...

이 메서드는 Lightning에게 신경망(neural network)을 어떻게 최적화해야 하는지 알려줍니다.

학습률(learning rate)은 이전에 정의한 self.learning_rate 변수에 저장되어 있습니다.

훈련 단계(Training Step) 정의하기

다음으로, training_step()이라는 메서드를 추가합니다.

def training_step(self, batch, batch_idx):
    input_i, label_i = batch

...

이 메서드는 다음을 전달받습니다:

  • DataLoader로부터 전달된 훈련 데이터 배치(batch).
  • 해당 배치의 인덱스(index).

메서드 내부에서 우리는 다음과 같이 수행합니다:

  1. 배치(batch)에서 입력(input)과 레이블(label)을 추출합니다.
  2. 신경망(neural network)을 통해 입력을 실행합니다.
  3. 잔차 제곱(squared residual)을 사용하여 손실(loss)을 계산합니다.
  4. 손실(loss)을 반환합니다.

우리는 오직 손실(loss)만을 계산하고 반환한다는 점에 주목하세요.

이러한 메서드들이 준비되었으므로, 이제 Lightning을 사용하여 신경망(neural network) 훈련을 시작할 준비가 되었습니다.

다음 기사에서는 Lightning이 이러한 메서드들을 사용하여 어떻게 모델을 자동으로 최적화하는지 살펴보겠습니다.

AI 에이전트는 코드를 빠르게 작성합니다. 하지만 사용자에게 알리지 않고 조용히 로직을 제거하거나, 동작을 변경하고, 버그를 유발하기도 합니다. 이러한 문제는 종종 프로덕션(production) 환경에서 발견되곤 합니다.

git-lrc가 이 문제를 해결합니다. 이 도구는 git 커밋(commit)에 후킹(hook)하여 모든 차이점(diff)이 반영되기 전에 검토합니다. 설정에는 60초가 소요되며, 완전히 무료입니다.

모든 피드백과 기여자를 환영합니다! 이 프로젝트는 온라인에 공개되어 있으며, 소스 사용이 가능(source-available)하여 누구나 사용할 수 있습니다.

Github에서 ⭐ star를 눌러주세요

AI 자동 생성 콘텐츠

본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0