Hướng dẫn này sẽ hướng dẫn bạn cách bắt đầu sử dụng Gemma bằng KerasNLP. Gemma là một bộ mô hình mở, hiện đại và gọn nhẹ được xây dựng từ cùng một nghiên cứu và công nghệ dùng để tạo ra các mô hình Gemini. KerasNLP là một tập hợp các mô hình xử lý ngôn ngữ tự nhiên (NLP) được triển khai trong Keras và có thể chạy trên JAX, PyTorch và TensorFlow.
Trong hướng dẫn này, bạn sẽ sử dụng Gemma để tạo câu trả lời dạng văn bản cho một số câu lệnh. Nếu mới sử dụng Keras, bạn nên đọc bài viết Bắt đầu sử dụng Keras trước khi bắt đầu, nhưng không bắt buộc. Bạn sẽ tìm hiểu thêm về Keras khi làm theo hướng dẫn này.
Thiết lập
Thiết lập Gemma
Để hoàn tất hướng dẫn này, trước tiên, bạn cần hoàn tất hướng dẫn thiết lập tại phần Thiết lập Gemma. Hướng dẫn thiết lập Gemma sẽ hướng dẫn bạn cách thực hiện những việc sau:
- Truy cập vào Gemma trên kaggle.com.
- Chọn một môi trường thời gian chạy Colab có đủ tài nguyên để chạy mô hình Gemma 2B.
- Tạo và định cấu hình tên người dùng và khoá API của Kaggle.
Sau khi hoàn tất việc thiết lập Gemma, hãy chuyển sang phần tiếp theo để thiết lập biến môi trường cho môi trường Colab.
Đặt các biến môi trường
Đặt biến môi trường cho KAGGLE_USERNAME
và 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')
Cài đặt phần phụ thuộc
Cài đặt Keras và 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"
Chọn phần phụ trợ
Keras là một API học sâu đa khung, cấp cao được thiết kế để đơn giản và dễ sử dụng. Keras 3 cho phép bạn chọn phần phụ trợ: TensorFlow, JAX hoặc PyTorch. Cả ba đều có thể dùng được cho hướng dẫn này.
import os
os.environ["KERAS_BACKEND"] = "jax" # Or "tensorflow" or "torch".
os.environ["XLA_PYTHON_CLIENT_MEM_FRACTION"] = "0.9"
Nhập gói
Nhập Keras và KerasNLP.
import keras
import keras_nlp
Tạo mô hình
KerasNLP cung cấp các phương thức triển khai nhiều cấu trúc mô hình phổ biến. Trong hướng dẫn này, bạn sẽ tạo một mô hình bằng GemmaCausalLM
, một mô hình Gemma toàn diện để lập mô hình ngôn ngữ nhân quả. Mô hình ngôn ngữ nhân quả dự đoán mã thông báo tiếp theo dựa trên các mã thông báo trước đó.
Tạo mô hình bằng phương thức from_preset
:
gemma_lm = keras_nlp.models.GemmaCausalLM.from_preset("gemma2_2b_en")
Hàm GemmaCausalLM.from_preset()
tạo bản sao của mô hình từ một cấu trúc và trọng số đặt trước. Trong mã ở trên, chuỗi "gemma2_2b_en"
chỉ định giá trị đặt trước cho mô hình Gemma 2 2B với 2 tỷ tham số. Các mô hình Gemma có tham số 7B, 9B và 27B cũng có sẵn. Bạn có thể tìm thấy các chuỗi mã cho mô hình Gemma trong trang thông tin Model Variation (Biến thể mô hình) trên Kaggle.
Sử dụng summary
để biết thêm thông tin về mô hình:
gemma_lm.summary()
Như bạn có thể thấy trong bản tóm tắt, mô hình này có 2,6 tỷ tham số có thể huấn luyện.
Tạo văn bản
Bây giờ, đã đến lúc tạo một số văn bản! Mô hình này có một phương thức generate
tạo văn bản dựa trên câu lệnh. Đối số max_length
không bắt buộc chỉ định độ dài tối đa của trình tự được tạo.
Hãy thử với câu lệnh "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'
Hãy thử gọi lại generate
bằng một câu lệnh khác.
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'
Nếu đang chạy trên phần phụ trợ JAX hoặc TensorFlow, bạn sẽ nhận thấy lệnh gọi generate
thứ hai trả về gần như ngay lập tức. Lý do là mỗi lệnh gọi đến generate
cho một kích thước lô nhất định và max_length
được biên dịch bằng XLA. Lần chạy đầu tiên tốn kém, nhưng các lần chạy tiếp theo sẽ nhanh hơn nhiều.
Bạn cũng có thể cung cấp các câu lệnh theo lô bằng cách sử dụng danh sách làm dữ liệu đầu vào:
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']
Không bắt buộc: Thử một bộ lấy mẫu khác
Bạn có thể kiểm soát chiến lược tạo cho GemmaCausalLM
bằng cách đặt đối số sampler
trên compile()
. Theo mặc định, phương thức lấy mẫu "greedy"
sẽ được sử dụng.
Để thử nghiệm, hãy thử đặt chiến lược "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.'
Mặc dù thuật toán tham lam mặc định luôn chọn mã thông báo có xác suất lớn nhất, nhưng thuật toán top-K sẽ chọn ngẫu nhiên mã thông báo tiếp theo trong số các mã thông báo có xác suất K hàng đầu.
Bạn không cần chỉ định bộ lấy mẫu và có thể bỏ qua đoạn mã cuối cùng nếu đoạn mã đó không hữu ích cho trường hợp sử dụng của bạn. Nếu bạn muốn tìm hiểu thêm về các bộ lấy mẫu hiện có, hãy xem phần Bộ lấy mẫu.
Bước tiếp theo
Trong hướng dẫn này, bạn đã tìm hiểu cách tạo văn bản bằng KerasNLP và Gemma. Sau đây là một số đề xuất về nội dung cần tìm hiểu tiếp theo:
- Tìm hiểu cách điều chỉnh mô hình Gemma.
- Tìm hiểu cách điều chỉnh và suy luận phân tán trên mô hình Gemma.
- Tìm hiểu về cách tích hợp Gemma với Vertex AI
- Tìm hiểu cách sử dụng mô hình Gemma bằng Vertex AI.