Xem trên ai.google.dev | Chạy trong Google Colab | Mở trong Vertex AI | Xem nguồn trên GitHub |
Hướng dẫn này chỉ cho bạn cách bắt đầu sử dụng Gemma bằng KerasNLP. Gemma là một dòng mô hình mở gọn nhẹ và hiện đại, được xây dựng từ chính 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 bằng Keras và có thể chạy được 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 bằng văn bản cho một số câu lệnh. Nếu mới sử dụng Keras, bạn có thể muốn đọc Bắt đầu với Keras trước khi bắt đầu, nhưng bạn không phải làm vậy. Bạn sẽ tìm hiểu thêm về Keras trong quá trình thực hiện 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 phải 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ẽ chỉ cho bạn cách làm 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 Kaggle và khoá API.
Sau khi hoàn tất quy trình thiết lập Gemma, hãy chuyển sang phần tiếp theo. Tại đây, bạn sẽ đặt các biến môi trường cho môi trường Colab của mình.
Đặt các biến môi trường
Thiết lập các 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 một 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. Với Keras 3, bạn có thể chọn phần phụ trợ: TensorFlow, JAX hoặc PyTorch. Cả ba cách đó đều sẽ áp dụng 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ách triển khai nhiều kiến 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
. Đây là 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("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
tạo thực thể cho mô hình từ một cấu trúc và trọng số đặt trước. Trong mã trên, chuỗi "gemma_2b_en"
chỉ định cấu trúc đặt trước: một mô hình Gemma có 2 tỷ tham số.
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 phần tóm tắt, mô hình có 2,5 tỷ tham số có thể huấn luyện.
Tạo văn bản
Giờ là lúc tạo một số văn bản! Mô hình này có 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ự đã tạo.
Hãy dùng thử với lời nhắc "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'
Hãy thử gọi lại cho generate
bằng một lời nhắc khác.
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'
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. Điều này là do mỗi lệnh gọi đến generate
cho một kích thước lô cụ thể 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 thì nhanh hơn nhiều.
Bạn cũng có thể đưa ra lời nhắc theo lô bằng cách dùng một danh sách làm dữ liệu đầu vào:
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']
Không bắt buộc: Thử dùng 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, hệ thống sẽ sử dụng phương pháp lấy mẫu "greedy"
.
Bạn có thể thử đặt một chiến lược "top_k"
như sau để thử nghiệm:
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'
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 thuộc nhóm đỉnh K sẽ chọn ngẫu nhiên mã thông báo tiếp theo từ các mã có xác suất K cao nhất.
Bạn không cần phải chỉ định trình lấy mẫu và có thể bỏ qua đoạn mã cuối cùng nếu đoạn mã này 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 trình lấy mẫu có sẵn, hãy xem phần Trình 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 vài đề xuất về những điều cần tìm hiểu tiếp theo:
- Tìm hiểu cách tinh chỉnh mô hình Gemma.
- Tìm hiểu cách thực hiện tinh chỉnh phân phối và dự đoán trên mô hình Gemma.
- Tìm hiểu về tính năng tích hợp Gemma với Vertex AI
- Tìm hiểu cách sử dụng mô hình Gemma với Vertex AI.