Tensorflow và AVX
Mục lục
1. Lỗi liên quan đến CPU instruction
của tensorflow
- Định cài đặt
tensorflow-gpu
trên con máy già chạyIntel Xeon X5672
và có gắngGTX 1060 3G
để nghịch chút. - Nhưng khi kiểm tra xem có chạy được không:
>>> import tensorflow as tf
Illegal instruction (コアダンプ)
- Vâng, là lỗi run-time - chỉ xảy ra khi chạy, chứ cài thì chưa xuất hiện vấn đề.
2. AVX
là gì
- Ta tìm hiểu một chút về lỗi kể trên, thì hầu hết đề nói rằng: máy sử dụng CPU không hỗ trợ đầy tập lệnh mà tensorflow đang dùng.
- Phổ biến là thiếu là
AVX - Advanced Vector Extension
. - Theo wikipedia:
Advanced Vector Extension là phần mở rộng cho bộ vi xử lý kiến trúc x86 (cả Intel và AMD), được Intel đề xuất năm 2008. Lần đầu tiên được hỗ trợ trên bộ xử lý
Sandy Bridge
năm Q1/2011. Sau đó đến Q3/2011 thì AMD cũng hỗ trợ.AVX
cung cấp tính năng mới cùng các lệnh mới và cấu trúc thực hiện cũng khác.
- Trong đó,
AVX
có giới thiệu một loại phép tính toán gọi làfused multipl-add
(dịch là tổ hợp nhân cộng). Phép tính này giúp làm tăng đáng kể việc tính toán số học như: phép nhân ma trận (dot-product, convolution). Nó có thể làm tăng tốc độ lên gấp 3 với các phép tính kiểu này. - Một nữa, tất cả những điều này chỉ dành cho
CPU
thôi.
3. Tại sao lại dùng nó và không dùng AVX
- Thông thường,
tensorflow
vẫn có thể built được mà không cầnphần mở rộng của CPU
nhưSSE4.1
,SSE4.2
,AVX
,AVX2
,FMA
…etc. Vì như thế sẽ tương thích với nhiềuCPU
nhất có thể. - Và tốc độ của nó so với
GPU
thì ko đáng kể gì. Bởi vậy, với quy mô chạy hơi lớn một chút thì ta nên dùngGPU
.
4. Giải quyết vấn đề lỗi với AVX
như thế nào
- Tải phiên bản cũ từ
1.5
trở về trước:
pip install tensorflow==1.5