AI 시스템 구축: 성능 개선

ㅁ 성능 개선

1. 모델 압축

ㅇ 정의:
– 학습된 모델의 파라미터 수와 메모리 사용량을 줄여 추론 속도를 높이고 배포 효율성을 향상시키는 기술.

ㅇ 특징:
– 가중치 프루닝, 파라미터 공유, 저정밀도 연산 등을 활용.
– 성능 저하를 최소화하며 모델 크기를 줄이는 것이 목표.

ㅇ 적합한 경우:
– 모바일, 임베디드 기기 등 메모리와 연산 자원이 제한된 환경.
– 네트워크 대역폭이 좁아 모델 전송 크기를 줄여야 하는 경우.

ㅇ 시험 함정:
– 모델 압축이 항상 정확도를 향상시키는 것은 아님.
– 압축 기법과 양자화(Quantization)를 혼동하는 경우.

ㅇ 시험 대비 “패턴 보기” 예시:
– O: “모델 압축은 메모리 사용량 절감과 추론 속도 향상에 기여한다.”
– X: “모델 압축은 항상 모델 정확도를 향상시킨다.”

1.1 가중치 프루닝

ㅇ 정의:
– 중요도가 낮은 가중치를 0으로 만들어 모델 파라미터 수를 줄이는 기법.

ㅇ 특징:
– 희소 행렬 구조를 만들어 연산량 절감.
– 구조적 프루닝과 비구조적 프루닝으로 구분.

ㅇ 적합한 경우:
– 희소성 최적화가 가능한 하드웨어.

ㅇ 시험 함정:
– 프루닝 후 반드시 재학습 과정이 필요하다는 점을 간과.

ㅇ 시험 대비 “패턴 보기” 예시:
– O: “가중치 프루닝은 중요도가 낮은 연결을 제거해 모델을 경량화한다.”
– X: “프루닝은 모델의 모든 가중치를 제거한다.”

2. Quantization Aware Training

ㅇ 정의:
– 학습 과정에서부터 양자화 효과를 반영하여 정밀도 손실을 최소화하는 훈련 기법.

ㅇ 특징:
– 8비트 정수 연산 등 저정밀도 연산 환경을 모사.
– 학습 중 양자화 시뮬레이션을 통해 정확도 저하를 줄임.

ㅇ 적합한 경우:
– 모바일, 엣지 디바이스 배포 전.
– 양자화 후 정확도 저하가 민감한 모델.

ㅇ 시험 함정:
– 사후 양자화(Post-training quantization)와 혼동.

ㅇ 시험 대비 “패턴 보기” 예시:
– O: “Quantization Aware Training은 학습 중 양자화를 고려한다.”
– X: “Quantization Aware Training은 학습 후 양자화를 적용한다.”

3. Distillation

ㅇ 정의:
– 큰 모델(Teacher)의 지식을 작은 모델(Student)에 전달하여 성능을 유지하면서 경량화하는 기법.

ㅇ 특징:
– Soft label과 로짓 정보를 활용.
– 작은 모델이 더 빠르고 효율적.

ㅇ 적합한 경우:
– 제한된 환경에서 고성능 모델의 예측력을 유지하고 싶을 때.

ㅇ 시험 함정:
– Distillation이 단순히 파라미터를 복사하는 과정이 아님.

ㅇ 시험 대비 “패턴 보기” 예시:
– O: “지식 증류는 Teacher 모델의 예측 분포를 Student 모델이 학습하도록 한다.”
– X: “지식 증류는 Teacher 모델의 가중치를 그대로 복사한다.”

4. GPU Concurrency

ㅇ 정의:
– GPU 내에서 여러 연산을 병렬로 실행하여 처리 속도를 높이는 기술.

ㅇ 특징:
– 스트림, 커널 실행, 데이터 전송을 겹쳐 처리.
– GPU 자원 활용 극대화.

ㅇ 적합한 경우:
– 대규모 배치 처리, 실시간 추론.

ㅇ 시험 함정:
– GPU Concurrency가 항상 성능 향상을 보장하는 것은 아님(메모리 병목 가능).

ㅇ 시험 대비 “패턴 보기” 예시:
– O: “GPU Concurrency는 연산과 데이터 전송을 겹쳐 처리할 수 있다.”
– X: “GPU Concurrency는 항상 성능을 두 배로 향상시킨다.”

5. 캐싱 및 배치 처리

ㅇ 정의:
– 자주 사용하는 데이터를 메모리에 저장(캐싱)하거나 여러 요청을 모아 한 번에 처리(배치)하는 최적화 기법.

ㅇ 특징:
– I/O 지연 감소, 처리 효율 향상.
– 배치 크기에 따라 지연(latency)과 처리량(throughput) 균형 조정.

ㅇ 적합한 경우:
– 동일 데이터 요청이 빈번하거나, 대량 요청 처리 환경.

ㅇ 시험 함정:
– 배치 크기를 무조건 크게 하면 성능이 좋아진다고 착각.

ㅇ 시험 대비 “패턴 보기” 예시:
– O: “캐싱은 반복 데이터 접근 속도를 높인다.”
– X: “배치 처리는 항상 지연 시간을 줄인다.”

ㅁ 추가 학습 내용

[학습 정리]
모델 압축:
– 가중치 공유(weight sharing): 동일하거나 유사한 가중치를 묶어 저장 공간 절감
– 저랭크 근사(low-rank approximation): 행렬을 저차원 근사로 분해하여 연산량 및 메모리 감소

Quantization Aware Training(QAT):
– 대칭 양자화(symmetric): 양수·음수 범위가 절대값 기준 대칭, zero-point 불필요
– 비대칭 양자화(asymmetric): 양수·음수 범위 불균형, zero-point 필요
– 정수 연산 최적화: 양자화된 정수 연산을 활용하여 연산 속도 향상

Distillation:
– Soft Target: 교사 모델의 확률 분포를 활용
– Feature Map Distillation: 중간 계층의 특징 맵을 학생 모델이 학습
– Self-distillation: 동일 모델 구조 내에서 자기 자신을 교사로 활용

GPU Concurrency:
– CUDA Stream: 병렬 커널 실행을 위한 실행 스트림
– Overlap Execution: 연산과 데이터 전송을 겹쳐 실행
– Pinned Memory: 페이지 고정 메모리로 전송 속도 향상

캐싱 전략:
– LRU(Least Recently Used): 가장 오래 사용하지 않은 항목 제거
– LFU(Least Frequently Used): 사용 빈도가 가장 낮은 항목 제거
– 메모리 관리 정책: 캐시 교체, 메모리 할당/해제 최적화

배치 처리:
– 마이크로배치(micro-batching): 큰 배치를 작은 단위로 나누어 처리
– 지연(latency) vs 처리량(throughput) 트레이드오프: 응답 속도와 처리량 간 균형 고려

[시험 대비 체크리스트]
1. 가중치 공유와 저랭크 근사의 원리와 장단점을 설명할 수 있는가?
2. 대칭 양자화와 비대칭 양자화의 차이점과 적용 상황을 구분할 수 있는가?
3. 정수 연산 최적화 방식과 그 효과를 이해하고 있는가?
4. Soft Target, Feature Map Distillation, Self-distillation의 개념과 차이를 알고 있는가?
5. CUDA Stream의 개념과 활용 예시를 설명할 수 있는가?
6. Overlap Execution 패턴의 실행 흐름을 그릴 수 있는가?
7. Pinned Memory의 특징과 장점을 설명할 수 있는가?
8. LRU와 LFU 알고리즘의 동작 방식을 비교할 수 있는가?
9. 캐시 메모리 관리 정책의 종류와 적용 사례를 알고 있는가?
10. 마이크로배치의 개념과 장단점, latency와 throughput의 관계를 설명할 수 있는가?

답글 남기기

Your email address will not be published. Required fields are marked *.

*
*