Моделі та платформи ШІ

Повний посібник з 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 від Google, забезпечуючи продуктивність рівня стану мистецтва у більш доступному пакеті. 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. Експоненціальне середнє під час навчання з підкріпленням
  2. Сферична лінійна інтерполяція після налаштування декількох політик
  3. Лінійна інтерполяція до ініціалізації як остатній крок

Цей підхід спрямований на створення більш надійного та здатного кінцевого моделі.

Бенчмарки продуктивності

Gemma 2 демонструє вражаючу продуктивність на різних бенчмарках:

Gemma 2 на переробленій архітектурі, розробленій для виняткової продуктивності та ефективності інференсу

Gemma 2 на переробленій архітектурі, розробленій для виняткової продуктивності та ефективності інференсу

 

Початок роботи з 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)

Розширений варіант: побудова локальної системи RAG з Gemma 2

Одним із потужних застосувань Gemma 2 є побудова системи генерації з підтримкою пошукових запитів (RAG). Давайте створимо просту локальну систему RAG, використовуючи Gemma 2 та вкладення Nomic.

Крок 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

Тепер давайте створимо систему RAG, використовуючи Gemma 2:


<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 може відображати предвження, присутні у її навчальних даних. Завжди критично оцінюйте її виходи.
  • Фактична точність: Хоча Gemma 2 дуже здатна, вона іноді може генерувати неправильну або несумісну інформацію. Перевіряйте важливі факти з надійних джерел.
  • Довжина контексту: Gemma 2 має довжину контексту 8192 токенів. Для довших документів або розмов вам може знадобитися реалізувати стратегії для ефективного управління контекстом.
  • Обчислювальні ресурси: Особливо для моделі 27B можуть знадобитися суттєві обчислювальні ресурси для ефективної інференції та налаштування.
  • Відповідальне використання: Дотримуйтесь принципів відповідального AI від Google та забезпечуйте, щоб ваше використання Gemma 2 відповідало етичним принципам AI.

Висновок

Gemma 2 пропонує передові функції, такі як слизьова увага, м’яке обмеження та нові техніки об’єднання моделей, що робить її потужним інструментом для широкого спектра завдань обробки природної мови.

Використовуючи Gemma 2 у ваших проєктах, незалежно від того, чи це проста інференція, складні системи RAG чи налаштовані моделі для конкретних доменів, ви можете скористатися потужністю SOTA AI, зберігаючи контроль над вашими даними та процесами.

Я провів останні п'ять років, занурючись у захопливий світ машинного навчання та глибокого навчання. Моя пристрасть та експертиза привели мене до внеску у понад 50 різних проектів програмної інженерії, з особливим акцентом на AI/ML. Моя тривала цікавість також привела мене до природної обробки мови, галузі, яку я бажаю дослідити далі.