Menjalankan Gemma dengan Hugging Face Transformers

Lihat di ai.google.dev Jalankan di Google Colab Jalankan di Kaggle Buka di Vertex AI Lihat sumber di GitHub

Membuat teks, meringkas, dan menganalisis konten hanyalah beberapa tugas yang dapat Anda selesaikan dengan model terbuka Gemma. Tutorial ini menunjukkan cara mulai menjalankan Gemma menggunakan Hugging Face Transformers dengan menggunakan input teks dan gambar untuk membuat konten teks. Library Python Transformers menyediakan API untuk mengakses model AI generatif terlatih, termasuk Gemma. Untuk mengetahui informasi selengkapnya, lihat dokumentasi Transformers.

Menginstal paket Python

Instal library Hugging Face yang diperlukan untuk menjalankan model Gemma dan membuat permintaan.

# Install Pytorch
%pip install torch

# Install a transformers
%pip install transformers

Membuat teks dari teks

Memberikan perintah teks ke model Gemma untuk mendapatkan respons teks adalah cara paling sederhana untuk menggunakan Gemma dan berfungsi dengan hampir semua varian Gemma. Bagian ini menunjukkan cara menggunakan library Transformers Hugging Face untuk memuat dan mengonfigurasi model Gemma untuk pembuatan teks ke teks.

Memuat model

Gunakan library torch dan transformers untuk membuat instance class pipeline eksekusi model dengan Gemma. Saat menggunakan model untuk membuat output atau mengikuti petunjuk, pilih model yang dioptimalkan untuk petunjuk (IT), yang biasanya memiliki it dalam string ID model. Dengan menggunakan objek pipeline, Anda menentukan varian Gemma yang ingin digunakan, jenis tugas yang ingin dilakukan, khususnya "any-to-any" untuk pembuatan multimodal, seperti yang ditunjukkan dalam contoh kode berikut:

from transformers import pipeline

MODEL_ID = "google/gemma-4-E2B-it"

pipe = pipeline(
    task="any-to-any",
    model=MODEL_ID,
    device_map="auto",
    dtype="auto"
)
config.json: 0.00B [00:00, ?B/s]
model.safetensors:   0%|          | 0.00/10.2G [00:00<?, ?B/s]
Loading weights:   0%|          | 0/2011 [00:00<?, ?it/s]
generation_config.json:   0%|          | 0.00/208 [00:00<?, ?B/s]
processor_config.json: 0.00B [00:00, ?B/s]
chat_template.jinja: 0.00B [00:00, ?B/s]
tokenizer_config.json: 0.00B [00:00, ?B/s]
tokenizer.json:   0%|          | 0.00/32.2M [00:00<?, ?B/s]

Gemma hanya mendukung beberapa setelan task untuk pembuatan. Untuk mengetahui informasi selengkapnya tentang setelan task yang tersedia, lihat dokumentasi task() Hugging Face Pipelines. Untuk mengetahui informasi selengkapnya tentang penggunaan class Pipeline, lihat dokumentasi Pipelines Hugging Face.

Menjalankan pembuatan teks

Setelah model Gemma dimuat dan dikonfigurasi dalam objek pipeline, Anda dapat mengirimkan perintah ke model. Contoh kode berikut menunjukkan permintaan dasar menggunakan parameter text:

pipe(text="<|turn>user\nroses are red<turn|>\n<|turn>model\n")
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)
[{'input_text': '<|turn>user\nroses are red<turn|>\n<|turn>model\n',
  'generated_text': '<|turn>user\nroses are red<turn|>\n<|turn>model\nThat\'s a classic phrase, often used to highlight a contrast or a truth.\n\n**"Roses are red"** is a very popular, simple, and sweet arrangement.\n\nWhat would you like to do with this phrase? Are you looking for:\n\n1. **More rhymes or phrases?**\n2. **A continuation of a thought?**\n3. **Just appreciating the simplicity?**'}]

Menggunakan template perintah

Saat membuat konten dengan perintah yang lebih kompleks, gunakan template perintah untuk menyusun permintaan Anda. Template perintah memungkinkan Anda menentukan input dari peran tertentu, seperti user atau model, dan merupakan format yang diperlukan untuk mengelola interaksi chat multi-giliran dengan model Gemma. Contoh kode berikut menunjukkan cara membuat template perintah untuk Gemma:

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

messages = [
    {
        "role": "system",
        "content": [{"type": "text", "text": "You are a helpful assistant."}]
    },
    {
        "role": "user",
        "content": [{"type": "text", "text": "Roses are red..."}]
    },
]

pipe(messages, return_full_text=False, generate_kwargs=gen_kwargs)
[{'input_text': [{'role': 'system',
    'content': [{'type': 'text', 'text': 'You are a helpful assistant.'}]},
   {'role': 'user',
    'content': [{'type': 'text', 'text': 'Roses are red...'}]}],
  'generated_text': 'Roses are red,\nViolets are blue,\nHow lovely to see\nA beautiful view.'}]

Membuat teks dari data gambar

Mulai dari Gemma 3, untuk ukuran model 4B dan yang lebih tinggi, Anda dapat menggunakan data gambar sebagai bagian dari perintah Anda. Bagian ini menunjukkan cara menggunakan library Transformers untuk memuat dan mengonfigurasi model Gemma agar menggunakan data gambar dan input teks untuk menghasilkan output teks.

Menggunakan template perintah

Saat membuat konten dengan perintah yang lebih kompleks, gunakan template perintah untuk menyusun permintaan Anda. Template perintah memungkinkan Anda menentukan input dari peran tertentu, seperti user atau model, dan merupakan format yang diperlukan untuk mengelola interaksi chat multi-giliran dengan model Gemma. Contoh kode berikut menunjukkan cara membuat template perintah untuk Gemma:

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

messages = [
    {
        "role": "user",
        "content": [
            {"type": "image", "url": "https://ai.google.dev/static/gemma/docs/images/thali-indian-plate.jpg"},
            {"type": "text", "text": "What is shown in this image?"},
        ]
    },
    {
        "role": "assistant",
        "content": [
            {"type": "text", "text": "This image shows"},
        ],
    },
]

pipe(text=messages, return_full_text=False, generate_kwargs=gen_kwargs)
[{'input_text': [{'role': 'user',
    'content': [{'type': 'image',
      'url': 'https://ai.google.dev/static/gemma/docs/images/thali-indian-plate.jpg'},
     {'type': 'text', 'text': 'What is shown in this image?'}]},
   {'role': 'assistant',
    'content': [{'type': 'text', 'text': 'This image shows'}]}],
  'generated_text': " a platter of Indian food, likely a meal or an assortment of dishes.\n\nHere's a breakdown of what is visible:\n\n*   **Flatbread:** There is a large, golden-brown flatbread (possibly naan or roti) dominating the center of the platter.\n*   **Dips/Sides:** There are several small bowls containing various accompaniments:\n    *   A bowl of **yellow/mustard-colored dip** (perhaps a chutney or sauce).\n    *   A bowl of **white creamy dip** (like raita or yogurt sauce).\n    *   A portion of **white rice**.\n    *   Several bowls of **curries or sauces** in different colors:\n        *   An **orange/brown curry**.\n        *   A **deep yellow/orange sauce**.\n        *   A **green sauce** (likely a chutney).\n*   **Garnish/Side Item:** In the upper right corner, there appears to be some darker, textured items, possibly fried pieces or spices.\n*   **Platter:** The food is served on a metal platter.\n\nOverall, it looks like a traditional Indian meal setup featuring bread, rice, and various flavorful sauces/curries."}]

Anda dapat menyertakan beberapa gambar dalam perintah dengan menyertakan entri "type": "image", tambahan dalam daftar content.

Membuat teks dari data audio

Dengan Gemma 4 dan Gemma 3n, Anda dapat menggunakan data audio sebagai bagian dari perintah Anda. Bagian ini menunjukkan cara menggunakan library Transformers untuk memuat dan mengonfigurasi model Gemma agar menggunakan data audio dan input teks untuk menghasilkan output teks.

Menggunakan template perintah

Saat membuat konten dengan audio, gunakan template perintah untuk menyusun permintaan Anda. Template perintah memungkinkan Anda menentukan input dari peran tertentu, seperti user atau model, dan merupakan format yang diperlukan untuk mengelola interaksi chat multi-giliran dengan model Gemma. Contoh kode berikut menunjukkan cara membuat template perintah untuk Gemma dengan input data audio:

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

messages = [
    {
        "role": "user",
        "content": [
            {"type": "text", "text": "Transcribe the following speech segment in its original language. Follow these specific instructions for formatting the answer:\n* Only output the transcription, with no newlines.\n* When transcribing numbers, write the digits, i.e. write 1.7 and not one point seven, and write 3 instead of three."},
            {"type": "audio", "audio": "https://ai.google.dev/gemma/docs/audio/roses-are.wav"},
        ]
    }
]

pipe(text=messages, return_full_text=False, generate_kwargs=gen_kwargs)
[{'input_text': [{'role': 'user',
    'content': [{'type': 'text',
      'text': 'Transcribe the following speech segment in its original language. Follow these specific instructions for formatting the answer:\n* Only output the transcription, with no newlines.\n* When transcribing numbers, write the digits, i.e. write 1.7 and not one point seven, and write 3 instead of three.'},
     {'type': 'audio',
      'audio': 'https://ai.google.dev/gemma/docs/audio/roses-are.wav'}]}],
  'generated_text': 'Roses are red, violets are blue.'}]

Anda dapat menyertakan beberapa file audio dalam perintah dengan menyertakan entri "type": "audio", tambahan dalam daftar content.

Langkah berikutnya

Bangun dan jelajahi lebih banyak dengan model Gemma: