[D+9] 모델 성능 개선을 위해 필요한 것들

siwoo·2023년 11월 16일
0

🌈 모델을 한 번 다 만들었다고 끝이 아니고 목표한 성능에 도달하기 위해 계속해서 수정이 이루어진다. 모델 학습을 한 번 하는 데에만 해도 많은 시간이 걸리고 일일이 그 앞에 앉아서 컴퓨터만 바라보고 있을 수 없기 때문에 학습이 이루어지고 난 후에 그 과정을 볼 수 있도록 기록하는 것 역시 필수적이다.

직관적으로 사람이 이해하기 쉬운 것은 아무래도 시각적 요소가 크다!👓

모델의 학습 과정을 시각적으로 기록해 확인할 수 있는 Monitoring 툴과 그렇게 기록한 정보를 바탕으로 하이퍼파라미터를 조정하기 쉽게 해주는 툴에 대해 다뤄보고자 한다.

1. Monitoring tools

  • Tensorboard:

    tensorflow를 기반으로 만들어진 학습 시각화 도구이다.

    학습 그래프, metric, 학습 결과를 시각화 하는 것을 지원한다.

    scalar: metric 등 상수 값 연속 표시
    graph: histogram 표현
    image: 예측과 실제 비교
    mesh: 3d 데이터 표현

  • Weight & Bias

    ML 지원 상용 도구로 MLOPs에서는 기본 툴로 알려져 있다.
    git과 연계하여 사용하기 편하기 때문에 각자 실험한 결과를 기록하는 등 협업에 활용하기 좋다.

2. Multi GPU 학습

  • Single vs Multi?
    - GPU가 1개면 Single, 2개 이상이면 Multi에 해당

  • GPU vs Node?
    - Node는 컴퓨터, GPU는 GPU

    • Single Node Single GPU: 컴퓨터 1대에 GPU 1개
    • Single Node Multi GPU: 컴퓨터 1대에 GPU 여러 개
    • Multi Node Multi GPU: 컴퓨터 여러 대에 GPU 여러 개
  • 다중 GPU를 사용하여 모델을 효율적으로 학습시킬 때 사용하는 방식은 2가지가 존재한다.

Model ParallelData Parallel
설명모델을 나누어 GPU에 분배하여 연산Data Parallel: 단순 데이터 분배 후 평균을 취해 연산(GPU 사용 불균형 문제)
Distributed Data Parallel: 기본 베이스는 위와 같지만 CPU도 GPU 개수만큼 할당을 해서
Data Parallel 처럼 한 CPU가 코디네이터가 되지 않고 각각의 CPU가 코디네이터 수행

3. Hyperparameter Tuning

모델의 성능을 개선하는 방법은 3가지가 존재한다.

  1. 더 좋은 모델을 만든다.
  2. 더 좋은 데이터 셋을 구성한다. (데이터 추가, 전처리 보완 등)
  3. 하이퍼 파라미터 튜닝

이 중에서 가장 모델의 성능에 영향을 크게 주는 요인은 2>1>>>>넘사>>>>3 순이라고 보면 된다.

그만큼 하이퍼 파라미터 튜닝은 모델 성능에 큰 영향을 미치지는 못하지만 그래도 최종적인 모델의 성능을 아주 조금이라도 더 올리고 싶을 때 적용하게 된다.

  • Grid vs Random

    Grid의 경우 주어진 하이퍼 파라미터 조정 범위의 모든 경우를 실험하여 최적의 결과를 가지는 하이퍼 파라미터를 선정한다. (GridSearchCV)

    Random의 경우 주어진 값 범위에서 무작위로 값을 지정하여 실험한 뒤 최적의 결과를 가지는 하이퍼 파라미터로 선정하게 된다. (RandomizedSearchCV)

  • Tool❓

    • Ray

      • Multi node Multi processing을 지원하는 모듈

      • 학습을 병렬로 진행하면서 성능이 낮은 것들을 순차적으로 점차 제거하는 방식으로 학습

      • 정의해줘야 하는 필수적 요소는 config, scheduler, reporter 이렇게 3가지로 구성,
        이후에는 실행(run)이 이루어짐

0개의 댓글