AI 모델 및 플랫폼

Gemma 2에 대한 완전한 가이드: Google의 새로운 오픈 소스 대형 언어 모델

mm
Unite.AI를 Google의 선호 소스에 추가

Gemma 2는 이전 버전을 기반으로 향상된 성능과 효율성을 제공하며, 혁신적인 기능을 통해 연구와 실제 적용 모두에서 매력적인 선택이 됩니다. Gemma 2의 가장 큰 특징은 대형 사유 모델과 비교할 수 있는 성능을 제공하면서도 더广泛하게 접근할 수 있고, 더 적은 하드웨어 설정에서 사용할 수 있는 패키지로 설계되었습니다.

Gemma 2의 기술 사양과 아키텍처를 자세히 살펴보면, 설계의 지혜에 더욱 감탄하게 됩니다. 모델은 여러 가지 고급 기술을 통합하여, 새로운 주의 메커니즘과 훈련 안정성을 위한 혁신적인 접근 방식을 포함합니다. 이러한 기술은 모델의卓越한 능력에 기여합니다.

Google Open Source LLM Gemma

Google [securities_stock_price_tag symbol="GOOGL" exchange="NASDAQ"] Open Source LLM Gemma

이综合 가이드에서, 우리는 Gemma 2를 깊이 있게 살펴보며, 그 아키텍처, 주요 기능, 실제 적용을 조사할 것입니다. 여러분이 경험이 풍부한 AI 전문가이든, 이 분야의 새로운 입문자이든, 이 기사는 Gemma 2의 작동 방식과 여러분의 프로젝트에서 그 힘을 어떻게 활용할 수 있는지에 대한 귀중한 통찰력을 제공할 것입니다.

Gemma 2란 무엇인가?

Gemma 2는 Google의最新 오픈 소스 대형 언어 모델로, 가볍지만 강력한 성능을 제공합니다. Gemini 모델을 만들기 위해 사용된 연구와 기술을 기반으로 하며, 최첨단 성능을 더 접근할 수 있는 패키지로 제공됩니다. Gemma 2는 두 가지 크기로 제공됩니다.

Gemma 2 9B: 9억 매개변수 모델
Gemma 2 27B: 27억 매개변수 모델

각 크기는 두 가지 변형으로 제공됩니다.

기본 모델: 방대한 텍스트 데이터 세트에 사전 훈련됨
지시 튜닝 (IT) 모델: 특정 작업에 대한 성능을 개선하기 위해 미세 조정됨

Google AI Studio에서 모델에 접근: Google AI Studio – Gemma 2

기술 보고서를 여기서 읽으십시오: Gemma 2 기술 보고서

주요 기능과 개선 사항

Gemma 2는 이전 버전보다 다음과 같은 몇 가지 주요 개선 사항을 제공합니다:

1. 훈련 데이터 증가

모델은 훨씬 더 많은 데이터로 훈련되었습니다.

Gemma 2 27B: 13조 토큰으로 훈련됨
Gemma 2 9B: 8조 토큰으로 훈련됨

이 확장된 데이터 세트는 주로 웹 데이터(대부분 영어), 코드 및 수학으로 구성되어 있으며, 모델의 성능과 다용도에 기여합니다.

2. 슬라이딩 윈도우 주의

Gemma 2는 주의 메커니즘에 대한 새로운 접근 방식을 구현합니다.

매번 다른 레이어는 4096 토큰의 로컬 컨텍스트를 가진 슬라이딩 윈도우 주의를 사용합니다.
교대로 레이어는 전체 8192 토큰 컨텍스트에 걸친 완전한 사각형 글로벌 주의를 사용합니다.

이 하이브리드 접근 방식은 효율성을 長距離 의존성 캡처와 균형을 유지하려고 합니다.

3. 소프트 캡핑

훈련 안정성과 성능을 개선하기 위해 Gemma 2는 소프트 캡핑 메커니즘을 도입합니다.


<p>def soft_cap(x, cap):
return cap * torch.tanh(x / cap)</p>

<p># 주의 로짓에 적용
attention_logits = soft_cap(attention_logits, cap=50.0)</p>

# 최종 레이어 로짓에 적용

<p>final_logits = soft_cap(final_logits, cap=30.0)

이 기술은 로짓이 지나치게 커지지 않도록 방지하면서도 하드 트렁케이션 없이 더 많은 정보를 유지하고 훈련 과정을 안정화합니다.

  1. Gemma 2 9B: 9억 매개변수 모델
  2. Gemma 2 27B: 27억 매개변수 모델

각 크기는 두 가지 변형으로 제공됩니다.

  • 기본 모델: 방대한 텍스트 데이터 세트에 사전 훈련됨
  • 지시 튜닝 (IT) 모델: 특정 작업에 대한 성능을 개선하기 위해 미세 조정됨

4. 지식 증류

9B 모델의 경우, Gemma 2는 지식 증류 기술을 사용합니다.

  • 사전 훈련: 9B 모델은 초기 훈련 동안 더 큰 교사 모델에서 학습합니다.
  • 사후 훈련: 9B와 27B 모델은 모두 정책 증류를 사용하여 성능을 정제합니다.

이 과정은 더 작은 모델이 더 큰 모델의 능력을 더 효과적으로 캡처하도록 도와줍니다.

5. 모델 병합

Gemma 2는 Warp라는 새로운 모델 병합 기술을 사용합니다. 이 기술은 세 단계에서 여러 모델을 결합합니다.

  1. 강화 학습 미세 조정 동안 지수 이동 평균 (EMA)
  2. 여러 정책을 미세 조정한 후 구면 선형 보간 (SLERP)
  3. 초기화로의 선형 보간 (LITI)作为 최종 단계

이 접근 방식은 더 강력하고 능력 있는 최종 모델을 생성하려고 합니다.

성능 벤치마크

Gemma 2는 다양한 벤치마크에서 인상적인 성능을 보여줍니다.

Gemma 2 on a redesigned architecture, engineered for both exceptional performance and inference efficiency

Gemma 2 on a redesigned architecture, engineered for both exceptional performance and inference efficiency

 

Gemma 2 시작하기

Gemma 2를 프로젝트에서 사용하기 시작하려면 여러 가지 옵션이 있습니다.

1. Google AI Studio

하드웨어 요구 사항 없이 빠른 실험을 위해 Gemma 2에 접근할 수 있습니다. Google AI Studio를 사용하세요.

2. Hugging Transformers

Gemma 2는 인기 있는 Hugging Face Transformers 라이브러리와 통합됩니다. 여기서 어떻게 사용할 수 있는지 보여드리겠습니다.

&lt;div class=&quot;relative flex flex-col rounded-lg&quot;&gt;
&lt;div class=&quot;text-text-300 absolute pl-3 pt-2.5 text-xs&quot;&gt;

<p>from transformers import AutoTokenizer, AutoModelForCausalLM</p>

<p># 모델과 토크나이저 로드
model_name = &quot;google/gemma-2-27b-it&quot; # 또는 &quot;google/gemma-2-9b-it&quot;을(를) 사용하여 더 작은 버전을 사용합니다.
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)</p>

<p># 입력 준비
prompt = &quot;양자 얽힘의 개념을 간단한 용어로 설명하세요.&quot;
inputs = tokenizer(prompt, return_tensors=&quot;pt&quot;)</p>

<p># 텍스트 생성
outputs = model.generate(**inputs, max_length=200)
response = tokenizer.decode(outputs[0], skip_special_tokens=True)</p>

print(response)

3. TensorFlow/Keras

TensorFlow 사용자를 위한 Gemma 2는 Keras를 통해 사용할 수 있습니다.


<p>import tensorflow as tf
from keras_nlp.models import GemmaCausalLM</p>

<p># 모델 로드
model = GemmaCausalLM.from_preset(&quot;gemma_2b_en&quot;)</p>

<p># 텍스트 생성
prompt = &quot;양자 얽힘의 개념을 간단한 용어로 설명하세요.&quot;
output = model.generate(prompt, max_length=200)</p>

print(output)

고급 사용: Gemma 2를 사용한 로컬 RAG 시스템 구축

Gemma 2의 강력한 응용 프로그램 중 하나는 Retrieval Augmented Generation (RAG) 시스템을 구축하는 것입니다. Gemma 2와 Nomic 임베딩을 사용하여 간단한 로컬 RAG 시스템을 만들어 보겠습니다.

단계 1: 환경 설정

먼저 필요한 라이브러리가 설치되어 있는지 확인하세요.


<p>pip install langchain ollama nomic chromadb</p>

단계 2: 문서 색인화

문서를 처리하기 위한 색인기를 생성합니다.


<p>import os
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.document_loaders import DirectoryLoader
from langchain.vectorstores import Chroma
from langchain.embeddings import HuggingFaceEmbeddings</p>

<p>class Indexer:
def __init__(self, directory_path):
self.directory_path = directory_path
self.text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=200)
self.embeddings = HuggingFaceEmbeddings(model_name=&quot;nomic-ai/nomic-embed-text-v1&quot;)</p>

<p>def load_and_split_documents(self):
loader = DirectoryLoader(self.directory_path, glob=&quot;**/*.txt&quot;)
documents = loader.load()
return self.text_splitter.split_documents(documents)</p>

<p>def create_vector_store(self, documents):
return Chroma.from_documents(documents, self.embeddings, persist_directory=&quot;./chroma_db&quot;)</p>

<p>def index(self):
documents = self.load_and_split_documents()
vector_store = self.create_vector_store(documents)
vector_store.persist()
return vector_store</p>

<p># 사용법
indexer = Indexer(&quot;문서가 있는 경로&quot;)
vector_store = indexer.index()</p>

단계 3: RAG 시스템 설정

이제 Gemma 2를 사용하여 RAG 시스템을 생성해 보겠습니다.


<p>from langchain.llms import Ollama
from langchain.chains import RetrievalQA
from langchain.prompts import PromptTemplate</p>

<p>class RAGSystem:
def __init__(self, vector_store):
self.vector_store = vector_store
self.llm = Ollama(model=&quot;gemma2:9b&quot;)
self.retriever = self.vector_store.as_retriever(search_kwargs={&quot;k&quot;: 3})</p>

<p>self.template = &quot;&quot;&quot;다음 컨텍스트를 사용하여 질문에 답하세요.
답을 모르는 경우, 그냥 모른다고 말하세요. 答을 만들지 마세요.</p>

{context}

<p>질문: {question}
답: &quot;&quot;&quot;</p>

<p>self.qa_prompt = PromptTemplate(
template=self.template, input_variables=[&quot;context&quot;, &quot;question&quot;]
)</p>

<p>self.qa_chain = RetrievalQA.from_chain_type(
llm=self.llm,
chain_type=&quot;stuff&quot;,
retriever=self.retriever,
return_source_documents=True,
chain_type_kwargs={&quot;prompt&quot;: self.qa_prompt}
)</p>

<p>def query(self, question):
return self.qa_chain({&quot;query&quot;: question})</p>

<p># 사용법
rag_system = RAGSystem(vector_store)
response = rag_system.query(&quot;프랑스의 수도는 무엇인가?&quot;)
print(response[&quot;result&quot;])</p>

이 RAG 시스템은 Gemma 2를 통해 Ollama를 사용하여 언어 모델을 구현하며, Nomic 임베딩을 사용하여 문서 검색을 수행합니다. 이는 색인화된 문서를 기반으로 질문에 답변을 제공하는 기능을 제공합니다.

Gemma 2 미세 조정

특정 작업 또는 도메인에 대해 Gemma 2를 미세 조정할 수 있습니다. 여기에서는 Hugging Face Transformers 라이브러리를 사용하는 기본 예를 보여드리겠습니다.

from transformers import AutoTokenizer, AutoModelForCausalLM, TrainingArguments, Trainer
from datasets import load_dataset

<p># 모델과 토크나이저 로드
model_name = &quot;google/gemma-2-9b-it&quot;
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)</p>

<p># 데이터셋 준비
dataset = load_dataset(&quot;당신의 데이터셋&quot;)</p>

<p>def tokenize_function(examples):
return tokenizer(examples[&quot;text&quot;], padding=&quot;max_length&quot;, truncation=True)</p>

<p>tokenized_datasets = dataset.map(tokenize_function, batched=True)</p>

<p># 훈련 인수 설정
training_args = TrainingArguments(
output_dir=&quot;./results&quot;,
num_train_epochs=3,
per_device_train_batch_size=4,
per_device_eval_batch_size=4,
warmup_steps=500,
weight_decay=0.01,
logging_dir=&quot;./logs&quot;,
)</p>

<p># 트레이너 초기화
trainer = Trainer(
model=model,
args=training_args,
train_dataset=tokenized_datasets[&quot;train&quot;],
eval_dataset=tokenized_datasets[&quot;test&quot;],
)</p>

# 미세 조정 시작
trainer.train()

<p># 미세 조정된 모델 저장
model.save_pretrained(&quot;./fine_tuned_gemma2&quot;)
tokenizer.save_pretrained(&quot;./fine_tuned_gemma2&quot;)</p>

특정 요구 사항과 컴퓨팅 자원에 따라 훈련 매개변수를 조정하세요.

윤리적 고려와 제한

Gemma 2는 인상적인 능력을 제공하지만, 그 제한과 윤리적 고려를 인식하는 것이 중요합니다.

  • 편향: 모든 언어 모델과 마찬가지로, Gemma 2는 훈련 데이터에 있는 편향을 반영할 수 있습니다. 항상 출력을 비판적으로 평가하세요.
  • 사실적 정확성:Gemmas 2는 매우 능력 있지만, 때때로 잘못된 또는 일관되지 않은 정보를 생성할 수 있습니다. 중요한 사실은 신뢰할 수 있는 출처에서 확인하세요.
  • 컨텍스트 길이: Gemma 2는 8192 토큰의 컨텍스트 길이를 가지고 있습니다. 더 긴 문서나 대화의 경우, 컨텍스트를 효과적으로 관리하기 위한 전략을 구현해야 할 수 있습니다.
  • 컴퓨팅 자원: 특히 27B 모델의 경우, 효율적인 추론과 미세 조정을 위해 상당한 컴퓨팅 자원이 필요할 수 있습니다.
  • 책임 있는 사용: Google의 책임 있는 AI 실践을 준수하고, Gemma 2의 사용이 윤리적인 AI 원칙에 따라 진행되도록 하세요.

결론

Gemma 2는 슬라이딩 윈도우 주의, 소프트 캡핑 및 새로운 모델 병합 기술과 같은 고급 기능을 통해 자연어 처리 작업의广泛한 범위에 강력한 도구를 제공합니다.

Gemma 2를 프로젝트에서 사용함으로써, 간단한 추론, 복잡한 RAG 시스템 또는 특정 도메인에 대한 미세 조정된 모델을 통해, 최첨단 AI의 힘을 활용하면서 데이터와 프로세스에 대한 제어를 유지할 수 있습니다.

지난 5년 동안私は Machine Learning과 Deep Learning의 매혹적인 세계에 몰두해 왔습니다.私の熱情と専門知識は私を50以上의多様한 소프트웨어 엔지니어링 프로젝트에 기여하게 했으며, 특히 AI/ML에 중점을 두었습니다.私の継続的な 호기심은 또한私를自然어 처리로 끌어들였습니다.私は이 분야를さらに 탐구하기를熱望합니다.