oneDNN

開源深度學習運算優化庫(矩陣乘法、卷積、注意力機制)|支援 CPU(x64、AArch64、RISC-V)及 Intel GPU|為 PyTorch、TensorFlow、OpenVINO、ONNX Runtime 所採用。

oneDNN 是什麼?

開源深度學習運算優化庫(矩陣乘法、卷積、注意力機制),支援 CPU(x64、AArch64、RISC-V)及 Intel GPU。適用於 PyTorch、TensorFlow、OpenVINO 與 ONNX Runtime。

oneDNN 概覽

這是什麼

oneDNN 是一個開源、跨平台的深度學習運算最佳化函式庫,適用於 CPU 與 GPU。它提供高度最佳化的矩陣乘法、卷積、注意力機制、正規化等運算實作。此函式庫針對 Intel 64/AMD64 架構處理器、Arm 64 位元架構 (AArch64) 處理器以及 Intel 顯示晶片進行最佳化。實驗性支援 NVIDIA GPU、AMD GPU、OpenPOWER Power ISA (PPC64)、IBMz (s390x) 與 RISC-V。oneDNN 是 PyTorch、TensorFlow、OpenVINO 及許多其他 AI 框架的加速層。

主要功能

  • 單一 API,多種裝置:同一份程式碼可支援 Intel64/AMD64、AArch64、RISC-V CPU 以及 Intel GPU。
  • 硬體特化:在執行時期偵測硬體功能,並即時產生針對指令集、核心數與快取大小最佳化的核心。
  • 低精度推論:支援 f32、bf16、f16、fp8、fp4、u8/s8 與 u4/s4 資料型態,並提供多種量化方案,包含 OCP 微縮格式。
  • 運算融合:後處理運算可將激活函數、殘差連接與量化融合至矩陣乘法與卷積中。Graph API 可融合更大的模式,例如縮放點積注意力 (SDPA) 與分組查詢注意力 (GQA)。
  • 互通性:在 CPU 上支援 OpenMP、TBB 與自訂執行緒池。在 GPU 上支援 SYCL 與 OpenCL。

使用情境

oneDNN 適用於希望在 CPU 與 GPU 上提升應用程式效能的深度學習應用程式與框架開發者。它被以下框架使用:Apache SINGA、DeepLearning4J、Flashlight、llama.cpp、ONNX Runtime、OpenNMT CTranslate2、OpenVINO 工具組、PaddlePaddle、PyTorch 與 TensorFlow。

快速開始

從 conda-forge 安裝預先建置的 oneDNN: sh conda install -c conda-forge onednn 建置並執行矩陣乘法效能範例: sh wget https://raw.githubusercontent.com/uxlfoundation/oneDNN/main/examples/matmul_perf.cpp https://raw.githubusercontent.com/uxlfoundation/oneDNN/main/examples/example_utils.hpp g++ matmul_perf.cpp -I$CONDA_PREFIX/include -L$CONDA_PREFIX/lib -ldnnl -o matmul_perf LD_LIBRARY_PATH=$CONDA_PREFIX/lib ./matmul_perf cpu

授權與價格

採用 Apache-2.0 授權。開放原始碼。

內容整理自該專案公開的 README 與儲存庫資訊。

將此徽章加入你的 README

Featured on YunoDB 徽章樣式與說明

你是這個專案的維護者嗎?展示它已收錄於 YunoDB。

Markdown[![Featured on YunoDB](https://yunodb.com/badge/uxlfoundationonednn.svg)](https://yunodb.com/tools/uxlfoundationonednn?utm_source=github&utm_medium=badge)
HTML<a href="https://yunodb.com/tools/uxlfoundationonednn?utm_source=github&utm_medium=badge"><img src="https://yunodb.com/badge/uxlfoundationonednn.svg" alt="Featured on YunoDB" height="20"></a>