
Quy trình tóm tắt video cục bộ: Xử lý các khung hình bằng SmolVLM2-2.2B
SmolVLM2-2.2B nằm ở một điểm thực sự hữu ích trên đường cong đánh đổi giữa khả năng và kích thước; đủ nhỏ để chạy trên một GPU tiêu dùng duy nhất, đủ mạnh để tạo ra các bản tóm tắt video thực sự hữu ích cho các quy trình làm việc thực tế.
Dòng thời gian tóm tắt video cục bộ: Xử lý khung hình bằng SmolVLM2-2.2B
SmolVLM2-2.2B nằm ở một điểm thực sự hữu ích trên đường cong đánh đổi giữa khả năng và kích thước; đủ nhỏ để chạy trên một GPU tiêu dùng duy nhất, đủ khả năng để tạo ra các bản tóm tắt video thực sự hữu ích cho các quy trình làm việc thực tế.
Bởi Shittu Olumide, Chuyên gia nội dung kỹ thuật vào ngày 10/7/2026 trong lĩnh vực Trí tuệ nhân tạo
# Giới thiệu
Hầu hết các công cụ hiểu video thuộc một trong hai nhóm. Nhóm thứ nhất yêu cầu API đám mây; cảnh quay của bạn được tải lên, xử lý trên máy chủ của người khác và tính phí theo phút video. Nhóm thứ hai chạy cục bộ nhưng đòi hỏi loại cụm GPU mà hầu hết các nhà phát triển không có: các mô hình 70B+ cần nhiều A100 và mất vài phút cho mỗi clip. Cả hai tùy chọn đều không phù hợp với một nhà phát triển muốn xử lý các bản ghi cuộc họp, một loạt bài giảng hoặc cảnh quay an ninh trong một ngày trên một máy trạm mà họ đã sở hữu.
SmolVLM2-2.2B-Instruct, được Hugging Face phát hành vào ngày 20/2/2025, đã thay đổi cách tính toán. Nó chạy trên 5,2 GB RAM GPU, một RTX 3060, một MacBook Pro M2 và tầng T4 miễn phí của Google Colab. Trên Video-MME, tiêu chuẩn đánh giá khả năng hiểu video dài, nó vượt trội hơn mọi mô hình quy mô 2B hiện có. Sự kết hợp đó, phần cứng tiêu dùng đi kèm với kết quả thực sự đáng tin cậy, là nền tảng của bài viết này.
Dự án chúng ta sẽ xây dựng trong bài viết này: một dòng thời gian cục bộ lấy bất kỳ tệp video nào, trích xuất các khung hình theo các khoảng thời gian có thể cấu hình, phân tích chúng theo lô bằng SmolVLM2-2.2B và xuất ra một bản tóm tắt JSON có cấu trúc, bao gồm mô tả cảnh theo từng khung hình, các khoảnh khắc quan trọng với dấu thời gian, các mục hành động và một câu chuyện cuối cùng. Dòng thời gian tương tự xử lý các bản ghi cuộc họp, bài giảng và cảnh quay giám sát mà không cần thay đổi một dòng mã nào.
# SmolVLM2-2.2B
Lý do SmolVLM2-2.2B có thể chạy trên RTX 3060 trong khi vượt trội hơn các mô hình lớn hơn trong các tác vụ video là một quyết định thiết kế về cách các hình ảnh được mã hóa thành token.
Hầu hết các mô hình ngôn ngữ thị giác mã hóa hình ảnh ở mật độ cao. Qwen2-VL, ví dụ, sử dụng tới 16.000 token để biểu diễn một hình ảnh duy nhất. Việc đưa 50 khung hình vào một mô hình như vậy ở mật độ đó sẽ tiêu tốn 800.000 token, vượt xa ngân sách ngữ cảnh của bất kỳ GPU tiêu dùng nào. SmolVLM2 sử dụng chiến lược xáo trộn pixel nén mỗi mảng hình ảnh 384x384 thành 81 token. Năm mươi khung hình trở thành khoảng 4.050 token hình ảnh, có thể quản lý được trong một lần gọi suy luận duy nhất. Việc nén đó là lý do tại sao thông lượng tiền xử lý của SmolVLM2 chạy nhanh hơn 3,3 đến 4,5 lần và thông lượng tạo ra chạy nhanh hơn 7,5 đến 16 lần so với Qwen2-VL-2B, không phải là một tuyên bố tiếp thị mà là một hệ quả trực tiếp của sự khác biệt về ngân sách token.
Mô hình có ba kích thước. Các biến thể 256M và 500M được thiết kế cho thiết bị di động và thiết bị biên; biến thể 256M có thể chạy trên điện thoại. Biến thể 2.2B là lựa chọn phù hợp cho quy trình này. Đây là kích thước duy nhất có điểm chuẩn video đủ mạnh để tạo ra các bản tóm tắt đa cảnh đáng tin cậy: Video-MME đạt 52,1, MLVU đạt 55,2 và MVBench đạt 46,27, so với 42,2, 47,3 và 39,73 của biến thể 500M.
Cách tiếp cận hiểu video cũng đáng được tìm hiểu trước khi viết bất kỳ mã nào. SmolVLM2 không có bộ mã hóa video gốc; nó xử lý video như một chuỗi hình ảnh. Quy trình tham chiếu chính thức trích xuất tối đa 50 khung hình được lấy mẫu đều trên mỗi video, bỏ qua việc thay đổi kích thước khung hình nội bộ và chuyển chúng dưới dạng chuỗi đa hình ảnh trong một tin nhắn trò chuyện duy nhất. Cách tiếp cận đó đạt 27,14% trên CinePile, xếp nó giữa InternVL2 (2B) và Video-LLaVA (7B) về khả năng hiểu video điện ảnh, một kết quả mạnh mẽ với kích thước của mô hình và việc video không phải là thứ duy nhất nó được đào tạo.
# Thiết lập môi trường
Yêu cầu phần cứng:
| Tính năng | Tối thiểu | Khuyến nghị |
|---|---|---|
| GPU VRAM | 6 GB (RTX 3060) | 12–16 GB (RTX 4080) |
| Apple Silicon | M2 8 GB (đường dẫn MPS) | M2 Pro / M3 16 GB |
| RAM hệ thống | 16 GB | 32 GB |
| Ổ đĩa | 10 GB trống | 20 GB+ SSD |
| Colab | T4 (tầng miễn phí) | A100 (Colab Pro) |
Các gói Python:
```python
# Yêu cầu Python 3.10+
python --version
python -m venv smolvlm2-env
source smolvlm2-env/bin/activate # macOS / Linux
smolvlm2-env\Scripts\activate # Windows
# Cài đặt từ nhánh SmolVLM-2 ổn định -- bắt buộc để hỗ trợ SmolVLM2
pip install git+https://github.com/huggingface/transformers@v4.49.0-SmolVLM-2
# Các phụ thuộc cốt lõi
pip install torch torchvision --index-url https://download.pytorch.org/whl/cu121
pip install \
opencv-python \
Pillow \
numpy \
num2words \
accelerate
# Flash Attention 2 cho CUDA -- nhanh hơn đáng kể trên GPU NVIDIA
# Bỏ qua bước này trên Apple Silicon và CPU -- chỉ dành cho CUDA
pip install flash-attn --no-build-isolation
# decord -- bắt buộc cho đường dẫn đầu vào video gốc của SmolVLM2 (được sử dụng trong Phần 5)
pip install decord
```
Lưu ý: Gói num2words là một phụ thuộc không rõ ràng. Bộ xử lý của SmolVLM2 sử dụng nó để chuyển đổi các chữ số thành dạng từ (ví dụ: 3 → "three") để nhất quán với các mẫu đào tạo ngôn ngữ tự nhiên, như đã giải thích trong hướng dẫn này. Việc bỏ qua nó sẽ gây ra lỗi nhập khẩu âm thầm khi bộ xử lý tải.
Kiểm tra thiết bị (chạy lệnh này trước khi tải mô hình):
```python
# device_check.py
# Chạy: python device_check.py
import torch
def detect_device():
if torch.cuda.is_available():
name = torch.cuda.get_device_name(0)
vram = torch.cuda.get_device_properties(0).total_memory / 1e9
print(f"CUDA: {name} ({vram:.1f} GB VRAM)")
return "cu
```
Nguồn tin: KDnuggets — Tác giả: Shittu Olumide. Bản dịch tiếng Việt do AI thực hiện, có thể có sai sót.