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

Llama 4 với vLLM: Hướng dẫn kèm dự án demo

Tìm hiểu cách triển khai và sử dụng LLaMA 4 Scout của Meta với vLLM trên RunPod cho cả hoàn thành văn bản và suy luận đa phương thức.
· 12 phút đọc

Khám phá cùng AI

Các mô hình LLaMA 4 mới nhất của Meta, Scout và Maverick, được xây dựng cho suy luận ngữ cảnh dài, hiểu đa phương thức và suy luận hiệu quả ở quy mô lớn. Khi kết hợp với vLLM, một engine suy luận thông lượng cao với API tương thích OpenAI, các mô hình này trở nên thực tiễn cho ứng dụng thế giới thực.

Trong bài viết này, tôi sẽ hướng dẫn bạn cách triển khai LLaMA 4 Scout trên một phiên bản RunPod đa GPU bằng vLLM và phục vụ nó qua endpoint API tương thích OpenAI cục bộ hoặc từ xa. Chúng ta sẽ cùng đi qua thiết lập mô hình, triển khai và tương tác API với cả đầu vào văn bản và hình ảnh.

Kết thúc hướng dẫn, bạn sẽ có hai bản demo hoàn chỉnh:

  1. Demo hoàn thành văn bản: Giao diện đơn giản để trò chuyện với LLaMA 4 bằng mã Python tương thích OpenAI và khám phá khả năng ngữ cảnh dài.
  2. Demo thị giác đa phương thức: Giao diện chấp nhận cả đầu vào văn bản và hình ảnh bằng hỗ trợ đa phương thức của vLLM và trả về phản hồi suy luận thị giác có đối chiếu từ LLaMA 4.

Chúng tôi cập nhật cho độc giả những điều mới nhất trong AI qua The Median, bản tin miễn phí thứ Sáu hằng tuần tóm lược các câu chuyện quan trọng. Đăng ký để luôn sắc bén chỉ với vài phút mỗi tuần:

Vì sao dùng LLaMA 4 trên vLLM?

vLLM (virtual large language model) là một khung suy luận LLM tối ưu hóa, ban đầu được phát triển tại Sky Computing Lab của UC Berkeley, giới thiệu PagedAttention, một hệ thống quản lý bộ nhớ mới giảm phân mảnh bộ nhớ GPU và cho phép bộ nhớ đệm key-value hiệu quả cho chuỗi cực dài. Để tìm hiểu thêm, hãy xem hướng dẫn này về vLLM.

Đây là lý do vLLM là engine lý tưởng để phục vụ LLaMA 4:

  1. Thông lượng cao, độ trễ thấp: Bộ nhớ đệm KV phân trang của vLLM cho phép suy luận hiệu quả, ngay cả với ngữ cảnh dài.
  2. Sẵn sàng đa phương thức và ngữ cảnh dài: Hỗ trợ cả hình ảnh và ngữ cảnh lên đến 10 triệu token cho mô hình Scout.
  3. Tương thích OpenAI: Bạn có thể dùng SDK và công cụ của OpenAI mà không cần chỉnh sửa.
  4. Mở rộng linh hoạt và hiệu quả GPU: vLLM tận dụng tối đa nhiều GPU—bao gồm H100, A100 và MI300X—nhờ song song hóa tensor và bộ nhớ cho suy luận thông lượng cao.

Lưu trữ LLaMA 4 Scout trên RunPod với vLLM

Trong phần này, chúng ta sẽ đi qua cách cấp phát một phiên bản đa GPU mạnh mẽ trên RunPod, triển khai mô hình LLaMA 4 Scout của Meta bằng vLLM và mở API tương thích OpenAI cho suy luận cục bộ và từ xa.

Bước 1: Thiết lập môi trường RunPod của bạn 

Trước khi khởi chạy mô hình, hãy đảm bảo tài khoản RunPod của bạn đã sẵn sàng:

  • Đăng nhập vào RunPod.io và cấu hình thanh toán.
  • Nạp tối thiểu $25 vào số dư để đảm bảo bạn có thể chạy các phiên bản GPU lớn trong suốt dự án này.

Bước 2: Triển khai một pod với GPU H100 NVL

Giờ hãy cấp phát một pod có khả năng lưu trữ mô hình LLaMA 4 Scout 17B:

  1. Vào mục Pods và nhấn “Deploy a Pod”.
  2. Lọc GPU theo VRAM, đặt tối thiểu 80 GB, và chọn H100 NVL. Lưu ý: LLaMA 4 Scout yêu cầu ít nhất 24 GB VRAM. Để hiệu năng tối ưu, chúng ta sẽ dùng 4x H100 NVL.

H100 NVL GPU RunPod for Llama 4

  1. Cuộn xuống và đặt tên cho pod, ví dụ “LLAMA4_DEMO”.
  2. Trong Template, bấm “Change Template” và chọn PyTorch 2.4.0.
  3. Bấm “Edit Template”, đặt cả Container Disk và Volume Disk là 1000 GB, rồi áp dụng overrides.
  4. (Tùy chọn) Thêm token truy cập Hugging Face vào biến môi trường để tải mô hình.

Edit Template for template overrides in RunPod for running Llama 4

  1. Đặt GPU Count là 4, sau đó nhấn “Deploy On-Demand”.

GPU Counts settings for runpod pytorch 2.4.0

Chờ vài phút để pod được cấp phát.

Provisioned Pod

Bước 3: Kết nối tới pod của bạn

Khi nút “Connect” chuyển sang màu tím, hãy nhấn vào. Bạn sẽ thấy nhiều tùy chọn kết nối—bạn có thể:

  • Mở terminal JupyterLab để chạy lệnh shell.
  • Hoặc dùng SSH hoặc cổng HTTP nếu bạn muốn điều khiển từ xa.

Bước 4: Cài đặt vLLM và thư viện cần thiết

Trong terminal bên trong pod của bạn, cài vLLM và các phụ thuộc. Hãy cài vLLM và các thư viện khác trong môi trường của pod.

pip install -U vllm
pip install transformers accelerate pillow #optional

Bước 5: Chạy LLaMA 4 Scout trên vLLM

Tiếp theo, chúng ta khởi chạy máy chủ mô hình LLaMA 4 Scout bằng lệnh sau:

VLLM_DISABLE_COMPILE_CACHE=1 vllm serve meta-llama/Llama-4-Scout-17B-16E-Instruct \
--tensor-parallel-size 4 \
--max-model-len 100000 --override-generation-config='{"attn_temperature_tuning": true}'

Lệnh này thực hiện các việc sau:

  • Tắt bộ nhớ đệm biên dịch của vLLM để khởi động nhanh hơn.
  • Chạy mô hình trên 4 GPU bằng song song hóa tensor.
  • Sau đó đặt độ dài ngữ cảnh tối đa là 100.000 token do giới hạn bộ nhớ. Lưu ý - Nếu bạn muốn chạy mô hình với ngữ cảnh 10 triệu token, bạn cần ít nhất 8 x H100 GPU.
  • Bật cấu hình điều chỉnh nhiệt độ attention để cải thiện độ chính xác trong suy luận ngữ cảnh dài.

Setting up vLLM for Llama 4

Downloading model shards for Llama 4

Bây giờ API của bạn đang chạy trên cổng 8000, hãy tạo một Jupyter Notebook mới trong cùng môi trường pod.

Hoàn thành văn bản với Llama 4 Scout

Trong demo này, chúng ta sẽ tương tác với mô hình LLaMA 4 Scout được lưu trữ cục bộ và phục vụ qua vLLM bằng một script Python đơn giản. Mô hình được mở qua API, cho phép chúng ta xây dựng một trợ lý hội thoại hỗ trợ đối thoại nhiều lượt.

Bước 1: Điều kiện tiên quyết

Chúng ta sẽ dùng OpenAI Python SDK chính thức để giao tiếp với API vLLM và thư viện Colorama để tô màu đầu ra terminal. Bạn có thể cài cả hai bằng:

pip install openai colorama

Sau khi cài, hãy import các module cần thiết:

from openai import OpenAI
from colorama import Fore, Style, init

Bước 2: Khởi tạo client

Chúng ta cấu hình client OpenAI trỏ đến máy chủ vLLM đang chạy cục bộ. Nếu triển khai của bạn không yêu cầu API key (hành vi mặc định cho chạy cục bộ), hãy truyền "EMPTY" làm key:

# Initialize colorama
init(autoreset=True)
# Set up client
openai_api_key = "EMPTY"  
openai_api_base = "http://localhost:8000/v1"
client = OpenAI(
    api_key=openai_api_key,
    base_url=openai_api_base,
)

Đoạn mã này khởi tạo thư viện Colorama để tô màu đầu ra terminal với chế độ tự động đặt lại sau mỗi lần in. Sau đó thiết lập một client tương thích OpenAI bằng lớp OpenAI, trỏ đến API vLLM được lưu trữ cục bộ.

Bước 3: Bắt đầu vòng lặp chat

Tiếp theo, chúng ta triển khai một vòng lặp đơn giản cho phép tương tác liên tục với mô hình. Lịch sử hội thoại được bảo toàn qua các lượt, cho phép hành vi đối thoại nhiều lượt.

# Initialize message history
messages = [
    {"role": "system", "content": "You are a helpful assistant."}
]
print("Start chatting with the assistant! Type 'exit' or 'quit' to end.\n")
while True:
    user_input = input(f"{Fore.BLUE}User: {Style.RESET_ALL}")
    if user_input.strip().lower() in ["exit", "quit"]:
        print("Exiting chat. Goodbye!")
        break
    messages.append({"role": "user", "content": user_input})
    chat_response = client.chat.completions.create(
        model="meta-llama/Llama-4-Scout-17B-16E-Instruct",
        messages=messages,
    )
    assistant_message = chat_response.choices[0].message.content
    print(f"{Fore.GREEN}Assistant: {assistant_message}\n{Style.RESET_ALL}")
    messages.append({"role": "assistant", "content": assistant_message})

Một giao diện chat trên terminal đơn giản được khởi tạo với lịch sử hội thoại và system prompt, liên tục nhận đầu vào người dùng trong vòng lặp. Mỗi tin nhắn người dùng được thêm vào lịch sử và gửi đến mô hình Llama-4-Scout-17B-16E-Instruct qua lời gọi API client.chat.completions.create().

Phản hồi của mô hình được in màu xanh lá bằng Colorama và thêm trở lại vào lịch sử, cho phép đối thoại nhiều lượt cho đến khi người dùng gõ "exit" hoặc "quit".

Text completion demo for Llama 4 scout on vLLM

Ở phần tiếp theo, chúng ta sẽ khám phá cách chạy suy luận đa phương thức với đầu vào hình ảnh + văn bản dùng cùng một API.

Suy luận hình ảnh và văn bản đa phương thức với LLaMA 4 Scout

Trong demo này, chúng ta sẽ khám phá cách gửi cả đầu vào hình ảnh và văn bản đến mô hình LLaMA 4 Scout được lưu trữ qua vLLM bằng khả năng đa phương thức gốc của nó. Điều này cho phép bạn thực hiện suy luận thị giác, tạo mô tả ảnh, hoặc Hỏi & Đáp đa phương thức—tất cả thông qua một API tương thích OpenAI.

Bước 1: Điều kiện tiên quyết

Ví dụ này dùng OpenAI SDK để giao tiếp với máy chủ vLLM. Nếu chưa cài, bạn có thể chạy:

pip install openai

Sau đó import module cần thiết: 

from openai import OpenAI

Bước 2: Thiết lập client API

Kết nối tới máy chủ vLLM cục bộ của bạn bằng giao diện tương thích OpenAI. Nếu máy chủ của bạn không yêu cầu xác thực, hãy dùng "EMPTY" làm API key.

openai_api_key = "EMPTY"
openai_api_base = "http://localhost:8000/v1"
client = OpenAI(
    api_key=openai_api_key,
    base_url=openai_api_base,
)

Đoạn mã trên khởi tạo một client tương thích OpenAI cho suy luận cục bộ dùng máy chủ vLLM. api_key được đặt là "EMPTY" (không cần xác thực), và base_url trỏ tới endpoint API vLLM cục bộ.

Bước 3: Gửi prompt đa phương thức

Giờ chúng ta sẽ gửi một prompt chat bao gồm cả hình ảnh và hướng dẫn văn bản. LLaMA 4 Scout sẽ xử lý hình ảnh cùng với truy vấn và trả về phản hồi mô tả.

messages = [
    {
        "role": "user",
        "content": [
            {"type": "image_url", "image_url": {"url": image_url1}},
            {"type": "text", "text": "Can you describe what's in this image?"}
        ]
    }
]
chat_response = client.chat.completions.create(
    model="meta-llama/Llama-4-Scout-17B-16E-Instruct",  
    messages=messages,
)
print("Response:", chat_response.choices[0].message.content)

Sau khi phục vụ suy luận đa phương thức bằng mô hình LLaMA 4 Scout, chúng ta xây dựng đầu vào kiểu chat chứa cả URL hình ảnh và prompt văn bản, được định dạng theo schema chat của OpenAI. Phương thức client.chat.completions.create() được dùng để gửi yêu cầu đa phương thức này tới mô hình, mô hình sẽ xử lý hình ảnh và văn bản đi kèm để tạo phản hồi theo ngữ cảnh.

Multimodal demo

Multimodal demo

Kết luận

Trong hướng dẫn này, chúng ta đã lưu trữ mô hình LLaMA 4 Scout của Meta bằng vLLM trên RunPod, giúp truy cập qua các endpoint tương thích OpenAI cho cả suy luận văn bản và đa phương thức. Bằng cách kết hợp thông lượng cao của vLLM và hạ tầng mạnh mẽ của RunPod, chúng ta đã tạo ra một thiết lập tiết kiệm chi phí để phục vụ các LLM tối tân với ngữ cảnh dài và khả năng thị giác.

Để tìm hiểu thêm về LLaMA 4 và vLLM, hãy xem:

Aashi Dutt

Tác giả

Aashi Dutt

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ủ đề

Liên quan