Render 3D trên laptop bị tràn VRAM - Dấu hiệu nhận biết và cách xử lý

Render 3D trên laptop bị tràn VRAM khi texture, hình học và BVH vượt dung lượng card, gây lỗi Out of memory hoặc chậm do dời sang RAM. Cách xử lý gồm Texture Size Limit, instancing, hạ Tile Size xuống 1024 và đo VRAM.

Một cảnh nội thất chạy trơn tru trên CPU nhưng báo lỗi Out of memory ngay khi chuyển sang GPU là tình huống hay gặp khi render 3D trên laptop. VRAM là bộ nhớ riêng gắn trên card đồ họa,…

Render 3D trên laptop bị tràn VRAM - Dấu hiệu nhận biết và cách xử lý

Một cảnh nội thất chạy trơn tru trên CPU nhưng báo lỗi Out of memory ngay khi chuyển sang GPU là tình huống hay gặp khi render 3D trên laptop. VRAM là bộ nhớ riêng gắn trên card đồ họa, nơi GPU giữ texture, lưới đa giác và cấu trúc tăng tốc tia sáng trong lúc kết xuất. Khi dữ liệu cảnh vượt dung lượng này, phần mềm sẽ báo lỗi, tự dời một phần sang RAM hệ thống hoặc chạy chậm hẳn. Bài viết đi qua cơ chế tràn VRAM trong Blender Cycles, Redshift và V-Ray GPU, kèm cách đo mức chiếm dụng và cách giảm tải cho cảnh.

Cảnh 3D chiếm VRAM qua texture, hình học và cấu trúc BVH

Blender Manual mô tả GPU giúp render 3D nhanh nhờ năng lực tính toán song song, nhưng gặp giới hạn ở cảnh phức tạp vì bộ nhớ hạn chế. GPU thường chỉ truy cập phần bộ nhớ gắn trên chính nó, và dung lượng này nhỏ hơn nhiều so với RAM hệ thống mà CPU quản lý. Toàn bộ dữ liệu cảnh phải được nạp lên VRAM trước khi kết xuất bắt đầu, vì vậy kích thước cảnh quyết định tiến trình trên GPU có khởi chạy hay không.

Texture, lưới đa giác và cấu trúc BVH cùng chiếm VRAM khi render 3D trên laptop

Texture ảnh là phần chiếm chỗ dễ thấy. Theo Blender Manual, một ảnh 8K chiếm khoảng 256 MB, ảnh 4K chiếm 64 MB, ảnh 2K chiếm 16 MB và ảnh 1K chỉ 4 MB. Một bộ vật liệu PBR thường gồm nhiều ảnh cho màu, độ nhám, pháp tuyến và độ cao. Phép tính đơn giản cho thấy chỉ 32 ảnh 8K đã chiếm 8 GB, bằng toàn bộ VRAM của RTX 5060 Laptop, khi chưa tính đến lưới đa giác. Card 8 GB vì vậy cạn bộ nhớ nhanh hơn nhiều so với cảm nhận ban đầu khi mở thư viện vật liệu tải sẵn.

Phần thứ hai là hình học, gồm lưới sau khi áp Subdivision Surface, tóc, hạt và volume. Để tìm giao điểm tia sáng nhanh, renderer dựng thêm cấu trúc BVH, một cây hộp bao phủ toàn bộ hình học, và cây này cũng nằm trong bộ nhớ. Blender ghi rõ Spatial Splits làm tăng nhẹ bộ nhớ, BVH Time Steps đổi bộ nhớ lấy tốc độ, còn Compact BVH giảm RAM nhưng render chậm hơn. Vì thế một cảnh render 3D nhiều cây cỏ hoặc tóc vẫn có thể tràn VRAM dù texture không lớn.

Dấu hiệu tràn VRAM khi render 3D trong Blender và Redshift

Dấu hiệu rõ ràng là thông báo lỗi. Blender hiện Error: Out of memory, và Blender Manual giải thích đây thường là tình trạng dung lượng khả dụng không đủ để lưu cảnh cho GPU. Phần hỏi đáp của Blender trả lời thẳng câu hỏi vì sao cảnh chạy trên CPU lại không chạy trên GPU: nguyên nhân hay gặp là card đồ họa thiếu bộ nhớ. Tôi dùng phép thử nhanh, mở cùng tệp, chuyển Device sang CPU, nếu render 3D thành công thì gần như chắc chắn cảnh đang tràn VRAM.

Thông báo lỗi Out of memory khi cảnh render 3D tràn VRAM trên laptop

Dấu hiệu thứ hai khó thấy hơn vì không có hộp thoại lỗi. Với CUDA, OptiX, HIP và Metal, khi bộ nhớ GPU đầy, Blender tự kích hoạt cơ chế dùng RAM hệ thống. Tài liệu thừa nhận cách này ảnh hưởng hiệu năng, dù thường vẫn nhanh hơn render bằng CPU. Trên laptop, biểu hiện là thời gian render 3D mỗi khung hình tăng vọt so với lần thử trước. Blender cũng lưu ý giao diện có thể đứng hình khi cảnh nặng dùng nhiều bộ nhớ hoặc shader phức tạp.

Redshift báo theo cách khác. Ở khâu irradiance cache hay irradiance point cloud, nếu số điểm vượt ngân sách bộ nhớ, khung hình bị hủy kèm thông báo Irradiance cache points don't fit in VRAM. Frame aborted. Với texture và hình học, Redshift chuyển sang chế độ out-of-core nên vẫn xuất được ảnh, chỉ suy giảm tốc độ. Vì vậy khi dùng Redshift trên laptop, tình trạng tràn VRAM thường lộ qua thời gian kết xuất chứ không qua hộp thoại lỗi.

Cơ chế out-of-core dùng RAM hệ thống bù phần VRAM thiếu hụt

Out-of-core là kỹ thuật để dữ liệu cảnh nằm ở RAM hệ thống, GPU chỉ kéo phần cần thiết qua bus PCIe khi tính toán. Maxon cho biết Redshift hỗ trợ cả out-of-core cho texture lẫn cho hình học, đồng thời thừa nhận việc khiến hai tính năng này chạy ổn định trên GPU là thách thức lớn, vì GPU có tài nguyên bộ nhớ hạn chế và không có cơ chế cấp phát động đủ tin cậy. Nói dễ hiểu, VRAM là mặt bàn làm việc của GPU, còn RAM hệ thống đóng vai kệ chứa phụ đặt xa hơn, lấy đồ từ kệ luôn tốn thời gian hơn.

Cơ chế out-of-core chuyển dữ liệu cảnh giữa RAM hệ thống và VRAM qua PCIe

Redshift phân chia bộ nhớ ngay đầu mỗi khung hình. Theo tài liệu Redshift Memory của Maxon, mặc định phần mềm giữ 90% bộ nhớ GPU còn trống, 10% còn lại dành cho hệ điều hành và ứng dụng khác. Sau khi trừ bộ nhớ cho tia sáng và các bộ đệm, phần dư được chia cho hình học và texture cache, trong đó texture cache mặc định lấy 15%. Texture trước khi lên GPU được giữ ở RAM với mức mặc định 4 GB, và Maxon khuyên nâng lên 8 GB hoặc cao hơn khi cảnh nặng texture.

Cái giá của out-of-core là băng thông. Theo mục Feedback Display của Redshift, khi lượng dữ liệu hình học phải truyền lớn hơn nhiều so với kích thước geometry cache, dữ liệu đang bị chuyển qua lại liên tục và hiệu năng bị ảnh hưởng. Texture cũng có chỉ số dữ liệu truyền qua PCIe tương tự. GPU rời trên laptop cũng trao đổi với RAM qua PCIe, nên tôi coi out-of-core là lưới an toàn để kịp hạn chót, không phải cách làm việc thường ngày cho cảnh render 3D.

Render lai CPU và GPU khi cảnh 3D vượt dung lượng VRAM

Phương án thứ hai là đưa CPU vào cùng làm. Chaos mô tả V-Ray Hybrid chạy mã CUDA trên cả CPU lẫn GPU và cho ra kết quả giống nhau trên hai loại bộ xử lý. Đây là bộ render khác với V-Ray Production chạy thuần CPU. Chaos cũng ghi rõ, nếu cảnh không vừa bộ nhớ GPU, người làm vẫn có thể render bằng CPU, phương án lùi khi cảnh tràn VRAM quá nhiều.

Cảnh thử (V-Ray 3.6, 1920x1080) GPU + CPU (giây) Chỉ GPU (giây) Chỉ CPU (giây)
Mars Rover 267 303 1.585
Salt and Pepper 551 693 2.452

Số liệu trên được Chaos đo với V-Ray 3.6 trên máy trạm gồm 2 CPU Xeon E5-2687W v3 (40 luồng, 128 GB RAM) và 2 card Quadro GP100 16 GB. Ở cảnh Mars Rover, thêm CPU rút thời gian từ 303 xuống 267 giây. Ở cảnh Salt and Pepper, con số giảm từ 693 xuống 551 giây. CPU chạy riêng chậm hơn GPU khoảng 3,5 đến 5,2 lần, mức chênh lệch đủ lớn để render thuần CPU chỉ là đường lùi.

Trên laptop, tôi không kỳ vọng mức lợi tương tự, vì CPU và GPU thường chia chung ngân sách điện và hệ tản nhiệt, CPU chạy hết công suất có thể kéo xung nhịp GPU xuống. Giá trị thực tế của chế độ lai nằm ở khả năng hoàn thành cảnh vượt VRAM. Với cảnh lớn hơn card nhiều lần, render 3D bằng CPU kèm 32 GB hoặc 64 GB RAM vẫn là đường lùi chắc chắn, đổi lại thời gian lâu hơn đáng kể.

Giảm texture, dùng proxy và instancing để cảnh nhẹ bộ nhớ

Phương án bền vững là tối ưu cảnh trước khi kết xuất. Menu Simplify của Blender có Texture Size Limit tự thu nhỏ texture về mức chọn, Max Subdivision giới hạn số lần chia lưới, còn Camera Cull và Distance Cull tự loại vật thể ngoài khung camera hoặc ở quá xa. Ba tùy chọn này giúp cảnh render 3D giảm nguy cơ tràn VRAM mà không phải sửa tệp gốc.

Độ phân giải texture Bộ nhớ mỗi ảnh (MB)
8K 256
4K 64
2K 16
1K 4

Bảng số từ Blender Manual cho thấy mỗi lần hạ một bậc độ phân giải, bộ nhớ của ảnh giảm 4 lần. Vật thể nhỏ ở hậu cảnh hiếm khi cần ảnh 4K, hạ xuống 1K bớt được 60 MB mỗi ảnh. Phiên bản Blender mới còn hỗ trợ Texture Cache dùng tệp .tx dạng tile và mipmap, chỉ nạp phần ảnh và độ phân giải cần cho từng tile, đổi lại hiệu năng giảm nhẹ và tốn thêm dung lượng ổ đĩa. Ở mục Performance, Blender còn có preset Lower Memory giảm mức chiếm dụng bộ nhớ, đổi lại tốc độ render 3D chậm hơn.

Với cảnh lặp nhiều vật thể như ghế hội trường hay rừng cây, instancing quan trọng hơn texture. Blender có Duplicate Linked (Alt+D) tạo đối tượng mới liên kết toàn bộ dữ liệu với bản gốc thay vì sao chép lưới. Maxon khuyên khi đặt nhiều bản sao Redshift Proxy, tạo một proxy rồi nhân thành nhiều instance sẽ hiệu quả hơn về bộ nhớ và tốc độ. Cũng trong Performance, hạ Tile Size từ 2048 xuống 1024 hoặc 512 pixel cũng giảm bộ nhớ, chỉ tốn chút hiệu năng. Persistent Data giữ dữ liệu render trong bộ nhớ để kết xuất lại nhanh hơn, nên tôi tắt tùy chọn này khi cảnh đã chạm ngưỡng VRAM.

Đo VRAM đang dùng bằng Task Manager và thống kê của trình render

Muốn biết cảnh có sắp tràn VRAM hay không, tôi ưu tiên kiểm tra bằng Task Manager. Microsoft phân biệt dedicated memory là bộ nhớ dành riêng cho GPU, còn shared memory là RAM hệ thống mà cả CPU lẫn GPU cùng dùng. Windows chỉ cho GPU dùng tối đa một nửa bộ nhớ vật lý tại một thời điểm. Ở tab Details, thêm cột bộ nhớ GPU sẽ thấy từng tiến trình đang chiếm bao nhiêu bộ nhớ riêng và bộ nhớ chung. Tôi mở cửa sổ này song song trong lúc render 3D thử một khung hình ở độ phân giải thấp.

GPU laptop (NVIDIA) VRAM (GB) Nhân CUDA
GeForce RTX 5090 Laptop 24 10.496
GeForce RTX 5080 Laptop 16 7.680
GeForce RTX 5070 Ti Laptop 12 5.888
GeForce RTX 5060 Laptop 8 3.328
GeForce RTX 5050 Laptop 8 2.560

Đặt số đo cạnh bảng thông số NVIDIA công bố, khi dedicated memory của tiến trình Blender tiến sát dung lượng card mà shared memory bắt đầu tăng, cảnh đang tràn sang RAM. Card 8 GB thực tế còn ít hơn 8 GB cho kết xuất, vì màn hình, trình duyệt và giao diện phần mềm cũng chiếm một phần. Laptop chỉ có GPU tích hợp vận hành theo cơ chế mượn RAM khác hẳn, được phân tích trong bài Bộ nhớ thống nhất trên laptop - Giới hạn của RAM 16 GB khi GPU dùng chung.

Trong Redshift, cửa sổ Feedback Display sau mỗi khung hình báo các mục Free, Geometry và Textures. Free là bộ nhớ GPU còn trống lúc khung hình bắt đầu, thường thấp hơn tổng VRAM vì Redshift chỉ lấy một phần và Windows cũng giữ một ít. Với dựng phim, áp lực VRAM đến từ những khâu khác hẳn cảnh 3D. Với cảnh 3D, hai chỉ số Geometry và Textures là thứ tôi theo dõi trước tiên.

Câu hỏi thường gặp (FAQ)

Laptop dùng RTX 5060 8 GB có render 3D cảnh nội thất ổn định không?

Có thể đáp ứng, nếu texture được quản lý chặt. Theo Blender Manual, 32 ảnh 8K đã chiếm 8 GB, nên cảnh nội thất nhiều vật liệu cần Texture Size Limit ở mức 2K hoặc 4K và instancing cho vật thể lặp. Khi bộ nhớ GPU đầy, Blender với CUDA hoặc OptiX tự dùng thêm RAM hệ thống, đổi lại thời gian kết xuất dài hơn.

Tràn VRAM có làm hỏng card đồ họa không?

Không. Lỗi Out of memory là phần mềm không cấp phát đủ bộ nhớ cho cảnh, không phải hư hỏng phần cứng. Rủi ro nằm ở độ ổn định: Maxon lưu ý đẩy mức dùng bộ nhớ GPU của Redshift vượt 90% có thể gây mất ổn định hệ thống hoặc lỗi driver, nên tôi giữ mức mặc định.

Laptop có GPU tích hợp và GPU rời thì VRAM có cộng dồn không?

Không. Blender Manual cho biết mỗi GPU thường chỉ truy cập bộ nhớ của chính nó. Ngoại lệ là GPU NVIDIA nối qua NVLink, bật Distributed Memory Across Devices để chia sẻ bộ nhớ với chút hao hụt hiệu năng, trường hợp hiếm gặp trên laptop.

Blender Cycles có out-of-core như Redshift không?

Blender không dùng thuật ngữ out-of-core, nhưng với CUDA, OptiX, HIP và Metal, Cycles tự chuyển sang RAM hệ thống khi bộ nhớ GPU đầy. Redshift thì có out-of-core riêng cho texture và hình học, kèm thống kê lượng dữ liệu truyền qua PCIe trong Feedback Display. Khi render 3D bằng Redshift trên laptop, tôi nhìn cặp số Geometry và Textures trước khi nâng cấp cấu hình.

0 phản hồi cho “Render 3D trên laptop bị tràn VRAM - Dấu hiệu nhận biết và cách xử lý”

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *