|
|
Chạy trong Google Colab
|
|
|
Xem nguồn trên GitHub
|
Tạo văn bản, tóm tắt và phân tích nội dung chỉ là một số tác vụ bạn có thể thực hiện bằng các mô hình nguồn mở Gemma. Hướng dẫn này cho bạn biết cách bắt đầu chạy Gemma bằng Hugging Face Transformers bằng cả văn bản và hình ảnh đầu vào để tạo nội dung văn bản. Thư viện Transformers Python cung cấp một API để truy cập vào các mô hình AI tạo sinh được huấn luyện trước, bao gồm cả Gemma. Để biết thêm thông tin, hãy xem tài liệu về Transformers.
Cài đặt các 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
%pip install torch
# Install a transformers
%pip install transformers
Tạo văn bản từ văn bản
Cách đơn giản nhất để sử dụng Gemma là đưa ra câu lệnh bằng văn bản cho một mô hình Gemma để nhận được câu trả lời bằng văn bản. Cách này hoạt động với hầu hết các biến thể của Gemma. Phần này trình bày cách sử dụng thư viện Hugging Face Transformers để tải và định cấu hình một mô hình Gemma để tạo văn bản từ văn bản.
Tải mô hình
Sử dụng các thư viện torch và transformers để tạo một phiên bản của lớp thực thi mô hình pipeline bằng Gemma. Khi sử dụng một mô hình để tạo đầu ra hoặc làm theo chỉ dẫn, hãy chọn một mô hình được điều chỉnh theo hướng dẫn (IT), thường có it trong chuỗi mã nhận dạng mô hình. Bằng cách sử dụng đối tượng pipeline, bạn chỉ định biến thể Gemma mà bạn muốn dùng, loại tác vụ bạn muốn thực hiện, cụ thể là "any-to-any" cho hoạt động tạo nội dung đa phương thức, như trong ví dụ về mã sau:
from transformers import pipeline
MODEL_ID = "google/gemma-4-E2B-it"
pipe = pipeline(
task="any-to-any",
model=MODEL_ID,
device_map="auto",
dtype="auto"
)
config.json: 0.00B [00:00, ?B/s] model.safetensors: 0%| | 0.00/10.2G [00:00<?, ?B/s] Loading weights: 0%| | 0/2011 [00:00<?, ?it/s] generation_config.json: 0%| | 0.00/208 [00:00<?, ?B/s] processor_config.json: 0.00B [00:00, ?B/s] chat_template.jinja: 0.00B [00:00, ?B/s] tokenizer_config.json: 0.00B [00:00, ?B/s] tokenizer.json: 0%| | 0.00/32.2M [00:00<?, ?B/s]
Gemma chỉ hỗ trợ một số chế độ cài đặt task để tạo nội dung. Để biết thêm thông tin về các chế độ cài đặt task hiện có, hãy xem tài liệu về task() của Hugging Face Pipelines. Để biết thêm thông tin về cách sử dụng lớp Pipeline, hãy xem tài liệu về Pipeline của Hugging Face.
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 một đối tượng pipeline, bạn có thể gửi câu lệnh cho 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:
pipe(text="<|turn>user\nroses are red<turn|>\n<|turn>model\n")
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)
[{'input_text': '<|turn>user\nroses are red<turn|>\n<|turn>model\n',
'generated_text': '<|turn>user\nroses are red<turn|>\n<|turn>model\nThat\'s a classic phrase, often used to highlight a contrast or a truth.\n\n**"Roses are red"** is a very popular, simple, and sweet arrangement.\n\nWhat would you like to do with this phrase? Are you looking for:\n\n1. **More rhymes or phrases?**\n2. **A continuation of a thought?**\n3. **Just appreciating the simplicity?**'}]
Sử dụng mẫu câu lệnh
Khi tạo nội dung bằng câu lệnh phức tạp hơn, hãy sử dụng mẫu câu lệnh để cấu trúc yêu cầu của bạn. Mẫu câu lệnh cho phép bạn chỉ định thông tin đầu vào từ các vai trò cụ thể, chẳng hạn như user hoặc model, và là định dạng bắt buộc để quản lý các lượt tương tác trò chuyện nhiều lượt với các mô hình Gemma. Đoạn mã ví dụ sau đây cho thấy cách tạo một mẫu câu lệnh cho Gemma:
from transformers import GenerationConfig
config = GenerationConfig.from_pretrained(MODEL_ID)
config.max_new_tokens = 512
gen_kwargs = dict(generation_config=config)
messages = [
{
"role": "system",
"content": [{"type": "text", "text": "You are a helpful assistant."}]
},
{
"role": "user",
"content": [{"type": "text", "text": "Roses are red..."}]
},
]
pipe(messages, return_full_text=False, generate_kwargs=gen_kwargs)
[{'input_text': [{'role': 'system',
'content': [{'type': 'text', 'text': 'You are a helpful assistant.'}]},
{'role': 'user',
'content': [{'type': 'text', 'text': 'Roses are red...'}]}],
'generated_text': 'Roses are red,\nViolets are blue,\nHow lovely to see\nA beautiful view.'}]
Tạo văn bản từ dữ liệu hình ảnh
Bắt đầu từ Gemma 3, đối với các mô hình có kích thước từ 4B trở lên, bạn có thể sử dụng dữ liệu hình ảnh trong câu lệnh. Phần này trình bày cách sử dụng thư viện Transformers để tải và định cấu hình một mô hình Gemma nhằm sử dụng dữ liệu hình ảnh và dữ liệu đầu vào văn bản để tạo dữ liệu đầu ra văn bản.
Sử dụng mẫu câu lệnh
Khi tạo nội dung bằng câu lệnh phức tạp hơn, hãy sử dụng mẫu câu lệnh để cấu trúc yêu cầu của bạn. Mẫu câu lệnh cho phép bạn chỉ định thông tin đầu vào từ các vai trò cụ thể, chẳng hạn như user hoặc model, và là định dạng bắt buộc để quản lý các lượt tương tác trò chuyện nhiều lượt với các mô hình Gemma. Đoạn mã ví dụ sau đây cho thấy cách tạo một mẫu câu lệnh cho Gemma:
from transformers import GenerationConfig
config = GenerationConfig.from_pretrained(MODEL_ID)
config.max_new_tokens = 512
gen_kwargs = dict(generation_config=config)
messages = [
{
"role": "user",
"content": [
{"type": "image", "url": "https://ai.google.dev/static/gemma/docs/images/thali-indian-plate.jpg"},
{"type": "text", "text": "What is shown in this image?"},
]
},
{
"role": "assistant",
"content": [
{"type": "text", "text": "This image shows"},
],
},
]
pipe(text=messages, return_full_text=False, generate_kwargs=gen_kwargs)
[{'input_text': [{'role': 'user',
'content': [{'type': 'image',
'url': 'https://ai.google.dev/static/gemma/docs/images/thali-indian-plate.jpg'},
{'type': 'text', 'text': 'What is shown in this image?'}]},
{'role': 'assistant',
'content': [{'type': 'text', 'text': 'This image shows'}]}],
'generated_text': " a platter of Indian food, likely a meal or an assortment of dishes.\n\nHere's a breakdown of what is visible:\n\n* **Flatbread:** There is a large, golden-brown flatbread (possibly naan or roti) dominating the center of the platter.\n* **Dips/Sides:** There are several small bowls containing various accompaniments:\n * A bowl of **yellow/mustard-colored dip** (perhaps a chutney or sauce).\n * A bowl of **white creamy dip** (like raita or yogurt sauce).\n * A portion of **white rice**.\n * Several bowls of **curries or sauces** in different colors:\n * An **orange/brown curry**.\n * A **deep yellow/orange sauce**.\n * A **green sauce** (likely a chutney).\n* **Garnish/Side Item:** In the upper right corner, there appears to be some darker, textured items, possibly fried pieces or spices.\n* **Platter:** The food is served on a metal platter.\n\nOverall, it looks like a traditional Indian meal setup featuring bread, rice, and various flavorful sauces/curries."}]
Bạn có thể đưa nhiều hình ảnh vào câu lệnh bằng cách thêm các mục "type": "image", khác vào danh sách content.
Tạo văn bản từ dữ liệu âm thanh
Với Gemma 4 và Gemma 3n, bạn có thể sử dụng dữ liệu âm thanh trong câu lệnh. Phần này trình bày cách sử dụng thư viện Transformers để tải và định cấu hình một mô hình Gemma nhằm sử dụng dữ liệu âm thanh và văn bản đầu vào để tạo văn bản đầu ra.
Sử dụng mẫu câu lệnh
Khi tạo nội dung có âm thanh, hãy sử dụng một mẫu câu lệnh để cấu trúc yêu cầu của bạn. Mẫu câu lệnh cho phép bạn chỉ định thông tin đầu vào từ các vai trò cụ thể, chẳng hạn như user hoặc model, và là định dạng bắt buộc để quản lý các lượt tương tác trò chuyện nhiều lượt với các mô hình Gemma. Đoạn mã ví dụ sau đây cho thấy cách tạo một mẫu câu lệnh cho Gemma bằng dữ liệu âm thanh đầu vào:
from transformers import GenerationConfig
config = GenerationConfig.from_pretrained(MODEL_ID)
config.max_new_tokens = 512
gen_kwargs = dict(generation_config=config)
messages = [
{
"role": "user",
"content": [
{"type": "text", "text": "Transcribe the following speech segment in its original language. Follow these specific instructions for formatting the answer:\n* Only output the transcription, with no newlines.\n* When transcribing numbers, write the digits, i.e. write 1.7 and not one point seven, and write 3 instead of three."},
{"type": "audio", "audio": "https://ai.google.dev/gemma/docs/audio/roses-are.wav"},
]
}
]
pipe(text=messages, return_full_text=False, generate_kwargs=gen_kwargs)
[{'input_text': [{'role': 'user',
'content': [{'type': 'text',
'text': 'Transcribe the following speech segment in its original language. Follow these specific instructions for formatting the answer:\n* Only output the transcription, with no newlines.\n* When transcribing numbers, write the digits, i.e. write 1.7 and not one point seven, and write 3 instead of three.'},
{'type': 'audio',
'audio': 'https://ai.google.dev/gemma/docs/audio/roses-are.wav'}]}],
'generated_text': 'Roses are red, violets are blue.'}]
Bạn có thể thêm nhiều tệp âm thanh vào câu lệnh bằng cách thêm các mục "type": "audio", khác vào danh sách content.
Các bước tiếp theo
Tạo và khám phá thêm nhiều nội dung bằng các mô hình Gemma:
- Tinh chỉnh Gemma cho các tác vụ về văn bản bằng Hugging Face Transformers
- Tinh chỉnh Gemma cho các tác vụ về thị giác bằng Hugging Face Transformers
- Thực hiện quy trình tinh chỉnh và suy luận phân tán trên các mô hình Gemma
- Sử dụng các mô hình nguồn mở Gemma với Vertex AI
- Tinh chỉnh Gemma bằng Keras và triển khai trên Vertex AI
Chạy trong Google Colab
Xem nguồn trên GitHub