MoE 활성 파라미터 계산기
입력
| 전체 전문가 수 | 8 |
|---|---|
| 활성 전문가 (top-k) | 2 |
| 전문가당 파라미터 | 7 |
| 공유 파라미터 | 1 |
MoE 활성 파라미터 계산기
전문가 수, top-k 라우팅, 전문가당 크기, 공유 가중치로부터 Mixture-of-Experts 모델의 전체 파라미터 수와 활성 파라미터 수를 구하여, 메모리 사용량과 토큰당 연산량을 분리합니다.
입력
모델
결과
값을 입력하면 계산 결과가 표시됩니다.
세부 정보
MoE 활성 파라미터
Mixture-of-Experts 모델에는 인상적인 두 가지 숫자가 있습니다. 모델이 얼마나 담을 수 있는지를 나타내는 큰 전체 파라미터 수와, 토큰당 얼마나 많은 연산을 수행하는지를 나타내는 훨씬 작은 활성 파라미터 수입니다. 둘은 자주 혼동되지만 서로 다른 질문에 답합니다. 하나는 메모리 비용을, 다른 하나는 연산 비용을 결정합니다. 이 계산기는 전문가 수, top-k 라우팅, 전문가당 크기, 공유 가중치로부터 두 값을 분리합니다.
Mixture of Experts의 구성 방식
밀집(dense) 트랜스포머에서는 모든 토큰이 모든 가중치를 통과합니다. Mixture of Experts는 한 계층의 피드포워드 블록을 여러 개의 병렬 전문가로 대체하고, 각 토큰마다 그중 top-k개만 선택하는 작은 라우터를 추가합니다. 나머지 모델, 즉 어텐션, 라우터, 임베딩, 그리고 때로는 항상 실행되는 공유 전문가는 모든 토큰에 공통으로 적용됩니다. 따라서 한 토큰의 경로는 공유 가중치와 라우팅된 소수의 전문가만 거치고, 나머지 전문가는 그 토큰에 대해 유휴 상태로 남습니다.
이는 밀집 모델에서 함께 움직이던 두 양을 분리합니다. 전문가가 많을수록 더 많은 전문 지식을 저장할 수 있으므로 용량은 전문가 수에 따라 증가합니다. 반면 주어진 토큰에 대해 연산을 수행하는 것은 활성 전문가뿐이므로 연산량은 활성 전문가 수에만 따라 증가합니다.
두 가지 수치
전체 전문가 수 , 토큰당 활성 전문가 수 , 전문가당 파라미터 , 공유 파라미터 일 때 전체 수와 활성 수는 다음과 같습니다.
TAr=s+E⋅p=s+k⋅p=TA여기서 는 메모리 사용량을 결정하는 전체 수, 는 토큰당 연산량을 결정하는 활성 수, 은 각 토큰이 거치는 가중치의 비율입니다.
예제 계산
각각 70억 개의 파라미터를 가진 전문가 8개를 두고 토큰당 2개를 라우팅하며, 그 위에 10억 개의 공유 파라미터가 있는 모델을 생각해 봅니다.
TAr=1+8×7=57 billion=1+2×7=15 billion=5715≈0.263=26.3%이 모델은 570억 개의 파라미터를 보유하지만, 각 토큰에 대해서는 150억 파라미터 모델처럼 연산을 소비합니다. 한 번에 가중치의 약 4분의 1만 활성화되는 셈입니다. 바로 이것이 매력입니다. 150억 모델에 가까운 토큰당 비용으로 570억 모델의 용량을 얻습니다.
메모리는 여전히 전체를 따른다
문제는 절감이 메모리가 아니라 연산에 있다는 점입니다. 어떤 전문가든 어떤 토큰에 대해 선택될 수 있고 토큰 배치가 여러 전문가에 걸쳐 퍼지므로 모든 전문가가 동시에 상주해야 합니다. 미래의 토큰이 어떤 전문가를 필요로 할지 모델은 예측할 수 없습니다. 따라서 메모리 사용량은 전체 수 에 비례하고, 연산만 활성 수 에 비례합니다. 그 결과 Mixture-of-Experts 모델은 호스팅하기에는 크지만 실행하기에는 저렴하며, 이는 동일한 토큰당 비용의 밀집 모델과 정반대의 균형입니다.
메모리 측면을 좌우하는 전체 수는 트랜스포머 파라미터 수 계산기로 아키텍처에서 산출할 수 있고, 그 가중치를 실제로 서빙하는 데 필요한 메모리는 LLM 추론 VRAM 계산기에서 다룹니다.
자주 묻는 질문 (FAQ)
Mixture of Experts를 사용하는 이유는 무엇인가요?
Mixture of Experts는 토큰당 소비되는 연산량을 그만큼 늘리지 않으면서도 모델의 파라미터 수, 즉 지식 저장 용량을 키울 수 있게 합니다. 라우터가 모든 토큰을 소수의 전문가에게만 보내므로, 토큰당 부동소수점 연산량은 전체가 아니라 활성 파라미터를 따라갑니다. 덕분에 동일한 토큰당 비용의 밀집(dense) 모델보다 훨씬 많은 파라미터를 가진 모델을 학습하고 서빙할 수 있습니다.
전체 파라미터와 활성 파라미터의 차이는 무엇인가요?
전체 파라미터는 모델의 모든 가중치, 즉 공유 계층과 모든 전문가를 포함합니다. 활성 파라미터는 단일 토큰에 사용되는 가중치만, 즉 공유 계층과 라우터가 선택한 소수의 전문가만 셉니다. 모든 전문가가 선택될 수 있도록 적재되어 있어야 하므로 전체 파라미터 수가 메모리 사용량을 결정합니다. 라우팅된 전문가만 연산을 수행하므로 활성 파라미터 수가 토큰당 연산량과 지연 시간을 결정합니다.
토큰당 몇 개의 전문가만 실행되는데 왜 메모리는 전체에 비례하나요?
어떤 전문가든 어떤 토큰에 대해서도 선택될 수 있고, 토큰 배치 전체에 걸쳐 다양한 전문가가 사용되므로 모든 전문가가 동시에 메모리에 상주해야 합니다. 미래의 토큰이 어떤 전문가를 필요로 할지 모델은 미리 알 수 없습니다. 그 결과 단일 토큰의 연산량은 활성 파라미터에만 비례하더라도 메모리 사용량은 전체 파라미터 수에 비례합니다. 이것이 이 방식의 핵심 절충점입니다. 연산은 저렴하지만 전체 가중치는 여전히 모두 적재해야 합니다.
면책조항
이 값은 전문가 크기가 균일하다고 가정하고 공유 가중치를 항상 활성으로 취급하는 1차 추정치입니다. 라우팅 불균형, 작은 라우터 네트워크 자체, 장치 간 전문가 병렬화로 인한 중복은 무시합니다. 정확한 회계가 아니라 설계 비교 용도로 사용하시기 바랍니다.