استنتاج متن پایه Gemma

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

Gemma خانواده‌ای از مدل‌های سبک و پیشرفته‌ی روباز است که از همان تحقیقات و فناوری مورد استفاده در ساخت مدل‌های Gemini ساخته شده‌اند. Gemma 4 به گونه‌ای طراحی شده است که کارآمدترین خانواده‌ی مدل‌های روباز در جهان باشد.

این سند، راهنمایی برای انجام استنتاج متن پایه با Gemma 4 با استفاده از کتابخانه transformers Hugging Face ارائه می‌دهد. این راهنما، تنظیمات محیط، بارگذاری مدل و سناریوهای مختلف تولید متن از جمله اعلان‌های تک نوبتی، مکالمات چند نوبتی ساختاریافته و اعمال دستورالعمل‌های سیستم را پوشش می‌دهد.

این نوت‌بوک از پردازنده گرافیکی T4 بهره می‌برد.

نصب بسته‌های پایتون

کتابخانه‌های Hugging Face مورد نیاز برای اجرای مدل Gemma و ارسال درخواست‌ها را نصب کنید.

# Install PyTorch & other libraries
pip install torch accelerate

# Install the transformers library
pip install transformers

دیالوگ (Dialog) یک کتابخانه برای دستکاری و نمایش مکالمات است.

pip install dialog

مدل بار

برای بارگذاری خط لوله از کتابخانه transformers استفاده کنید

MODEL_ID = "google/gemma-4-E2B-it" # @param ["google/gemma-4-E2B-it","google/gemma-4-E4B-it", "google/gemma-4-31B-it", "google/gemma-4-26B-A4B-it"]

from transformers import pipeline

txt_pipe = pipeline(
    task="text-generation",
    model=MODEL_ID,
    device_map="auto",
    dtype="auto"
)
Loading weights:   0%|          | 0/2011 [00:00<?, ?it/s]

اجرای تولید متن

پس از بارگذاری و پیکربندی مدل Gemma در یک شیء pipeline ، می‌توانید درخواست‌هایی را به مدل ارسال کنید. کد مثال زیر یک درخواست اولیه با استفاده از پارامتر text_inputs را نشان می‌دهد:

output = txt_pipe(text_inputs="<|turn>user\nRoses are..<turn|>\n<|turn>model\n")
print(output[0]['generated_text'])
Both `max_new_tokens` (=256) and `max_length`(=20) seem to have been set. `max_new_tokens` will take precedence. Please refer to the documentation for more information. (https://huggingface.co/docs/transformers/main/en/main_classes/text_generation)
<|turn>user
Roses are..<turn|>
<|turn>model
Here are a few ways to complete the phrase "Roses are...":

**Classic/Poetic:**

* **Roses are red.** (The most famous completion, though it usually goes "Roses are red, Violets are blue.")
* **Roses are beautiful.**
* **Roses are fragrant.**

**Simple/Direct:**

* **Roses are lovely.**
* **Roses are soft.**

**If you want a specific tone, let me know! 😊**

استفاده از کتابخانه دیالوگ

import dialog
from transformers import GenerationConfig
config = GenerationConfig.from_pretrained(MODEL_ID)
config.max_new_tokens = 512

conv = dialog.Conversation(
    dialog.User("Roses are...")
)
output = txt_pipe(text_inputs=conv.as_text(), return_full_text=False, generation_config=config)
conv += dialog.Model(output[0]['generated_text'])

print(conv.as_text())
conv.show()
<|turn>user
Roses are...<turn|>
<|turn>model
Here are a few ways to complete the phrase "Roses are...":

**Focusing on their beauty:**

* **Roses are beautiful.**
* **Roses are gorgeous.**

**Focusing on their scent:**

* **Roses are fragrant.**
* **Roses are sweet-smelling.**

**Focusing on their symbolism (if you want a deeper meaning):**

* **Roses are love.**
* **Roses are romantic.**

**Focusing on a general observation:**

* **Roses are lovely.**
* **Roses are wonderful.**

**Which completion do you like best, or were you thinking of a specific meaning?**
<dialog._src.widget.Conversation object at 0x7f1bb1a5d8b0>

از یک الگوی آماده استفاده کنید

هنگام تولید محتوا با دستورالعمل‌های پیچیده‌تر، از یک الگوی اعلان برای ساختاردهی درخواست خود استفاده کنید. الگوی اعلان به شما امکان می‌دهد ورودی را از نقش‌های خاص، مانند user یا model ، مشخص کنید و یک قالب مورد نیاز برای مدیریت تعاملات چت چند نوبتی با مدل‌های Gemma است. کد مثال زیر نحوه ساخت یک الگوی اعلان برای Gemma را نشان می‌دهد:

from transformers import GenerationConfig
config = GenerationConfig.from_pretrained(MODEL_ID)
config.max_new_tokens = 512

messages = [
    {
        "role": "user",
        "content": [
            {"type": "text", "text": "Write a short poem about the Kraken."},
        ]
    }
]

output = txt_pipe(messages, return_full_text=False, generation_config=config)
print(output[0]['generated_text'])
From sunless depths, a shadow stirs,
Where ocean's crushing silence blurs.
A titan sleeps in inky night,
With tentacles of dreadful might.

A hundred arms, a crushing hold,
A legend whispered, ages old.
The deep's dark king, a monstrous grace,
The Kraken claims its watery space.

مکالمه چند نوبتی

در یک سیستم چند نوبتی، تاریخچه مکالمه به صورت دنباله‌ای از نقش‌های متناوب user و model حفظ می‌شود. این لیست تجمعی به عنوان حافظه مدل عمل می‌کند و تضمین می‌کند که هر خروجی جدید از گفتگوی قبلی مطلع باشد.

import dialog
from transformers import GenerationConfig
config = GenerationConfig.from_pretrained(MODEL_ID)
config.max_new_tokens = 512

# User turn #1
conv = dialog.Conversation(
    dialog.User("Write a short poem about the Kraken.")
)

# Model response #1
output = txt_pipe(text_inputs=conv.as_text(), return_full_text=False, generation_config=config)
conv += dialog.Model(output[0]['generated_text'])

# User turn #2
conv += dialog.User("Now with the Siren.")

# Model response #2
output = txt_pipe(text_inputs=conv.as_text(), return_full_text=False, generation_config=config)
conv += dialog.Model(output[0]['generated_text'])

print(conv.as_text())
conv.show()
<|turn>user
Write a short poem about the Kraken.<turn|>
<|turn>model
In depths where sunlight fades,
A monstrous shadow plays.
The Kraken wakes, with churning tide,
A living horror, bold and wide.<turn|>
<|turn>user
Now with the Siren.<turn|>
<|turn>model
Where coral gardens sleep,
And ocean secrets keep,
The Siren calls, with liquid grace,
A haunting melody in place.
<dialog._src.widget.Conversation object at 0x7f1bac3733b0>

و این مکالمه به صورت متن خروجی گرفته شده است.

chat_history = conv.as_text(training=True)
print(chat_history)
print("-"*80)

# display as Conversation widget
chat_history
<|turn>user
Write a short poem about the Kraken.<turn|>
<|turn>model
In depths where sunlight fades,
A monstrous shadow plays.
The Kraken wakes, with churning tide,
A living horror, bold and wide.<turn|>
<|turn>user
Now with the Siren.<turn|>
<|turn>model
Where coral gardens sleep,
And ocean secrets keep,
The Siren calls, with liquid grace,
A haunting melody in place.<turn|>
--------------------------------------------------------------------------------
<dialog._src.widget.ConversationStr object at 0x7f1bb07fa1b0>

دستورالعمل‌های سیستم

از نقش system برای ارائه دستورالعمل‌های سطح سیستم استفاده کنید.

import dialog
from transformers import GenerationConfig
config = GenerationConfig.from_pretrained(MODEL_ID)
config.max_new_tokens = 512

conv = dialog.Conversation(
    dialog.System("Speak like a pirate."),
    dialog.User("Why is the sky blue?")
)

output = txt_pipe(text_inputs=conv.as_text(), return_full_text=False, generation_config=config)
conv += dialog.Model(output[0]['generated_text'])

print(conv.as_text())
conv.show()
<|turn>system
Speak like a pirate.<turn|>
<|turn>user
Why is the sky blue?<turn|>
<|turn>model
Ahoy there! Why is the sky blue, ye ask? It be down to the way the sun's light dances through the air!

See, the sunlight we get from the sun ain't just one color; it's a whole spectrum of colors, like a treasure chest filled with all the hues of the rainbow!

Now, the Earth is surrounded by the air, and that air is full of tiny, invisible bits of gas. When the sunlight hits these gas molecules, something magical happens. The colors in that sunlight get scattered all around in every direction!

The blue light, and other colors, get scattered more easily by these air molecules than the other colors. So, when you look up at the sky, your eyes catch all that scattered blue light coming from every direction, and **that's what makes the sky appear blue to us!**

It's a grand display of physics and light, savvy? Now, hoist the colors and enjoy the view!
<dialog._src.widget.Conversation object at 0x7f1bac370110>

خلاصه و مراحل بعدی

در این راهنما، یاد گرفتید که چگونه با استفاده از کتابخانه transformers Hugging Face، استنتاج متن پایه را با Gemma 4 انجام دهید. موارد زیر را پوشش دادید:

  • راه‌اندازی محیط و نصب وابستگی‌ها
  • بارگذاری مدل با استفاده از انتزاع pipeline .
  • اجرای تولید متن پایه.
  • استفاده از کتابخانه dialog برای ردیابی مکالمه
  • پیاده‌سازی مکالمات چند نوبتی و اعمال دستورالعمل‌های سیستمی

مراحل بعدی