Mulai menggunakan Gemma menggunakan KerasNLP

Tutorial ini menunjukkan cara memulai Gemma menggunakan KerasNLP. Gemma adalah sekumpulan model terbuka yang ringan dan canggih, dibangun dari riset dan teknologi 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 Anda baru menggunakan Keras, sebaiknya baca Memulai Keras sebelum memulai, tetapi Anda tidak harus melakukannya. Anda akan mempelajari Keras lebih lanjut saat mengerjakan tutorial ini.

Penyiapan

Penyiapan Gemma

Untuk menyelesaikan tutorial ini, Anda harus menyelesaikan petunjuk penyiapan terlebih dahulu di Penyiapan Gemma. 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.
  • Buat dan konfigurasikan nama pengguna dan kunci API Kaggle.

Setelah menyelesaikan penyiapan Gemma, lanjutkan ke bagian berikutnya, tempat Anda akan menetapkan variabel lingkungan untuk lingkungan Colab.

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 menyeluruh 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("gemma2_2b_en")

Fungsi GemmaCausalLM.from_preset() membuat instance model dari arsitektur dan bobot preset. Dalam kode di atas, string "gemma2_2b_en" menentukan preset model Gemma 2 2B dengan 2 miliar parameter. Model Gemma dengan parameter 7 M, 9 M, dan 27 M juga tersedia. Anda dapat menemukan string kode untuk model Gemma dalam listingan Model Variation di Kaggle.

Gunakan summary untuk mendapatkan info selengkapnya tentang model:

gemma_lm.summary()

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

Membuat teks

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

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

Coba panggil generate lagi dengan perintah yang berbeda.

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'

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

Anda juga dapat memberikan perintah batch menggunakan daftar sebagai input:

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

Opsional: Mencoba sampler lain

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

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

Meskipun algoritma greedy default selalu memilih token dengan probabilitas terbesar, algoritma top-K secara acak memilih token berikutnya dari token dengan probabilitas top K.

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

Langkah berikutnya

Dalam tutorial ini, Anda telah mempelajari cara membuat teks menggunakan KerasNLP dan Gemma. Berikut beberapa saran tentang hal yang akan dipelajari selanjutnya: