Tin ngành
vLLM tích hợp PyNvVideoCodec, tăng tốc giải mã video trên GPU NVIDIA
(giờ Việt Nam)
Tóm tắt AI
vLLM vừa hỗ trợ giải mã video phần cứng (NVDEC), giúp chuyển tải xử lý từ CPU sang GPU. Trên hệ thống 8xH100, hiệu suất giải mã tăng gấp đôi so với phương pháp cũ, tối ưu hóa đáng kể cho các tác vụ AI đa phương thức.
Bản dịch AI
Chúng tôi rất vui mừng thông báo về việc hỗ trợ giải mã video bằng phần cứng tích hợp trong các GPU NVIDIA, cho phép các tác vụ chú thích và dán nhãn video vốn trước đây bị nghẽn ở CPU có thể mở rộng lưu lượng xử lý trên các node đa GPU cấp trung tâm dữ liệu.
Chú thích video là một tác vụ phổ biến trong nhiều ngành công nghiệp nhằm mô tả những gì đang diễn ra trong video. Điều này cho phép các hệ thống đào tạo xe tự lái (AV) mô tả và phân loại các tình huống nguy hiểm, tạo ra siêu dữ liệu có thể đọc được và tìm kiếm được, cùng nhiều trường hợp sử dụng khác.
Trước đây, việc xử lý các tập dữ liệu này bằng vLLM đòi hỏi phải gửi các video chỉ có thể giải mã thông qua backend OpenCV+FFMPEG dựa trên CPU. Việc chạy các Vision Language Models (VLM) như vậy trên các node đa GPU (mỗi GPU một server vLLM) đặt ra yêu cầu cao hơn đối với CPU trong việc giải mã các khung hình video trước khi bất kỳ tác vụ suy luận VLM nào có thể bắt đầu. Đặc biệt trong trường hợp chú thích video, nơi đầu ra tương đối ngắn (100-200 token), tỷ lệ thời gian dành cho việc giải mã video lớn hơn nhiều, và giải mã video dựa trên CPU có thể nhanh chóng trở thành điểm nghẽn, làm cạn kiệt tài nguyên nhân CPU ngay cả khi chỉ sử dụng 2 hoặc 4 GPU.
Bằng cách tích hợp PyNvVideoCodec, một giao diện dựa trên Python cho các bộ giải mã video phần cứng của NVIDIA (còn được gọi là “NVDEC”), vLLM có thể chuyển tải khối lượng công việc giải mã video này ra khỏi CPU và loại bỏ điểm nghẽn nêu trên, cho phép khả năng mở rộng tuyệt vời lên đến 8 GPU.
Xem các ví dụ minh họa về prompt đầu vào/đầu ra cho tác vụ này dưới đây (các prompt thực tế thường phức tạp và có cấu trúc hơn):
Ví dụ về prompt đầu vào
Phân tích video từ camera hành trình phía trước này. Mô tả ngắn gọn môi trường lái xe, những người tham gia giao thông và các biển báo giao thông liên quan, cùng các hành động của xe tự lái (ego vehicle). Chỉ báo cáo các chi tiết có thể nhìn thấy rõ ràng và tránh suy đoán.
Ví dụ về đầu ra
Xe tự lái đang di chuyển dọc theo một con đường đô thị nhiều làn xe vào ban ngày với tầm nhìn rõ ràng. Có một vài phương tiện phía trước cùng làn và làn bên cạnh, đồng thời có thể nhìn thấy một giao lộ có đèn tín hiệu. Xe tự lái duy trì làn đường của mình, giảm tốc độ khi tiếp cận giao thông và tiếp tục di chuyển trong khi vẫn giữ khoảng cách với phương tiện phía trước.
Sử dụng giải mã video bằng phần cứng NVIDIA trong vLLM
Cài đặt các điều kiện tiên quyết
Chức năng do PyNvVideoCodec cung cấp đã được bao gồm trong các bản phát hành vLLM tiêu chuẩn của CUDA! Đối với bất kỳ ai sử dụng bản cài đặt vLLM tùy chỉnh, hãy đảm bảo dự án của bạn bao gồm phụ thuộc PyPi vào PyNvVideoCodec==2.0.4.
Khởi động vLLM với bộ giải mã video PyNvVideoCodec được kích hoạt
CUDA MPS là yếu tố cần thiết để đạt hiệu suất tốt với các công việc đa tiến trình có tính đồng thời cao như suy luận VLM hàng loạt. Trước khi chạy vllm serve, chúng tôi khuyên bạn nên đảm bảo rằng MPS Daemon đã được khởi động.
--mm-ipc-gpu-memory-gb được sử dụng để dành riêng VRAM cho việc giải mã video. Bạn có thể kiểm tra lưu lượng xử lý ở các giá trị khác nhau và chỉ dành ra lượng tối thiểu không ảnh hưởng đến lưu lượng của bạn. Để biết thêm tài liệu về các tham số liên quan đến backend bộ giải mã PyNvVideoCodec, vui lòng xem tài liệu vLLM liên quan.
Khi mở rộng sang nhiều GPU, chúng tôi thường khuyên bạn nên chạy một container cho mỗi bản sao (replica) server vLLM và chỉ định một GPU cho mỗi container. Ngoài ra, hãy sử dụng CUDA_VISIBLE_DEVICES để chỉ định một GPU cho mỗi bản sao vLLM. Chúng tôi sử dụng reverse proxy để phân phối các yêu cầu giữa các bản sao vLLM.
Mở rộng đa GPU trong các tác vụ chú thích video
Hình 1: Cải thiện khả năng mở rộng đa GPU với GPU H100. Tại cấu hình 8xH100, giải mã video dựa trên GPU cung cấp lưu lượng xử lý cao gấp đôi so với bộ giải mã video dựa trên CPU. 8 bản sao vLLM, mỗi bản sao sử dụng một GPU.
Là một ví dụ về lợi ích của phương pháp này, chúng ta hãy xem xét tác vụ chú thích video được sử dụng trong các tổ chức AV của NVIDIA. Các hệ thống này chịu trách nhiệm chú thích hàng trăm nghìn giờ video, bao gồm hàng trăm triệu yêu cầu chú thích video. Các tác vụ này thường yêu cầu các mô hình tương đối nhẹ (ví dụ: Qwen/Qwen3-VL-8B-Instruct), có prompt đầu vào chỉ định loại mô tả mong muốn và đầu ra ở mức 100-200 token.
Hình 2. Các khối lượng công việc lớn sử dụng tới 8 GPU trước đây sẽ bị nghẽn ở mức sử dụng CPU trước khi đạt đến 4 GPU. Hiện nay, với sự hỗ trợ giải mã video dựa trên phần cứng, điểm nghẽn CPU đã được loại bỏ. Dữ liệu được thu thập trong trạng thái ổn định của benchmark.
Lưu ý
Cần lưu ý rằng việc giải mã video đòi hỏi phải dành ra một phần VRAM: Nếu trường hợp sử dụng của bạn đã tận dụng toàn bộ KV cache bằng cách sử dụng hết VRAM, có khả năng bạn sẽ thấy một số ảnh hưởng. Trong quá trình thử nghiệm thực tế, chúng tôi chưa thấy trường hợp nào mà việc sử dụng PyNvVideoCodec gây ra bất lợi về hiệu suất.
Lời cảm ơn
Cảm ơn tất cả những người đã đóng góp vào việc mang tính năng hỗ trợ giải mã video bằng phần cứng đến với vLLM.
Bài viết được AI dịch và tổng hợp tự động từ vLLM Blog. Liên kết bài gốc ở phía trên. AIHOT.vn luôn dẫn nguồn đầy đủ — nếu bạn thấy điểm cần chỉnh sửa, hãy gửi ý kiến tại trang phản hồi.