البدء مع "جيما" باستخدام KerasNLP

العرض على ai.google.dev التشغيل في Google Colab الفتح في Vertex AI الاطّلاع على المصدر على GitHub

يوضّح لك هذا البرنامج التعليمي كيفية البدء مع "جيما" باستخدام KerasNLP. جيما هي عائلة من النماذج الخفيفة والحديثة المفتوحة التي تم بناؤها من نفس الأبحاث والتكنولوجيا المستخدمة لإنشاء نماذج 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، وهو نموذج شامل لـ "جيما" للنمذجة اللغوية السببية. يتنبأ النموذج اللغوي السببي بالرمز المميز التالي بناءً على الرموز المميزة السابقة.

إنشاء النموذج باستخدام طريقة from_preset:

gemma_lm = keras_nlp.models.GemmaCausalLM.from_preset("gemma_2b_en")
Attaching 'config.json' from model 'keras/gemma/keras/gemma_2b_en/1' to your Colab notebook...
Attaching 'config.json' from model 'keras/gemma/keras/gemma_2b_en/1' to your Colab notebook...
Attaching 'model.weights.h5' from model 'keras/gemma/keras/gemma_2b_en/1' to your Colab notebook...
Attaching 'tokenizer.json' from model 'keras/gemma/keras/gemma_2b_en/1' to your Colab notebook...
Attaching 'assets/tokenizer/vocabulary.spm' from model 'keras/gemma/keras/gemma_2b_en/1' to your Colab notebook...

تُنشئ from_preset مثيلاً للنموذج من بنية وأوزان تم إعدادها مسبقًا. في الرمز أعلاه، تحدِّد السلسلة "gemma_2b_en" البنية المُعدّة مسبقًا: نموذج Gemma مع مليارَي مَعلمة.

يمكنك استخدام "summary" للحصول على مزيد من المعلومات عن النموذج:

gemma_lm.summary()

وكما ترى من الملخّص، يحتوي النموذج على 2.5 مليار مَعلمة قابلة للتدريب.

إنشاء نص

حان الوقت الآن لإنشاء بعض النص! يحتوي النموذج على طريقة generate تنشئ نصًا استنادًا إلى طلب. تُحدِّد الوسيطة max_length الاختيارية الحد الأقصى لطول التسلسل الذي تم إنشاؤه.

جرِّب الميزة مع ظهور الطلب "What is the meaning of life?".

gemma_lm.generate("What is the meaning of life?", max_length=64)
'What is the meaning of life?\n\nThe question is one of the most important questions in the world.\n\nIt’s the question that has been asked by philosophers, theologians, and scientists for centuries.\n\nAnd it’s the question that has been asked by people who are looking for answers to their own lives'

يُرجى محاولة الاتصال بـ "generate" مجددًا من خلال طلب مختلف.

gemma_lm.generate("How does the brain work?", max_length=64)
'How does the brain work?\n\nThe brain is the most complex organ in the human body. It is responsible for controlling all of the body’s functions, including breathing, heart rate, digestion, and more. The brain is also responsible for thinking, feeling, and making decisions.\n\nThe brain is made up'

إذا كنت تستخدم الخلفيات الخلفية JAX أو TensorFlow، ستلاحظ أنّ طلب generate الثاني يتم عرضه على الفور تقريبًا. ويرجع ذلك إلى أنّ كل استدعاء إلى generate لحجم مجموعة معيّن وmax_length يتم تجميعه مع XLA. تكون عملية التشغيل الأولى باهظة الثمن، لكنّ عمليات التشغيل اللاحقة تكون أسرع بكثير.

يمكنك أيضًا تقديم طلبات مُجمَّعة باستخدام قائمة كإدخال، وذلك باتّباع الخطوات التالية:

gemma_lm.generate(
    ["What is the meaning of life?",
     "How does the brain work?"],
    max_length=64)
['What is the meaning of life?\n\nThe question is one of the most important questions in the world.\n\nIt’s the question that has been asked by philosophers, theologians, and scientists for centuries.\n\nAnd it’s the question that has been asked by people who are looking for answers to their own lives',
 'How does the brain work?\n\nThe brain is the most complex organ in the human body. It is responsible for controlling all of the body’s functions, including breathing, heart rate, digestion, and more. The brain is also responsible for thinking, feeling, and making decisions.\n\nThe brain is made up']

اختياري: تجربة عيّنة مختلفة

يمكنك التحكم في استراتيجية الإنشاء لـ GemmaCausalLM عن طريق ضبط الوسيطة sampler على compile(). بشكل تلقائي، سيتم استخدام أخذ العينات من "greedy".

على سبيل التجربة، حاوِل إعداد استراتيجية "top_k":

gemma_lm.compile(sampler="top_k")
gemma_lm.generate("What is the meaning of life?", max_length=64)
'What is the meaning of life? That was a question I asked myself as I was driving home from work one night in 2012. I was driving through the city of San Bernardino, and all I could think was, “What the heck am I doing?”\n\nMy life was completely different. I'

في حين أن الخوارزمية الجمعة التلقائية تختار دائمًا الرمز المميّز ذي الاحتمال الأكبر، تختار خوارزمية الجار الأعلى بشكل عشوائي الرمز المميّز التالي من الرموز المميزة لاحتمالية التصنيف الأعلى.

ليس عليك تحديد عيّنة، ويمكنك تجاهل مقتطف الرمز الأخير إذا لم يكن مفيدًا لحالة الاستخدام الخاصة بك. إذا أردت الحصول على مزيد من المعلومات عن العينات المتوفرة، يُرجى مراجعة عيّنات.

الخطوات التالية

تعلمت في هذا البرنامج التعليمي كيفية إنشاء نص باستخدام KerasNLP وGemma. فيما يلي بعض الاقتراحات لما يجب تعلمه بعد ذلك: