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:
- Pelajari cara menyetel model Gemma.
- Pelajari cara melakukan penyesuaian dan inferensi terdistribusi pada model Gemma.
- Pelajari integrasi Gemma dengan Vertex AI
- Pelajari cara menggunakan model Gemma dengan Vertex AI.