TensorFlow XLA加速编译器
TensorFlow XLA加速編譯器
加速線性代數(shù)器(Accelerated linear algebra,XLA)是線性代數(shù)領(lǐng)域的專用編譯器。根據(jù) https://www.tensorflow.org/performance/xla/,它仍處于實(shí)驗(yàn)階段,用于優(yōu)化 TensorFlow 計(jì)算。
XLA 可以提高服務(wù)器和移動(dòng)平臺(tái)的執(zhí)行速度、內(nèi)存使用率和可移植性。提供了雙向 JIT(Just In Time)編譯或 AoT(Ahead of Time)編譯。使用 XLA,可以生成平臺(tái)相關(guān)的二進(jìn)制文件(針對(duì)大量平臺(tái),如 x64、ARM等),可以針對(duì)內(nèi)存和速度進(jìn)行優(yōu)化。
準(zhǔn)備工作
目前,XLA 并不包含在 TensorFlow 的二進(jìn)制版本中。用時(shí)需要從源代碼構(gòu)建它。
從源代碼構(gòu)建 TensorFlow,需要 TensorFlow 版的 LLVM 和 Bazel。TensorFlow.org 僅支持從 macOS 和 Ubuntu 的源代碼構(gòu)建。從源代碼構(gòu)建 TensorFlow 所需的步驟如下(參見https://www.tensorflow.org/install/install_sources):
-
確定要安裝哪個(gè)版本的 TensorFlow——僅支持 CPU 的 TensorFlow 或支持 GPU 的 TensorFlow。
-
復(fù)制 TensorFlow 存儲(chǔ)庫(kù):
-
安裝以下依賴:
? Bazel
? TensorFlow 的 Python 依賴項(xiàng)
? 對(duì)GPU版本,需要NVIDIA軟件包以支持TensorFlow -
配置安裝。需要選擇不同的選項(xiàng),如 XLA、Cuda 支持、Verbs 等:
./configure -
使用 bazel-build。
-
對(duì)于僅使用 CPU 的版本:
-
如果有兼容的 GPU 設(shè)備,并且需要 GPU 支持,請(qǐng)使用:
-
成功運(yùn)行后,獲得一個(gè)腳本:build_pip_package。按如下所示運(yùn)行這個(gè)腳本來構(gòu)建 whl 文件:
-
安裝 pip 包:
現(xiàn)在你已經(jīng)準(zhǔn)備好了。
具體做法
TensorFlow 生成 TensorFlow 圖表。在 XLA 的幫助下,可以在任何新類型的設(shè)備上運(yùn)行 TensorFlow 圖表。
? JIT 編譯:在會(huì)話級(jí)別中打開JIT編譯:
? 這是手動(dòng)打開 JIT 編譯:
? 還可以通過將操作指定在特定的 XLA 設(shè)備(XLA_CPU 或 XLA_GPU)上,通過 XLA 來運(yùn)行計(jì)算:
AoT編譯:獨(dú)立使用 tfcompile 將 TensorFlow 圖轉(zhuǎn)換為不同設(shè)備(手機(jī))的可執(zhí)行代碼。
TensorFlow.org 中關(guān)于 tfcompile 的論述:tfcompile 采用一個(gè)由 TensorFlow 的 feed 和 fetch 概念所標(biāo)識(shí)的子圖,并生成一個(gè)實(shí)現(xiàn)該子圖的函數(shù)。feed 是函數(shù)的輸入?yún)?shù),fetch 是函數(shù)的輸出參數(shù)。所有的輸入必須完全由 feed 指定;生成的剪枝子圖不能包含占位符或變量節(jié)點(diǎn)。通常將所有占位符和變量指定值,這可確保生成的子圖不再包含這些節(jié)點(diǎn)。生成的函數(shù)打包為一個(gè) cc_library,帶有導(dǎo)出函數(shù)簽名的頭文件和一個(gè)包含實(shí)現(xiàn)的對(duì)象文件。用戶編寫代碼以適當(dāng)?shù)卣{(diào)用生成的函數(shù)。
總結(jié)
以上是生活随笔為你收集整理的TensorFlow XLA加速编译器的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 地理围栏API服务开发
- 下一篇: TensorFlow指定CPU和GPU方