با استفاده از KerasNLP با Gemma شروع کنید

مشاهده در ai.google.dev در Google Colab اجرا شود در Vertex AI باز کنید مشاهده منبع در GitHub

این آموزش به شما نشان می دهد که چگونه با استفاده از KerasNLP با Gemma شروع کنید. Gemma خانواده ای از مدل های سبک وزن و مدرن است که از همان تحقیقات و فناوری استفاده شده برای ایجاد مدل های Gemini ساخته شده است. KerasNLP مجموعه ای از مدل های پردازش زبان طبیعی (NLP) است که در Keras پیاده سازی شده و بر روی JAX، PyTorch و TensorFlow قابل اجرا است.

در این آموزش، از Gemma برای ایجاد پاسخ های متنی به چندین درخواست استفاده می کنید. اگر در Keras تازه کار هستید، ممکن است بخواهید قبل از شروع کار با Keras را بخوانید، اما مجبور نیستید. در حین کار با این آموزش بیشتر در مورد Keras خواهید آموخت.

برپایی

تنظیم جما

برای تکمیل این آموزش، ابتدا باید دستورالعمل‌های راه‌اندازی را در Gemma setup تکمیل کنید. دستورالعمل های راه اندازی Gemma به شما نشان می دهد که چگونه کارهای زیر را انجام دهید:

  • در kaggle.com به Gemma دسترسی پیدا کنید.
  • یک زمان اجرا Colab با منابع کافی برای اجرای مدل Gemma 2B انتخاب کنید.
  • نام کاربری و کلید API 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 یک API یادگیری عمیق چند چارچوبی و سطح بالا است که برای سادگی و سهولت استفاده طراحی شده است. 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("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 با 2 میلیارد پارامتر.

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'

در حالی که الگوریتم حریص پیش‌فرض همیشه نشانه‌ای را با بیشترین احتمال انتخاب می‌کند، الگوریتم top-K به‌طور تصادفی نشانه بعدی را از توکن‌های احتمال K بالا انتخاب می‌کند.

شما مجبور نیستید یک نمونه‌بردار مشخص کنید، و می‌توانید آخرین قطعه کد را نادیده بگیرید اگر برای مورد استفاده شما مفید نیست. اگر می‌خواهید درباره نمونه‌های موجود بیشتر بدانید، به نمونه‌گیرها مراجعه کنید.

بعدش چی

در این آموزش، نحوه تولید متن با استفاده از KerasNLP و Gemma را یاد گرفتید. در اینجا چند پیشنهاد برای آموختن بعدی وجود دارد: