يوضّح لك هذا البرنامج التعليمي كيفية بدء استخدام Gemma باستخدام KerasNLP. Gemma هي مجموعة من أحدث النماذج المتطوّرة والخفيفة المتاحة للجميع، والتي تم إنشاؤها بناءً على الأبحاث والتكنولوجيا نفسها المستخدَمة في إنشاء نماذج Gemini. KerasNLP هي مجموعة من نماذج معالجة اللغات الطبيعية (NLP) التي تم تنفيذها في Keras ويمكن تشغيلها على JAX وPyTorch وTensorFlow.
في هذا الدليل التعليمي، ستستخدم Gemma لإنشاء ردود نصية على عدة طلبات. إذا كنت حديث العهد باستخدام Keras، ننصحك بقراءة مقالة البدء باستخدام Keras قبل البدء، ولكن ليس عليك ذلك. ستتعرّف على مزيد من المعلومات عن Keras أثناء العمل على هذا الدليل التعليمي.
ضبط إعدادات الجهاز
إعداد Gemma
لإكمال هذا الدليل التعليمي، عليك أولاً إكمال تعليمات الإعداد في إعداد Gemma. توضّح لك تعليمات إعداد Gemma كيفية تنفيذ ما يلي:
- يمكنك الحصول على إذن الوصول إلى Gemma على kaggle.com.
- اختَر بيئة تشغيل Colab تتضمّن موارد كافية لتشغيل نموذج Gemma 2B.
- أنشئ اسم مستخدم ومفتاح واجهة برمجة تطبيقات في Kaggle واضبطهما.
بعد إكمال إعداد Gemma، انتقِل إلى القسم التالي الذي ستضبط فيه متغيّرات البيئة لبيئة Colab.
ضبط متغيّرات البيئة
اضبط متغيّرات البيئة لكلّ من KAGGLE_USERNAME
وKAGGLE_KEY
.
import os
from google.colab import userdata
# Note: `userdata.get` is a Colab API. If you're not using Colab, set the env
# vars as appropriate for your system.
os.environ["KAGGLE_USERNAME"] = userdata.get('KAGGLE_USERNAME')
os.environ["KAGGLE_KEY"] = userdata.get('KAGGLE_KEY')
تثبيت التبعيات
ثبِّت Keras وKerasNLP.
# Install Keras 3 last. See https://keras.io/getting_started/ for more details.
pip install -q -U keras-nlp
pip install -q -U "keras>=3"
اختيار نظام أساسي
Keras هي واجهة برمجة تطبيقات عالية المستوى متعددة الإطارات للتعلم العميق، وهي مصمّمة لتوفير البساطة وسهولة الاستخدام. تتيح لك Keras 3 اختيار الخلفية: TensorFlow أو JAX أو PyTorch. يمكن استخدام أي من هذه الطرق الثلاث في هذا الدليل التعليمي.
import os
os.environ["KERAS_BACKEND"] = "jax" # Or "tensorflow" or "torch".
os.environ["XLA_PYTHON_CLIENT_MEM_FRACTION"] = "0.9"
استيراد الحِزم
استورِد Keras وKerasNLP.
import keras
import keras_nlp
إنشاء نموذج
توفّر KerasNLP عمليات تنفيذ للعديد من هياكل النماذج الشائعة. في هذا البرنامج التعليمي، ستنشئ نموذجًا باستخدام GemmaCausalLM
، وهو نموذج Gemma شامل لإنشاء النماذج اللغوية السببية. يتوقّع نموذج اللغة السببية الرمز المميّز التالي استنادًا إلى الرموز المميّزة السابقة.
أنشئ النموذج باستخدام طريقة from_preset
:
gemma_lm = keras_nlp.models.GemmaCausalLM.from_preset("gemma2_2b_en")
تنشئ الدالة GemmaCausalLM.from_preset()
مثيلًا للنموذج من بنية وقيم مُعدّة مسبقًا. في الرمز أعلاه، تحدّد السلسلة "gemma2_2b_en"
الإعداد المُسبَق لنموذج Gemma 2 2B الذي يتضمّن مليارَي مَعلمة. تتوفّر أيضًا نماذج Gemma التي تستخدم المَعلمات 7B و9B و27B. يمكنك العثور على سلاسل الرموز لنماذج Gemma في بيانات متغيرات النماذج على Kaggle.
استخدِم summary
للحصول على مزيد من المعلومات عن النموذج:
gemma_lm.summary()
كما هو موضّح في الملخّص، يتضمّن النموذج 2.6 مليار مَعلمة قابلة للتدريب.
إنشاء نص
حان الآن وقت إنشاء بعض النصوص. يحتوي النموذج على طريقة generate
لإنشاء نص استنادًا إلى طلب. تحدِّد الوسيطة الاختيارية max_length
الحد الأقصى لطول التسلسل الذي تم إنشاؤه.
جرِّب ذلك باستخدام الطلب "what is keras in 3 bullet points?"
.
gemma_lm.generate("what is keras in 3 bullet points?", max_length=64)
'what is keras in 3 bullet points?\n\n[Answer 1]\n\nKeras is a high-level neural networks API, written in Python and capable of running on top of TensorFlow, CNTK, Theano, or PlaidML. It is designed to be user-friendly and easy to extend.\n\n'
يُرجى محاولة الاتصال برقم generate
مرة أخرى باستخدام طلب مختلف.
gemma_lm.generate("The universe is", max_length=64)
'The universe is a vast and mysterious place, filled with countless stars, planets, and galaxies. But what if there was a way to see the universe in a whole new way? What if we could see the universe as it was when it was first created? What if we could see the universe as it is now'
إذا كنت تستخدم الخلفيات في JAX أو TensorFlow، ستلاحظ أنّ طلب generate
الثاني يعود بشكلٍ فوري تقريبًا. ويرجع ذلك إلى أنّ كلّ طلب يتم توجيهه إلى generate
لحجم دفعة معيّن وmax_length
يتم تجميعه باستخدام XLA. إنّ عملية التنفيذ الأولى مكلفة، ولكنّ عمليات التنفيذ اللاحقة تكون أسرع بكثير.
يمكنك أيضًا تقديم طلبات مجمّعة باستخدام قائمة كمدخل:
gemma_lm.generate(
["what is keras in 3 bullet points?",
"The universe is"],
max_length=64)
['what is keras in 3 bullet points?\n\n[Answer 1]\n\nKeras is a high-level neural networks API, written in Python and capable of running on top of TensorFlow, CNTK, Theano, or PlaidML. It is designed to be user-friendly and easy to extend.\n\n', 'The universe is a vast and mysterious place, filled with countless stars, planets, and galaxies. But what if there was a way to see the universe in a whole new way? What if we could see the universe as it was when it was first created? What if we could see the universe as it is now']
اختياري: جرِّب أداة تحليل مختلفة.
يمكنك التحكّم في استراتيجية إنشاء GemmaCausalLM
من خلال ضبط الوسيطة sampler
على compile()
. سيتم تلقائيًا استخدام تحليل "greedy"
.
كتجربة، جرِّب ضبط استراتيجية "top_k"
:
gemma_lm.compile(sampler="top_k")
gemma_lm.generate("The universe is", max_length=64)
'The universe is a big place, and there are so many things we do not know or understand about it.\n\nBut we can learn a lot about our world by studying what is known to us.\n\nFor example, if you look at the moon, it has many features that can be seen from the surface.'
في حين أنّ الخوارزمية الجشعة التلقائية تختار دائمًا الرمز الذي يمثّل أكبر احتمالية، تختار خوارزمية "أهم K رمز" الرمز التالي عشوائيًا من الرموز التي تمثّل أهم K احتمالية.
لست بحاجة إلى تحديد عيّنة، ويمكنك تجاهل مقتطف الرمز البرمجي الأخير إذا لم يكن مفيدًا لحالة الاستخدام. للمزيد من المعلومات عن أدوات أخذ العينات المتاحة، اطّلِع على مقالة أدوات أخذ العينات.
الخطوات التالية
في هذا الدليل التعليمي، تعرّفت على كيفية إنشاء نص باستخدام KerasNLP وGemma. إليك بعض الاقتراحات حول المواضيع التي يمكنك الاطّلاع عليها بعد ذلك:
- تعرَّف على كيفية تحسين نموذج Gemma.
- تعرَّف على كيفية إجراء التحسين الموزّع والاستنتاج على نموذج Gemma.
- مزيد من المعلومات عن دمج Gemma مع Vertex AI
- تعرَّف على كيفية استخدام نماذج Gemma مع Vertex AI.