يوضّح لك هذا الدليل كيفية تشغيل Gemma باستخدام إطار عمل PyTorch، بما في ذلك كيفية استخدام بيانات الصور لعرض نماذج الإصدار 3 من Gemma والإصدارات الأحدث. لمزيد من التفاصيل حول تنفيذ Gemma PyTorch، يُرجى الاطّلاع على مستودع المشروع README.
ضبط إعدادات الجهاز
توضِّح الأقسام التالية كيفية إعداد بيئة التطوير، بما في ذلك كيفية الوصول إلى نماذج Gemma لتنزيلها من Kaggle، وضبط متغيّرات المصادقة، وتثبيت الملحقات، واستيراد الحِزم.
متطلبات النظام
تتطلّب مكتبة Gemma Pytorch هذه معالجات وحدة معالجة الرسومات أو TPU لتشغيل نموذج Gemma. إنّ بيئة التشغيل العادية لـ Python على وحدة المعالجة المركزية في Colab وبيئة التشغيل العادية لـ Python على وحدة معالجة الرسومات T4 كافية لتشغيل نماذج Gemma بحجم 1B و2B و4B. بالنسبة إلى حالات الاستخدام المتقدّمة لوحدات معالجة الرسومات أو وحدات معالجة النطاق الفائق الأخرى، يُرجى الرجوع إلى README في مستودع Gemma PyTorch.
الحصول على إذن الوصول إلى Gemma على Kaggle
لإكمال هذا الدليل التعليمي، عليك أولاً اتّباع تعليمات الإعداد في إعداد Gemma، والتي توضّح لك كيفية تنفيذ ما يلي:
- يمكنك الوصول إلى Gemma على kaggle.com.
- اختَر وقت تشغيل Colab يتضمّن موارد كافية لتشغيل نموذج Gemma.
- أنشئ اسم مستخدم ومفتاح واجهة برمجة تطبيقات في Kaggle واضبطهما.
بعد إكمال إعداد Gemma، انتقِل إلى القسم التالي الذي ستضبط فيه متغيّرات البيئة لبيئة Colab.
ضبط متغيّرات البيئة
اضبط متغيّرات البيئة لكلّ من KAGGLE_USERNAME
وKAGGLE_KEY
. عندما تظهر لك رسائل "هل المطلوب منح الإذن بالوصول؟"، وافِق على منح إذن الوصول إلى المفتاح السري.
import os
from google.colab import userdata # `userdata` is a Colab API.
os.environ["KAGGLE_USERNAME"] = userdata.get('KAGGLE_USERNAME')
os.environ["KAGGLE_KEY"] = userdata.get('KAGGLE_KEY')
تثبيت التبعيات
pip install -q -U torch immutabledict sentencepiece
تنزيل قيم النموذج
# Choose variant and machine type
VARIANT = '4b-it'
MACHINE_TYPE = 'cuda'
CONFIG = VARIANT[:2]
if CONFIG == '4b':
CONFIG = '4b-v1'
import kagglehub
# Load model weights
weights_dir = kagglehub.model_download(f'google/gemma-3/pyTorch/gemma-3-{VARIANT}')
اضبط مسارات أداة تقسيم النصوص ونقاط التحقق للنموذج.
# Ensure that the tokenizer is present
tokenizer_path = os.path.join(weights_dir, 'tokenizer.model')
assert os.path.isfile(tokenizer_path), 'Tokenizer not found!'
# Ensure that the checkpoint is present
ckpt_path = os.path.join(weights_dir, f'model.ckpt')
assert os.path.isfile(ckpt_path), 'PyTorch checkpoint not found!'
ضبط بيئة التشغيل
توضّح الأقسام التالية كيفية إعداد بيئة PyTorch لتشغيل Gemma.
إعداد بيئة تشغيل PyTorch
حضِّر بيئة تنفيذ نموذج PyTorch من خلال استنساخ مستودع Gemma Pytorch.
git clone https://github.com/google/gemma_pytorch.git
Cloning into 'gemma_pytorch'... remote: Enumerating objects: 239, done. remote: Counting objects: 100% (123/123), done. remote: Compressing objects: 100% (68/68), done. remote: Total 239 (delta 86), reused 58 (delta 55), pack-reused 116 Receiving objects: 100% (239/239), 2.18 MiB | 20.83 MiB/s, done. Resolving deltas: 100% (135/135), done.
import sys
sys.path.append('gemma_pytorch/gemma')
from gemma_pytorch.gemma.config import get_model_config
from gemma_pytorch.gemma.gemma3_model import Gemma3ForMultimodalLM
import os
import torch
ضبط إعدادات النموذج
قبل تشغيل النموذج، عليك ضبط بعض مَعلمات الضبط، بما في ذلك الصيغة Gemma وبرنامج تقسيم الجمل ومستوى التقريب.
# Set up model config.
model_config = get_model_config(VARIANT)
model_config.dtype = "float32" if MACHINE_TYPE == "cpu" else "float16"
model_config.tokenizer = tokenizer_path
ضبط سياق الجهاز
تضبط التعليمة البرمجية التالية سياق الجهاز لتشغيل النموذج:
@contextlib.contextmanager
def _set_default_tensor_type(dtype: torch.dtype):
"""Sets the default torch dtype to the given dtype."""
torch.set_default_dtype(dtype)
yield
torch.set_default_dtype(torch.float)
إنشاء مثيل للنموذج وتحميله
حمِّل النموذج بقيم معاملاته للاستعداد لتشغيل الطلبات.
device = torch.device(MACHINE_TYPE)
with _set_default_tensor_type(model_config.get_dtype()):
model = Gemma3ForMultimodalLM(model_config)
model.load_state_dict(torch.load(ckpt_path)['model_state_dict'])
model = model.to(device).eval()
print("Model loading done.")
print('Generating requests in chat mode...')
تنفيذ الاستنتاج
في ما يلي أمثلة على إنشاء التقارير في وضع المحادثة وإنشاء التقارير باستخدام عدة طلبات.
تم تدريب نماذج Gemma المحسَّنة بالتعليمات باستخدام أداة تنسيق معيّنة تُضيف تعليقات توضيحية على أمثلة ضبط التعليمات باستخدام معلومات إضافية، سواء أثناء الخطوات المتعلّقة بالتدريب أو الاستنتاج. تشير التعليقات التوضيحية (1) إلى الأدوار في المحادثة، و (2) إلى الأدوار في المحادثة.
رموز التعليقات التوضيحية ذات الصلة هي:
user
: دور المستخدمmodel
: تغيير الطراز<start_of_turn>
: بداية دور الحوار<start_of_image>
: علامة لإدخال بيانات الصورة<end_of_turn><eos>
: نهاية دور الحوار
لمزيد من المعلومات، يمكنك الاطّلاع على تنسيق الطلبات لنماذج Gemma التي تم ضبطها وفقًا للتعليمات [هنا](https://ai.google.dev/gemma/core/prompt-structure
إنشاء نص باستخدام نص
في ما يلي مقتطف رمز برمجي يوضّح كيفية تنسيق طلب لنموذج Gemma المحسَّن بالتعليمات باستخدام نماذج محادثات المستخدم والنموذج في محادثة متعددة الأدوار.
# Chat templates
USER_CHAT_TEMPLATE = "<start_of_turn>user\n{prompt}<end_of_turn><eos>\n"
MODEL_CHAT_TEMPLATE = "<start_of_turn>model\n{prompt}<end_of_turn><eos>\n"
# Sample formatted prompt
prompt = (
USER_CHAT_TEMPLATE.format(
prompt='What is a good place for travel in the US?'
)
+ MODEL_CHAT_TEMPLATE.format(prompt='California.')
+ USER_CHAT_TEMPLATE.format(prompt='What can I do in California?')
+ '<start_of_turn>model\n'
)
print('Chat prompt:\n', prompt)
model.generate(
USER_CHAT_TEMPLATE.format(prompt=prompt),
device=device,
output_len=256,
)
Chat prompt: <start_of_turn>user What is a good place for travel in the US?<end_of_turn><eos> <start_of_turn>model California.<end_of_turn><eos> <start_of_turn>user What can I do in California?<end_of_turn><eos> <start_of_turn>model "California is a state brimming with diverse activities! To give you a great list, tell me: \n\n* **What kind of trip are you looking for?** Nature, City life, Beach, Theme Parks, Food, History, something else? \n* **What are you interested in (e.g., hiking, museums, art, nightlife, shopping)?** \n* **What's your budget like?** \n* **Who are you traveling with?** (family, friends, solo) \n\nThe more you tell me, the better recommendations I can give! 😊 \n<end_of_turn>"
# Generate sample
model.generate(
'Write a poem about an llm writing a poem.',
device=device,
output_len=100,
)
"\n\nA swirling cloud of data, raw and bold,\nIt hums and whispers, a story untold.\nAn LLM whispers, code into refrain,\nCrafting words of rhyme, a lyrical strain.\n\nA world of pixels, logic's vibrant hue,\nFlows through its veins, forever anew.\nThe human touch it seeks, a gentle hand,\nTo mold and shape, understand.\n\nEmotions it might learn, from snippets of prose,\nInspiration it seeks, a yearning"
إنشاء نص باستخدام الصور
في الإصدار 3 من Gemma والإصدارات الأحدث، يمكنك استخدام الصور مع طلبك. يوضّح لك المثال التالي كيفية تضمين بيانات مرئية مع طلبك.
print('Chat with images...\n')
def read_image(url):
import io
import requests
import PIL
contents = io.BytesIO(requests.get(url).content)
return PIL.Image.open(contents)
image_url = 'https://storage.googleapis.com/keras-cv/models/paligemma/cow_beach_1.png'
image = read_image(image_url)
print(model.generate(
[['<start_of_turn>user\n',image, 'What animal is in this image?<end_of_turn>\n', '<start_of_turn>model\n']],
device=device,
output_len=OUTPUT_LEN,
))
مزيد من المعلومات
بعد أن تعرّفت على كيفية استخدام Gemma في Pytorch، يمكنك استكشاف العديد من الإجراءات الأخرى التي يمكن أن تتّخذها Gemma في ai.google.dev/gemma. يمكنك أيضًا الاطّلاع على المراجع الأخرى ذات الصلة التالية: