Python: Sửa lỗi: AssertionError: torch not compiled with CUDA enabled
Giải phóng thời gian, khai phóng năng lực
Xảy ra lỗi AssertionError: torch not compiled with CUDA enabled là do sử dụng cú pháp kích hoạt GPU cuda trên PyTorch thông thường (chỉ dành cho CPU). Có nhiều tình huống mà bạn có thể gặp lỗi này. Đôi khi hỗ trợ CUDA rõ ràng và có thể nhìn thấy. Điều này rất dễ khắc phục bằng cách làm cho nó sai hoặc loại bỏ giống nhau. Nhưng trong một số trường hợp, nó đang gián tiếp gọi Cuda mà rõ ràng là không nhìn thấy được. Do đó, chúng ta cần hiểu hoạt động bên trong của tham số hoặc hàm gây ra sự cố. Trong bài viết này ta sẽ tìm hiểu một số giải pháp khắc phục phổ biến.
Các giải pháp
Giải pháp 1: Chuyển từ CUDA sang phiên bản thường
Thông thường, trong khi biên dịch bất kỳ mạng nơ-ron (neural network) nào trong PyTorch, chúng ta có thể chuyển kích hoạt cuda. Nếu chúng ta chỉ đơn giản là loại bỏ nó, nó sẽ loại bỏ lỗi. Trong ví dụ dưới đây, nếu bạn đang sử dụng một mẫu cú pháp tương tự thì hãy xóa Cuda trong khi biên dịch mạng nơ-ron.
from torch import nn net = nn.Sequential( nn.Linear(18*18, 80), nn.ReLU(), nn.Linear(80, 80), nn.ReLU(), nn.Linear(80, 10), nn.LogSoftmax() ).cuda()
Sửa thành:
from torch import nn net = nn.Sequential( nn.Linear(18*18, 80), nn.ReLU(), nn.Linear(80, 80), nn.ReLU(), nn.Linear(80, 10), nn.LogSoftmax() )
Giải pháp 2: Cài đặt Pytorch hỗ trợ cuda
Sử dụng bất kỳ lệnh nào dưới đây:
conda
conda install pytorch==1.11.0 torchvision==0.12.0 torchaudio==0.11.0 cudatoolkit=11.3 -c pytorch
pip
pip install torch==1.11.0+cu113 torchvision==0.12.0+cu113 torchaudio==0.11.0 --extra-index-url https://download.pytorch.org/whl/cu113
Giải pháp 3: đặt pin_memory=False
Đây là một trong những danh mục giống nhau mà CUDA không hiển thị trực tiếp. Nhưng bên trong nếu nó là True thì nó sao chép các tensor vào không gian CUDA để xử lý. Để tránh điều tương tự, chúng ta phải đặt nó thành False. Theo mặc định thì nó được đặt là True. Do đó, ta cần đặt nó thành False khi sử dụng hàm get_iterator trong lớp DataLoader.
Lỗi tương tự
Có rất nhiều lỗi có giải pháp tương tự nhưng do thông số kỹ thuật được thêm vào nên có vẻ hơi khác. Do đó để tránh nhầm lẫn, dưới đây sẽ là một số lỗi tương tự:
- Thông số nền tảng (Platform specification): Lỗi này có giải pháp chung với hầu hết các nền tảng như win10, mac, linux, v.v.
- Mô-đun bổ sung (Addition Module): Đôi khi ta gặp lỗi này trong mô-đun trung gian như detectron2, v.v. Nhưng giải pháp sẽ chung chung trong mọi trường hợp.
Lợi ích của CUDA với Torch
CUDA là framework xử lý song song cung cấp giao diện ứng dụng để xử lý tiện ích card đồ họa của hệ thống. Trong hoạt động phức tạp như đào tạo mô hình học sâu, nơi chúng ta phải chạy các hoạt động như lan truyền ngược, thì ta cần đa xử lý. GPU cung cấp hỗ trợ tuyệt vời cho đa xử lý mà chúng ta cần CUDA (NVIDA). PyTorch hoặc Tensorflow hoặc bất kỳ framework học tập sâu nào khác yêu cầu xử lý GPU để có hiệu suất cao. Mặc dù nó hoạt động tốt với CPU trong trường hợp tập dữ liệu nhỏ, ít epoch hơn, v.v. Nhưng thông thường, tập dữ liệu cho bất kỳ thuật toán hiện đại nào thường có khối lượng lớn. Do đó, chúng ta cần CUDA với PyTorch (Ràng buộc Python của Torch).
Giải phóng thời gian, khai phóng năng lực