Chạy Gemma bằng Hugging Face Transformers

Xem trên ai.google.dev Chạy trong Google Colab Chạy trong Kaggle Mở trong Vertex AI 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 sẽ hướng dẫn bạn 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.

Thiết lập

Trước khi bắt đầu hướng dẫn này, hãy hoàn tất các bước sau:

  • Bạn có thể truy cập vào Gemma bằng cách đăng nhập vào Hugging Face rồi chọn Tôi đồng ý với giấy phép cho một mô hình Gemma.
  • Chọn một thời gian chạy Colab có đủ tài nguyên để chạy kích thước mô hình Gemma mà bạn muốn chạy. Tìm hiểu thêm.
  • Tạo Mã truy cập Hugging Face rồi thêm mã này vào môi trường Colab.

Định cấu hình mã truy cập

Thêm mã truy cập vào Colab để cho phép tải các mô hình Gemma xuống từ trang web Hugging Face. Sử dụng tính năng Bí mật của Colab để lưu mã thông báo một cách an toàn mà không cần thêm mã thông báo đó vào mã đang hoạt động.

Cách thêm Mã truy cập Hugging Face làm khoá bí mật:

  1. Mở thẻ bí mật bằng cách chọn biểu tượng khoá ở bên trái giao diện hoặc chọn Tools > Command pallete (Công cụ > Bảng lệnh), nhập secrets rồi nhấn Enter.
  2. Chọn Thêm giá trị bí mật mới để thêm một mục giá trị bí mật mới.
  3. Trong trường Name (Tên), hãy nhập HF_TOKEN.
  4. Trong trường Giá trị, hãy nhập văn bản của Mã truy cập Hugging Face.
  5. Trong trường Quyền truy cập vào sổ tay, hãy chọn nút bật để cho phép truy cập.

Sau khi nhập Mã truy cập dưới dạng HF_TOKEN và giá trị, bạn có thể truy cập và đặt mã này trong môi trường sổ tay Colab bằng cách sử dụng mã sau:

from google.colab import userdata
from huggingface_hub import login

# Login into Hugging Face Hub
hf_token = userdata.get('HF_TOKEN') # If you are running inside a Google Colab
login(hf_token)

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 & other libraries
%pip install "torch>=2.4.0"

# Install a transformers version that supports Gemma 3 (>= 4.51.3)
%pip install "transformers>=4.51.3"

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 lời nhắc bằng văn bản cho một mô hình Gemma để nhận được phản hồ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ải mô hình

Sử dụng các thư viện torchtransformers để tạo một thực thể 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 hướng 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à "text-generation" để tạo văn bản, như trong ví dụ về mã sau:

import torch
from transformers import pipeline

pipeline = pipeline(
    task="text-generation",
    model="google/gemma-3-4b-it",
    device=0, # "cuda" for Colab, "msu" for iOS devices
    torch_dtype=torch.bfloat16
)

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. Sử dụng kiểu dữ liệu torch.bfloat16 để giảm độ chính xác của mô hình và tài nguyên điện toán cần thiết mà không ảnh hưởng đáng kể đến chất lượng đầu ra của mô hình. Đối với chế độ cài đặt device, bạn có thể dùng "cuda" cho Colab, hoặc "msu" cho thiết bị iOS, hoặc chỉ cần đặt chế độ này thành 0 (không) để chỉ định GPU đầu tiên trên hệ thống của bạn. Để 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_inputs:

pipeline(text_inputs="roses are red")
[{'generated_text': 'roses are red, violets are blue, \ni love you more than you ever knew.\n\n**Explanation'}]

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:

messages = [
    [
        {
            "role": "system",
            "content": [{"type": "text", "text": "You are a helpful assistant."},]
        },
        {
            "role": "user",
            "content": [{"type": "text", "text": "Roses are red..."},]
        },
    ],
]

pipeline(messages, max_new_tokens=50)

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.

Tải mô hình

Khi tải một mô hình Gemma để sử dụng với dữ liệu hình ảnh, bạn sẽ định cấu hình phiên bản Transformer pipeline dành riêng cho việc sử dụng với hình ảnh. Cụ thể, bạn phải chọn một cấu hình quy trình có thể xử lý dữ liệu trực quan bằng cách đặt tham số task thành "image-text-to-text", như trong ví dụ về mã sau:

import torch
from transformers import pipeline

pipeline = pipeline(
    task="image-text-to-text", # required for image input
    model="google/gemma-3-4b-it",
    device=0,
    torch_dtype=torch.bfloat16
)

Chạy tính năng tạo văn bản

Sau khi định cấu hình mô hình Gemma để xử lý dữ liệu đầu vào là hình ảnh bằng một thực thể pipeline, bạn có thể gửi câu lệnh kèm theo hình ảnh đến mô hình. Sử dụng mã thông báo <start_of_image> để thêm hình ảnh vào văn bản của câu lệ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ố pipeline:

pipeline(
    "https://ai.google.dev/static/gemma/docs/images/thali-indian-plate.jpg",
    text="<start_of_image> What is shown in this image?"
)
[{'input_text': '<start_of_image> What is shown in this image?',
  'generated_text': '<start_of_image> What is shown in this image?\n\nThis image showcases a traditional Indian Thali. A Thali is a platter that contains a variety'}]

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:

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"},
        ],
    },
]

pipeline(text=messages, max_new_tokens=50, return_full_text=False)

Bạn có thể thêm 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 3n, bạn có thể sử dụng dữ liệu âm thanh trong câu lệnh. Phần này cho biết 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à đầu vào văn bản để tạo đầu ra văn bản.

Cài đặt các gói Python

Bạn cần có phiên bản gần đây của thư viện Transformers để sử dụng đầu vào âm thanh với Gemma. Cài đặt các thư viện Hugging Face để chạy mô hình Gemma và đưa ra các yêu cầu bằng dữ liệu âm thanh như minh hoạ bên dưới.

# Install Pytorch & other libraries
%pip install "torch>=2.4.0"

# Install a transformers version that supports Gemma 3n (>= 4.53)
%pip install "transformers>=4.53.0"

Tải mô hình

Khi tải một mô hình Gemma để sử dụng với dữ liệu âm thanh, bạn sẽ định cấu hình phiên bản Transformer dành riêng cho việc sử dụng với dữ liệu âm thanh. Cụ thể, bạn phải xác định một đối tượng processormodel bằng cách sử dụng các lớp AutoProcessorAutoModelForImageTextToText, như trong ví dụ về mã sau:

import torch
from transformers import AutoProcessor, AutoModelForImageTextToText

GEMMA_MODEL_ID = "google/gemma-3n-E4B-it"

processor = AutoProcessor.from_pretrained(GEMMA_MODEL_ID, device_map="auto")
model = AutoModelForImageTextToText.from_pretrained(
            GEMMA_MODEL_ID, torch_dtype="auto", device_map="auto")

Sử dụng mẫu câu lệnh

Khi tạo nội dung có âm thanh, 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 bằng dữ liệu âm thanh đầu vào:

messages = [
    {
        "role": "user",
        "content": [
            {"type": "audio", "audio": "https://ai.google.dev/gemma/docs/audio/roses-are.wav"},
            {"type": "text", "text": "Transcribe this audio and complete the statement"},
        ]
    }
]

Bạn có thể đưa 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. Nếu bạn đang tạo câu lệnh bằng dữ liệu âm thanh nhưng không có mẫu, hãy sử dụng cú pháp <audio_soft_token> trong văn bản của câu lệnh.

Chạy tính năng tạo văn bản

Sau khi định cấu hình mô hình Gemma bằng đối tượng processormodel, đồng thời tạo một câu lệnh có dữ liệu âm thanh bằng cách sử dụng mẫu câu lệnh, bạn có thể gửi câu lệnh đó để tạo đầu ra. Đoạn mã ví dụ sau đây cho thấy một yêu cầu sử dụng mẫu trò chuyện, tạo đầu ra, giải mã phản hồi:

input_ids = processor.apply_chat_template(
        messages,
        add_generation_prompt=True,
        tokenize=True, return_dict=True,
        return_tensors="pt",
)
input_ids = input_ids.to(model.device, dtype=model.dtype)

# Generate output from the model
outputs = model.generate(**input_ids, max_new_tokens=128)

# decode and print the output as text
text = processor.batch_decode(
    outputs,
    skip_special_tokens=False,
    clean_up_tokenization_spaces=False
)
print(text[0])

Các bước tiếp theo

Tạo và khám phá thêm bằng các mô hình Gemma: