|
|
Uruchom w Google Colab
|
|
|
Wyświetl źródło na GitHubie
|
Generowanie tekstu, tworzenie podsumowań i analizowanie treści to tylko niektóre z zadań, które możesz wykonać za pomocą otwartych modeli Gemma. Z tego samouczka dowiesz się, jak zacząć korzystać z modelu Gemma za pomocą Hugging Face Transformers, używając zarówno tekstu, jak i obrazu jako danych wejściowych do generowania treści tekstowych. Biblioteka Transformers w języku Python udostępnia interfejs API do uzyskiwania dostępu do wstępnie wytrenowanych modeli generatywnej AI, w tym Gemmy. Więcej informacji znajdziesz w dokumentacji Transformers.
Instalowanie pakietów Pythona
Zainstaluj biblioteki Hugging Face wymagane do uruchomienia modelu Gemma i wysyłania żądań.
# Install Pytorch
%pip install torch
# Install a transformers
%pip install transformers
Generowanie tekstu na podstawie tekstu
Wysyłanie do modelu Gemma promptów tekstowych w celu uzyskania odpowiedzi tekstowej to najprostszy sposób korzystania z Gemma, który działa w przypadku niemal wszystkich wariantów tego modelu. W tej sekcji dowiesz się, jak za pomocą biblioteki Hugging Face Transformers wczytać i skonfigurować model Gemma do generowania tekstu na podstawie tekstu.
Wczytaj model
Użyj bibliotek torch i transformers, aby utworzyć instancję klasy pipeline wykonania modelu z Gemma. Jeśli używasz modelu do generowania danych wyjściowych lub wykonywania instrukcji, wybierz model dostrojony pod kątem instrukcji (IT), który zwykle ma w ciągu identyfikatora modelu symbol it. Za pomocą obiektu pipeline możesz określić wariant modelu Gemma, którego chcesz użyć, oraz typ zadania, które chcesz wykonać, w tym "any-to-any" w przypadku generowania multimodalnego, jak pokazano w tym przykładzie kodu:
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]
Model Gemma obsługuje tylko kilka task ustawień generowania. Więcej informacji o dostępnych ustawieniach task znajdziesz w dokumentacji funkcji task() w Hugging Face Pipelines. Więcej informacji o korzystaniu z klasy Pipeline znajdziesz w dokumentacji Hugging Face Pipelines.
Uruchamianie generowania tekstu
Gdy model Gemma zostanie wczytany i skonfigurowany w obiekcie pipeline, możesz wysyłać do niego prompty. Poniższy przykładowy kod pokazuje podstawowe żądanie z użyciem parametru 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?**'}]
Używanie szablonu prompta
Gdy generujesz treści za pomocą bardziej złożonych promptów, użyj szablonu promptu, aby uporządkować żądanie. Szablon promptu umożliwia określanie danych wejściowych z określonych ról, takich jak user lub model, i jest wymaganym formatem do zarządzania czatem wieloetapowym z modelami Gemma. Poniższy przykładowy kod pokazuje, jak utworzyć szablon prompta dla modelu 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.'}]
Generowanie tekstu na podstawie danych obrazu
Od modelu Gemma 3 w przypadku modeli o rozmiarze 4B i większym możesz używać danych obrazów w ramach promptu. W tej sekcji dowiesz się, jak używać biblioteki Transformers do wczytywania i konfigurowania modelu Gemma, aby używać danych obrazu i tekstu wejściowego do generowania tekstu wyjściowego.
Używanie szablonu prompta
Gdy generujesz treści za pomocą bardziej złożonych promptów, użyj szablonu promptu, aby uporządkować żądanie. Szablon promptu umożliwia określanie danych wejściowych z określonych ról, takich jak user lub model, i jest wymaganym formatem do zarządzania czatem wieloetapowym z modelami Gemma. Poniższy przykładowy kod pokazuje, jak utworzyć szablon prompta dla modelu 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."}]
W prompcie możesz uwzględnić wiele obrazów, dodając kolejne wpisy "type": "image", do listy content.
Generowanie tekstu na podstawie danych audio
W przypadku modeli Gemma 4 i Gemma 3n możesz używać danych audio w ramach prompta. W tej sekcji dowiesz się, jak za pomocą biblioteki Transformers wczytać i skonfigurować model Gemma, aby używać danych audio i tekstowych do generowania tekstu wyjściowego.
Używanie szablonu prompta
Podczas generowania treści z dźwiękiem użyj szablonu prompta, aby uporządkować żądanie. Szablon promptu umożliwia określanie danych wejściowych z określonych ról, takich jak user lub model, i jest wymaganym formatem do zarządzania czatem wieloetapowym z modelami Gemma. Poniższy przykładowy kod pokazuje, jak utworzyć szablon prompta dla modelu Gemma z danymi 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.'}]
Możesz dodać do prompta wiele plików audio, umieszczając dodatkowe wpisy "type": "audio", na liście content.
Dalsze kroki
Twórz i eksploruj więcej dzięki modelom Gemma:
- Dostrajanie modelu Gemma do zadań tekstowych za pomocą biblioteki Transformers na platformie Hugging Face
- Dostrajanie modelu Gemma do zadań związanych z widzeniem za pomocą biblioteki Transformers na platformie Hugging Face
- Dystrybucyjne dostrajanie i wnioskowanie w przypadku modeli Gemma
- Korzystanie z otwartych modeli Gemma w Vertex AI
- Dostrajanie modelu Gemma za pomocą Keras i wdrażanie go w Vertex AI
Uruchom w Google Colab
Wyświetl źródło na GitHubie