Mulai menggunakan Gemma menggunakan KerasNLP

Lihat di ai.google.dev Menjalankan di Google Colab Terbuka di Vertex AI Lihat sumber di GitHub

Tutorial ini menunjukkan cara memulai Gemma menggunakan KerasNLP. Gemma adalah kelompok model terbuka yang ringan dan canggih, yang dibuat dari penelitian dan teknologi yang sama dengan yang digunakan untuk membuat model Gemini. KerasNLP adalah kumpulan model natural language processing (NLP) yang diimplementasikan di Keras dan dapat dijalankan di JAX, PyTorch, dan TensorFlow.

Dalam tutorial ini, Anda akan menggunakan Gemma untuk membuat respons teks terhadap beberapa perintah. Jika baru menggunakan Keras, Anda mungkin ingin membaca Getting started with Keras sebelum memulai, tetapi tidak perlu. Anda akan mempelajari Keras lebih lanjut saat mempelajari tutorial ini.

Penyiapan

Penyiapan Gemma

Untuk menyelesaikan tutorial ini, Anda harus menyelesaikan petunjuk penyiapan di Penyiapan Gemma terlebih dahulu. Petunjuk penyiapan Gemma menunjukkan cara melakukan hal berikut:

  • Dapatkan akses ke Gemma di kaggle.com.
  • Pilih runtime Colab dengan resource yang memadai untuk menjalankan model Gemma 2B.
  • Membuat dan mengkonfigurasi nama pengguna dan kunci API Kaggle.

Setelah menyelesaikan penyiapan Gemma, lanjutkan ke bagian berikutnya yang berisi cara menetapkan variabel lingkungan untuk lingkungan Colab Anda.

Menetapkan variabel lingkungan

Tetapkan variabel lingkungan untuk KAGGLE_USERNAME dan 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')

Menginstal dependensi

Instal Keras dan 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

Pilih backend

Keras adalah API deep learning multi-framework tingkat tinggi yang dirancang untuk kesederhanaan dan kemudahan penggunaan. Keras 3 memungkinkan Anda memilih backend: TensorFlow, JAX, atau PyTorch. Ketiganya akan berfungsi untuk tutorial ini.

import os

os.environ["KERAS_BACKEND"] = "jax"  # Or "tensorflow" or "torch".
os.environ["XLA_PYTHON_CLIENT_MEM_FRACTION"] = "0.9"

Mengimpor paket

Mengimpor Keras dan KerasNLP.

import keras
import keras_nlp

Membuat model

KerasNLP menyediakan implementasi dari banyak arsitektur model populer. Dalam tutorial ini, Anda akan membuat model menggunakan GemmaCausalLM, model Gemma end-to-end untuk pemodelan bahasa kausal. Model bahasa kausal memprediksi token berikutnya berdasarkan token sebelumnya.

Buat model menggunakan metode 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 membuat instance model dari arsitektur dan bobot preset. Dalam kode di atas, string "gemma_2b_en" menentukan arsitektur preset: model Gemma dengan 2 miliar parameter.

Gunakan summary untuk mendapatkan info selengkapnya tentang model:

gemma_lm.summary()

Seperti yang dapat Anda lihat dari ringkasan, model ini memiliki 2,5 miliar parameter yang dapat dilatih.

Membuat teks

Sekarang saatnya membuat beberapa teks! Model ini memiliki metode generate yang menghasilkan teks berdasarkan prompt. Argumen max_length opsional menentukan panjang maksimum urutan yang dihasilkan.

Cobalah dengan perintah "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'

Coba panggil generate lagi dengan perintah lain.

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'

Jika menjalankan backend JAX atau TensorFlow, Anda akan melihat bahwa panggilan generate kedua ditampilkan hampir seketika. Ini karena setiap panggilan ke generate untuk ukuran batch tertentu dan max_length dikompilasi dengan XLA. Proses pertama mahal, tetapi proses berikutnya jauh lebih cepat.

Anda juga dapat menyediakan perintah dalam batch menggunakan daftar sebagai input:

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']

Opsional: Coba sampel lain

Anda dapat mengontrol strategi pembuatan untuk GemmaCausalLM dengan menetapkan argumen sampler di compile(). Secara default, pengambilan sampel "greedy" akan digunakan.

Sebagai eksperimen, coba tetapkan strategi "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'

Meskipun algoritma greedy {i>default<i} selalu memilih token dengan probabilitas terbesar, algoritma {i>top-K<i} secara acak memilih token berikutnya dari token probabilitas K teratas.

Anda tidak perlu menentukan sampler, dan Anda dapat mengabaikan cuplikan kode terakhir jika tidak membantu kasus penggunaan Anda. Jika Anda ingin mempelajari lebih lanjut sampel yang tersedia, lihat Sampel.

Langkah selanjutnya

Dalam tutorial ini, Anda telah mempelajari cara membuat teks menggunakan KerasNLP dan Gemma. Berikut adalah beberapa saran untuk hal-hal yang harus dipelajari selanjutnya: