Gemma 2B - 10M Context
소개
Google이 공개한 Gemma는 2B와 7B의 상대적으로 작은 규모의 언어 모델로, 작은 크기에도 상대적으로 뛰어난 성능을 보이고 있습니다. 또한, Kaggle에 함께 공개한 여러가지 코드들로 다양한 파인튜닝 등을 통해 활용되고 있습니다.
오늘 소개하는 Gemma 2B - 10M Context는 이름 그대로 Gemma 2B 모델을 기본으로 하면서, 10M의 컨텍스트 길이를 가진 모델입니다.또한, Infini-attention 방식을 통해 적은 메모리를 사용합니다. 이 모델은 기존의 Transformer 구조를 개선하여 더 긴 문맥에서도 효과적으로 작동할 수 있도록 설계되었습니다. 특히, 이 모델은 대규모 언어 모델에서 자주 발생하는 KV 캐시의 메모리 문제를 해결하는 데 중점을 두었습니다.
주요 특징
Gemma 2B - 10M Context 모델이가 기존의 Transformer 기반의 대규모 언어 모델들과 비교했을 때의 몇 가지 특징들이 있습니다. 이러한 특징들은 Transformer-XL에서 영감을 받아 로컬 어텐션 블록에 재귀를 적용한 것과 Infini-attention 메커니즘을 적용한 것에 기인한 것으로, 이에 따른 특징들은 다음과 같습니다:
-
10M 시퀀스 길이 지원: 이 모델은 업계 최대 길이의 시퀀스를 처리할 수 있습니다.
-
32GB 미만의 메모리 사용: 대규모 언어 모델의 실행을 위해 필요한 하드웨어 요구 사항을 대폭 감소시켰습니다.
-
CUDA 최적화: 이 모델은 CUDA를 이용하여 네이티브 추론이 가능합니다.
-
재귀 로컬 어텐션: 더 긴 문맥을 O(N) 메모리에서 효율적으로 처리하도록 합니다.
사용 방법
Gemma 2B 모델을 사용하기 위해서는 다음의 단계를 따르면 됩니다:
- 필요한 라이브러리를 설치합니다:
pip install -r requirements.txt
- Hugging Face에서 모델을 내려받습니다:
import torch
from transformers import AutoTokenizer, GemmaForCausalLM
model_path = "./models/gemma-2b-10m"
tokenizer = AutoTokenizer.from_pretrained(model_path)
model = GemmaForCausalLM.from_pretrained(model_path, torch_dtype=torch.bfloat16)
- 모델을 사용하여 텍스트 생성을 수행합니다:
prompt_text = "Summarize this harry potter book..."
with torch.no_grad():
generated_text = generate(model, tokenizer, prompt_text, max_length=512, temperature=0.8)
print(generated_text)
라이선스
이 프로젝트는 MIT License로 공개 및 배포되고 있는 오픈소스입니다.
더 읽어보기
GitHub 저장소
Hugging Face
구현 및 이론 등에 대한 블로그 글
참고 논문들
이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다.
파이토치 한국 사용자 모임이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)
아래쪽에 좋아요를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~