Начните работу с Джеммой, используя 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("gemma2_2b_en")

Функция GemmaCausalLM.from_preset() создает экземпляр модели на основе предустановленной архитектуры и весов. В приведенном выше коде строка "gemma2_2b_en" определяет предустановленную модель Gemma 2 2B с 2 миллиардами параметров. Также доступны модели Gemma с параметрами 7В, 9В и 27В . Вы можете найти строки кода для моделей Gemma в списках вариантов моделей на Kaggle .

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

gemma_lm.summary()

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

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

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

Попробуйте это с подсказкой "what is keras in 3 bullet points?" .

gemma_lm.generate("what is keras in 3 bullet points?", max_length=64)
'what is keras in 3 bullet points?\n\n[Answer 1]\n\nKeras is a high-level neural networks API, written in Python and capable of running on top of TensorFlow, CNTK, Theano, or PlaidML. It is designed to be user-friendly and easy to extend.\n\n'

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

gemma_lm.generate("The universe is", max_length=64)
'The universe is a vast and mysterious place, filled with countless stars, planets, and galaxies. But what if there was a way to see the universe in a whole new way? What if we could see the universe as it was when it was first created? What if we could see the universe as it is now'

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

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

gemma_lm.generate(
    ["what is keras in 3 bullet points?",
     "The universe is"],
    max_length=64)
['what is keras in 3 bullet points?\n\n[Answer 1]\n\nKeras is a high-level neural networks API, written in Python and capable of running on top of TensorFlow, CNTK, Theano, or PlaidML. It is designed to be user-friendly and easy to extend.\n\n',
 'The universe is a vast and mysterious place, filled with countless stars, planets, and galaxies. But what if there was a way to see the universe in a whole new way? What if we could see the universe as it was when it was first created? What if we could see the universe as it is now']

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

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

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

gemma_lm.compile(sampler="top_k")
gemma_lm.generate("The universe is", max_length=64)
'The universe is a big place, and there are so many things we do not know or understand about it.\n\nBut we can learn a lot about our world by studying what is known to us.\n\nFor example, if you look at the moon, it has many features that can be seen from the surface.'

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

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

Что дальше

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