LoRA 파라미터 계산기
입력
| 계층 수 | 32 |
|---|---|
| 계층당 적용 모듈 수 | 4 |
| 히든 사이즈 | 4,096 |
| LoRA 랭크 | 8 |
LoRA 파라미터 계산기
계층 수, 계층당 적용 모듈 수, 히든 사이즈, LoRA 랭크로부터 LoRA 파인튜닝이 추가하는 학습 가능 파라미터 수와 그에 필요한 옵티마이저 메모리를 추정합니다.
입력
모델 아키텍처
LoRA 어댑터
결과
값을 입력하면 계산 결과가 표시됩니다.
세부 정보
LoRA 파라미터
저랭크 적응(Low-Rank Adaptation), 즉 LoRA는 제한된 예산으로 대규모 언어 모델을 파인튜닝하는 가장 흔한 방법입니다. 모든 가중치를 갱신하는 대신 기본 모델을 동결하고, 적용 대상인 각 가중치 행렬 옆에 작은 저랭크 행렬 한 쌍을 학습합니다. 그 결과 전체 파라미터의 아주 일부만 건드리면서도 거의 전체 파인튜닝처럼 동작합니다. 이 계산기는 모델의 형태와 어댑터의 랭크로부터 그 일부가 얼마만큼의 파라미터에 해당하는지, 그리고 옵티마이저 메모리가 얼마나 필요한지를 추정합니다.
LoRA가 학습 대상을 줄이는 방식
트랜스포머 가중치 행렬은 하나의 히든 벡터를 다른 벡터로 매핑하므로, 정사각 계층의 경우 약 개의 값을 담습니다. 이를 모두 파인튜닝하는 것은 비쌉니다. 옵티마이저가 모든 값에 대해 그래디언트와 누적 통계를 저장해야 하기 때문입니다. LoRA는 그 밀집 업데이트를 두 개의 얇은 행렬의 곱으로 대체합니다. 하나는 형태, 다른 하나는 형태이며, 여기서 랭크 은 보다 훨씬 작습니다. 기본 가중치는 전혀 움직이지 않고 이 두 인수만 학습되며, 추론 시 그 곱이 원래 행렬에 다시 더해집니다.
적용된 각 행렬은 개의 학습 가능 값을 더하고, 입력 폭과 출력 폭이 같을 때는 개를 더하므로, 학습 대상은 보통 전체 모델의 1퍼센트에 한참 못 미칩니다. 바로 이 점이 단일 가속기에서 LoRA를 실용적으로 만듭니다.
공식
계층 수 , 계층당 적용 모듈 수 , 랭크 , 히든 사이즈 일 때 학습 가능 파라미터 수는 다음과 같습니다.
P=L⋅m⋅2⋅r⋅d혼합 정밀도 Adam은 학습 가능 파라미터당 약 16바이트의 옵티마이저 및 마스터 가중치 상태를 유지합니다. 32비트 마스터 복사본과 1차 및 2차 모멘트 추정치가 그것입니다. 따라서 옵티마이저 메모리는 메가바이트 단위로 다음과 같습니다.
M=10616P이는 어댑터 상태만 셉니다. 동결된 기본 모델은 여전히 가중치를 위한 메모리를 차지하지만 그래디언트나 옵티마이저 상태는 필요 없으며, 바로 여기서 절감이 발생합니다.
예제 계산
32개 계층을 가진 모델에서 각 계층의 어텐션 투영 4개를 랭크 8, 히든 사이즈 4096으로 적용한다고 합니다.
P=32×4×2×8×4096=8388608이는 약 839만 개의 학습 가능 파라미터입니다. 옵티마이저 상태는 다음과 같습니다.
M=10616×8388608≈134.2 MB70억 파라미터 기본 모델에서 이 839만 개의 어댑터는 전체의 약 0.1퍼센트에 불과하지만, 다수의 다운스트림 작업에 맞게 모델을 특화하기에는 충분합니다.
랭크와 모듈 선택하기
랭크는 주된 용량 조절 다이얼입니다. 가벼운 작업 적응에는 4에서 8 정도의 랭크가 흔하고, 목표 작업이 기본 모델의 학습과 크게 다를 때는 16에서 64가 더 많은 여유를 줍니다. 랭크를 두 배로 늘리면 학습 가능 파라미터와 옵티마이저 메모리가 모두 두 배가 되므로, 낮은 랭크가 과소적합할 때만 높이는 것이 좋습니다. 계층당 모듈 수 입력은 어떤 행렬이 어댑터를 받는지를 반영합니다. 쿼리와 값만이면 2개, 어텐션 블록 전체면 4개, 피드포워드 행렬을 포함하면 그 이상입니다.
어댑터를 전체 모델 크기와 비교하려면 트랜스포머 파라미터 수 계산기를 참고하시기 바랍니다. 동결 가중치와 활성화 값을 포함한 학습 실행의 전체 메모리를 산정하려면 LLM 학습 VRAM 계산기를 참고하시기 바랍니다.
자주 묻는 질문 (FAQ)
LoRA 랭크는 무엇을 제어하나요?
랭크는 적용된 각 가중치 행렬에 더해지는 저랭크 업데이트의 차원을 정합니다. 랭크가 높을수록 어댑터가 기본 모델로부터의 변화를 포착할 용량이 커지지만, 학습 가능 파라미터와 옵티마이저 메모리가 함께 늘어나며 둘 다 랭크에 선형으로 증가합니다. 랭크가 낮으면 더 작고 빠르지만 어려운 작업에서는 과소적합할 수 있습니다. 대부분의 파인튜닝은 4에서 64 사이의 랭크를 사용하며 8 또는 16이 흔한 시작점입니다. 최적값은 목표 작업이 기본 모델과 얼마나 다른지에 따라 달라집니다.
LoRA 파인튜닝은 전체 파인튜닝보다 얼마나 작나요?
LoRA는 저랭크 어댑터만 학습하고 기본 가중치는 동결하므로, 학습 대상은 보통 전체 모델의 1퍼센트에 한참 못 미칩니다. 70억 파라미터 모델을 적당한 랭크로 적용하면 흔히 수백만 개의 학습 가능 파라미터만 갖게 됩니다. 옵티마이저 상태가 전체 파라미터가 아니라 학습 가능 파라미터에 비례하므로 메모리 절감 효과가 큽니다. 비교를 위한 전체 모델 크기는 parameter-count-from-architecture 계산기로 추정할 수 있습니다.
보통 어떤 모듈을 적용하나요?
가장 흔한 선택은 어텐션 투영 행렬, 즉 쿼리, 키, 값, 출력이며 이는 계층당 4개 모듈에 해당합니다. 일부 방식은 쿼리와 값 투영만(2개 모듈) 적용하고, 다른 방식은 더 넓은 커버리지를 위해 피드포워드 행렬을 추가하는 대신 파라미터 비용이 높아집니다. 계층당 모듈 수 입력은 설정에서 대상으로 삼는 행렬에 맞춰 설정하시기 바랍니다.
면책조항
이 추정치는 적용된 행렬이 정사각이라고 가정하며 LoRA 인수와 그에 대한 혼합 정밀도 Adam 옵티마이저 상태만 파라미터당 약 16바이트로 셉니다. 동결된 기본 모델, 활성화 값, 비어댑터 파라미터의 그래디언트, 바이어스나 임베딩 튜닝은 제외합니다. 정확한 메모리 회계가 아니라 계획 수립용 수치로 취급하시기 바랍니다.