Tăng tốc GPU trong PixInsight: thiết lập CUDA và thử nghiệm hiệu năng thực tế
Bài viết này được tổng hợp từ những ghi chú trong khoảng thời gian 2021 đến 2024; một số công cụ, phiên bản CUDA và quy trình thiết lập đã có cập nhật (nhất là các phiên bản PixInsight về sau đã hỗ trợ thiết lập chỉ bằng một cú nhấp chuột), nên khi đọc bạn hãy lưu ý bối cảnh thời gian.
Từ khi các process dựa trên mạng nơ-ron như tách sao, khử nhiễu bằng AI, làm sắc nét bằng AI lần lượt bước vào quy trình làm việc của PixInsight, câu hỏi “có nên lắp thêm một card đồ họa cho máy tính xử lý ảnh hay không” đã trở thành một vấn đề rất thực tế. Bài này tổng hợp kinh nghiệm đo thực tế và thiết lập tăng tốc GPU của tôi trong mấy năm qua, gồm vì sao nên dùng GPU, bật nó thế nào, tiết kiệm được bao nhiêu thời gian, cùng những khác biệt giữa các nền tảng.
Vì sao cần tăng tốc GPU
Hiện nay, các process trong PixInsight hỗ trợ tăng tốc GPU chủ yếu là những process ngốn phép tính mạng nơ-ron: StarNet++, StarNet 2, StarXTerminator (SXT), NoiseXTerminator (NXT), BlurXTerminator (BXT). Nếu chỉ chạy chúng bằng CPU, nhất là khi kích thước ảnh lớn dần, thời gian chờ sẽ rất đáng kể.
Một ví dụ khiến người ta thấm thía là tách sao hàng loạt: khi xử lý sao chổi bằng phương pháp mới, bạn phải lần lượt tách sao cho từng ảnh sao chổi chưa tích hợp (integration), ở trạng thái tuyến tính. Chẳng hạn với hơn hai trăm ảnh 9 megapixel, tăng tốc bằng RTX 3060 bản Laptop thì mỗi ảnh chỉ mất khoảng 20 giây; còn nếu thuần túy dựa vào CPU, tổng thời gian đó sẽ khiến bạn hoài nghi cả cuộc đời.
Một khi đã dùng qua tăng tốc GPU thì chắc là không quay lại được nữa.
Lần đầu tôi bật CUDA thành công
Cuối năm 2021, sau khi bỏ ra mấy tiếng đồng hồ thử các phiên bản NVIDIA CUDA, cuDNN, TensorFlow khác nhau, cuối cùng tôi cũng dùng được GPU (NVIDIA RTX 3060) để hỗ trợ tách sao:
- StarXTerminator chỉ mất khoảng 15 giây;
- StarNet++ chưa tới 10 giây;
là xong phần tách sao cho một ảnh. So với chạy thuần CPU, khác biệt rất rõ rệt.

Bật thế nào: từ thiết lập thủ công đến cài đặt một cú nhấp chuột
Cách làm thời đầu: đặt tệp bằng tay
Thời kỳ đầu, muốn bật tăng tốc GPU thì phải tự tải các tệp CUDA, cuDNN, TensorFlow… đúng phiên bản rồi đặt vào đúng vị trí. Quá trình này có rào cản không nhỏ, hơn nữa chỉ áp dụng cho người dùng Windows, máy có cài PixInsight và có card đồ họa NVIDIA với nhân CUDA. Người dùng card đồ họa AMD (kể cả đồ họa tích hợp) xin bỏ qua phần này, còn người dùng Linux thì phải tự đối chiếu các thành phần tương ứng. Sau khi thiết lập xong, tốc độ chạy StarNet, StarNet++, SXT, NXT, BXT sẽ tăng lên rất nhiều.
Phiền một nỗi là mỗi lần cập nhật PixInsight thường lại phải đặt lại những tệp này, rất dễ quên.
Cách làm hiện nay: thiết lập một cú nhấp chuột tích hợp sẵn trong PI
Đến đầu năm 2024, tình hình cải thiện rõ rệt — bây giờ chỉ cần thêm một kho cập nhật (repository) trong PixInsight là dùng được ngay tăng tốc GPU, khỏi phải cài đặt và thiết lập gì thêm. Đây là cách do RC (Russell Croman), tác giả bộ XTerminator, chia sẻ trên diễn đàn PixInsight. Khi đó tính năng này chỉ dùng được trên Windows, bản Linux vẫn đang phát triển; còn với hệ điều hành Mac thì vốn dĩ không cần loại thiết lập này.
Cách xác nhận GPU thật sự đang tính toán
Muốn biết GPU có ra sức khi tách sao hay khử nhiễu hay không, trên Windows 10/11: mở Task Manager, chuyển sang trang “GPU”, chọn trang con “CUDA”; nếu thấy nhân CUDA có mức sử dụng thì tức là GPU đang được dùng (ví dụ khi chạy SXT có thể thấy nhân CUDA vọt lên mức sử dụng 87%); còn nếu nhân CUDA hoàn toàn không nhúc nhích thì là chưa đụng tới GPU.

Thử nghiệm hiệu năng thực tế
CPU cao cấp vs GPU tầm trung thấp
Nhiều người hay hỏi: CPU đủ mạnh rồi thì có cần card đồ họa nữa không? Tôi đã cho một CPU cao cấp dòng phổ thông (AMD R9-7950X) đọ với một card đồ họa tầm trung thấp dòng phổ thông (RTX 3060 12G), phần mềm là PI 1.8.9-1, SXT 2.05 AI 11 lite:
- Ảnh nhóm thứ nhất M1 (14.75MP): tách sao bằng CPU 1 phút 45 giây; tách sao bằng GPU 10,2 giây.
- Ảnh nhóm thứ hai Webb NGC 3372 (123MP): tách sao bằng CPU 12 phút 31 giây; tách sao bằng GPU 1 phút 05 giây.
Có thể thấy hai quy luật: ảnh càng lớn thì hiệu quả tăng tốc GPU càng rõ; và ngay cả khi đem CPU cao cấp đọ với GPU tầm trung thấp, CPU vẫn phải mất ít nhất gấp mười lần thời gian của GPU mới xong cùng một việc. Nếu CPU của bạn không phải mẫu cao cấp thì khoảng cách chỉ càng lớn. Vì vậy, chỉ cần quy trình làm việc của bạn phải dùng đi dùng lại các process AI, tôi rất khuyến khích sắm ít nhất một card đồ họa RTX dòng 30 tầm trung thấp.

Chỉ cập nhật phần mềm CUDA cũng đã nhanh thêm gần gấp đôi
Còn một phát hiện đáng kinh ngạc nữa. Khoảng hơn một năm trước, tôi lần đầu bật tăng tốc CUDA trên chiếc laptop dùng card RTX 3060 Laptop; hơn một năm sau, trong khi hoàn toàn không thay bất kỳ phần cứng tính toán nào (laptop thì cũng chẳng thay được), tôi chỉ cập nhật các phần mềm liên quan rồi đo lại bằng đúng tấm ảnh cũ, vậy mà tốc độ nhanh lên gần gấp đôi.
Lấy việc tách sao cho ảnh 120 megapixel làm ví dụ (PI 1.8.9-1, SXT 2.05 AI 11 lite, RTX 3060 Laptop 6GB):
- Cấu hình CUDA một (CUDA 11.2.2, TensorFlow 2.6, cuDNN 8.2.1): khoảng 2,5 phút.
- Cấu hình CUDA hai (CUDA 11.8, TensorFlow 2.9, cuDNN 8.7, ZLib DLL x64 1.2.3): chỉ 1 phút 20 giây.
Vậy nên các bạn đã cài CUDA từ sớm mà sau đó không cập nhật lại, nhớ cập nhật phần mềm CUDA; có thể tham khảo bộ “cấu hình hai” ở trên, coi như nhặt được một nửa hiệu năng miễn phí.

Card đồ họa bản máy bàn vs bản laptop
Trong tay tôi vừa hay có cả hai card RTX 3060 12G và RTX 3060 Laptop 6G; thời gian tách sao dưới cùng một phiên bản phần mềm:
- RTX 3060 12G: 1 phút 4 giây;
- RTX 3060 Laptop 6G: 1 phút 20 giây.
Hai card dùng cùng một loại chip, chỉ khác nhau ở dung lượng bộ nhớ và thiết kế điện năng của bản máy bàn/bản laptop, nên thời gian tách sao chênh nhau không nhiều. Xét về hiệu năng trên giá tiền, một chiếc laptop gaming có card đồ họa NVIDIA (giá thời đó khoảng 30.000 đô la Đài Loan) là lựa chọn khá hời.

Ngay cả card đào coin cũ cũng thấy rõ khác biệt
Ở nhà tôi có một máy tính cũ ráp cách đây chừng bốn năm (AMD R5-3600), card đồ họa nguyên bản (R9-270) đã gần hết tuổi thọ. Tôi mua trên mạng một card đào coin giá chưa tới 3.000 đô la Đài Loan — NVIDIA GTX 1660s — rồi lắp lên máy thử tách sao cho ảnh full frame (khoảng 60 megapixel):
- Chỉ CPU: 5 phút 40 giây;
- GPU: 51 giây;
chênh nhau khoảng 6,6 lần. Dù số nhân CUDA của 1660s chỉ hơn một nghìn bốn trăm, thời gian tiết kiệm được vẫn rất đáng kể. Chỉ cần bạn phải chạy đi chạy lại những thao tác như tách sao, khử nhiễu bằng AI, làm sắc nét bằng AI thì tăng tốc GPU là khoản đầu tư rất xứng đáng.

Khác biệt giữa các nền tảng
Hệ điều hành và phần cứng khác nhau thì mức hỗ trợ việc các process AI có dùng được tăng tốc GPU hay không cũng không giống nhau. Tôi từng tổng hợp tình hình của ba nền tảng Windows, Mac và Linux (một phần kết quả thử nghiệm trên Mac do một người bạn cùng đam mê cung cấp):
- Windows + NVIDIA: chỉ cần thiết lập xong là có thể gọi CUDA để tăng tốc GPU cho toàn bộ SXT, BXT, NXT, StarNet.
- Mac chạy Apple Silicon (như M1 / M1 Ultra): BXT và NXT không cần thiết lập gì cũng tự động gọi Metal để dùng tăng tốc GPU; SXT khi chạy chỉ chiếm một phần tài nguyên CPU, không đụng tới GPU; còn StarNet 2 thì phải chuyển sang bản thử nghiệm trên trang web chính thức (chỉ có chế độ dòng lệnh CLI) mới dùng được tăng tốc GPU.
- Mac bản Intel: StarNet chỉ dùng được CPU; còn SXT, BXT, NXT thì dùng được tăng tốc GPU, kể cả với GPU của AMD cũng vẫn chạy được.
Trên nền tảng Apple Silicon, các process như SXT vốn hỗ trợ tăng tốc GPU ngay từ gốc nên hiệu năng gần như ngang ngửa với “Windows + tăng tốc CUDA của NVIDIA”. Còn với hệ thống Linux trên PC thì cũng có thể gọi GPU để tăng tốc tính toán.

Kết lại
Nhìn lại thay đổi của mấy năm qua: tăng tốc GPU đã đi từ kiểu thiết lập hardcore “bỏ ra mấy tiếng đồng hồ để ghép cho khớp các phiên bản CUDA” đến chỗ “PI làm sẵn, một cú nhấp chuột là xong”; số process được tăng tốc ngày càng nhiều, đến cả card đào coin cũ giá vài trăm đô la Đài Loan cũng đem lại tốc độ nhanh gấp mấy lần. Nếu quy trình làm việc của bạn phụ thuộc nặng vào các process AI thì một card đồ họa NVIDIA tầm trung thấp (hoặc một chiếc Mac chạy Apple Silicon) gần như là thứ bắt buộc phải có.