Mulai menggunakan Gemma menggunakan KerasNLP

Lihat di ai.google.dev Berjalan di Google Colab Buka di Vertex AI Lihat sumber di GitHub

Tutorial ini menunjukkan cara mulai menggunakan Gemma menggunakan KerasNLP. Gemma adalah sekumpulan model terbuka yang ringan dan canggih, dibangun dari riset dan teknologi yang sama dengan yang digunakan untuk membuat model Gemini. KerasNLP adalah kumpulan model natural language processing (NLP) yang diimplementasikan dalam Keras serta dapat dijalankan di JAX, PyTorch, dan TensorFlow.

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

Penyiapan

Penyiapan Gemma

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

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

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

Menetapkan variabel lingkungan

Menetapkan 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

Impor 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 bobot dan arsitektur preset. Dalam kode di atas, string "gemma2_2b_en" menentukan preset model Gemma 2 2B dengan 2 miliar parameter. Model Gemma dengan parameter 7B, 9B, dan 27B juga tersedia. Anda dapat menemukan string kode untuk model Gemma dalam listingan Variasi Model di Kaggle.

Gunakan summary untuk mendapatkan info selengkapnya tentang model ini:

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 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 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 lain.

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 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. Proses pertama berbiaya mahal, tetapi operasi berikutnya jauh lebih cepat.

Anda juga dapat menyediakan 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: 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("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 mengambil token dengan probabilitas terbesar, algoritma top-K secara acak mengambil token berikutnya dari token 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 adalah beberapa saran tentang hal-hal yang perlu dipelajari selanjutnya: