با استفاده از کتابخانه Gemma، به صورت تصویری و متنی اعلان ارسال کنید

مشاهده در ai.google.dev در گوگل کولب اجرا کنید دویدن در کاگل باز کردن در Vertex AI مشاهده منبع در گیت‌هاب

استفاده از تصاویر برای ایجاد مدل‌های Gemma طیف کاملاً جدیدی از امکانات را برای درک دنیای شما و حل مسائل با داده‌های بصری فراهم می‌کند. با شروع از Gemma 3 در اندازه‌های 4B و بالاتر، می‌توانید از داده‌های تصویری به عنوان بخشی از دستورالعمل خود برای ایجاد زمینه غنی‌تر و حل وظایف پیچیده‌تر استفاده کنید.

این آموزش به شما نشان می‌دهد که چگونه با استفاده از کتابخانه Gemma برای JAX، Gemma را با تصاویر فراخوانی کنید. کتابخانه Gemma یک بسته پایتون است که به عنوان افزونه‌ای برای JAX ساخته شده است و به شما امکان می‌دهد از مزایای عملکرد چارچوب JAX با کدنویسی بسیار کمتر استفاده کنید.

راه‌اندازی

برای تکمیل این آموزش، ابتدا باید دستورالعمل‌های راه‌اندازی را در Gemma setup تکمیل کنید. دستورالعمل‌های راه‌اندازی Gemma به شما نشان می‌دهد که چگونه موارد زیر را انجام دهید:

  • برای دسترسی به Gemma به kaggle.com مراجعه کنید.
  • یک محیط اجرای Colab با منابع کافی برای اجرای مدل Gemma انتخاب کنید.
  • یک نام کاربری و کلید API برای Kaggle ایجاد و پیکربندی کنید.

پس از اتمام راه‌اندازی Gemma، به بخش بعدی بروید، جایی که متغیرهای محیطی را برای محیط Colab خود تنظیم خواهید کرد.

نصب کتابخانه‌ها

کتابخانه Gemma را نصب کنید.

pip install -q gemma

تنظیم متغیرهای محیطی

با حساب کاگل خود وارد شوید.

# 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 را طوری تنظیم کنید که از کل فضای حافظه GPU استفاده کند.

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 از تمام نسخه‌های رسمی مدل گوگل پشتیبانی می‌کند. برای اینکه بتوانید تصاویر را به عنوان بخشی از اعلان خود پردازش کنید، باید از 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.

png

آماده‌سازی اعلان با داده‌های تصویر

وقتی با داده‌های تصویر اعلان می‌کنید، یک تگ خاص <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، Sharding، Quantization و موارد دیگر را ارائه می‌دهد. برای جزئیات بیشتر، به مستندات کتابخانه Gemma مراجعه کنید. اگر بازخوردی دارید یا در استفاده از کتابخانه Gemma مشکلی دارید، آنها را از طریق رابط Issues مخزن ارسال کنید.