windows下編譯tflite-runtime

小AT發表於2024-04-09

windows下編譯tflite-runtime

背景

需要用到keras訓練的模型,但完整的tf包,在windows下大約有1G,使用pyinstaller打包後,生成的exe大概450mb,太大,查官方資料發現有tfruntime,據說用於嵌入式,想來體積較小。但win環境下沒有編譯好的whl包

環境配置

  1. 安裝msys2: https://www.msys2.org/,完成後安裝必要的包 , 注意第一行的命令執行完成後,終端會關閉,重新開啟一個終端,再貼上執行第二行命令即可。

    pacman -Syu
    pacman -S git patch unzip rsync
    
  2. 安裝cmake:https://cmake.org/download/, 注意新增到環境變數PATH

  3. 安裝VS2022的生成工具或VS2022,注意安裝c++的生成工具,安裝VS2022生成工具,已經安裝VS2022則可以跳過

  4. 安裝bazelisk,choco install bazelisk , 當然choco需要事先安裝(請自行搜尋)

  5. 下載並安裝LLVM到目錄C:/Program Files/LLVM中(本文用的x64版)

  6. 安裝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
    

開始編譯

  1. 下載原始碼: git clone https://github.com/tensorflow/tensorflow.git

  2. 下載原始碼:https://github.com/tensorflow/tensorflow/archive/refs/tags/v2.16.1.zip並解壓到f盤的github資料夾中

  3. 開啟VS2022的命令列編譯環境,本機的是:"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat"

  4. 修改對應的路徑,並執行下列命令

    "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
    

遇到的問題:

image-20240407001937947 解決方案:找到bazel.exe,在屬性中選中以管理員身份執行。然而好像沒什麼用,後續做了兩處修改解決了問題:

  1. 最終是指定的python的位置

  2. 修改配置檔案image-20240407004859488

  3. 複製一份python.exe到python3.exe

image-20240407003950987

新的錯誤:

image-20240407005036419

​ 解決方案:image-20240407005146096

image-20240407005314512image-20240407005508031

編譯成功

image-20240407005613531

參考資料

  1. https://www.msys2.org/
  2. Build TensorFlow Lite Python Wheel Package https://www.tensorflow.org/lite/guide/build_cmake_pip
  3. https://www.tensorflow.org/lite/guide/build_cmake
  4. 重點資料:https://www.tensorflow.org/install/source_windows
  5. 重點資料:"F:\github\tensorflow-2.16.1\tensorflow\lite\tools\pip_package\README.md"

相關文章