Transformers documentation
Kernels
Kernels
Các thao tác PyTorch mang tính tổng quát. Các nhà cung cấp phần cứng và cộng đồng tạo ra các bản triển khai chuyên dụng chạy nhanh hơn trên các nền tảng cụ thể. Việc cài đặt các kernel tối ưu hóa này là một thách thức vì nó đòi hỏi phải khớp các phiên bản trình biên dịch, bộ công cụ CUDA và các bản build dành riêng cho từng nền tảng.
| nền tảng | các thiết bị được hỗ trợ |
|---|---|
| GPU NVIDIA (CUDA) | Các kiến trúc hiện đại có khả năng tính toán 7.0+ (Volta, Turing, Ampere, Hopper, Blackwell) |
| GPU AMD (ROCm) | Tương thích với các thiết bị hỗ trợ ROCm |
| Apple Silicon (Metal) | Chip dòng M (M1, M2, M3, M4 và mới hơn) |
| GPU Intel (XPU) | Dòng GPU Intel Data Center Max và các thiết bị tương thích |
Kernels giải quyết vấn đề này bằng cách phân phối các binary đã biên dịch sẵn thông qua Hub. Nó phát hiện nền tảng của bạn khi chạy và tự động nạp binary phù hợp.
Khi use_kernels=True, Transformers xác định các lớp có sẵn các triển khai kernel tối ưu. Nó tải xuống và lưu cache các kernel từ Hub chỉ khi cần thiết để giảm thời gian khởi động. Các kernel tăng tốc các thao tác tính toán nặng như attention, normalization và các thao tác đã được hợp nhất (fused operations).
Không phải tất cả các thao tác đều có cài đặt kernel. Thư viện sẽ quay lại sử dụng PyTorch tiêu chuẩn khi không có kernel khả dụng.
Tính tất định
Một số kernel tạo ra kết quả hơi khác so với PyTorch do việc sắp xếp lại các phép toán hoặc các chiến lược tích lũy. Những khác biệt này tương đương về mặt chức năng nhưng ảnh hưởng đến khả năng tái lập.
Để có hành vi tất định, hãy thử các bước sau.
- Xem tài liệu của kho kernel để biết các cam kết về tính tất định. Ví dụ, kernel SDPA trong gpt-oss-metal-kernels khớp với cài đặt PyTorch 97% thời gian.
- Tắt các kernel cụ thể ảnh hưởng đến trường hợp sử dụng của bạn.
- Đặt các hạt ngẫu nhiên và các cờ xác định của PyTorch.
Tài nguyên
- hướng dẫn Tải kernel để bắt đầu
- Kernels kho lưu trữ GitHub
- bài đăng blog Nâng cấp Mô hình của Bạn trong 5 Phút với Hugging Face Kernel Hub