Chuyển đến nội dung chính

Hướng dẫn Llama 3.2 và Gradio: Xây dựng ứng dụng web đa phương thức

Tìm hiểu cách sử dụng mô hình thị giác Llama 3.2 11B với Gradio để tạo một ứng dụng web đa phương thức hoạt động như trợ lý hỗ trợ khách hàng.
Đã cập nhật 5 thg 10, 2026  · 10 phút đọc

Khám phá cùng AI

ChatGPTClaudePerplexity

Thời mà chúng ta hài lòng với mô hình ngôn ngữ lớn chỉ xử lý văn bản đã qua. Giờ đây, chúng ta kỳ vọng các LLM đa phương thức có khả năng hiểu và tương tác với văn bản, hình ảnh và video.

Xin giới thiệu các mô hình thị giác Llama 3.2 11B & 90B, những mô hình đa phương thức mã nguồn mở đầu tiên của Meta AI, có khả năng xử lý cả đầu vào văn bản và hình ảnh.

Trong hướng dẫn thực hành này, tôi sẽ dẫn bạn qua quy trình tạo một trợ lý hỗ trợ khách hàng đa phương thức với Llama 3.2 và Gradio. Kết thúc bài hướng dẫn, bạn sẽ có một ứng dụng web hoàn chỉnh có thể phân tích mô tả văn bản và hình ảnh tải lên để tạo ra các giải pháp hữu ích — giống như một trợ lý xử lý phiếu hỗ trợ!

Nếu bạn cần phần giới thiệu nhanh về Llama 3.2 trước khi bắt đầu, tôi khuyến nghị đọc hướng dẫn Llama 3.2 này.

Thiết lập ban đầu

Trong bản demo thực hành này, chúng ta sẽ sử dụng mô hình Llama3.2-11B-Vision (đa phương thức). Trước khi bắt đầu viết mã, hãy đảm bảo rằng chúng ta có đủ các phụ thuộc cần thiết.

Chúng ta cần một vài thư viện để mọi thứ chạy trơn tru. Quan trọng nhất là:

  • Transformers: Thư viện cốt lõi để làm việc với các mô hình như Llama 3.2.
  • Torch: Thư viện học sâu cung cấp sức mạnh cho mô hình.
  • Gradio: Dùng để xây dựng giao diện người dùng.

Chạy các lệnh sau để cài đặt các phụ thuộc cần thiết:

!pip3 install -U transformers bitsandbytes accelerate peft -q
!pip3 install gradio -q

Tải mô hình và processor của Llama 3.2

Bây giờ, hãy tải mô hình và processor của Llama 3.2. Chúng ta sẽ sử dụng thư viện transformers của Hugging Face để tải mô hình và processor, đảm bảo mô hình chạy trên GPU nếu có, hoặc mặc định là CPU. Với 11B tham số, mô hình hoạt động tốt trên GPU A100 trong Google Colab.

Trong khối mã dưới đây:

  • Chúng ta thiết lập các import cần thiết.
  • Chúng ta tải cả mô hình và processor với hỗ trợ GPU nếu có. Điều này giúp ứng dụng chạy hiệu quả, đặc biệt khi xử lý lượng dữ liệu lớn.
  • Một đoạn mã quan trọng cần chú ý là tie_weight(), đảm bảo trọng số của lớp nhúng đầu vào và đầu ra là giống nhau. Điều này giúp giảm tiêu thụ bộ nhớ và có thể cải thiện hiệu năng.
import torch
from PIL import Image
import gradio as gr
from transformers import MllamaForConditionalGeneration, AutoProcessor

def load_model():
    model_id = "meta-llama/Llama-3.2-11B-Vision-Instruct"  
    device = "cuda" if torch.cuda.is_available() else "cpu"  # Check if GPU is available

    model = MllamaForConditionalGeneration.from_pretrained(
        model_id,
        torch_dtype=torch.float16 if torch.cuda.is_available() else torch.float32,  
        device_map="auto",  # Automatically map to available device
        offload_folder="offload",  # Offload to disk if necessary
    )
    
    model.tie_weights()  # Tying weights for efficiency
    processor = AutoProcessor.from_pretrained(model_id)
    print(f"Model loaded on: {device}")
    
    return model, processor

Vì sao chọn Gradio?

Gradio là một thư viện Python gọn nhẹ cho phép chúng ta nhanh chóng xây dựng các ứng dụng máy học với giao diện web. Thay vì viết HTML hay JavaScript phức tạp, chúng ta có thể định nghĩa các thành phần của ứng dụng (như ô nhập văn bản, nút bấm hoặc hình ảnh) trực tiếp trong Python.

Dưới đây là ví dụ về một giao diện Gradio cơ bản:

Giao diện UI Gradio

Gradio có một vài ưu điểm:

  • Không rắc rối khi cài đặt: Ứng dụng Gradio được lưu trữ và chia sẻ chỉ với vài dòng mã Python. Tính năng chia sẻ tích hợp cho phép truy cập qua liên kết công khai.
  • Giao diện cộng tác: Cho phép demo trực tiếp các mô hình được chia sẻ với cộng sự hoặc công chúng. Nhiều người dùng có thể tương tác đồng thời.
  • Hỗ trợ nhiều loại đầu vào và đầu ra: Cung cấp nhiều thành phần nhập/xuất vượt ra ngoài văn bản và hình ảnh.
  • Cấu hình tối thiểu cho lưu trữ đám mây: Dễ dàng triển khai trên các nền tảng như Hugging Face Spaces hoặc dịch vụ đám mây khác.
  • Tích hợp đa nền tảng: Có thể nhúng giao diện vào ứng dụng web khác, Jupyter Notebook, hoặc bài viết blog.
  • Tự động tạo API: Tự động tạo API cho ứng dụng.
  • Bảo mật tích hợp: Bao gồm giới hạn kích thước tệp và các biện pháp khác để ngăn chặn lạm dụng độc hại.

Trong bản demo này, Gradio giúp người dùng dễ dàng nhập cả văn bản và hình ảnh và xem kết quả (phân tích văn bản và hình ảnh, trong trường hợp này) theo thời gian thực. Đây là lựa chọn hoàn hảo để trình diễn sức mạnh của các mô hình như Llama 3.2 trong môi trường thân thiện với người dùng.

Xây dựng ứng dụng đa phương thức Llama 3.2

Sau khi đã thiết lập các import và cấu hình mô hình thành công, hãy chuyển sang phần chính của ứng dụng — xử lý đầu vào (văn bản và hình ảnh) và tạo phản hồi.

Sinh văn bản từ văn bản

Chúng ta bắt đầu bằng cách định nghĩa một hàm nhận văn bản người dùng và, tùy chọn, kèm hình ảnh. Hàm này sau đó sử dụng mô hình Llama 3.2 để tạo phản hồi.

def process_ticket(text, image=None):
    model, processor = load_model()
    
    try:
        if image:
            # Resize the image for consistency
            image = image.convert("RGB").resize((224, 224))
            prompt = f"<|image|><|begin_of_text|>{text}"
            # Process both the image and text input
            inputs = processor(images=[image], text=prompt, return_tensors="pt").to(model.device)
        else:
            prompt = f"<|begin_of_text|>{text}"
            # Process text-only input
            inputs = processor(text=prompt, return_tensors="pt").to(model.device)
        
        # Generate response (restrict token length for faster output)
        outputs = model.generate(**inputs, max_new_tokens=200)
        # Decode the response from tokens to text
        response = processor.decode(outputs[0], skip_special_tokens=True)
        return response
    
    except Exception as e:
        print(f"Error processing ticket: {e}")
        return "An error occurred while processing your request."

Hàm này xử lý hai loại đầu vào trong vòng lặp:

  • Chỉ văn bản: Nếu không có hình ảnh, mô hình sẽ tạo phản hồi dựa trên đầu vào văn bản.
  • Văn bản + Hình ảnh: Nếu có hình ảnh, mô hình sẽ xử lý cả văn bản và hình ảnh trước khi tạo phản hồi.

Khi đã xác định loại đầu vào, dữ liệu được chuyển tới processor từ thư viện transformers để xử lý. Sau đó, mô hình tạo đầu ra trong phạm vi max_new_tokens.

Tạo giao diện Gradio

Giao diện Gradio gắn kết mọi thứ và cho phép chúng ta chạy kiểm thử trên nền web. Giao diện này cho phép người dùng gửi văn bản và hình ảnh về vấn đề họ gặp phải và xem lời giải do AI tạo ra.

Hãy xem đoạn mã rồi cùng giải thích.

def create_interface():
    text_input = gr.Textbox(
        label="Describe your issue",
        placeholder="Describe the problem you're experiencing",
        lines=4,
    )
    
    image_input = gr.Image(label="Upload a Screenshot (Optional)", type="pil")
    
    # Output element
    output = gr.Textbox(label="Suggested Solution", lines=5)
    
    # Create the Gradio interface
    interface = gr.Interface(
        fn=process_ticket,  # Function to process inputs
        inputs=[text_input, image_input],  # User inputs (text and image)
        outputs=output,  # AI-generated output
        title="Multimodal Customer Support Assistant",
        description="Submit a description of your issue, along with an optional screenshot, and get AI-powered suggestions.",
    )
    
    # Launch the interface with debug mode
    interface.launch(debug=True)

Trong đoạn mã trên, chúng ta:

  • Định nghĩa hai đầu vào:
    • text_input cho văn bản
    • image_input cho hình ảnh
  • Chỉ định một ô đầu ra để hiển thị phản hồi.
  • Tạo giao diện, truyền các tham số như:
    • Các đầu vào
    • Hàm xử lý đầu vào
    • Đầu ra do mô hình sinh ra
    • Tiêu đề giao diện
    • Mô tả (nếu cần)
  • Thiết lập giao diện người dùng cơ bản.
  • Khởi chạy giao diện với debug = True để gỡ lỗi. Khi mã đã chạy ổn định, hãy chuyển lại thành False.

Giao diện cuối cùng sẽ trông như sau:

Giao diện Gradio cuối cùng

Ứng dụng Gradio trợ lý hỗ trợ khách hàng đa phương thức của chúng ta đã sẵn sàng! Để có phản hồi phù hợp hơn, hãy thử thay đổi tham số max_new_tokens hoặc điều chỉnh prompt một chút.

Các trường hợp sử dụng cho Llama 3.2 và Gradio

Ngoài bản demo chúng ta đã tạo trong hướng dẫn này, còn một vài trường hợp sử dụng khác cần ít công sức triển khai. Bao gồm:

  • Giáo dục và dạy kèm: Học viên có thể tải lên các hỗ trợ trực quan như biểu đồ hoặc sơ đồ kèm câu hỏi, và mô hình có thể tạo phản hồi toàn diện kết hợp cả thông tin trực quan và văn bản.
  • Sáng tạo nội dung: Cải thiện việc tạo chú thích, bài blog và nội dung mạng xã hội bằng cách sinh văn bản dựa trên hình ảnh.
  • Trợ lý ảo bất động sản: Hỗ trợ môi giới và khách hàng bằng cách xử lý hình ảnh bất động sản và trả lời các câu hỏi liên quan. Tạo mô tả tài sản hoặc phân tích chi tiết hình ảnh từ ảnh chụp.

Thực hành tốt nhất khi phát triển với Llama 3.2 và Gradio

Với mỗi trường hợp sử dụng, có một vài mẹo mà mọi nhà phát triển có thể áp dụng khi xây dựng ứng dụng như chúng ta đã làm. Dưới đây là một số thực hành tốt nhất khi làm việc với các mô hình như Llama 3.2.

Xử lý độ trễ

Vì các tác vụ đa phương thức có thể tiêu tốn nhiều tài nguyên, giảm độ trễ là then chốt. Hãy cân nhắc tối ưu mô hình để phản hồi nhanh hơn bằng cách sử dụng bộ nhớ đệm, cắt tỉa mô hình hoặc giới hạn số lượng token được sinh ra.

Xử lý lỗi

Việc triển khai cơ chế xử lý lỗi là quan trọng. Trong trường hợp mô hình không tạo được phản hồi có ý nghĩa (ví dụ: do chất lượng hình ảnh kém), chúng ta có thể cung cấp phản hồi dự phòng hoặc thông báo lỗi. Thậm chí có thể chọn nhận phản hồi từ con người để giúp cải thiện mô hình.

Giám sát hiệu năng

Theo dõi hiệu năng ứng dụng, như thời gian phản hồi và dữ liệu tương tác người dùng, có thể giúp tối ưu giao diện và cải thiện trải nghiệm. Bằng cách ghi nhận thời gian hiệu năng, chúng ta có thể thử tối ưu độ trễ mô hình bằng các thư viện như bits and bytes.

Kết luận

Trong hướng dẫn này, chúng ta đã học cách kết hợp khả năng đa phương thức của Llama 3.2 và giao diện trực quan của Gradio. Từ hỗ trợ khách hàng đến giáo dục và sáng tạo nội dung, các ứng dụng tiềm năng rất đa dạng.

Bằng cách tuân thủ các thực hành tốt nhất như quản lý độ trễ, xử lý lỗi và giám sát hiệu năng, chúng ta có thể đảm bảo các ứng dụng Llama 3.2 và Gradio vững vàng, hiệu quả và thân thiện với người dùng.

Để tìm hiểu thêm, tôi khuyến nghị các bài hướng dẫn sau:


Aashi Dutt's photo
Author
Aashi Dutt
LinkedIn
Twitter

Tôi là Chuyên gia Google Developers trong lĩnh vực ML (Gen AI), Chuyên gia Kaggle 3x và Đại sứ Women Techmakers với hơn 3 năm kinh nghiệm trong ngành công nghệ. Tôi đồng sáng lập một startup công nghệ y tế vào năm 2020 và hiện đang theo học thạc sĩ khoa học máy tính tại Georgia Tech, chuyên sâu về học máy.

Chủ đề
Trí tuệ Nhân tạo
Mô hình Ngôn ngữ Lớn

Học AI với các khóa học này!

Khóa học

Làm việc với Llama 3

2 giờ
15.7K
Khám phá các kỹ thuật mới nhất để chạy Llama LLM tại chỗ và tích hợp nó vào hệ thống của bạn.
Xem chi tiếtRight Arrow
Bắt Đầu Khóa Học
Xem thêmRight Arrow
Liên quan

blog

Claude Opus 4.6: Tính năng, Điểm chuẩn, Bài kiểm tra thực hành và hơn thế nữa

Mô hình mới nhất của Anthropic dẫn đầu ở mã hóa tác tử và lập luận phức tạp. Thêm vào đó, nó có cửa sổ ngữ cảnh 1M.
Matt Crabtree's photo

Matt Crabtree

10 phút

Xem ThêmXem Thêm