CertNote/ 출퇴근 학습 노트
로드맵
KOEN
CLF-C02 · FoundationalCloud Practitioner - Foundational
DVA-C02 · AssociateDeveloper - Associate
SAA-C03 · AssociateSolutions Architect - Associate
SOA-C02 · AssociateCloudOps Engineer - Associate
SAP-C02 · ProfessionalSolutions Architect - Professional
DOP-C02 · ProfessionalDevOps Engineer - Professional
SCS-C03 · SpecialtySecurity - Specialty
MLA-C01 · AssociateMachine Learning Engineer - Associate
AIF-C01 · FoundationalAI Practitioner - Foundational
DEA-C01 · AssociateData Engineer - Associate
MLS-C01 · SpecialtyMachine Learning - Specialty
  • Week 1
    • 1.ML 수명주기(ML Lifecycle): 비즈니스 문제 정의부터 A/B 테스트까지
    • 2.ML용 데이터 저장소: S3·EFS·FSx for Lustre·데이터 포맷
    • 3.데이터 수집: Kinesis·Glue·배치 vs 스트리밍
    • 4.데이터 레이블링: SageMaker Ground Truth·액티브 러닝(Active Learning)·레이블 품질
    • 5.1주차 종합 복습: ML 개요와 데이터 엔지니어링 1
  • Week 2
  • Week 3
  • Week 4
  • Week 5
  • Week 6
  • Week 7
  • Week 8
    • 1.SageMaker 학습 작업: Estimator, 입력 모드, 분산 학습, Spot
    • 2.하이퍼파라미터 튜닝(AMT): 베이지안·랜덤·Hyperband
    • 3.과적합과 과소적합: 진단과 정규화·데이터 증강
    • 4.학습 최적화: 배치 크기·학습률, 그래디언트 문제, Debugger/Profiler
    • 5.8주차 종합 복습: 학습·튜닝·일반화
  • Week 9
  • Week 10
  • Week 11
  • Week 12
합격 후기

© CertNote · 주간랩스

  • 소개
  • 수정 기록
  • 문의
  • 이용약관
  • 개인정보처리방침
← MLS-C01/Week 8/Day 4

기준: MLS-C01 시험 가이드·오류 제보

MLS-C01· AssociateWeek 8 · Day 4읽기 약 12분
핵심 정리
  • 과적합·과소적합이 "무엇을 학습하는가"였다면, 오늘은 "어떻게 잘 수렴시키는가"다. 같은 모델·데이터라도 배치·학습률·그래디언트 안정성에 따라 발산하거나 정체한다.
  • 손실 NaN·발산·진동 → 학습률 과다 또는 그래디언트 폭발. 처방은 학습률 인하 + 그래디언트 클리핑.
  • 앞쪽 층이 안 배우고 손실 정체 → 그래디언트 소실. 처방은 ReLU 계열, 배치 정규화, 잔차 연결, 적절한 초기화.
  • OOM → 배치 축소, 그래디언트 누적, 혼합 정밀도. 배치를 키우면 학습률도 함께 키우는 것이 경험칙(선형 스케일링).
  • 도구 한 줄 구분: 학습 품질 이상 = Debugger, 자원·병목·비용 = Profiler. 배포 후 드리프트는 Model Monitor다.

Day 4 - 학습 최적화: 배치 크기·학습률, 그래디언트 문제, Debugger/Profiler

학습 루프 한눈에 보기

       ┌──────────────── 1 스텝(step) ────────────────┐
데이터 →│ 배치 샘플링 → 순전파 → 손실 계산 → 역전파(그래디언트) → 가중치 갱신 │→ 다음 스텝
       └──────────────────────────────────────────────┘
          ↑배치 크기      ↑활성화 함수    ↑소실/폭발      ↑학습률·스케줄
 
  배치 크기  : 한 번의 갱신에 쓰는 샘플 수  → 메모리·GPU 활용·일반화에 영향
  학습률     : 한 스텝에 가중치를 얼마나 움직일지 → 발산 vs 정체를 가른다
  그래디언트 : 층을 거슬러 곱해지며 0으로 사라지거나(소실) 폭주(폭발)
  1 에폭     : 전체 학습 데이터를 한 번 다 훑는 것 = (샘플 수 / 배치 크기) 스텝

배치 크기(Batch Size)

한 번의 가중치 업데이트에 쓰는 샘플 수다.

배치 크기장점단점
작음(예: 32)노이즈가 일반화에 도움, 메모리↓업데이트 잦아 느릴 수 있음, 노이즈 큼
큼(예: 1024+)GPU 활용↑, 업데이트 안정메모리↑, 평탄 최소점 놓쳐 일반화 저하 가능

배치 크기 ↔ 학습률 ↔ 일반화 트레이드오프

조합수렴 속도메모리일반화언제 고르나
작은 배치 + 작은 학습률느림낮음대체로 양호GPU 메모리가 빠듯하고 안정성이 우선
작은 배치 + 큰 학습률불안정낮음발산 위험권장하지 않음(잡음 + 큰 스텝의 최악 조합)
큰 배치 + 큰 학습률빠름높음조정 필요대형 GPU에서 처리량을 올릴 때(선형 스케일링 경험칙)
큰 배치 + 작은 학습률매우 느림높음정체 위험배치만 키우고 학습률을 안 올린 전형적 실수
  • 배치를 키우면 보통 학습률도 함께 키워야 수렴 속도가 유지된다(선형 스케일링 경험칙).
  • GPU 메모리 초과(OOM)의 흔한 원인이 과도한 배치 크기다 → 배치 축소 또는 gradient accumulation.

작은 배치의 그래디언트 잡음은 손실 표면의 날카로운 최소점을 빠져나와 더 평탄하고 일반화 좋은 영역으로 향하게 돕는다는 관점이 있다. 반대로 매우 큰 배치는 그래디언트가 정확해져 안정적이지만 이런 탐색성을 잃어 일반화가 떨어질 수 있다. 그래서 배치 크기는 단순 속도 문제가 아니라 최적화·일반화 트레이드오프다.

학습률과 스케줄

학습률(learning rate)은 한 스텝에 가중치를 얼마나 움직일지다. 학습에서 가장 민감한 하이퍼파라미터.

너무 큼  → 손실이 발산하거나 진동(NaN loss)
너무 작음 → 수렴이 매우 느리고 지역 최소에 갇힘
적정     → 안정적으로 감소
스케줄동작언제 쓰나
Step decay일정 에폭마다 일정 비율로 감소단순하고 예측 가능한 감쇠가 필요할 때
Exponential decay지수적으로 점차 감소부드럽게 계속 줄이고 싶을 때
Cosine annealing코사인 곡선으로 부드럽게 감소후반부 미세 조정을 살리고 싶을 때
Warmup초반에 작은 학습률에서 점차 키움초기 불안정 억제 — 대형 모델·트랜스포머에서 흔함

판별 신호:

  • "손실이 NaN / 발산 / 크게 진동" → 학습률이 너무 큼.
  • "학습이 거의 안 움직임 / 너무 느림" → 학습률이 너무 작음 또는 그래디언트 소실.

그래디언트 문제: 소실과 폭발

깊은 신경망에서 역전파 시 그래디언트가 곱해지며 생기는 문제다.

문제증상대응
Vanishing gradient(소실)앞쪽 층이 거의 학습 안 됨, 손실 정체ReLU 계열 활성화, 배치 정규화, 잔차 연결(ResNet), 적절한 가중치 초기화
Exploding gradient(폭발)손실 NaN/발산, 가중치 급증그래디언트 클리핑, 학습률↓, 배치 정규화

증상 → 원인 → 처방 표

증상가장 유력한 원인1차 처방오답 보기로 쓰이기 쉬운 대응
몇 스텝 만에 손실 NaN학습률 과다 / 그래디언트 폭발학습률↓ + 그래디언트 클리핑배치를 1로 축소, 정규화 전부 제거
손실이 크게 진동만 함학습률 과다학습률↓, 스케줄 도입(cosine·step)에폭만 늘리기
초기부터 손실 평탄, 앞쪽 층 가중치 정지그래디언트 소실ReLU 계열, 배치 정규화, 잔차 연결, 초기화모든 활성화를 시그모이드로 교체(악화시킨다)
손실이 아주 천천히만 감소학습률 과소학습률↑, warmup 후 감쇠모델을 더 키우기
학습 시작 직후 OOM배치 크기 과대 / 모델 크기배치↓, 그래디언트 누적, 혼합 정밀도학습률 조정(무관)
손실은 줄지만 GPU 사용률 30%데이터 로딩·I/O 병목Profiler로 병목 확인 후 파이프라인 개선학습률·정규화 손대기(무관)
hyperparameters = {
    "gradient_clipping": 1.0,   # 그래디언트 노름 상한
    "lr_scheduler": "cosine",
}

시그모이드·tanh는 포화 구간에서 미분값이 0에 가까워, 깊은 망에서 그래디언트가 연쇄적으로 0으로 수렴(소실)한다. ReLU는 양수 구간 미분이 1이라 이를 완화한다. 폭발은 반대로 1보다 큰 값이 연쇄 곱해져 발산하는 것이며, 그래디언트 클리핑으로 노름 상한을 둬 억제한다. 배치 정규화와 잔차 연결은 양쪽 문제 모두를 완화하는 구조적 장치다.

SageMaker Debugger

학습 중 텐서(그래디언트, 가중치, 손실 등)를 캡처해 학습 이상을 자동 탐지한다.

내장 규칙무엇을 잡나대응
vanishing_gradient그래디언트가 0에 수렴ReLU·배치 정규화·잔차 연결·초기화
exploding_tensor텐서 값 폭주 / NaN·Inf학습률↓, 그래디언트 클리핑
overfit학습·검증 격차 확대정규화↑, 증강, 조기 종료
overtraining검증 지표가 개선을 멈추고 악화학습 조기 중단
loss_not_decreasing손실 정체학습률·초기화·데이터 점검
class_imbalance클래스 분포 편중오버샘플링·클래스 가중치·지표 재선정
saturated_activation활성화 포화(시그모이드·tanh)활성화 함수 교체, 정규화
  • 규칙 위반 시 CloudWatch 이벤트 발생 → 자동 알림이나 학습 조기 중단 트리거 가능.
  • 텐서를 S3에 저장해 사후 분석.
from sagemaker.debugger import Rule, rule_configs
 
rules = [
    Rule.sagemaker(rule_configs.vanishing_gradient()),
    Rule.sagemaker(rule_configs.loss_not_decreasing()),
]
est = Estimator(..., rules=rules)

판별 신호: "학습 도중 그래디언트 소실/폭발·과적합·손실 정체를 자동으로 탐지·알림" → Debugger.

SageMaker Profiler

학습의 시스템 자원·성능 병목을 분석한다(모델 품질이 아니라 효율).

Profiler가 보는 신호해석조치 방향
GPU 사용률 낮음, CPU 사용률 높음데이터 전처리가 CPU 바운드전처리 오프로드, 워커 수 조정
GPU가 주기적으로 유휴데이터 로딩·I/O 대기 병목입력 모드 변경(Pipe/FastFile), 프리페치
GPU 메모리 여유가 큼배치가 작아 자원을 못 씀배치 크기↑(학습률도 함께 조정)
전 구간 자원 저활용인스턴스 과대 선택더 작은/적은 인스턴스로 비용 절감
  • CPU/GPU 사용률, GPU 메모리, I/O 대기, 데이터 로딩 병목 등 시스템 메트릭을 수집한다.
  • "GPU가 놀고 있다(저활용)", "데이터 로딩이 병목", "CPU 바운드" 같은 진단과 권고 리포트를 낸다.
  • 비용 최적화: 인스턴스가 비효율적으로 쓰이면 더 작은/적은 인스턴스를 권고한다.

관찰 도구 비교 — 헷갈리는 셋

도구무엇을 보나언제언제 쓰면 안 되나
Debugger학습 중 텐서 = 모델 품질 이상학습 작업 실행 중자원 병목·비용 분석에는 부적합
ProfilerCPU/GPU·I/O = 자원·성능학습 작업 실행 중그래디언트 소실·과적합 탐지에는 부적합
Model Monitor배포된 엔드포인트의 입력·예측 드리프트학습이 아니라 배포 후 운영학습 중 이상 탐지 용도로 고르면 오답

판별 신호:

  • "학습 품질 이상(소실/폭발/과적합)" → Debugger.
  • "자원 활용·병목·GPU 저활용·학습 속도/비용 비효율" → Profiler.

⚠️ 함정: Debugger·Profiler·Model Monitor 셋을 섞은 보기가 있다. 품질=Debugger / 자원=Profiler / 배포 후 드리프트=Model Monitor, 이 한 줄이면 대부분 갈린다.

학습 최적화 추가 기법

기법효과언제 쓰나주의
혼합 정밀도(FP16/BF16)메모리↓, 속도↑큰 배치·대형 모델수치 안정성 확인 필요
그래디언트 누적작은 배치를 여러 번 모아 큰 배치 효과메모리 제약으로 큰 배치가 불가할 때스텝당 시간이 늘어난다
체크포인트중단 지점부터 재개긴 학습, Spot 중단 대비(Day1 연계)S3 경로 설정이 없으면 무의미

⚠️ 함정: "GPU 메모리 초과"라고 무조건 모델 병렬이 답은 아니다. 모델 자체가 안 들어가면 모델 병렬, 배치 때문이면 그래디언트 누적·혼합 정밀도·배치 축소다.

학습이 잘 안 될 때 진단 트리

학습이 기대대로 되지 않는다
├─ 작업이 아예 실패하는가?
│    └─ OOM 오류 → 메모리 문제
│         ├─ 모델 자체가 단일 GPU에 안 들어감 → 모델 병렬(Day1)
│         └─ 배치 때문 → 배치↓ / 그래디언트 누적 / 혼합 정밀도
├─ 손실이 NaN·발산·큰 진동인가?
│    └─ 예 → 학습률 과다 또는 그래디언트 폭발
│              → 학습률↓ + 그래디언트 클리핑 (+ 배치 정규화)
├─ 손실이 거의 안 줄고 평탄한가?
│    ├─ 앞쪽 층 가중치가 거의 안 변함 → 그래디언트 소실
│    │      → ReLU 계열 / 배치 정규화 / 잔차 연결 / 초기화 재검토
│    └─ 전 구간이 느리게만 감소 → 학습률 과소 → 학습률↑, warmup
├─ 손실은 잘 줄지만 학습이 느리고 비싼가?
│    └─ 예 → 자원 문제 → Profiler로 병목 확인
│              ├─ GPU 유휴 / I/O 대기 → 입력 파이프라인 개선
│              └─ 전 구간 저활용 → 인스턴스 축소로 비용 절감
└─ 손실은 줄지만 검증이 나빠지는가?
     └─ 예 → 일반화 문제(Day3) → 정규화·증강·조기 종료
              (Debugger의 overfit / overtraining 규칙으로 자동 탐지 가능)

지문 단서 → 정답 매핑

지문 단서고를 답이유
"몇 스텝 만에 손실이 NaN으로 발산"학습률↓ + 그래디언트 클리핑학습률 과다·폭발의 전형적 증상
"앞쪽 층 가중치가 갱신되지 않고 손실 정체"ReLU·배치 정규화·잔차 연결·초기화그래디언트 소실 완화 기법들
"모든 활성화를 시그모이드로 바꾼다"오답 보기포화로 소실을 오히려 악화시킨다
"소실·과적합·손실 미감소를 자동 탐지하고 알림·조기중단"SageMaker Debugger내장 규칙 + CloudWatch 이벤트 트리거
"GPU 사용률이 낮고 데이터 로딩 병목이 의심된다"SageMaker Profiler시스템 메트릭으로 병목·비용 진단
"큰 배치로 OOM인데 배치 효과는 유지하고 싶다"그래디언트 누적여러 작은 배치의 그래디언트를 모아 한 번에 갱신
"배치를 키웠는데 수렴이 더 느려졌다"학습률도 함께 키운다선형 스케일링 경험칙
"배포 후 입력 분포가 변한 것 같다"Model Monitor학습 도구가 아니라 운영 모니터링

내일은 Week 8 전체(학습 작업·AMT·일반화·최적화)를 종합 복습하며 시험 관점으로 묶는다.

📖 용어

  • 배치 크기(batch size) : 가중치를 한 번 갱신할 때 쓰는 샘플 수. 메모리와 GPU 활용, 일반화에 동시에 영향을 준다.
  • 학습률(learning rate) : 한 스텝에 가중치를 얼마나 움직일지 정하는 값. 학습에서 가장 민감한 하이퍼파라미터.
  • 학습률 스케줄 / warmup : 학습이 진행되면서 학습률을 점점 줄이는(step·exponential·cosine) 규칙 / 반대로 초반에 아주 작게 시작해 서서히 키워 초기 불안정을 줄이는 구간.
  • 그래디언트 소실(vanishing gradient) : 역전파에서 기울기가 층을 거치며 0에 가까워져 앞쪽 층이 학습되지 않는 현상. 시그모이드·tanh의 포화가 주범이다.
  • 그래디언트 폭발(exploding gradient) : 반대로 기울기가 연쇄적으로 커져 손실이 NaN으로 발산하는 현상. 그래디언트 클리핑으로 노름에 상한을 둬 억제한다.
  • 잔차 연결(residual connection) / 배치 정규화 : 입력을 몇 개 층 건너뛰어 더해 기울기가 지름길로 흐르게 하는 구조(ResNet) / 층 출력을 배치 단위로 정규화해 학습을 안정시키는 기법. 둘 다 소실·폭발을 완화한다.
  • 혼합 정밀도 / 그래디언트 누적 : FP16/BF16을 섞어 써 메모리를 줄이고 속도를 높이는 방법 / 작은 배치들의 기울기를 모아 한 번에 갱신해 큰 배치 효과를 내는 기법. 둘 다 OOM 회피에 쓴다.
  • SageMaker Debugger : 학습 중 텐서를 캡처해 소실·폭발·과적합 등 품질 이상을 내장 규칙으로 자동 탐지하고 CloudWatch 이벤트를 띄우는 기능.
  • SageMaker Profiler : CPU/GPU 사용률과 I/O 등 시스템 자원을 분석해 병목과 비용 비효율을 짚어주는 기능.
  • OOM(Out Of Memory) : GPU 메모리 초과 오류. 배치가 과대하거나 모델 자체가 디바이스에 안 들어갈 때 발생한다.

📝 연습 문제

선택지를 클릭하면 정답·해설이 펼쳐집니다.

문제 1

딥러닝 모델을 학습하는데 몇 스텝 만에 손실이 NaN으로 발산한다. 가장 가능성 높은 원인과 대응은?

문제 2

매우 깊은 신경망에서 앞쪽 층의 가중치가 거의 갱신되지 않고 손실이 초기부터 정체된다. 이 그래디언트 소실 문제를 완화하는 기법으로 가장 거리가 먼 것은?

문제 3

학습 중 그래디언트 소실, 과적합, 손실 미감소 같은 학습 품질 이상을 자동으로 탐지하고 위반 시 알림이나 조기 중단을 트리거하려 한다. 가장 적합한 SageMaker 기능은?

문제 4

학습 작업의 GPU 사용률이 낮고 데이터 로딩에서 병목이 의심된다. 시스템 자원 활용과 병목을 분석해 비용·속도를 개선하려 한다. 가장 적합한 도구는?

문제 5

대형 모델 학습 중 큰 배치 크기 때문에 GPU 메모리 초과(OOM)가 발생한다. 배치가 주는 효과를 유지하면서 메모리 제약을 회피하는 기법은?

이전과적합과 과소적합: 진단과 정규화·데이터 증강Week 8 · Day 3다음 8주차 종합 복습: 학습·튜닝·일반화Week 8 · Day 5

참고 공식 자료

  • MLS-C01 공식 시험 안내(새 탭에서 열림)
  • Amazon SageMaker AI 공식 문서(새 탭에서 열림)
  • Amazon CloudWatch 공식 문서(새 탭에서 열림)

이 페이지

  • 학습 루프 한눈에 보기
  • 배치 크기(Batch Size)
  • 배치 크기 ↔ 학습률 ↔ 일반화 트레이드오프
  • 학습률과 스케줄
  • 그래디언트 문제: 소실과 폭발
  • 증상 → 원인 → 처방 표
  • SageMaker Debugger
  • SageMaker Profiler
  • 관찰 도구 비교 — 헷갈리는 셋
  • 학습 최적화 추가 기법
  • 학습이 잘 안 될 때 진단 트리
  • 지문 단서 → 정답 매핑
  • 용어
  • 연습 문제