AI: 파라미터 효율화 기법

ㅁ 파라미터 효율화 기법

1. LoRA (Low-Rank Adaptation)

ㅇ 정의:
사전 학습된 대규모 언어모델(LLM)의 모든 파라미터를 업데이트하지 않고, 특정 가중치 행렬을 저차원 행렬 분해를 통해 일부만 학습하는 기법.

ㅇ 특징:
– 원본 모델의 파라미터는 고정하고, 추가된 저차원 행렬만 학습하여 메모리와 연산량 절감.
– 파라미터 효율성이 높아 적은 자원으로도 미세조정이 가능.
– 기존 모델의 성능을 크게 훼손하지 않음.

ㅇ 적합한 경우:
– 제한된 GPU 메모리 환경에서 대규모 모델을 특정 태스크에 맞게 튜닝할 때.
– 다수의 태스크에 대해 동일한 베이스 모델을 공유하면서 각 태스크별 적은 파라미터만 저장하고자 할 때.

ㅇ 시험 함정:
– LoRA는 모든 파라미터를 학습하는 방법이 아님.
– LoRA는 모델 압축 기법이 아니라 파라미터 효율화 기법임.

ㅇ 시험 대비 “패턴 보기” 예시:
O: “LoRA는 저차원 행렬을 추가하여 원본 파라미터를 고정한 채 학습한다.”
X: “LoRA는 모든 파라미터를 학습하여 성능을 높인다.”

1.1 저차원 행렬 A와 B

ㅇ 정의:
LoRA에서 원본 가중치 변화량(ΔW)을 두 개의 저차원 행렬 A와 B의 곱으로 표현하는 구성 요소.

ㅇ 특징:
– ΔW = A * B 형태로, A는 입력 차원을 저차원으로 투영, B는 다시 원래 차원으로 복원.
– 랭크(rank)가 낮아 파라미터 수가 크게 줄어듦.

ㅇ 적합한 경우:
– 특정 레이어의 가중치 행렬 크기가 커서 직접 학습 시 메모리 부담이 큰 경우.

ㅇ 시험 함정:
– A와 B 모두 학습 대상이며, 원본 W는 고정됨.
– 랭크를 높이면 성능은 향상될 수 있으나 파라미터 효율성은 감소.

ㅇ 시험 대비 “패턴 보기” 예시:
O: “LoRA에서 ΔW는 저차원 행렬 A와 B의 곱으로 표현된다.”
X: “A와 B는 원본 파라미터와 동일한 차원을 가진다.”

2. 모듈성

ㅇ 정의:
LoRA에서 태스크별로 추가된 저차원 행렬 모듈을 독립적으로 관리하고 교체할 수 있는 특성.

ㅇ 특징:
– 동일한 베이스 모델에 대해 태스크별 LoRA 모듈만 교체 가능.
– 다중 태스크 환경에서 메모리와 저장소 절약.

ㅇ 적합한 경우:
– 여러 태스크를 번갈아 수행하는 멀티태스킹 환경.
– 모델 배포 시 태스크별 모듈만 전송하여 네트워크 비용 절감.

ㅇ 시험 함정:
– 모듈성은 모델 병렬화와 혼동하기 쉬움.
– 모듈 교체만으로 태스크 전환이 가능하다는 점을 간과할 수 있음.

ㅇ 시험 대비 “패턴 보기” 예시:
O: “LoRA 모듈성은 태스크별 모듈 교체로 모델 재사용성을 높인다.”
X: “모듈성은 모델의 모든 파라미터를 태스크마다 새로 학습하는 것을 의미한다.”

3. 초기화 전략

ㅇ 정의:
LoRA에서 추가되는 저차원 행렬의 초기값을 설정하는 방법.

ㅇ 특징:
– 일반적으로 A는 작은 난수로 초기화, B는 0으로 초기화하여 학습 안정성 확보.
– 초기화 방법에 따라 수렴 속도와 성능이 달라질 수 있음.

ㅇ 적합한 경우:
– 학습 초기에 원본 모델의 출력 분포를 크게 왜곡하지 않고 서서히 적응시키고자 할 때.

ㅇ 시험 함정:
– A와 B를 모두 0으로 초기화하면 학습이 진행되지 않음.
– 초기화 전략은 학습률 설정과 함께 고려해야 함.

ㅇ 시험 대비 “패턴 보기” 예시:
O: “LoRA에서 B를 0으로 초기화하면 학습 초기에 원본 모델 출력이 유지된다.”
X: “A와 B를 모두 0으로 초기화하면 학습이 빠르게 수렴한다.”

ㅁ 추가 학습 내용

LoRA의 랭크(rank) 값은 모델의 성능과 자원 사용량에 직접적인 영향을 준다. 랭크가 높을수록 표현력은 증가하여 성능 향상 가능성이 있지만, 학습해야 할 파라미터 수와 메모리 사용량도 증가한다. 반대로 랭크가 낮으면 자원 소모는 줄지만 성능 향상 폭이 제한될 수 있다.

베이스 모델과 LoRA 모듈에 학습률을 다르게 적용하는 방법은 효율적인 학습에 중요하다. 일반적으로 베이스 모델은 학습률을 작게 설정해 기존 지식을 보존하고, LoRA 모듈은 더 큰 학습률을 적용해 새로운 태스크에 빠르게 적응하도록 한다.

LoRA와 다른 파라미터 효율화 기법의 비교 포인트는 다음과 같다. Prefix Tuning은 입력 토큰 앞에 학습 가능한 벡터를 추가하는 방식으로, 주로 언어 생성 태스크에서 적합하다. Adapter는 중간 레이어에 작은 네트워크를 삽입하여 파라미터 효율성을 확보한다. LoRA는 특정 가중치 행렬을 저랭크로 분해해 추가 파라미터를 최소화하면서도 성능을 유지하는 특징이 있다. 비교 시 적용 위치, 파라미터 증가량, 성능 유지력, 학습 안정성 등을 고려해야 한다.

LoRA를 적용할 레이어 선택도 성능에 영향을 준다. 예를 들어 Attention 모듈의 Query와 Value 가중치에 적용하는 것이 일반적이며, Key나 Output에 적용하는 경우와 비교해 성능 차이가 발생할 수 있다. 태스크 특성과 모델 구조에 따라 최적의 적용 위치를 선택해야 한다.

다중 LoRA 모듈을 병합할 때는 가중치 스케일링과 충돌 방지에 주의해야 한다. 스케일링은 각 LoRA 모듈의 영향력을 적절히 조정해 과도한 변화나 성능 저하를 방지하며, 충돌 방지는 동일한 파라미터를 서로 다른 LoRA 모듈이 덮어쓰는 상황을 피하는 것을 의미한다. 이를 위해 병합 순서, 가중치 비율, 적용 범위를 신중히 설정해야 한다.

Previous Article

답글 남기기

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

*
*