논문 원본입니다 https://arxiv.org/pdf/1701.06538
ABSRTACT
딥러닝에서 모델이 가지는 capacity는 그 파라미터 수에 의해 제한됩니다
더 큰 모델을 만들면 그만큼 계산량도 기하급수적으로 늘어납니다.
이 문제를 해결하기 위해 Conditional Computation이 있는데, 이 방법은 계산량은 적게 유지하면서도 모델 용량은 크게 늘릴 수 있다고 알려져 있습니다.
하지만 이 방법은 구현이 까다롭고 성능이 불안정하며 GPU로 돌릴 수 없다는 이유로 실제 적용이 어려웠습니다.
이 논문은 이런 어려움을 해결하고, conditional computation의 잠재력을 현실화시킨 방법을 제안하는데
바로 "Sparsely-Gated Mixture-of-Experts layer"입니다.
capacity를 1000배 이상 확장하며 계산량은 거의 늘리지 않는 이 방법은 각 입력마다 활성화할 expert(sub-network)를 선택적으로
활성화되도록 하는 아이디어 입니다. 이 원리로 SOTA를 달성했다고 합니다.
1 INTRODUCTION AND RELATED WORK
1.1 CONDITIONAL COMPUTATION
텍스트,이미지,오디오 등 거의 모든 분야에서 모델의 파라미터 수를 늘리면 정확도가 좋아진다는 것이 입증되었습니다
하지만 대부분의 기존 모델은 모든 입력에 대해 전체 모델을 항상 활성화하기 때문에 데이터 크기와 모델 크기가 모두 증가하면 학습 비용이 거의 제곱 수준으로 증가하게 됩니다.
앞에서 언급된 Conditional computation은 번역하자면 조건부 연산입니다
이름으로 예측 가능한 게 조건문을 사용한다는 것인데
1.GPU는 branching에 약합니다
-조건문이 많아지면 연산 속도가 저하됩니다
2.조건부 계산은 batch size를 줄여버립니다
-큰 batch는 파라미터 이동/업데이트를 효율적으로 만들지만, 조건부 활성화 구조는 작은 sub-network만 써서 효율이 떨어집니다
3.네트워크 대역폭 문제
-여러 GPU를 쓸 때, 연산 속도보다도 GPU간 데이터 전송 속도가 병목현상을 일으킵니다
4.희소성 조절을 위한 loss항 필요
-sparsity를 위해 추가적인 loss항을 넣어야 하며 이는 훈련을 어렵게 만듭니다
5.조건부 계산을 실험한 기존 연구들은 작은 데이터셋 위주입니다
-수십만 개 이미지 수준의 작은 데이터셋에서는 대규모 모델을 훈련하기가 어렵습니다
1.2 OUR APPROACH: THE SPARSELY-GATED MIXTURE-OF-EXPERTS LAYER
Sparsely-Gated Mixture-of-Experts layer는 여러개의 Expert가 존재하는데,각각은 단순한 FFN입니다
하나의 gating network가 학습을 통해 각 입력에 대해 소수의 expert만 선택해서 활성화 하는 이 방법은 backpropagation을 통해 함께 학습됩니다

LSTM층 사이에 MOE를 끼워넣는 위 그림과 같은 구조입니다
1.3 RELATED WORK ON MIXTURES OF EXPERTS
MOE는 처음 제안된 이후로 많은 연구들이 진행됐습니다.
SVM,Gaussian process,DNN 등의 expert구조들과
hierachical MOE,infinite Exper 등의 방식들이 있었습니다
대부분 모델 전체를 하나의 MOE로 구성하거나 제한된 gating방식만 사용했습니다
이 논문은 MOE를 딥러닝 구조 내부에 모듈형으로 삽입하고, 각 입력 위치마다 동적인 sparse gating을 적용함으로써 모델 용량 확장과 계산 효율을 달성했다고 합니다
2 THE STRUCTURE OF THE MIXTURE-OF-EXPERTS LAYER
MOE레이어는 두 부분으로 구성됩니다
1.n개의 expert network E1,E2,E3,,,En 각각의 expert는 독립된 feed-forward신경망으로,구조는 동일하지만 파라미터는 다름.
2.Gating network : "G" 입력 X에 대한 sparse한 n차원 벡터 G(X) 출력, 이 벡터의 각 원소 G(Xi)는 expert에 얼마나 기여할지를 나타냄
최종 MOE출력 Y는 ∑i=1nG(x)i⋅Ei(x)y 으로 계산됩니다
하지만 G(X)가 sparse하므로 G(X)=0인 경우는 해당 E를 계산조차 하지 않아서 소수의 expert만 활성화하는 원리입니다
Dropout은 모델을 작게 만들어 regularization하려는 방법이고, MOE는 엄청나게 큰 모델을 만들어서 그중 일부만 똑똑하게 활성화하는 방식이라고 이해됩니다. 또, Hierachical MOE는 expert수가 크게 늘어날 때 1차 gating이 상위 그룹(secondary MOE)선택 후 각 그룹 안에 다시 expert와 gating으로 선택하는 방법입니다
논문에서 block-wise dropout과 비슷한 구조로 작동한다는 데 block-wise dropout은 여러 개의 hidden layer 중 일부를 꺼버리는 방법으로 꺼진 블록은 forward/backward를 계산안하는데 MOE는 여러개의 expert 중 일부만 선택적으로 실행하는 것으로 선택되지 않은 expert는 아예 계산을 안하는 방식으로 같은 메커니즘입니다
- Dropout = 모델 축소 + 랜덤 꺼짐 (정규화)
- MoE = 모델 확장 + 선택적 활성화 (표현력 증가)
2.1 GATING NETWORK
입력x를 weight matrix wg에 곱한 후 softmax적용
Gσ(x)=Softmax(x⋅Wg)
이건 각 expert에 대해 확률 분포를 만들어주는 방식인데, 모든 expert에 대해 값이 0이 아니므로 sparse하지 않습니다
그래서 Noisy TOP-K-Gating이 등장합니다
Top-k:가장 상위 k개의 expert만 선택
Noise:expert간에 균형을 위해 랜덤성 추가
먼저 입력x를 gating weight wg에 곱한 후 가우시안 노이즈를 더합니다
이 노이즈의 스케일은 또 다른 학습 가능한 가중치 Wnosie를 통해 조정됩니다
H(x)i=(x⋅Wg)i+N(0,1)⋅Softplus((x⋅Wnoise)i)
H(x)벡터에서 가장 큰 j개만 선택하고 나머지는 -∞로 설정
KeepTopK(v,k)i={ vi if vi is in top k
{ −∞ otherwise
그 결과를 softmax에 넣어 확률벡터 생성
전체 expert 중 일부만 켜지는 방법으로 GPU자원 절약 가능
Noise를 통해 특정 expert만 자꾸 선택되는 현상을 막음
softplus로 크기가 너무 작거나 커지지 않도록 양의 값을 언정적으로 제어
K>1이면 선택된 top-k expert들에 대해서는 미분 가능함
단 선택되지 않은 expert는 gradient가 0이 됨
예를 들어보겠습니다
x⋅Wg=[2.0, 1.0, 0.5, −1.0]
기존 방식:Softmax Gating
Softmax([2.0, 1.0, 0.5, -1.0]) = [0.61, 0.23, 0.14, 0.02]
새로운 방식: Noisy Top-K Gating (k=2)
노이즈 더함 H(x)=[2.1, 1.3, 1.0, −0.8]
- Top-2는 [2.1, 1.3] → E₁, E₂
- 나머지 E₃, E₄는 무시 (KeepTopK에서 -∞ 처리)
Softmax([2.1, 1.3, -∞, -∞]) ≈ [0.69, 0.31, 0.0, 0.0]
3 ADDRESSING PERFORMANCE CHALLENGES
3.1 THE SHRINKING BATCH PROBLEM
이 문제는 MOE에서 발생하는 성능 저하 문제 중 하나입니다.
배치크기가 32라면 하나의 GPU는 32개의 데이터를 한번에 받는다는 뜻입니다. 각 데이터는 k개의 expert를 선택하면 종합 32*k가 선택됩니다. 전체 expert를 n이라하면 한expert 당 처리하는 데이터 수는 k*b/n (b는 배치크기)입니다.
여기서 n을 늘리면 각 expert가 받는 data가 점점 작아지는 문제가 발생하며 이를 shrinking batch problem이라합니다.
이를 해결하기 위해 논문에서는 아래와 같은 방법을 제안합니다
Mixing Data Parallelism and Model Parallelism
Data parallelism이란 데이터를 여러 GPU에 나누자
Model parallelism이란 모델을 여러 GPU에 나누자 라는 의미입니다
두 병렬화 방법을 MoE에서 mixing해서 사용하자는건데 gating network가 판단해서 선택받은 k개의 expert만 활성화될텐데 이렇게 하지말고 k개의 선택받은 expert가 전체데이터를 처리하자는 것입니다.
기존에는 만약 GPU가 4개가 있다면 (전체데이터/4)만큼 각 GPU에 들어가게 됩니다.
이렇게 하지말고 GPU에 분산됐던 데이터를 다시 하나로 합쳐서 처리한다는 것입니다
이렇게 하면 k*b/n이던 처리량을 k*b*GPU수/n으로 늘릴 수 있습니다.
통상 여러 GPU를 병렬적으로 이용하는 연산은 일반적으로 효율적입니다.
하지만 수많은 MoE모델을 각 GPU에 복사된다면 GPU수*expert수 만큼 자리를 차지합니다.
논문에서 말하고자 하는 Model Parallelism은 Model전체를 GPU마다 복사하지 말고
Expert를 여러 GPU에 나눠서 저장을 해놓는 것입니다.
예를 들어 GPU1에는 expert:1,2,3,4
GPU2에는 expert 5,6,7,8
GPU3에는 expert 9,10,11,12 ,,,etc
이렇게 하면 메모리 차지도 없이 효율적인 연산이 가능할 것입니다.
추가로 data parallelism은 synchronization이라는 문제가 있습니다
매 Weight parameter를 업데이트 할때마다 여러 GPU가 학습한 결과를 종합한 후 다시 나누는 문제인데
GPU가 연산하는 속도보다 GPU간 데이터 전송 속도가 더 느리기 때문에 부가적인 시간이 드는 문제인 것입니다.
여기서 NV Link와 같은 고속인터커넥트를 사용하면 Synchronization 시간과 전체 학습시간을 줄일 수 있습니다.

3.2 NETWORK BANDWIDTH
GPU 간 데이터 전송이 성능에 큰 영향을 미치는데,이를 네트워크 bandwidth문제라고 합니다
MOE에서 expert는 GPU위에 고정된 위치에 있고, gating network의 파라미터는 적어서 데이터 전송량이 많지 않습니다. 따라서 네트워크를 통해 전송되는 데이터는 주로 expert의 input과 output입니다. 즉 network bandwidth가 작으면 expert에서
기껏 열심히 만들어봤자 효율이 떨어질 것입니다
network bandwidth의 정의는 네트워크에서 특정 시간 내에 전송될 수 있는 데이터의 최대 용량으로 높을수록, 한번에 더 많은 데이터가 전송될 수 있습니다
계산 효율성을 유지하려면, expert가 하는 행렬연산과 input/output의 비율이 GPU의 계산능력과 네트워크 전송 능력의 비율보다 커야합니다 GPU는 계산 능력이 매우 강하지만, 네트워크 전송속도는 상대적으로 느립니다. 예를 들어 GPU 계산속도가 네트워크 속도보다 천 배 빠를 수 있다고 합니다.
논문에서 말하기를, expert가 하나의 은닉층을 가진 FFN으로 설계하며, 이 은닉층은 수천 개의 뉴런을 포함한다고 합니다. expert의 가중치 행렬은 두 개로 input*hidden*output으로 구성된다고 합니다. expert가 하는 계산량은 hidden_size에 비례하며 input,output의 데이터 크기는 input_size와 output_size에 비례하므로, 계산량과 데이터 크기의 비율은 은닉층 크기와 같습니다
따라서 expert의 효율성을 높이는 간단한 방법은 hidden layer를 키우거나, 추가하는 것입니다.
이렇게 하면 더 많은 일을 expert가 하게 되므로, 네트워크로 전송되는 데이터 크기에 비해 GPU계산 활용도가 높아집니다. 결과적으로 network bandwidth문제를 완화하고 학습이 빨라집니다.
3.2를 정리하자면
MoE모델을 여러 GPU에서 학습할 때, GPU 간 데이터 전송(network bandwidth)이 문제가 될 수 있습니다.
해결책으로는 입력/출력 보다 계산을 더 많이 하도록 설계합니다
GPU는 계산이 빠르므로, expert의 은닉층 크기를 키우거나 층을 추가해서 계산량을 늘리는 방식을 택했습니다
여기서 은닉층 크기를 키우면 GPU메모리 사용량이 늘어날 수 있는데, MoE는 특정 expert만 활성화되므로, 전체적인 메모리 부담은 관리가 가능하며 메모리가 충분하다면 계산 효율성 향상이 더 큰 이점이라고 생각됩니다
그리고 현대 GPU(NVIDIA A100)은 초당 수십 테라플롭스의 계산능력을 제공하지만,네트워크(NVLink)는 초당 수백 GB수준이라고 합니다.
4 BALANCING EXPERT UTILIZATION
예상 가능했던 문제에 대해 언급합니다
MoE모델에서 gating network는 입력 데이터를 보고 어떤 expert를 사용할지 결정하는데, 이를 위해 각 expert에게 weights를 부여하는데, 문제는 소수의 experts에게만 높은 weights를 주고, 나머지 expert는 거의 사용하지 않는다는 것입니다
이러한 imbalance(불균형)은 sefl-reinforcing을 초래합니다
자주 선택된 expert는 더 많은 data를 처리하며 학습이 빨리 진행되며 성능이 점점 더 좋아지고, gating network는 이 expert를 더 자주 선택하게 됩니다.
self-reinforcing은 자신이 통제할 수 있는 보상을 자기 자신에게 줌으로써 자기 행동을 개선 또는 유지하는 과정이라고 합니다.
여기서는 악순환이라는 뜻으로 쓰인 것으로 유추할 수 있습니다.
이 문제는 예전부터 존재했는데 Eigen et al.(2013)은 학습 초기에 hard constraint(강한 제약)을 사용해 gating network가 특정 expert만 선택하지 않도록 했습니다. Bengio et al.(2015)는 각 배치마다 gating network의 가중치 평균에 soft constraint(부드러운 제약)을 추가하여 균형을 맞추도록 유도했었습니다.
EX)
Eigen의 방식: 식당 매니저가 "모든 요리사가 하루에 최소 5번은 요리를 해야 한다"고 엄격한 규칙을 세워 인기 요리사만 바빠지는 걸 막습니다.
Bengio의 방식: 매니저가 "모든 요리사가 비슷한 횟수로 요리하도록" 부드럽게 유도하며, 특정 요리사가 너무 바빠지면 약간의 페널티를 줍니다.
본 논문에서는 Bengio방식과 같이 soft constraint(부드러운 제약)을 사용하는 것을 택했습니다.
각 expert에게 importance를 정의하는 방법을 소개합니다. gating network는 입력 데이터 배치에 대해 각 expert에게 가중치를 부여합니다. 이 가중치는 해당 전문가가 얼마나 사용되는지를 나타내며 특정 expert의 importance는 그 배치에서 해당 전문가의 게이트 값들의 합으로 계산됩니다.
추가 손실함수 L은 expert들이 고르게 사용되지 않으면 손실 값을 증가시켜, 모델이 모든 expert가 균등히 활용하도록 학습하도록 만듭니다.
Loss는 각 expert의 importance합을 구한뒤 이 값들의 Coefficient of Variation을 계산합니다
CV는 importance의 표준편차를 평균으로 나눈 값으로, 얼마나 불균등한지를 측정하는 것입니다. CV가 크면 일부 expert만 사용되고 CV가 작으면 고르게 사용된 것입니다.
CV를 제곱한 값을 손실로 사용하며 이 값에 scaling factor W를 곱합니다. 이 factor는 hand-tuned(사람이 직접 조정)하며,추가 손실의 중요도를 조절합니다.

그런데 이 방법은 G의 sum을 계산하므로, 한 expert가 크고 다른 게 작다면 importance가 비슷할 수 있는 문제가 있습니다
이 불균형은 distributed hardward에서 문제를 일으키는데, 적은 수를 처리하던 GPU는 그만큼 놀고, 바쁜 GPU는 계산이 길어지므로 비효율적입니다.
논문에서는 이를 해결하기 위해 새로운 Loss인 L_load를 추가합니다
이 Loss는 각 expert가 받는 example의 수가 균형 잡히도록 만듭니다.

L_load가 어떻게 정의됐는지 한줄한줄 보겠습니다.
먼저 expert가 받는 example의 수는 discrete합니다. 이는 backprop을 할 수 없기 때문에 각 expert가 배치 X에서 받는 example수를 smooth estimator Load(X)로 정의합니다. -왜 안되지
gating netwokr의 출력 G(x)i는 입력 x에 대해 expert i가 선택될 확률인데, 여기에 노이즈 항을 추가해 선택이 discrete하지 않게 합니다. P(x,i)는 expert i가 선택될 확률입니다. 이는 선택이 단정적이지 않게 만들어 부드럽게 확률을 계산하게 합니다
P(x,i)는 H(x)i가 H(x)의 k번째로 큰 값보다 커야합니다.
H(x)는 gating network가 입력x에 대해 각 expert에게 부여한 점수 벡터입니다.
쉽게 말해, 각 expert에 대한 선호도입니다. 이 점수가 상위 k에 들면 해당 expert가 선택됩니다.
H(x)i는 H(x)에서 자신을 뺀 나머지 점수들 중 k번째로 큰 값과 비교하게 됩니다
[H(x)는 x*Wg로 계산되며 여기에 노이즈가 추가되어 최종 선택 G(x)가 됩니다]
그리고 이를 CDF로 만드는데 CDF란 Cumulative Distribution Function으로 확률 분포의 누적 확률을 나타내는 함수입니다.
표준 정규 분포의 CDF Φ(z) 는 값 z이하일 확률을 계산합니다
Load(X)i = sumP(x,i)로 expert i가 배치에서 받는 기댓값으로
예를들어 32명의 손님 중 요리사 i에게 갈 확률이 평균 0.3이라면 약 9.6명을 상대할 것으로 예상됩니다
이 Load(X)i를 통해 연속적인 값으로 역전파에 사용가능하게 됩니다.
L_load는 Load(X)의 CV를 제곱한 값에 factor w_load를 곱해 계산합니다
학습 초기에는 gating network의 가중치 행렬 Wg와 W_noise를 모두 0으로 초기화했다고 합니다.
Wg가 0이면 gating network가 특정 expert를 선호하지 않게 되는 것입니다
정리하자면 기존의 L_importance는 특정 expert가 self-reinforcing으로 악순환되는 것을 막고자 추가한 Loss인데, 이는 expert의 합을 비교하는 조건입니다. 이는 배치 내의 특정 expert가 다른 expert보다 커서 합이 일정해지는 문제를 초래했고 이를 해결하는 방법이 L_load입니다. L_load는 gating network가 선택한 expert가 discrete하지 않게 G를 P(x,i)로 바꿨고, Load(X)를 계산합니다. 이는 각 expert마다 선택될 수 있는 기댓값을 의미하며 이 Load의 CV값을 제곱한 후 W_load와 곱한 값을 L_load로 정의했습니다. 이를 통해 GPU를 통한 분산 학습에서 메모리/성능 문제를 해결하며 최적화합니다

w 값에 대한 CV와 Test Perplexity값입니다
w가 0~1사이 값을 조정했더니 max(Load(X))는 모든 expert중 가장 많은 example을 받은 Load값이고 mean은 평균이므로 가장 과부화된 expert의 Load가 평균보다 몇 배인지 나타내는 정도입니다
w_importance와 w_load가 둘 다 0이면CV가 둘 다 매우 크고 max/mean도 큽니다. 이는 소수의 expert만 선택되는 것으로 불균형을 일으킨 다는 것을 의미합니다
만약 둘 다 1이면 CV도 둘 다 작고 max/mean도 작은 것을 볼 수 있습니다.
Perplexity는 예측 성능으로 낮을수록 모델이 더 잘 예측하는 것인데 둘 다 0이 아닐때 결과는 비슷합니다
5 EXPERIENCE
5.1 1 BILLION WORD LANGUAGE MODELING BENCHMARK
Chelba et al.에 의해 소개된 데이터셋으로 MoE의 성능 평가를 시작했습니다
지금까지 발표된 최고의 성능은 Jozefowicz et al.에 의해 보고된 모델로 LSTM을 겹겹이 쌓아 200만개에서 1억 5100만개 까지 다양한 파라미터를 가집니다.논문에서는 MoE층을 두 개의 LSTM층 사이에 삽입했다고 합니다

기존 LSTM모델보다 Test Perplexity가 훨씬 더 줄어든 좋은 결과를 보여줍니다
MoE모델을 평가할때, 항상 4명의 expert만 활성화되게끔 했고, 전체 MoE expert를 늘려 더 많은 계산을 허용할 경우, 성능은 더욱 향상되며, 기존 성능 모델 보다 훨씬 적은 계산량으로도 더 나은 결과 달성이 가능함을 보였습니다
Tensorflow로 모델의 Computational Efficiency를 비교해본 결과 기존 모델의 계산 효율은 1.07~1.29 TFLOPS/GPU인데 MoE도입 후 계산효율은 0,74~0.90TFLOPS/GPU였습니다.
5.2 100 BILLION WORD GOOGLE NEWS CORPUS

1000억 단어로 학습한 결과, expert수는 기존보다 훨씬 perplexity가 줄어든 모습을 보였고, 두 그래프 간의 차이가 점점 커지는 것은 모델 용량 증가가 데이터가 클수록 더 효과적임을 보여줍니다
하지만 expert가 131072일때는 성능이 하락했습니다. 이는 과도한 sparsity로 인한 부작용일 가능성이 큽니다.
이를 통해 모델이 클수록 좋다라는 말은 데이터가 충분히 클 때에만 성립하며 희소성이 높을수록 무조건 좋은건 아니다. 즉 적절한 expert의 수를 찾아내는 것이 MoE설계에서 핵심이 되는 셈이다. 라고 이해할 수 있습니다
5.3 MACHINE TRANSLATION (SINGLE LANGUAGE PAIR)
GNMT(Google Neural Machine Translation)모델에 MoE레이어를 인코더,디코더에 삽입했습니다
각 MoE레이어는 최대 2048expert를 포함하며 각 expert는 약 200만 개의 파라미터를 가집니다
이로 인해 약 8억 개의 파라미터가 추가됐습니다
영어->프랑스어
영어->독일어
두 가지 데이터 셋으로 실험해봤을 때 BLEU결과는 기존 대비 1.34, 1.12점이 올랐습니다. 훈련시간 1/6만 사용했음에도 불구하고 우수한 성능을 보였고, 기존 GNMT보다 LSTM수를 일부러 감소했음에도 BLEU의 점수가 상승했고, 강화학습 기반 fine-tuning이 없이도 성능을 끌어올린 점이 아주 인상적입니다
5.4 MULTILINGUAL MACHINE TRANSLATION
MoE의 장점이 가장 잘 나타난 실험결과입니다
12개의 언어에 대해 기존 GNMT와 MoE가 추가된 모델로 수행을 했습니다

결과는 압도적인 MoE의 승리였습니다.
한국어에서만 성능이 좀 안좋았는데, 이는 데이터셋이 적어서 그래을 것이라는 분석이 있습니다
또한 training time도 21일에서 12일로 줄어든 것을 볼 수 있습니다.
이 결과는 MoE의 멀티태스킹 능력을 잘 보여주는 결과로 기존 GNMT는 여러 언어쌍을 한 모델에 집어넣을 경우, 파라미터가 공유되어 손해를 봤는데, MoE는 입력마다 다른 expert를 골라 쓰기 때문에 이 문제를 효과적으로 해결한 것 같습니다
6 CONCLUSION
이 연구는 딥러닝에서 조건부 연산이 실질적은 성능 향상을 가져올 수 있음을 처음으로 입증한 사례입니다. 이 논문은 텍스트 데이터에만 집중했지만 충분히 큰 학습 데이터세만 확보된다면 다른 도메인에도 조건부 연산이 효과를 발휘할 것이라 기대된다고 합니다
MoE는 원래 Adadtive Mixtures of Local Experts라고 1991년에 나온 논문입니다. 이는 GPU가 없던 시절과 데이터셋 문제, 오버피팅 문제가 계속 발생해서 실용화되지 못했습니다. 이 논문은 25년이 지난 후에 등장한 논문으로 MoE를 실제 환경에서도 사용할 수 있도록 현실적인 형태로 진화시킨 것으로 의미가 큽니다.
현재는 이 이론을 기반으로 Switch Transformer, Gshard,, Pathways, PaLM, MT-NLG 등에서 사용됩니다
Gshard는 Transformer Encoder의 FFN layer를 MoE로 대체했고,

Switch Transformer는 Gshard가 Top-k의 expert를 뽑는 것을 top-1만 뽑는 것으로 바꿨습니다.
그리고 MoD라 해서 Transformer에서 입력 토큰에 대해 특정 토큰은 덜 중요할 수도 있는데 이를 MoE방법을 사용해서 self-attention을 할지 안할지 결정하는 방법이라고 합니다.

'논문리뷰' 카테고리의 다른 글
| AI models collapse when trained onrecursively generated data 논문리뷰 (0) | 2025.05.19 |
|---|---|
| MMED-RAG논문 리뷰 (0) | 2025.04.15 |
| ColPali논문 리뷰 (0) | 2025.04.09 |