Gemma 설명: Gemma 2의 새로운 기능

8월 22, 2024
Ju-yeong Ji Gemma DevRel
Ravin Kumar Google Data Scientist Language Applications

Gemma 설명 시리즈의 이전 게시물에서는 Gemma 아키텍처에 대해 논했습니다. 이번 게시물에서는 최신 모델인 Gemma 2를 살펴보겠습니다. 자, 시작합니다!


Gemma 2

Google은 최근에 획기적이고 새로운 개방형 모델 제품군인 Gemma 2를 출시하여 성능과 접근성에 대한 새로운 기준을 세웠습니다. 2B, 9B, 27B의 매개변수 크기로 제공되는 Gemma 2는 빠르게 성공을 거두었습니다. 27B 모델은 LMSYS Chatbot Arena 리더보드에서 순위가 급상승해, 실제로 이루어진 대화에서 크기가 두 배 이상인 인기 모델들도 능가하며 최고 순위권에 안착한 가장 유용한 개방형 모델 중 하나로 자리매김했습니다. 한편, Gemma 2 2B 모델은 에지 기기에서 실행 가능한 크기로 Chatbot Arena의 모든 GPT-3.5 모델을 능가함으로써 탁월한 대화형 AI 성능을 보여줍니다.

개발자는 여러 플랫폼과 도구 전반에서 Gemma 2로 강력한 조정 기능을 이용할 수 있습니다. Google Cloud와 같은 클라우드 기반 솔루션과 Axolotl 등의 커뮤니티 도구로 Gemma 2를 간단히 미세 조정할 수 있습니다. Hugging Face, NVIDIA TensorRT-LLM은 물론이고 JAX, Keras 등 파트너와의 원활한 통합을 통해 다양한 하드웨어 구성에서 성능을 최적화하고 효율적으로 배포할 수 있습니다.

새 모델의 핵심 매개변수는 다음과 같습니다.

Core parameters of new Gemma models, August 2024

주요 차이점

Gemma 2는 RoPE(Rotary Positioning Embeddings)와 근사적인 GeGLU 비선형성의 구현 등 원래의 Gemma 모델과 아키텍처 기반이 유사합니다. 하지만 Gemma 2는 이전 모델과는 차별화된, 획기적인 아키텍처 혁신을 도입했습니다.


로컬 어텐션과 글로벌 어텐션 교차

Gemma 2는 텍스트의 모든 단어를 한 번에 고려하는 대신 때로는 작은 단어 창(로컬 어텐션)에 초점을 맞추고 때로는 모든 단어(글로벌 어텐션)를 고려합니다. 이렇게 두 어텐션을 번갈아 사용하면 모델이 텍스트의 즉각적인 맥락과 전반적인 의미를 모두 효율적으로 이해하는 데 도움이 됩니다.


로짓 소프트 캡핑

어떤 문장에서 다음에 올 단어를 예측하는 모델을 학습시키고 있다고 상상해 보세요. 때로는, 특정 단어가 최선의 선택이 아니더라도 모델이 그 단어에 대해 지나치게 확신할 수 있습니다. 로짓 소프트 캡핑은 모델이 예측에 대해 확신할 수 있는 정도를 제한함으로써 이런 문제를 방지하고 모델의 전반적인 성능을 향상시킵니다.


사전 정규화와 사후 정규화를 위한 RMSNorm

이는 학습 중에 모델의 계산 값이 너무 커지거나 너무 작아지지 않도록 하는 방법이라고 생각하시면 됩니다. 왜곡을 방지하기 위해 스피커 볼륨을 조정하는 것처럼, RMSNorm은 모델을 통해 흐르는 정보가 합리적인 범위 내에 있도록 보장합니다. 이는 보다 안정적이고 효과적인 학습으로 이어집니다.


그룹화된 쿼리 어텐션(GQA)

이 기법은 특히 대량의 텍스트를 다룰 때 모델이 정보를 보다 효율적으로 처리하는 데 도움이 됩니다. 쿼리를 함께 그룹화함으로써 기존의 멀티 헤드 어텐션(MHA)을 개선합니다. 이를 통해 특히 대형 모델에서 처리 속도가 더 빨라집니다. 이는 마치 큰 작업을 관리가 더 쉬운 작은 크기로 나누어 모델이 정확도를 해치지 않고 단어 간 관계를 더 빠르게 이해할 수 있도록 하는 것과 같습니다.


Gemma 27B

Gemma2ForCausalLM(
  (model): Gemma2Model(
    (embed_tokens): Embedding(256000, 4608, padding_idx=0)
    (layers): ModuleList(
      (0-45): 46 x Gemma2DecoderLayer(
        (self_attn): Gemma2SdpaAttention(
          (q_proj): Linear(in_features=4608, out_features=4096, bias=False)
          (k_proj): Linear(in_features=4608, out_features=2048, bias=False)
          (v_proj): Linear(in_features=4608, out_features=2048, bias=False)
          (o_proj): Linear(in_features=4096, out_features=4608, bias=False)
          (rotary_emb): Gemma2RotaryEmbedding()
        )
        (mlp): Gemma2MLP(
          (gate_proj): Linear(in_features=4608, out_features=36864, bias=False)
          (up_proj): Linear(in_features=4608, out_features=36864, bias=False)
          (down_proj): Linear(in_features=36864, out_features=4608, bias=False)
          (act_fn): PytorchGELUTanh()
        )
        (input_layernorm): Gemma2RMSNorm()
        (post_attention_layernorm): Gemma2RMSNorm()
        (pre_feedforward_layernorm): Gemma2RMSNorm()
        (post_feedforward_layernorm): Gemma2RMSNorm()
      )
    )
    (norm): Gemma2RMSNorm()
  )
  (lm_head): Linear(in_features=4608, out_features=256000, bias=False)
)
Gemma 27B architecture

self_attn

셀프 어텐션 메커니즘에서 Gemma 2는 그룹화된 쿼리 어텐션(GQA)을 사용합니다.

k_projv_proj는 128개와 16개 크기의 동일한 헤드를 공유합니다(128 x 16 = 2048). 반면, q_projo_proj는 32개의 병렬 헤드(128 x 32 = 4096)를 갖습니다.


Gemma 9B 모델은 동일한 GQA를 사용하지만 헤드 수(k_projv_proj: 8개, q_projo_proj: 16개)와 헤드 크기(256)는 다릅니다.

(self_attn): Gemma2SdpaAttention(
          (q_proj): Linear(in_features=3584, out_features=4096, bias=False)
          (k_proj): Linear(in_features=3584, out_features=2048, bias=False)
          (v_proj): Linear(in_features=3584, out_features=2048, bias=False)
          (o_proj): Linear(in_features=4096, out_features=3584, bias=False)
          (rotary_emb): Gemma2RotaryEmbedding()
        )

2B 모델은 k_projv_proj의 경우 4개, q_projo_proj의 경우 8개의 헤드를 사용하고 헤드 크기는 256입니다.


pre_feedforward_layernorm 및 post_feedforward_layernorm

또 다른 중요한 차이점은 Gemma 2에 추가 RMSNorm이 포함된다는 것입니다. 이로 인해 학습 프로세스의 안정성이 향상됩니다.


주요 결과

Google의 기술 보고서에 심층적인 세부 내용을 설명했지만 Gemma 2의 주요 결과를 간략히 요약하면 다음과 같습니다.


증류하는 방법 대비 처음부터 학습시키는 방법:

저희는 더 큰 모델(27B)에서 지식을 증류하여 2B와 9B 모델을 학습시켰습니다.

같은 수의 학습 토큰을 사용하더라도 더 큰 모델에서 지식을 증류하면 상당한 성능 향상으로 이어집니다.


그룹화된 쿼리 어텐션 대비 멀티 헤드 어텐션:

MHA를 GQA로 바꾸면 매개변수 효율성이 향상되고 추론 시간이 단축되면서도 비슷한 성능을 얻을 수 있어, GQA를 선택하는 경우가 많습니다.


모델 깊이 대비 너비:

더 깊은 모델은 매개변수 개수가 동일한 더 넓은 모델에 비해 약간 더 우수한 성능을 보여줍니다.


다음 단계는?

이 기사에서는 차세대 Gemma 모델인 Gemma 2에 대해 알아보았습니다.

다음 게시물 시리즈에서는 Griffin을 기반으로 한 개방형 모델인 RecurrentGemma를 살펴보겠습니다.

매혹적인 AI의 세계를 탐구하고 AI의 발전을 이끄는 여러 전문가로부터 유용한 정보를 얻고 싶다면 goo.gle/ai-podcast로 이동하거나 팟캐스트 플랫폼에서 'People of AI Podcast' 프로그램을 검색해 보세요.

읽어주셔서 감사합니다! 앞으로도 계속 지켜봐 주세요!



참고 문헌


논문


코드 예


📋 전체 Gemma 아키텍처 시리즈