| | Запустить в Google Colab | | | Посмотреть исходный код на GitHub |
Использование изображений в качестве подсказок для моделей Gemma открывает совершенно новые возможности для понимания окружающего мира и решения задач с помощью визуальных данных. Начиная с Gemma 3 в размерах 4B и выше, вы можете использовать данные изображений в качестве части подсказок для получения более богатого контекста и решения более сложных задач.
В этом руководстве показано, как запрашивать изображения у Gemma с помощью библиотеки Gemma для JAX. Библиотека Gemma — это пакет Python, созданный как расширение JAX , позволяющий использовать преимущества производительности фреймворка JAX со значительно меньшим количеством кода.
Настраивать
Для завершения этого руководства вам сначала необходимо выполнить инструкции по настройке Gemma, размещенные на странице настройки Gemma . Инструкции по настройке Gemma показывают, как выполнить следующие действия:
- Получите доступ к Джемме на kaggle.com .
- Выберите среду выполнения Colab с достаточными ресурсами для запуска модели Gemma.
- Сгенерируйте и настройте имя пользователя Kaggle и ключ API.
После завершения настройки Gemma перейдите к следующему разделу, где вы установите переменные среды для вашей среды Colab.
Установите библиотеки
Установите библиотеку Gemma.
pip install -q gemmaУстановите переменные среды
Войдите в систему, используя свою учетную запись Kaggle.
# This will prompt you to enter your Kaggle API token
import kagglehub
kagglehub.login()
VBox(children=(HTML(value='<center> <img\nsrc=https://www.kaggle.com/static/images/site-logo.png\nalt=\'Kaggle… Kaggle credentials set. Warning: Looks like you're using an outdated `kagglehub` version (installed: 0.3.13), please consider upgrading to the latest version (0.4.1). Kaggle credentials successfully validated.
Настройте среду JAX на использование всего пространства памяти графического процессора.
import os
os.environ["XLA_PYTHON_CLIENT_MEM_FRACTION"]="1.00"
Импорт пакетов
Импортируйте библиотеку Gemma и дополнительные вспомогательные библиотеки.
# Common imports
import os
import jax
import jax.numpy as jnp
import tensorflow_datasets as tfds
# Gemma imports
from gemma import gm
Настройте модель
Выберите и настройте модель Gemma для использования, включая токенизатор, архитектуру модели и контрольные точки. Библиотека Gemma поддерживает все официальные версии модели от Google. Для обработки изображений в рамках вашего запроса необходимо использовать Gemma3Tokenizer и модель Gemma 3 или более поздней версии.
Для настройки модели выполните следующий код:
tokenizer = gm.text.Gemma3Tokenizer()
model = gm.nn.Gemma3_4B()
params = gm.ckpts.load_params(gm.ckpts.CheckpointPath.GEMMA3_4B_IT)
WARNING:absl:Provided metadata contains unknown key custom. Adding it to custom_metadata.
Сгенерировать текст с помощью текста
Начните с ввода текста в качестве подсказки. Библиотека Gemma предоставляет функцию Sampler для простого ввода текста в подсказку.
sampler = gm.text.Sampler(
model=model,
params=params,
tokenizer=tokenizer,
)
sampler.sample('Roses are red.', max_new_tokens=30)
'\nViolets are blue.\nI love you,\nAnd I want you too.\n\n---\n\nThis is a classic, simple, and'
Измените подсказку и максимальное количество токенов, чтобы получить другой результат.
Генерация текста с изображениями
После того, как текстовая подсказка заработает, вы сможете добавлять к ней изображения. Убедитесь, что вы настроили Gemma 3 или более позднюю модель (4B или выше) и настроили Gemma3Tokenizer .
Загрузить изображение
Загрузка изображения из источника данных или локального файла. Следующий код показывает, как загрузить изображение из источника данных TensorFlow:
ds = tfds.data_source('oxford_flowers102', split='train')
image = ds[0]['image']
# display the image
image
WARNING:absl:Variant folder /root/tensorflow_datasets/oxford_flowers102/2.1.1 has no dataset_info.json Downloading and preparing dataset Unknown size (download: Unknown size, generated: Unknown size, total: Unknown size) to /root/tensorflow_datasets/oxford_flowers102/2.1.1... Dl Completed...: 0 url [00:00, ? url/s] Dl Size...: 0 MiB [00:00, ? MiB/s] Extraction completed...: 0 file [00:00, ? file/s] Generating splits...: 0%| | 0/3 [00:00<?, ? splits/s] Generating train examples...: 0 examples [00:00, ? examples/s] Shuffling /root/tensorflow_datasets/oxford_flowers102/incomplete.2TXIHE_2.1.1/oxford_flowers102-train.array_re… Generating test examples...: 0 examples [00:00, ? examples/s] Shuffling /root/tensorflow_datasets/oxford_flowers102/incomplete.2TXIHE_2.1.1/oxford_flowers102-test.array_rec… Generating validation examples...: 0 examples [00:00, ? examples/s] Shuffling /root/tensorflow_datasets/oxford_flowers102/incomplete.2TXIHE_2.1.1/oxford_flowers102-validation.arr… Dataset oxford_flowers102 downloaded and prepared to /root/tensorflow_datasets/oxford_flowers102/2.1.1. Subsequent calls will reuse this data.

Подготовьте запрос с использованием данных изображения.
При вводе данных изображения в качестве запроса, вы добавляете специальный тег <start_of_image> , чтобы включить изображение вместе с текстом запроса. Затем вы кодируете запрос данными изображения, используя объект tokenizer , чтобы подготовить его к запуску с моделью.
prompt = """<start_of_turn>user
Describe the contents of this image.
<start_of_image>
<end_of_turn>
<start_of_turn>model
"""
Если вы хотите использовать в подсказке более одного изображения, необходимо добавить тег <start_of_image> для каждого изображения, включенного в подсказку.
Запустите командную строку с данными изображения.
После подготовки данных изображения и запроса с тегами изображения, вы можете запустить запрос и сгенерировать результат. Следующий код показывает, как использовать функцию Sampler для запуска запроса:
sampler = gm.text.Sampler(
model=model,
params=params,
tokenizer=tokenizer,
)
out = sampler.sample(prompt, images=image, max_new_tokens=500)
print(out)
/usr/local/lib/python3.12/dist-packages/jax/_src/ops/scatter.py:108: FutureWarning: scatter inputs have incompatible types: cannot safely cast value from dtype=float32 to dtype=bfloat16 with jax_numpy_dtype_promotion='standard'. In future JAX releases this will result in an error. warnings.warn( Here's a description of the image's contents: **Subject:** The image features a close-up shot of a water lily in full bloom. **Details:** * **Flower:** The lily is predominantly white with a delicate pink hue at the base of the petals. It has a striking, star-like shape with pointed petals that curve upwards. * **Center:** The flower's center is a vibrant yellow, with prominent stamens extending outwards. There are a few water droplets clinging to the petals. * **Stem and Pads:** The lily is resting on a dark, textured stem and broad, paddle-shaped pads that are characteristic of water lilies. * **Background:** The background is completely black, creating a dramatic contrast and isolating the flower, making it the clear focal point. **Overall Impression:** The image has a serene and elegant feel, emphasizing the beauty and detail of the water lily. The dark background and lighting create a sense of depth and highlight the flower's form.<end_of_turn>
В качестве альтернативы вы можете использовать функцию gm.text.ChatSampler() для генерации ответа без необходимости использования тегов <start_of_turn> . Для получения более подробной информации см. документацию библиотеки Gemma для JAX .
Следующие шаги
Библиотека Gemma предоставляет гораздо больше дополнительных функций. Для получения более подробной информации см. следующие дополнительные ресурсы:
Библиотека Gemma для JAX предоставляет дополнительные возможности, включая LoRA, шардинг, квантование и многое другое. Более подробную информацию см. в документации библиотеки Gemma . Если у вас есть какие-либо отзывы или проблемы с использованием библиотеки Gemma, отправьте их через интерфейс Issues в репозитории.
Запустить в Google Colab
Посмотреть исходный код на GitHub