العرض على ai.google.dev | التشغيل في Google Colab | الفتح في Vertex AI | الاطّلاع على المصدر على GitHub |
نظرة عامة
"جيما" هي عائلة من النماذج اللغوية الكبيرة والبسيطة والمتطوّرة، استنادًا إلى أبحاث وتكنولوجيا Google DeepMind Gemini. يوضح هذا البرنامج التعليمي كيفية إجراء نموذج عينة أو استنتاج أساسي باستخدام نموذج Gemma 2B Instructer باستخدام مكتبة gemma
في Google DeepMind التي تمت كتابتها باستخدام JAX (مكتبة حوسبة رقمية عالية الأداء)، وFlax (مكتبة الشبكة العصبونية المستندة إلى JAX)، وOrbax (مكتبة تستند إلى JAX للتدريب/أداة للرمز المميّز/TokenPaX، SentencePiece على الرغم من عدم استخدام الكتان مباشرة في هذا الدفتر، إلا أنه تم استخدام فلاكس لإنشاء جيما.
يمكن تشغيل هذا الكمبيوتر الدفتري باستخدام Google Colab مع وحدة معالجة الرسومات T4 المجانية (انتقِل إلى تعديل > إعدادات دفاتر الملاحظات > ضِمن مسرِّع الأجهزة، اختَر وحدة معالجة رسومات T4).
ضبط إعدادات الجهاز
1- إعداد وصول جيما إلى Kaggle
لإكمال هذا البرنامج التعليمي، يجب أولاً اتّباع تعليمات الإعداد الواردة في إعداد Gemma، والتي تعرض لك كيفية إجراء ما يلي:
- يمكنك الوصول إلى Gemma على kaggle.com.
- اختَر وقت تشغيل Colab الذي يحتوي على موارد كافية لتشغيل نموذج Gemma.
- إنشاء اسم مستخدم ومفتاح واجهة برمجة تطبيقات في Kaggle وإعدادهما.
بعد الانتهاء من إعداد Gemma، انتقِل إلى القسم التالي، حيث يمكنك ضبط متغيرات البيئة لبيئة Colab.
2. ضبط متغيرات البيئة
اضبط متغيّرات البيئة للسمة 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')
3- تثبيت مكتبة "gemma
"
يركز دفتر الملاحظات هذا على استخدام وحدة معالجة رسومات مجانية Colab. لتفعيل ميزة "تسريع الأجهزة"، انقر على تعديل > إعدادات دفتر الملاحظات > اختَر وحدة معالجة الرسومات T4 > حفظ.
بعد ذلك، عليك تثبيت مكتبة Google DeepMind gemma
من github.com/google-deepmind/gemma
. إذا ظهرت لك رسالة خطأ بشأن "برنامج تعيين التبعية لـ pip"، يمكنك عادةً تجاهله.
pip install -q git+https://github.com/google-deepmind/gemma.git
تحميل نموذج جيما وإعداده
- حمِّل نموذج Gemma باستخدام
kagglehub.model_download
، والذي يأخذ ثلاث وسيطات:
handle
: اسم معرِّف النموذج من Kagglepath
: (سلسلة اختيارية) المسار المحليforce_download
: (قيمة منطقية اختيارية) تفرض إعادة تنزيل النموذج
GEMMA_VARIANT = '2b-it' # @param ['2b', '2b-it'] {type:"string"}
import kagglehub
GEMMA_PATH = kagglehub.model_download(f'google/gemma/flax/{GEMMA_VARIANT}')
Downloading from https://www.kaggle.com/api/v1/models/google/gemma/flax/2b-it/2/download... 100%|██████████| 3.67G/3.67G [00:35<00:00, 110MB/s] Extracting model files...
print('GEMMA_PATH:', GEMMA_PATH)
GEMMA_PATH: /root/.cache/kagglehub/models/google/gemma/flax/2b-it/2
- تحقَّق من موقع قيم ترجيح النموذج وأداة إنشاء الرموز المميّزة، ثم حدِّد متغيرات المسار. سيكون دليل أداة إنشاء الرموز المميّزة في الدليل الرئيسي الذي نزّلت فيه النموذج، بينما ستكون قيم الترجيح للنموذج في دليل فرعي. مثال:
- سيكون ملف
tokenizer.model
باللغة/LOCAL/PATH/TO/gemma/flax/2b-it/2
). - ستكون النقطة المرجعية للنموذج في
/LOCAL/PATH/TO/gemma/flax/2b-it/2/2b-it
).
CKPT_PATH = os.path.join(GEMMA_PATH, GEMMA_VARIANT)
TOKENIZER_PATH = os.path.join(GEMMA_PATH, 'tokenizer.model')
print('CKPT_PATH:', CKPT_PATH)
print('TOKENIZER_PATH:', TOKENIZER_PATH)
CKPT_PATH: /root/.cache/kagglehub/models/google/gemma/flax/2b-it/2/2b-it TOKENIZER_PATH: /root/.cache/kagglehub/models/google/gemma/flax/2b-it/2/tokenizer.model
تنفيذ أخذ العينات/الاستنتاج
- يمكنك تحميل نقطة اختيار نموذج Gemma وتنسيقها باستخدام الطريقة
gemma.params.load_and_format_params
:
from gemma import params as params_lib
params = params_lib.load_and_format_params(CKPT_PATH)
- تحميل أداة إنشاء الرموز المميّزة لـ Gemma التي تم إنشاؤها باستخدام
sentencepiece.SentencePieceProcessor
:
import sentencepiece as spm
vocab = spm.SentencePieceProcessor()
vocab.Load(TOKENIZER_PATH)
True
- لتحميل الإعدادات الصحيحة تلقائيًا من نقطة مراجعة نموذج Gemma، استخدِم
gemma.transformer.TransformerConfig
. الوسيطةcache_size
هي عدد الخطوات الزمنية في ذاكرة التخزين المؤقتTransformer
لـ Gemma. بعد ذلك، يمكنك إنشاء مثيل لنموذج Gemma على أنّهtransformer
باستخدامgemma.transformer.Transformer
(الذي يتم اكتسابه منflax.linen.Module
).
from gemma import transformer as transformer_lib
transformer_config = transformer_lib.TransformerConfig.from_params(
params=params,
cache_size=1024
)
transformer = transformer_lib.Transformer(transformer_config)
- أنشِئ
sampler
باستخدامgemma.sampler.Sampler
أعلى نقطة تفتيش/أوزان نموذج Gemma وأداة إنشاء الرمز المميّز:
from gemma import sampler as sampler_lib
sampler = sampler_lib.Sampler(
transformer=transformer,
vocab=vocab,
params=params['transformer'],
)
- كتابة طلب باللغة
input_batch
وإجراء استنتاج يمكنك تعديلtotal_generation_steps
(عدد الخطوات التي يتم إجراؤها عند إنشاء استجابة — يستخدم هذا المثال100
للاحتفاظ بذاكرة المضيف).
prompt = [
"\n# What is the meaning of life?",
]
reply = sampler(input_strings=prompt,
total_generation_steps=100,
)
for input_string, out_string in zip(prompt, reply.text):
print(f"Prompt:\n{input_string}\nOutput:\n{out_string}")
Prompt: # What is the meaning of life? Output: The question of what the meaning of life is one that has occupied the minds of philosophers, theologians, and individuals for centuries. There is no single, universally accepted answer, but there are many different perspectives on this complex and multifaceted question. **Some common perspectives on the meaning of life include:** * **Biological perspective:** From a biological standpoint, the meaning of life is to survive and reproduce. * **Existential perspective:** Existentialists believe that life is not inherently meaningful and that
- (اختياري) قم بتشغيل هذه الخلية لتحرير الذاكرة إذا كنت قد أكملت دفتر الملاحظات وتريد تجربة مطالبة أخرى. بعد ذلك، يمكنك إنشاء مثيل لعلامة
sampler
مرّة أخرى في الخطوة 3 وتخصيص الطلب وتشغيله في الخطوة 4.
del sampler
مزيد من المعلومات
- يمكنك الاطّلاع على مزيد من المعلومات حول مكتبة
gemma
في Google DeepMind على GitHub، والتي تحتوي على سلاسل مستندات من الوحدات التي استخدمتها في هذا البرنامج التعليمي، مثلgemma.params
وgemma.transformer
وgemma.sampler
. - لدى المكتبات التالية مواقع إلكترونية خاصة بالتوثيق: core JAX وFlax وOrbax.
- للاطّلاع على مستندات أداة إنشاء الرموز المميّزة أو أداة إزالة الرموز المميّزة لـ
sentencepiece
، يُرجى الاطّلاع على مستودع GitHub فيsentencepiece
من Google. - للحصول على مستندات
kagglehub
، اطّلِع علىREADME.md
على مستودع GitHub فيkagglehub
من Kaggle. - تعرَّف على كيفية استخدام نماذج Gemma مع Google Cloud Vertex AI.