|
|
Google Colab'de çalıştırma
|
|
|
Kaynağı GitHub'da görüntüleyin
|
Gemma açık modelleriyle metin oluşturma, özetleme ve içerik analiz etme gibi görevleri gerçekleştirebilirsiniz. Bu eğiticide, metin içeriği oluşturmak için hem metin hem de resim girişi kullanarak Hugging Face Transformers ile Gemma'yı çalıştırmaya nasıl başlayacağınız gösterilmektedir. Transformers Python kitaplığı, Gemma dahil olmak üzere önceden eğitilmiş üretken yapay zeka modellerine erişmek için bir API sağlar. Daha fazla bilgi için Transformers belgelerine bakın.
Python paketlerini yükleme
Gemma modelini çalıştırmak ve istekte bulunmak için gereken Hugging Face kitaplıklarını yükleyin.
# Install Pytorch
%pip install torch
# Install a transformers
%pip install transformers
Metinden metin oluşturma
Gemma'yı kullanmanın en basit yolu, metin yanıtı almak için Gemma modeline metin istemi göndermektir. Bu yöntem, neredeyse tüm Gemma varyantlarıyla çalışır. Bu bölümde, Hugging Face Transformers kitaplığını kullanarak metinden metne oluşturma için bir Gemma modelinin nasıl yükleneceği ve yapılandırılacağı gösterilmektedir.
Model yükle
Gemma ile model yürütme pipeline sınıfının bir örneğini oluşturmak için torch ve transformers kitaplıklarını kullanın. Çıkış oluşturmak veya talimatları uygulamak için bir model kullanırken genellikle model kimliği dizesinde it bulunan, talimatlara göre ayarlanmış (IT) bir model seçin. pipeline nesnesini kullanarak, kullanmak istediğiniz Gemma varyantını ve yapmak istediğiniz görev türünü (özellikle çok formatlı üretim için "any-to-any") aşağıdaki kod örneğinde gösterildiği gibi belirtirsiniz:
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, yalnızca birkaç task ayarını destekler. Kullanılabilir task ayarları hakkında daha fazla bilgi için Hugging Face Pipelines task() belgelerine bakın. Pipeline sınıfını kullanma hakkında daha fazla bilgi için Hugging Face Pipelines dokümanlarına bakın.
Metin oluşturma işlemini çalıştırma
Gemma modelini bir pipeline nesnesine yükleyip yapılandırdıktan sonra modele istem gönderebilirsiniz. Aşağıdaki örnek kodda, text parametresinin kullanıldığı temel bir istek gösterilmektedir:
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?**'}]
İstem şablonu kullanma
Daha karmaşık istemlerle içerik oluştururken isteğinizi yapılandırmak için bir istem şablonu kullanın. İstem şablonu, user veya model gibi belirli rollerden giriş belirtmenize olanak tanır ve Gemma modelleriyle çok turlu sohbet etkileşimlerini yönetmek için gerekli bir biçimdir. Aşağıdaki örnek kodda, Gemma için istem şablonunun nasıl oluşturulacağı gösterilmektedir:
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.'}]
Görüntü verilerinden metin oluşturma
Gemma 3'ten itibaren, 4 milyar ve üzeri model boyutlarında isteminizin bir parçası olarak görüntü verilerini kullanabilirsiniz. Bu bölümde, Transformers kitaplığını kullanarak bir Gemma modelini yükleme ve yapılandırma, ardından resim verilerini ve metin girişini kullanarak metin çıkışı oluşturma işlemleri gösterilmektedir.
İstem şablonu kullanma
Daha karmaşık istemlerle içerik oluştururken isteğinizi yapılandırmak için bir istem şablonu kullanın. İstem şablonu, user veya model gibi belirli rollerden giriş belirtmenize olanak tanır ve Gemma modelleriyle çok turlu sohbet etkileşimlerini yönetmek için gerekli bir biçimdir. Aşağıdaki örnek kodda, Gemma için istem şablonunun nasıl oluşturulacağı gösterilmektedir:
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."}]
content listesine ek "type": "image", girişleri ekleyerek isteminize birden fazla resim dahil edebilirsiniz.
Ses verilerinden metin oluşturma
Gemma 4 ve Gemma 3n ile isteminizin bir parçası olarak ses verilerini kullanabilirsiniz. Bu bölümde, Transformers kitaplığını kullanarak bir Gemma modelini yükleme ve yapılandırma, ses verilerini ve metin girişini kullanarak metin çıkışı oluşturma işlemleri gösterilmektedir.
İstem şablonu kullanma
Sesli içerik oluştururken isteğinizi yapılandırmak için bir istem şablonu kullanın. İstem şablonu, user veya model gibi belirli rollerden giriş belirtmenize olanak tanır ve Gemma modelleriyle çok turlu sohbet etkileşimlerini yönetmek için gerekli bir biçimdir. Aşağıdaki örnek kodda, ses verisi girişiyle Gemma için nasıl istem şablonu oluşturulacağı gösterilmektedir:
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.'}]
content listesine ek "type": "audio", girişleri ekleyerek isteminize birden fazla ses dosyası dahil edebilirsiniz.
Sonraki adımlar
Gemma modelleriyle daha fazla içerik oluşturun ve keşfedin:
- Hugging Face Transformers'ı kullanarak Gemma'yı metin görevleri için ince ayarlama
- Hugging Face Transformers'ı kullanarak Gemma'yı görme görevleri için ince ayarlama
- Gemma modellerinde dağıtılmış ince ayar ve çıkarım gerçekleştirme
- Vertex AI ile Gemma açık modellerini kullanma
- Keras'ı kullanarak Gemma'ya ince ayar yapma ve Vertex AI'da dağıtma
Google Colab'de çalıştırma
Kaynağı GitHub'da görüntüleyin