Начните работу с Джеммой, используя KerasNLP

Посмотреть на ai.google.dev Запустить в Google Colab Открыть в Vertex AI Посмотреть исходный код на GitHub

В этом руководстве показано, как начать работу с Gemma с помощью KerasNLP . Gemma — это семейство легких современных открытых моделей, созданных на основе тех же исследований и технологий, которые использовались при создании моделей Gemini. KerasNLP — это набор моделей обработки естественного языка (NLP), реализованных в Keras и запускаемых на JAX, PyTorch и TensorFlow.

В этом руководстве вы будете использовать Gemma для создания текстовых ответов на несколько запросов. Если вы новичок в Keras, возможно, вам захочется прочитать «Начало работы с Keras», прежде чем начать, но это не обязательно. Изучая это руководство, вы узнаете больше о Keras.

Настраивать

Настройка Джеммы

Чтобы выполнить это руководство, вам сначала необходимо выполнить инструкции по настройке на странице настройки Gemma . В инструкциях по настройке Gemma показано, как сделать следующее:

  • Получите доступ к Джемме на kaggle.com.
  • Выберите среду выполнения Colab с достаточными ресурсами для запуска модели Gemma 2B.
  • Создайте и настройте имя пользователя Kaggle и ключ API.

После завершения настройки Gemma перейдите к следующему разделу, где вы установите переменные среды для вашей среды Colab.

Установить переменные среды

Установите переменные среды для KAGGLE_USERNAME и KAGGLE_KEY .

import os
from google.colab import userdata

# Note: `userdata.get` is a Colab API. If you're not using Colab, set the env
# vars as appropriate for your system.
os.environ["KAGGLE_USERNAME"] = userdata.get('KAGGLE_USERNAME')
os.environ["KAGGLE_KEY"] = userdata.get('KAGGLE_KEY')

Установить зависимости

Установите Keras и KerasNLP.

# Install Keras 3 last. See https://keras.io/getting_started/ for more details.
pip install -q -U keras-nlp
pip install -q -U keras>=3

Выберите серверную часть

Keras — это высокоуровневый многоплатформенный API глубокого обучения, разработанный для простоты и удобства использования. Keras 3 позволяет вам выбрать бэкэнд: TensorFlow, JAX или PyTorch. Все три подойдут для этого урока.

import os

os.environ["KERAS_BACKEND"] = "jax"  # Or "tensorflow" or "torch".
os.environ["XLA_PYTHON_CLIENT_MEM_FRACTION"] = "0.9"

Импортировать пакеты

Импортируйте Keras и KerasNLP.

import keras
import keras_nlp

Создать модель

KerasNLP предоставляет реализации многих популярных модельных архитектур . В этом руководстве вы создадите модель, используя GemmaCausalLM , комплексную модель Gemma для моделирования причинного языка. Модель причинно-следственного языка прогнозирует следующий токен на основе предыдущих токенов.

Создайте модель, используя метод from_preset :

gemma_lm = keras_nlp.models.GemmaCausalLM.from_preset("gemma_2b_en")
Attaching 'config.json' from model 'keras/gemma/keras/gemma_2b_en/1' to your Colab notebook...
Attaching 'config.json' from model 'keras/gemma/keras/gemma_2b_en/1' to your Colab notebook...
Attaching 'model.weights.h5' from model 'keras/gemma/keras/gemma_2b_en/1' to your Colab notebook...
Attaching 'tokenizer.json' from model 'keras/gemma/keras/gemma_2b_en/1' to your Colab notebook...
Attaching 'assets/tokenizer/vocabulary.spm' from model 'keras/gemma/keras/gemma_2b_en/1' to your Colab notebook...

from_preset создает экземпляр модели на основе предустановленной архитектуры и весов. В приведенном выше коде строка "gemma_2b_en" определяет предустановленную архитектуру: модель Gemma с 2 миллиардами параметров.

Используйте summary , чтобы получить больше информации о модели:

gemma_lm.summary()

Как видно из резюме, модель имеет 2,5 миллиарда обучаемых параметров.

Создать текст

Теперь пришло время сгенерировать текст! В модели имеется метод generate , который генерирует текст на основе подсказки. Необязательный аргумент max_length указывает максимальную длину сгенерированной последовательности.

Попробуйте это с помощью подсказки "What is the meaning of life?" .

gemma_lm.generate("What is the meaning of life?", max_length=64)
'What is the meaning of life?\n\nThe question is one of the most important questions in the world.\n\nIt’s the question that has been asked by philosophers, theologians, and scientists for centuries.\n\nAnd it’s the question that has been asked by people who are looking for answers to their own lives'

Попробуйте снова вызвать generate с другим приглашением.

gemma_lm.generate("How does the brain work?", max_length=64)
'How does the brain work?\n\nThe brain is the most complex organ in the human body. It is responsible for controlling all of the body’s functions, including breathing, heart rate, digestion, and more. The brain is also responsible for thinking, feeling, and making decisions.\n\nThe brain is made up'

Если вы используете серверные части JAX или TensorFlow, вы заметите, что второй вызов generate возвращается почти мгновенно. Это связано с тем, что каждый вызов, generate для заданного размера пакета и max_length , компилируется с помощью XLA. Первый запуск стоит дорого, но последующие запуски выполняются намного быстрее.

Вы также можете предоставить пакетные запросы, используя список в качестве входных данных:

gemma_lm.generate(
    ["What is the meaning of life?",
     "How does the brain work?"],
    max_length=64)
['What is the meaning of life?\n\nThe question is one of the most important questions in the world.\n\nIt’s the question that has been asked by philosophers, theologians, and scientists for centuries.\n\nAnd it’s the question that has been asked by people who are looking for answers to their own lives',
 'How does the brain work?\n\nThe brain is the most complex organ in the human body. It is responsible for controlling all of the body’s functions, including breathing, heart rate, digestion, and more. The brain is also responsible for thinking, feeling, and making decisions.\n\nThe brain is made up']

Необязательно: попробуйте другой сэмплер

Вы можете управлять стратегией генерации GemmaCausalLM , установив аргумент sampler в compile() . По умолчанию будет использоваться "greedy" выборка.

В качестве эксперимента попробуйте установить стратегию "top_k" :

gemma_lm.compile(sampler="top_k")
gemma_lm.generate("What is the meaning of life?", max_length=64)
'What is the meaning of life? That was a question I asked myself as I was driving home from work one night in 2012. I was driving through the city of San Bernardino, and all I could think was, “What the heck am I doing?”\n\nMy life was completely different. I'

В то время как жадный алгоритм по умолчанию всегда выбирает токен с наибольшей вероятностью, алгоритм top-K случайным образом выбирает следующий токен из токенов с максимальной вероятностью K.

Вам не нужно указывать сэмплер, и вы можете игнорировать последний фрагмент кода, если он бесполезен для вашего варианта использования. Если вы хотите узнать больше о доступных сэмплерах, см. раздел «Семплеры» .

Что дальше

В этом уроке вы узнали, как генерировать текст с помощью KerasNLP и Gemma. Вот несколько советов о том, чему следует научиться дальше: