🌈 모델을 한 번 다 만들었다고 끝이 아니고 목표한 성능에 도달하기 위해 계속해서 수정이 이루어진다. 모델 학습을 한 번 하는 데에만 해도 많은 시간이 걸리고 일일이 그 앞에 앉아서 컴퓨터만 바라보고 있을 수 없기 때문에 학습이 이루어지고 난 후에 그 과정을 볼 수 있도록 기록하는 것 역시 필수적이다.
직관적으로 사람이 이해하기 쉬운 것은 아무래도 시각적 요소가 크다!👓
모델의 학습 과정을 시각적으로 기록해 확인할 수 있는 Monitoring 툴과 그렇게 기록한 정보를 바탕으로 하이퍼파라미터를 조정하기 쉽게 해주는 툴에 대해 다뤄보고자 한다.
1. Monitoring tools
학습 그래프, metric, 학습 결과를 시각화 하는 것을 지원한다.
scalar: metric 등 상수 값 연속 표시
graph: histogram 표현
image: 예측과 실제 비교
mesh: 3d 데이터 표현
ML 지원 상용 도구로 MLOPs에서는 기본 툴로 알려져 있다.
git과 연계하여 사용하기 편하기 때문에 각자 실험한 결과를 기록하는 등 협업에 활용하기 좋다.
2. Multi GPU 학습
Single vs Multi?
- GPU가 1개면 Single, 2개 이상이면 Multi에 해당
GPU vs Node?
- Node는 컴퓨터, GPU는 GPU
다중 GPU를 사용하여 모델을 효율적으로 학습시킬 때 사용하는 방식은 2가지가 존재한다.
Model Parallel | Data Parallel | |
---|---|---|
설명 | 모델을 나누어 GPU에 분배하여 연산 | Data Parallel: 단순 데이터 분배 후 평균을 취해 연산(GPU 사용 불균형 문제) Distributed Data Parallel: 기본 베이스는 위와 같지만 CPU도 GPU 개수만큼 할당을 해서 Data Parallel 처럼 한 CPU가 코디네이터가 되지 않고 각각의 CPU가 코디네이터 수행 |
3. Hyperparameter Tuning
모델의 성능을 개선하는 방법은 3가지가 존재한다.
이 중에서 가장 모델의 성능에 영향을 크게 주는 요인은 2>1>>>>넘사>>>>3 순이라고 보면 된다.
그만큼 하이퍼 파라미터 튜닝은 모델 성능에 큰 영향을 미치지는 못하지만 그래도 최종적인 모델의 성능을 아주 조금이라도 더 올리고 싶을 때 적용하게 된다.
Grid vs Random
Grid의 경우 주어진 하이퍼 파라미터 조정 범위의 모든 경우를 실험하여 최적의 결과를 가지는 하이퍼 파라미터를 선정한다. (GridSearchCV)
Random의 경우 주어진 값 범위에서 무작위로 값을 지정하여 실험한 뒤 최적의 결과를 가지는 하이퍼 파라미터로 선정하게 된다. (RandomizedSearchCV)
Tool❓
Ray
Multi node Multi processing을 지원하는 모듈
학습을 병렬로 진행하면서 성능이 낮은 것들을 순차적으로 점차 제거하는 방식으로 학습
정의해줘야 하는 필수적 요소는 config, scheduler, reporter 이렇게 3가지로 구성,
이후에는 실행(run)이 이루어짐