
當我們在開發AI應用程式的時候, 常常會使用到onnx, ONNX 是一種開放標準格式,允許不同深度學習框架(如 PyTorch、TensorFlow、Scikit-learn)之間互通,使模型可以在不同平台上運行,而 ONNX Runtime 則是一個高效能的推理引擎,專門用來加速 ONNX 模型的執行。
📖 故事的起點
而我們通常搭配的開發程式語言會是Python, 面對於發布到客戶端時, 為了減少環境上的差異, 通常會使用Docker來封裝, 今天我們選用的Docker Image是python:3.11-alpine, 結果發現在進行 pip install onnxruntime
時發生以下的錯誤:
ERROR: Could not find a version that satisfies the requirement onnxruntime==1.21.0 (from versions: none)
ERROR: No matching distribution found for onnxruntime==1.21.0
這究竟是怎麼回事呢?
🤖 讓AI告訴您原因
Alpine Linux 使用 musl 而非 glibc,而 onnxruntime 只提供 glibc 版本的二進制輪子(wheel)。因此,當你在 alpine 上執行 pip install onnxruntime 時,它找不到適用的預編譯版本,導致安裝失敗。
🤔 我們可以怎麼做呢?
我們可以嘗試將Docker Image換成 python:3.11-slim, 由於我們需要 較好的相容性,可以直接安裝 onnxruntime
、tensorflow
、pytorch
等 C/C++ 依賴重的 Python 套件。
🛠️ 動手試試看
docker run -it --rm python:3.11-slim sh
pip install onnxruntime==1.21.0
太棒了! 安裝成功, 大功告成…。
結論
我們開發程式不只是要把程式寫出來, 更是要懂的如何將自己的程式完整的打包, 讓使用我們系統的人無痛安裝, 這中間是非常不容易的, 幸虧Docker的出現(【Docker 容器化】初探微服務時代的虛擬化技術),讓我們的封裝工作更加簡單, 但仍有一些環境問題也是需要作業系統相關知識的唷! 沒關係! 遇到問題讓我們一起解決, 歡迎加入「阿Han的沙龍頻道」讓我們一起交流學習!