Gemma mit Hugging Face-Transformern ausführen

Auf ai.google.dev ansehen  In Google Colab ausführen In Kaggle ausführen In Vertex AI öffnen Quelle auf GitHub ansehen

Mit offenen Gemma-Modellen können Sie unter anderem Text generieren, Inhalte zusammenfassen und analysieren. In dieser Anleitung erfahren Sie, wie Sie Gemma mit Hugging Face Transformers ausführen und sowohl Text- als auch Bildeingaben verwenden, um Textinhalte zu generieren. Die Transformers-Python-Bibliothek bietet eine API für den Zugriff auf vortrainierte generative KI-Modelle, einschließlich Gemma. Weitere Informationen finden Sie in der Dokumentation zu Transformers.

Python-Pakete installieren

Installieren Sie die Hugging Face-Bibliotheken, die zum Ausführen des Gemma-Modells und zum Senden von Anfragen erforderlich sind.

# Install Pytorch
%pip install torch

# Install a transformers
%pip install transformers

Text aus Text generieren

Wenn Sie ein Gemma-Modell mit Text auffordern, eine Textantwort zu generieren, ist das die einfachste Art, Gemma zu verwenden. Sie funktioniert mit fast allen Gemma-Varianten. In diesem Abschnitt wird gezeigt, wie Sie mit der Hugging Face Transformers-Bibliothek ein Gemma-Modell für die Text-zu-Text-Generierung laden und konfigurieren.

Modell laden

Verwenden Sie die Bibliotheken torch und transformers, um eine Instanz der pipeline-Klasse für die Ausführung eines Modells mit Gemma zu erstellen. Wenn Sie ein Modell zum Generieren von Ausgaben oder zum Ausführen von Anweisungen verwenden, wählen Sie ein an Anweisungen angepasstes (instruction tuned, IT) Modell aus, das in der Regel it im Modell-ID-String enthält. Mit dem pipeline-Objekt geben Sie die Gemma-Variante an, die Sie verwenden möchten, sowie den Typ der Aufgabe, die Sie ausführen möchten, insbesondere "any-to-any" für die multimodale Generierung, wie im folgenden Codebeispiel gezeigt:

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 unterstützt nur wenige task-Einstellungen für die Generierung. Weitere Informationen zu den verfügbaren task-Einstellungen finden Sie in der Dokumentation zu Hugging Face Pipelines task(). Weitere Informationen zur Verwendung der Pipeline-Klasse finden Sie in der Hugging Face-Dokumentation zu Pipelines.

Text generieren

Sobald Sie das Gemma-Modell in einem pipeline-Objekt geladen und konfiguriert haben, können Sie Prompts an das Modell senden. Der folgende Beispielcode zeigt eine einfache Anfrage mit dem 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?**'}]

Eingabeaufforderungsvorlage verwenden

Wenn Sie Inhalte mit komplexeren Prompts generieren, verwenden Sie eine Prompt-Vorlage, um Ihre Anfrage zu strukturieren. Mit einer Prompt-Vorlage können Sie Eingaben von bestimmten Rollen wie user oder model angeben. Sie ist ein erforderliches Format für die Verwaltung von Chat-Interaktionen mit mehreren Durchgängen mit Gemma-Modellen. Das folgende Beispiel zeigt, wie Sie eine Prompt-Vorlage für Gemma erstellen:

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.'}]

Text aus Bilddaten generieren

Ab Gemma 3 können Sie für Modellgrößen ab 4B Bilddaten als Teil Ihres Prompts verwenden. In diesem Abschnitt wird gezeigt, wie Sie mit der Transformers-Bibliothek ein Gemma-Modell laden und konfigurieren, um mit Bilddaten und Texteingabe Textausgabe zu generieren.

Eingabeaufforderungsvorlage verwenden

Wenn Sie Inhalte mit komplexeren Prompts generieren, verwenden Sie eine Prompt-Vorlage, um Ihre Anfrage zu strukturieren. Mit einer Prompt-Vorlage können Sie Eingaben von bestimmten Rollen wie user oder model angeben. Sie ist ein erforderliches Format für die Verwaltung von Chat-Interaktionen mit mehreren Durchgängen mit Gemma-Modellen. Das folgende Beispiel zeigt, wie Sie eine Prompt-Vorlage für Gemma erstellen:

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."}]

Sie können mehrere Bilder in Ihren Prompt einfügen, indem Sie der Liste content zusätzliche "type": "image",-Einträge hinzufügen.

Text aus Audiodaten generieren

Mit Gemma 4 und Gemma 3n können Sie Audiodaten als Teil Ihres Prompts verwenden. In diesem Abschnitt wird gezeigt, wie Sie die Transformers-Bibliothek verwenden, um ein Gemma-Modell zu laden und zu konfigurieren, das Audio- und Texteingaben verwendet, um Textausgaben zu generieren.

Eingabeaufforderungsvorlage verwenden

Wenn Sie Inhalte mit Audio generieren, verwenden Sie eine Prompt-Vorlage, um Ihre Anfrage zu strukturieren. Mit einer Prompt-Vorlage können Sie Eingaben von bestimmten Rollen wie user oder model angeben. Sie ist ein erforderliches Format für die Verwaltung von Chat-Interaktionen mit mehreren Durchgängen mit Gemma-Modellen. Im folgenden Beispielcode wird gezeigt, wie Sie eine Promptvorlage für Gemma mit Audioeingabe erstellen:

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.'}]

Sie können mehrere Audiodateien in Ihren Prompt einfügen, indem Sie der Liste content zusätzliche "type": "audio",-Einträge hinzufügen.

Nächste Schritte

Mit Gemma-Modellen können Sie noch mehr entwickeln und entdecken: