Обмен технологиями

Gemma2 — полное руководство по применению новой крупномасштабной языковой модели Google с открытым исходным кодом.

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

0 Предисловие

Джемма 2 Созданный на основе своего предшественника, он предлагает повышенную производительность и эффективность, а также ряд инновационных функций, что делает его особенно привлекательным как для исследований, так и для практического применения. Что отличает Gemma 2 от других, так это то, что она обеспечивает производительность, сравнимую с более крупными проприетарными моделями, но спакет программного обеспеченияРазработан для более широкого доступа и использования на более скромных аппаратных настройках.

Углубляясь в технические характеристики и архитектуру Gemma 2, я все больше поражаюсь изысканности ее дизайна.Модель включает в себя множество передовых технологий, в том числе новейшие.механизм вниманияи инновационные методы стабилизации тренировок, которые способствуют его исключительным характеристикам.

В этом подробном руководстве Gemma 2 будет подробно рассмотрена с учетом ее архитектуры, ключевых функций и практического применения. Независимо от того, являетесь ли вы опытным специалистом в области искусственного интеллекта или новичком в этой области, цель этой статьи — предоставить ценную информацию о том, как работает Gemma 2 и как вы можете использовать ее возможности в своих собственных проектах.

1. Что такое Джемма 2?

Gemma 2 — последняя крупномасштабная разработка Google с открытым исходным кодом.языковая модель , изысканный дизайн, но мощный. Он создан на основе тех же исследований и технологий, которые использовались при создании моделей Google Gemini, обеспечивая высочайшую производительность в более доступном корпусе. Gemma 2 выпускается в двух размерах:

Джемма 2 9Б: Модель с 9 миллиардами параметров.
Джемма 2 27Б: Более крупная модель с 27 миллиардами параметров.

Каждый размер представлен в двух стилях:

базовая модель: Предварительное обучение работе с большими объемами текстовых данных.
Модель настройки инструкций (IT): Тонкая настройка для повышения производительности при выполнении конкретных задач.

Доступ к моделям в Google AI StudioGoogle AI Studio – Джемма 2
Прочтите статью здесь: Технический отчет Gemma 2

2.Основные функции и улучшения

Gemma 2 представляет несколько существенных улучшений по сравнению со своей предшественницей:

2.1. Добавьте данные обучения.

Эти модели были обучены на большем количестве данных:

Джемма 2 27Б: После обучения с 13 триллионами токенов
Джемма 2 9Б: После обучения с 8 триллионами токенов

Этот расширенный набор данных состоит в основном из сетевых данных (в основном на английском языке), кода и математических вычислений, что помогает повысить производительность и универсальность ваших моделей.

2.2. Внимание скользящего окна.

Gemma 2 реализует новый метод механизма внимания:

Каждый второй уровень использует механизм внимания скользящего окна, а локальный контекст составляет 4096 токенов.
Альтернативный уровень использует полностью квадратичный механизм глобального внимания для всего контекста токена 8192.

Этот гибридный подход направлен на то, чтобы сбалансировать эффективность с возможностью захвата долгосрочных зависимостей во входных данных.

2.3. Мягкая крышка.

Чтобы улучшить стабильность и производительность тренировки, Gemma 2 представляет механизм мягкого верхнего предела:

def soft_cap(x, cap):
    return cap * torch.tanh(x / cap)
# Applied to attention logits
attention_logits = soft_cap(attention_logits, cap=50.0)
# Applied to final layer logits
final_logits = soft_cap(final_logits, cap=30.0)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

Этот метод предотвращает слишком большой размер логитов без жесткого усечения, тем самым сохраняя больше информации и одновременно стабилизируя процесс обучения.

  1. Джемма 2 9Б: модель с 9 миллиардами параметров
  2. Джемма 2 27Б: Более крупная модель с 27 миллиардами параметров.

Каждый размер представлен в двух стилях:

  • Базовая модель: предварительно обучена на больших объемах текстовых данных.
  • Модель Instruction Tuning (IT): точная настройка для повышения производительности при выполнении конкретных задач.

2.4. Дистилляция знаний

Для модели 9B Gemma 2 использует технологию извлечения знаний:

  • Предварительное обучение: модель 9B учится у более крупной модели учителя во время первоначального обучения.
  • После обучения: модели 9B и 27B используют онлайн-анализ политик для повышения эффективности.

Этот процесс помогает меньшей модели более эффективно использовать функциональность более крупной модели.

2.5. Объединение моделей

Gemma 2 использует новую технологию объединения моделей под названием Warp, которая объединяет несколько моделей в три этапа:

  1. Экспоненциальное скользящее среднее (EMA) во время тонкой настройки обучения с подкреплением
  2. Сферическая линейная интерполяция (SLERP) после точной настройки с использованием нескольких стратегий
  3. Инициализация линейной интерполяции (LITI) как последний шаг

Этот подход направлен на создание более надежной и надежной окончательной модели.

3. Тесты производительности

Gemma 2 демонстрирует впечатляющую производительность во множестве тестов:

Gemma 2 имеет переработанную архитектуру, обеспечивающую превосходную производительность и эффективность вывода.

6. Начало работы с Джеммой 2

Чтобы начать использовать Gemma 2 в своих проектах, у вас есть следующие возможности:

6.1. Студия искусственного интеллекта Google.

Доступ к Gemma 2 можно получить через Google AI Studio.Студия искусственного интеллекта Google.

6.2. Обнимающее лицо

Джемма 2 и обнимающее лицо Интеграция библиотеки Трансформеров. Вот как его использовать:

<div class="relative flex flex-col rounded-lg">
<div class="text-text-300 absolute pl-3 pt-2.5 text-xs">
from transformers import AutoTokenizer, AutoModelForCausalLM
# Load the model and tokenizer
model_name = "google/gemma-2-27b-it" # or "google/gemma-2-9b-it" for the smaller version
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)
# Prepare input
prompt = "Explain the concept of quantum entanglement in simple terms."
inputs = tokenizer(prompt, return_tensors="pt")
# Generate text
outputs = model.generate(**inputs, max_length=200)
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(response)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

6.3.TensorFlow/Keras

Для пользователей TensorFlow Gemma 2 доступна через Keras:

import tensorflow as tf
from keras_nlp.models import GemmaCausalLM
# Load the model
model = GemmaCausalLM.from_preset("gemma_2b_en")
# Generate text
prompt = "Explain the concept of quantum entanglement in simple terms."
output = model.generate(prompt, max_length=200)
print(output)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

7. Расширенное использование: используйте Gemma 2 для создания локальной системы RAG.

Мощным применением Gemma 2 является создание систем дополненной генерации (RAG). Давайте создадим простую, полностью нативную систему RAG, используя встраивания Gemma 2 и Nomic.

Шаг 1. Настройте среду

Сначала убедитесь, что у вас установлены необходимые библиотеки:

pip install langchain ollama nomic chromadb
  • 1

Шаг 2. Индексируйте документы

Создайте индексатор для обработки документов:

import os
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.document_loaders import DirectoryLoader
from langchain.vectorstores import Chroma
from langchain.embeddings import HuggingFaceEmbeddings
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="nomic-ai/nomic-embed-text-v1")
  
def load_and_split_documents(self):
    loader = DirectoryLoader(self.directory_path, glob="**/*.txt")
    documents = loader.load()
    return self.text_splitter.split_documents(documents)
def create_vector_store(self, documents):
    return Chroma.from_documents(documents, self.embeddings, persist_directory="./chroma_db")
def index(self):
    documents = self.load_and_split_documents()
    vector_store = self.create_vector_store(documents)
    vector_store.persist()
    return vector_store
# Usage
indexer = Indexer("path/to/your/documents")
vector_store = indexer.index()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

Шаг 3. Настройте систему RAG.

Теперь создайте систему RAG, используя Gemma 2:

from langchain.llms import Ollama
from langchain.chains import RetrievalQA
from langchain.prompts import PromptTemplate
class RAGSystem:
    def __init__(self, vector_store):
        self.vector_store = vector_store
        self.llm = Ollama(model="gemma2:9b")
        self.retriever = self.vector_store.as_retriever(search_kwargs={"k": 3})
self.template = """Use the following pieces of context to answer the question at the end.
If you don't know the answer, just say that you don't know, don't try to make up an answer.
{context}
Question: {question}
Answer: """
self.qa_prompt = PromptTemplate(
template=self.template, input_variables=["context", "question"]
)
self.qa_chain = RetrievalQA.from_chain_type(
llm=self.llm,
chain_type="stuff",
retriever=self.retriever,
return_source_documents=True,
chain_type_kwargs={"prompt": self.qa_prompt}
)
def query(self, question):
return self.qa_chain({"query": question})
# Usage
rag_system = RAGSystem(vector_store)
response = rag_system.query("What is the capital of France?")
print(response["result"])
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

Эта система RAG использует Gemma 2 to Ollama в качестве языковой модели и встраивание Nomic для поиска документов. Это позволяет вам задавать вопросы на основе проиндексированных документов и давать контекстуальные ответы из соответствующих источников.

Точная настройка Джеммы 2

Для конкретных задач или областей вам может потребоваться тонкая настройка Gemma 2. Вот базовый пример использования библиотеки Hugging Face Transformers:

from transformers import AutoTokenizer, AutoModelForCausalLM, TrainingArguments, Trainer
from datasets import load_dataset
# Load model and tokenizer
model_name = "google/gemma-2-9b-it"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)
# Prepare dataset
dataset = load_dataset("your_dataset")
def tokenize_function(examples):
return tokenizer(examples["text"], padding="max_length", truncation=True)
tokenized_datasets = dataset.map(tokenize_function, batched=True)
# Set up training arguments
training_args = TrainingArguments(
output_dir="./results",
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="./logs",
)
# Initialize Trainer
trainer = Trainer(
model=model,
args=training_args,
train_dataset=tokenized_datasets["train"],
eval_dataset=tokenized_datasets["test"],
)
# Start fine-tuning
trainer.train()
# Save the fine-tuned model
model.save_pretrained("./fine_tuned_gemma2")
tokenizer.save_pretrained("./fine_tuned_gemma2")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

Настраивайте параметры обучения в зависимости от конкретных требований и вычислительных ресурсов.

Этические соображения и ограничения

Хотя Gemma 2 предлагает впечатляющую функциональность, необходимо учитывать ее ограничения и этические соображения:

  • предвзятость : Как и все языковые модели, Gemma 2 может отражать предвзятости, присутствующие в ее обучающих данных. Всегда критически оценивайте его результаты.
  • фактическая точность : Хотя Gemma 2 является мощной программой, она иногда выдает неверную или противоречивую информацию. Пожалуйста, проверяйте важные факты из надежных источников.
  • длина контекста : Длина контекста Gemma 2 составляет 8192 токена. Для более длинных документов или разговоров вам может потребоваться реализовать стратегии для эффективного управления контекстом.
  • Вычислительные ресурсы: Для эффективных выводов и точной настройки могут потребоваться значительные вычислительные ресурсы, особенно для моделей 27B.
  • Ответственное использование: Придерживайтесь принципов ответственного использования искусственного интеллекта Google и убедитесь, что использование Gemma 2 соответствует этическим принципам искусственного интеллекта.

8. Заключение

Расширенные функции Gemma 2, такие как скользящее окно внимания, мягкие верхние границы и новые методы слияния моделей, делают его мощным инструментом для широкого спектра задач обработки естественного языка.

Используя Gemma 2 в своих проектах, будь то с помощью простого вывода, сложных систем RAG или точно настроенных моделей для конкретной предметной области, вы можете использовать возможности SOTA AI, сохраняя при этом контроль над своими данными и процессами.

Исходный адрес:https://www.unite.ai/complete-guide-on-gemma-2-googles-new-open-large-language-model/