Python3.11二進位制AI專案程式打包為蘋果Mac App(DMG)-應用程式pyinstaller製作流程(AppleSilicon)

刘悦的技术博客發表於2024-08-25

眾所周知,蘋果MacOs系統雖然貴為Unix核心系統,但由於系統不支援N卡,所以如果想在本地跑AI專案,還需要對相關的AI模組進行定製化操作,本次我們演示一下如何將基於Python3.11的AI專案程式打包為MacOS可以直接執行的DMG安裝包,可以蘋果系統中一鍵執行AI專案。

MacOs本地部署AI專案

首先確保本地已經安裝好 arm 核心的Python3.11程式,可以在Python官網進行下載和安裝:python.org

這裡以快手團隊著名的表情遷移專案 LivePortrait 為例子,首先克隆快手團隊官方的專案:

git clone https://github.com/KwaiVGI/LivePortrait.git

進入專案的目錄:

cd LivePortrait

安裝基於Mac系統的相關依賴:

# for macOS with Apple Silicon users  
pip install -r requirements_macOS.txt

隨後修改app.py檔案,在程式碼上方加入環境變數的設定:

# coding: utf-8  
  
"""  
The entrance of the gradio for human  
"""  
  
import os  
os.environ["PYTORCH_ENABLE_MPS_FALLBACK"] = "1"

PYTORCH_ENABLE_MPS_FALLBACK=1 這個環境變數用於 PyTorch 中的 MPS(Metal Performance Shaders)加速功能。

MPS 是蘋果公司為 macOS 和 iOS 裝置提供的圖形處理單元 (GPU) 框架,可以加速機器學習模型的訓練和推理。

PYTORCH_ENABLE_MPS_FALLBACK=1 表示啟用 MPS 回退功能。當 PyTorch 檢測到裝置支援 MPS 時,它會優先使用 MPS 進行加速。如果 MPS 無法使用,它會回退到 CPU 上執行。
簡而言之,設定這個環境變數可以幫助 PyTorch 在支援 MPS 的裝置上利用 GPU 加速,並在不支援 MPS 的裝置上正常執行。

如果不單獨設定這個變數,啟用推理的時候會報錯。

隨後,啟動推理頁面進行測試:

python3 app.py

注意,由於xpose暫不支援mps推理,所以mac版本不支援動物表情驅動,只支援人物的表情驅動。

如果推理沒有問題,那麼可以開始進行打包操作了。

MacOs本地打包AI專案

首先,安裝pyinstaller庫:

pip3 install -U pyinstaller

隨後,建立 app.spec 專案配置檔案:

# -*- mode: python ; coding: utf-8 -*-  
import sys  
sys.setrecursionlimit(5000)  
from PyInstaller.utils.hooks import collect_data_files  
  
datas = []  
datas += collect_data_files('gradio_client')  
datas += collect_data_files('gradio')  
  
  
  
a = Analysis(  
    ['app.py',  
      
      
    ],  
    pathex=['/Users/liuyue/Downloads/LivePortrait_For_Mac'],  
    binaries=[],  
    datas=datas,  
    hiddenimports=[],  
    hookspath=[],  
    hooksconfig={},  
    runtime_hooks=[],  
    excludes=[],  
    noarchive=False,  
    optimize=0,  
    module_collection_mode={ 'gradio': 'py'}  
)  
pyz = PYZ(a.pure)  
  
exe = EXE(  
    pyz,  
    a.scripts,  
    [],  
    exclude_binaries=True,  
    name='LivePortrait',  
    icon='AnyConv.com__paints_logo.icns',  
    debug=False,  
    bootloader_ignore_signals=False,  
    strip=False,  
    upx=True,  
    console=True,  
    disable_windowed_traceback=False,  
    argv_emulation=False,  
    target_arch=None,  
    codesign_identity=None,  
    entitlements_file=None,  
)  
  
a.datas += Tree('./pretrained_weights', prefix='pretrained_weights')  
  
  
  
coll = COLLECT(  
    exe,  
    a.binaries,  
    a.datas,  
    strip=False,  
    upx=True,  
    upx_exclude=[],  
    name='LivePortrait',  
)

這裡按照 pyinstaller 官方文件對專案的入口檔案,依賴檔案,三方目錄等進行宣告。

接著執行打包命令:

pyinstaller webui.spec

程式返回:

98124 INFO: Rewriting the executable's macOS SDK version (13.1.0) to match the SDK version of the Python library (12.1.0) in order to avoid inconsistent behavior and potential UI issues in the frozen application.  
98125 INFO: Re-signing the EXE  
98243 INFO: Building EXE from EXE-00.toc completed successfully.  
98244 INFO: checking Tree  
98244 INFO: Building Tree because Tree-00.toc is non existent  
98244 INFO: Building Tree Tree-00.toc  
98265 INFO: checking COLLECT  
98266 INFO: Building COLLECT because COLLECT-00.toc is non existent  
98266 INFO: Building COLLECT COLLECT-00.toc  
108930 INFO: Building COLLECT COLLECT-00.toc completed successfully.

代表打包成功,在專案的 dist 目錄下會生成可執行程式:

雙擊 LivePortrait 圖示進行測試即可。

至此,程式就打包好了。

MacOs本地構建DMG安裝包

隨後,執行磁碟工具,新建一個磁碟檔案:

注意格式必須是 mac os 擴充套件(日誌式),體積需要大於2G

接著把剛才打包好的專案檔案複製到新建的磁碟中即可。

隨後推出磁碟,點選映像-》轉換,對磁碟檔案進行壓縮。

最後我們得到一個壓縮好的DMG安裝檔案:

➜  mac ll  
total 5328720  
-rw-r--r--@ 1 liuyue  staff   2.5G  8 20 19:49 LivePortrait(已轉換).dmg

在別的Mac電腦中雙擊安裝包開啟執行即可。

至此我們就走完了整個MacOS的AI專案程式製作流程,最後,奉上打包好的程式檔案,與眾鄉親同饗:

新版LivePortrait整合包(蘋果MacOsAppleSilicon)圖片引擎 https://pan.quark.cn/s/53c24cd845b9

相關文章