|
|
Chạy trong Google Colab
|
|
|
Xem nguồn trên GitHub
|
Gemma là một nhóm các mô hình nguồn mở hiện đại, gọn nhẹ được xây dựng dựa trên cùng một công nghệ và nghiên cứu dùng để tạo mô hình Gemini. Gemma 4 được thiết kế để trở thành nhóm mô hình nguồn mở hiệu quả nhất thế giới.
Tài liệu này cung cấp hướng dẫn về cách thực hiện suy luận văn bản cơ bản với Gemma 4 bằng thư viện transformers của Hugging Face. Tài liệu này trình bày cách thiết lập môi trường, tải mô hình và các tình huống tạo văn bản khác nhau, bao gồm cả lời nhắc một lượt, cuộc trò chuyện nhiều lượt có cấu trúc và cách áp dụng hướng dẫn của hệ thống.
Sổ tay này sẽ chạy trên GPU T4.
Cài đặt gói Python
Cài đặt các thư viện Hugging Face cần thiết để chạy mô hình Gemma và đưa ra yêu cầu.
# Install PyTorch & other librariespip install torch accelerate# Install the transformers librarypip install transformers
Dialog là một thư viện để thao tác và hiển thị các cuộc trò chuyện.
pip install dialogTải mô hình
Sử dụng thư viện transformers để tải quy trình
MODEL_ID = "google/gemma-4-E2B-it" # @param ["google/gemma-4-E2B-it","google/gemma-4-E4B-it", "google/gemma-4-31B-it", "google/gemma-4-26B-A4B-it"]
from transformers import pipeline
txt_pipe = pipeline(
task="text-generation",
model=MODEL_ID,
device_map="auto",
dtype="auto"
)
Loading weights: 0%| | 0/2011 [00:00<?, ?it/s]
Chạy tính năng tạo văn bản
Sau khi tải và định cấu hình mô hình Gemma trong đối tượng pipeline, bạn có thể gửi lời nhắc đến mô hình. Đoạn mã ví dụ sau đây cho thấy một yêu cầu cơ bản bằng cách sử dụng tham số text_inputs:
output = txt_pipe(text_inputs="<|turn>user\nRoses are..<turn|>\n<|turn>model\n")
print(output[0]['generated_text'])
Both `max_new_tokens` (=256) and `max_length`(=20) seem to have been set. `max_new_tokens` will take precedence. Please refer to the documentation for more information. (https://huggingface.co/docs/transformers/main/en/main_classes/text_generation) <|turn>user Roses are..<turn|> <|turn>model Here are a few ways to complete the phrase "Roses are...": **Classic/Poetic:** * **Roses are red.** (The most famous completion, though it usually goes "Roses are red, Violets are blue.") * **Roses are beautiful.** * **Roses are fragrant.** **Simple/Direct:** * **Roses are lovely.** * **Roses are soft.** **If you want a specific tone, let me know! 😊**
Sử dụng thư viện Dialog
import dialog
from transformers import GenerationConfig
config = GenerationConfig.from_pretrained(MODEL_ID)
config.max_new_tokens = 512
conv = dialog.Conversation(
dialog.User("Roses are...")
)
output = txt_pipe(text_inputs=conv.as_text(), return_full_text=False, generation_config=config)
conv += dialog.Model(output[0]['generated_text'])
print(conv.as_text())
conv.show()
<|turn>user Roses are...<turn|> <|turn>model Here are a few ways to complete the phrase "Roses are...": **Focusing on their beauty:** * **Roses are beautiful.** * **Roses are gorgeous.** **Focusing on their scent:** * **Roses are fragrant.** * **Roses are sweet-smelling.** **Focusing on their symbolism (if you want a deeper meaning):** * **Roses are love.** * **Roses are romantic.** **Focusing on a general observation:** * **Roses are lovely.** * **Roses are wonderful.** **Which completion do you like best, or were you thinking of a specific meaning?** <dialog._src.widget.Conversation object at 0x7f1bb1a5d8b0>
Sử dụng mẫu lời nhắc
Khi tạo nội dung bằng lời nhắc phức tạp hơn, hãy sử dụng mẫu lời nhắc để cấu trúc yêu cầu. Mẫu lời nhắc cho phép bạn chỉ định dữ liệu đầu vào từ các vai trò cụ thể, chẳng hạn như user hoặc model. Đây là định dạng bắt buộc để quản lý các tương tác trò chuyện nhiều lượt với mô hình Gemma. Đoạn mã ví dụ sau đây cho thấy cách tạo mẫu lời nhắc cho Gemma:
from transformers import GenerationConfig
config = GenerationConfig.from_pretrained(MODEL_ID)
config.max_new_tokens = 512
messages = [
{
"role": "user",
"content": [
{"type": "text", "text": "Write a short poem about the Kraken."},
]
}
]
output = txt_pipe(messages, return_full_text=False, generation_config=config)
print(output[0]['generated_text'])
From sunless depths, a shadow stirs, Where ocean's crushing silence blurs. A titan sleeps in inky night, With tentacles of dreadful might. A hundred arms, a crushing hold, A legend whispered, ages old. The deep's dark king, a monstrous grace, The Kraken claims its watery space.
Cuộc trò chuyện nhiều lượt
Trong quá trình thiết lập nhiều lượt, nhật ký cuộc trò chuyện được giữ nguyên dưới dạng một chuỗi các vai trò user và model xen kẽ. Danh sách tích luỹ này đóng vai trò là bộ nhớ của mô hình, đảm bảo rằng mỗi kết quả đầu ra mới đều được thông báo bằng đoạn hội thoại trước đó.
import dialog
from transformers import GenerationConfig
config = GenerationConfig.from_pretrained(MODEL_ID)
config.max_new_tokens = 512
# User turn #1
conv = dialog.Conversation(
dialog.User("Write a short poem about the Kraken.")
)
# Model response #1
output = txt_pipe(text_inputs=conv.as_text(), return_full_text=False, generation_config=config)
conv += dialog.Model(output[0]['generated_text'])
# User turn #2
conv += dialog.User("Now with the Siren.")
# Model response #2
output = txt_pipe(text_inputs=conv.as_text(), return_full_text=False, generation_config=config)
conv += dialog.Model(output[0]['generated_text'])
print(conv.as_text())
conv.show()
<|turn>user Write a short poem about the Kraken.<turn|> <|turn>model In depths where sunlight fades, A monstrous shadow plays. The Kraken wakes, with churning tide, A living horror, bold and wide.<turn|> <|turn>user Now with the Siren.<turn|> <|turn>model Where coral gardens sleep, And ocean secrets keep, The Siren calls, with liquid grace, A haunting melody in place. <dialog._src.widget.Conversation object at 0x7f1bac3733b0>
Và đây là cuộc trò chuyện được xuất dưới dạng văn bản.
chat_history = conv.as_text(training=True)
print(chat_history)
print("-"*80)
# display as Conversation widget
chat_history
<|turn>user Write a short poem about the Kraken.<turn|> <|turn>model In depths where sunlight fades, A monstrous shadow plays. The Kraken wakes, with churning tide, A living horror, bold and wide.<turn|> <|turn>user Now with the Siren.<turn|> <|turn>model Where coral gardens sleep, And ocean secrets keep, The Siren calls, with liquid grace, A haunting melody in place.<turn|> -------------------------------------------------------------------------------- <dialog._src.widget.ConversationStr object at 0x7f1bb07fa1b0>
Hướng dẫn của hệ thống
Sử dụng vai trò system để cung cấp hướng dẫn ở cấp hệ thống.
import dialog
from transformers import GenerationConfig
config = GenerationConfig.from_pretrained(MODEL_ID)
config.max_new_tokens = 512
conv = dialog.Conversation(
dialog.System("Speak like a pirate."),
dialog.User("Why is the sky blue?")
)
output = txt_pipe(text_inputs=conv.as_text(), return_full_text=False, generation_config=config)
conv += dialog.Model(output[0]['generated_text'])
print(conv.as_text())
conv.show()
<|turn>system Speak like a pirate.<turn|> <|turn>user Why is the sky blue?<turn|> <|turn>model Ahoy there! Why is the sky blue, ye ask? It be down to the way the sun's light dances through the air! See, the sunlight we get from the sun ain't just one color; it's a whole spectrum of colors, like a treasure chest filled with all the hues of the rainbow! Now, the Earth is surrounded by the air, and that air is full of tiny, invisible bits of gas. When the sunlight hits these gas molecules, something magical happens. The colors in that sunlight get scattered all around in every direction! The blue light, and other colors, get scattered more easily by these air molecules than the other colors. So, when you look up at the sky, your eyes catch all that scattered blue light coming from every direction, and **that's what makes the sky appear blue to us!** It's a grand display of physics and light, savvy? Now, hoist the colors and enjoy the view! <dialog._src.widget.Conversation object at 0x7f1bac370110>
Tóm tắt và các bước tiếp theo
Trong hướng dẫn này, bạn đã học cách thực hiện suy luận văn bản cơ bản với Gemma 4 bằng thư viện transformers của Hugging Face. Bạn đã tìm hiểu về:
- Thiết lập môi trường và cài đặt phần phụ thuộc.
- Tải mô hình bằng cách sử dụng lớp trừu tượng
pipeline. - Chạy tính năng tạo văn bản cơ bản.
- Sử dụng thư viện
dialogđể theo dõi cuộc trò chuyện. - Triển khai cuộc trò chuyện nhiều lượt và áp dụng hướng dẫn của hệ thống.
Chạy trong Google Colab
Xem nguồn trên GitHub