windows下編譯tflite-runtime
背景
需要用到keras訓練的模型,但完整的tf包,在windows下大約有1G,使用pyinstaller打包後,生成的exe大概450mb,太大,查官方資料發現有tfruntime,據說用於嵌入式,想來體積較小。但win環境下沒有編譯好的whl包
環境配置
-
安裝msys2: https://www.msys2.org/,完成後安裝必要的包 , 注意第一行的命令執行完成後,終端會關閉,重新開啟一個終端,再貼上執行第二行命令即可。
pacman -Syu pacman -S git patch unzip rsync
-
安裝cmake:https://cmake.org/download/, 注意新增到環境變數
PATH
中 -
安裝VS2022的生成工具或VS2022,注意安裝c++的生成工具,安裝VS2022生成工具,已經安裝VS2022則可以跳過
-
安裝bazelisk,
choco install bazelisk
, 當然choco需要事先安裝(請自行搜尋) -
下載並安裝LLVM到目錄
C:/Program Files/LLVM
中(本文用的x64版) -
安裝Conda(非必須,但推薦),目標:可根據需要指定python版本,並同時管理虛擬環境,很方便, 使用下列命令新建虛擬環境,並安裝必要的包:
conda create -n tflite python=3.11 conda activate tflite pip3 install -U pip pip3 install -U six numpy wheel packaging pip3 install -U keras_preprocessing --no-deps
開始編譯
-
下載原始碼:
git clone https://github.com/tensorflow/tensorflow.git
-
下載原始碼:https://github.com/tensorflow/tensorflow/archive/refs/tags/v2.16.1.zip並解壓到f盤的
github
資料夾中 -
開啟VS2022的命令列編譯環境,本機的是:
"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat"
-
修改對應的路徑,並執行下列命令
"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat" set PATH=C:\Users\Ice\.conda\envs\tflite\;%PATH% set PATH=C:\Users\Ice\.conda\envs\tflite\Scripts;%PATH% set PYTHON_BIN_PATH=C:\Users\Ice\.conda\envs\tflite/python.exe set PYTHON_LIB_PATH=C:\Users\Ice\.conda\envs\tflite\lib/site-packages set PYTHON_DIRECTORY=C:\Users\Ice\.conda\envs\tflite\Scripts set Bazel_LLVM=C:/Program Files/LLVM set PATH=C:/Program Files/LLVM/bin;%PATH% set BAZEL_SH=C:/msys64/usr/bin/bash.exe conda activate tflite set PATH=C:/msys64/usr/bin\;%PATH% cd /d F:\github\tensorflow-2.16.1 bash tensorflow/lite/tools/pip_package/build_pip_package_with_bazel.sh windows
遇到的問題:
問題1 無法建立Symlink
解決方案:找到bazel.exe,在屬性中選中以管理員身份執行。然而好像沒什麼用,後續做了兩處修改解決了問題:
-
最終是指定的python的位置
-
修改配置檔案
-
複製一份python.exe到python3.exe
新的錯誤:
解決方案:
編譯成功
參考資料
- https://www.msys2.org/
- Build TensorFlow Lite Python Wheel Package https://www.tensorflow.org/lite/guide/build_cmake_pip
- https://www.tensorflow.org/lite/guide/build_cmake
- 重點資料:https://www.tensorflow.org/install/source_windows
- 重點資料:"F:\github\tensorflow-2.16.1\tensorflow\lite\tools\pip_package\README.md"