Tối ưu hóa hiệu quả bộ nhớ để chạy các mô hình lớn hơn trên NVIDIA Jetson

Tối ưu hóa hiệu quả bộ nhớ để chạy các mô hình lớn hơn trên NVIDIA Jetson



Khám phá các chiến lược tối ưu hóa từ lớp phần mềm cơ bản đến kỹ thuật định lượng mô hình giúp triển khai các mô hình AI đa tỷ tham số trên thiết bị Edge có tài nguyên hạn chế.

Thách thức về bộ nhớ trong AI tại biên (Edge AI)

Sự bùng nổ của các mô hình AI tạo sinh mã nguồn mở đang mở rộng từ trung tâm dữ liệu sang các thiết bị vận hành trong thế giới vật lý. Các nhà phát triển đang nỗ lực triển khai những mô hình này tại biên để vận hành các tác nhân AI vật lý và robot tự hành. Tuy nhiên, thách thức chính là làm sao chạy hiệu quả các mô hình có hàng tỷ tham số trên các thiết bị Edge với bộ nhớ hạn chế.

Khác với môi trường đám mây, thiết bị Edge hoạt động dưới giới hạn bộ nhớ nghiêm ngặt, nơi CPU và GPU chia sẻ tài nguyên chung. Việc sử dụng bộ nhớ không hiệu quả có thể dẫn đến nghẽn cổ chai, tăng độ trễ hoặc gây treo hệ thống. Tối ưu hóa bộ nhớ không chỉ giúp cải thiện hiệu suất trên cùng một phần cứng mà còn giảm chi phí hệ thống và tăng hiệu quả năng lượng (hiệu suất trên mỗi watt).

Edge AI Software Stack
Sơ đồ ngăn xếp phần mềm Edge AI điển hình trên nền tảng phần cứng NVIDIA

Chiến lược tối ưu hóa 5 lớp cho NVIDIA Jetson

NVIDIA đề xuất một khung tham chiếu gồm 5 lớp để tối ưu hóa bộ nhớ, từ nền tảng phần cứng lên đến kỹ thuật định lượng mô hình.

1. Lớp nền tảng: BSP và NVIDIA JetPack

Gói hỗ trợ bo mạch (BSP) và NVIDIA JetPack tạo nền móng giao tiếp với phần cứng. Tại đây, nhà phát triển có thể thu hồi bộ nhớ bằng cách tắt các dịch vụ không cần thiết.

  • Tắt giao diện đồ họa (GUI): Có thể thu hồi tới 865 MB bằng lệnh sudo systemctl set-default multi-user.target.
  • Tắt các dịch vụ mạng và nhật ký không thiết yếu: Thu hồi thêm khoảng 32 MB.

2. Tối ưu hóa vùng Carveout

Vùng Carveout là các vùng bộ nhớ vật lý được dự phòng khi khởi động cho các công cụ phần cứng, firmware và hệ thống thời gian thực. Tùy vào nhu cầu ứng dụng, một số vùng có thể tắt để giải phóng DRAM:

  • Khi không cần hiển thị: Tắt các vùng như CARVEOUT_DCE, CARVEOUT_DISP_EARLY_BOOT_FB giúp thu hồi hàng chục MB.
  • Khi không cần camera: Tắt CARVEOUT_CAMERA_TASKLISTCARVEOUT_RCE.

3. Tối ưu hóa phía Kernel và User Space

Đối với Kernel, NVIDIA Jetson Orin sử dụng IOMMU phần cứng mạnh mẽ, khiến SWIOTLB (một giải pháp thay thế phần mềm) trở nên dư thừa. Nhà phát triển có thể điều chỉnh tham số swiotlb= trong đối số khởi động để tối ưu hóa.

Trong không gian người dùng (User Space), việc sử dụng công cụ procrank giúp xác định các tiến trình tiêu tốn nhiều bộ nhớ PSS (Proportional Set Size). Việc loại bỏ gnome-shell hoặc Xorg trong các triển khai headless (không màn hình) sẽ giải phóng đáng kể tài nguyên cho GPU và AI.

Memory Saved
Lượng bộ nhớ tiết kiệm được khi tắt các dịch vụ liên quan đến GUI trong user space

4. Tối ưu hóa luồng suy luận (Inferencing Pipeline)

Sử dụng các khung như NVIDIA DeepStream giúp tăng tốc luồng dữ liệu. Để giảm dấu chân bộ nhớ (memory footprint), nhà phát triển có thể:

  • Chuyển từ Python sang C++ (tiết kiệm tới 84 MB).
  • Sử dụng BareMetal thay vì Container (tiết kiệm tới 70 MB).
  • Tắt Tiler/OSD và sử dụng FakeSink trong các triển khai sản xuất không cần hiển thị (tiết kiệm tới 258 MB).

5. Định lượng mô hình (Model Quantization)

Đây là kỹ thuật then chốt để giảm dung lượng mô hình bằng cách sử dụng kiểu dữ liệu độ chính xác thấp hơn. Quy trình khuyến nghị là đánh giá dần từ độ chính xác cao nhất xuống thấp nhất cho đến khi mô hình không còn đáp ứng được ngưỡng chất lượng yêu cầu.

Benchmark-INT4-Qwen3-4B
So sánh benchmark giữa INT4 và BF16 cho Qwen3 4B trên Jetson Orin NX 16 GB, cho thấy sự cải thiện về bộ nhớ và thông lượng

Các định dạng như FP8, W4A16NVFP4 giúp cân bằng giữa độ chính xác và hiệu suất. Ví dụ, định lượng mô hình Qwen3 8B từ FP16 sang W4A16 có thể thu hồi khoảng 10 GB bộ nhớ.

Tận dụng các bộ tăng tốc chuyên dụng

Ngoài GPU, Jetson còn cung cấp các bộ tăng tốc như ISP, NVENC/NVDEC và NVIDIA Programmable Vision Accelerator (PVA). PVA đặc biệt phù hợp cho các tác vụ thị giác tiêu thụ điện năng thấp như phát hiện chuyển động hoặc theo dõi đối tượng, giúp giải phóng GPU cho các tác vụ suy luận phức tạp hơn.

Ứng dụng thực tế: Robot Reachy Mini Jetson Assistant

Để minh chứng, robot Reachy Mini chạy trên Jetson Orin Nano (8 GB) đã triển khai thành công pipeline AI đa phương thức mà không cần đám mây nhờ các tối ưu hóa trên:

  • Sử dụng mô hình thị giác-ngôn ngữ Cosmos-Reason2-2B định lượng 4-bit qua Llama.cpp.
  • Sử dụng faster-whisper cho nhận dạng giọng nói và Kokoro TTS cho tổng hợp tiếng nói.
  • Vận hành ở chế độ headless, tắt trình quản lý hiển thị và sử dụng các runtime tối ưu như CTranslate2 và ONNX Runtime.

Kết quả là toàn bộ hệ thống vận hành mượt mà trên một thiết bị chỉ có 8 GB RAM, chứng minh rằng việc kết hợp định lượng 4-bit và runtime hiệu quả có thể hỗ trợ các LLM lên đến ~10B tham số và VLM lên đến ~4B tham số tại biên.

Nguon tham khao

Maximizing Memory Efficiency to Run Bigger Models on NVIDIA Jetson | NVIDIA Technical Blog – developer.nvidia.com

Maximizing Memory Efficiency on NVIDIA Jetson

Deploying large generative AI models at the edge requires overcoming strict memory constraints. NVIDIA provides a five-layer optimization framework to enable multi-billion-parameter models to run efficiently on resource-constrained devices.

Optimization Layers

  • Foundation (BSP & JetPack): Reclaim up to 865 MB by disabling GUI services and non-essential background processes.
  • Carveout Optimization: Disable unused hardware-reserved memory regions (e.g., display or camera carveouts) to free up DRAM.
  • Kernel & User Space: Use procrank to identify memory-heavy processes and optimize IOMMU settings to reduce overhead.
  • Inference Pipeline: Transition from Python to C++ and use headless configurations (e.g., disabling Tiler/OSD in DeepStream) to save hundreds of MBs.
  • Model Quantization: Use low-precision formats like INT4, W4A16, or NVFP4. For example, quantizing Qwen3 8B from FP16 to W4A16 can reclaim ~10 GB of memory.

Hardware Acceleration

Offloading vision tasks to the NVIDIA Programmable Vision Accelerator (PVA) reduces GPU load and improves power efficiency for always-on workloads.

Real-World Example: Reachy Mini Assistant

The Reachy Mini robot demonstrates these optimizations by running a multimodal pipeline (Cosmos-Reason2-2B VLM, faster-whisper, and Kokoro TTS) on a single Jetson Orin Nano with 8 GB of memory, utilizing 4-bit quantization and optimized runtimes like Llama.cpp.

Reference

Maximizing Memory Efficiency to Run Bigger Models on NVIDIA Jetson | NVIDIA Technical Blog – developer.nvidia.com