apple m晶片的深度學習框架 MLX 安裝

立体风發表於2024-09-14

概述

二手淘到一個M1 MAX 64g 512g 的 apple studio 。看了一下專為它開發的框架 MLX,還有一堆例子。
在官方網站的幫助檔案中,找到了安裝方法。

官網安裝

Python API

To build and install the MLX python library from source, first, clone MLX from its GitHub repo:

git clone git@github.com:ml-explore/mlx.git mlx && cd mlx

Then simply build and install MLX using pip:

CMAKE_BUILD_PARALLEL_LEVEL="" pip install .

For developing, install the package with development dependencies, and use an editable install:

CMAKE_BUILD_PARALLEL_LEVEL="" pip install -e ".[dev]"

Once the development dependencies are installed, you can build faster with:

CMAKE_BUILD_PARALLEL_LEVEL="" python setup.py build_ext -j --inplace

Run the tests with:

python -m unittest discover python/tests

Optional: Install stubs to enable auto completions and type checking from your IDE:

python setup.py generate_stubs

理解

這段文字和程式碼提供瞭如何從原始碼構建、安裝和開發 MLX Python 庫的詳細步驟,包括測試和 IDE 支援。以下是逐步解讀:

1. 克隆程式碼庫並進入專案目錄

git clone git@github.com:ml-explore/mlx.git mlx && cd mlx
  • 從 GitHub 倉庫透過 SSH 克隆 MLX 的原始碼到本地 mlx 目錄中。
  • cd mlx 進入下載後的專案目錄,準備進行構建和安裝。

2. 使用 pip 構建並安裝 MLX

CMAKE_BUILD_PARALLEL_LEVEL="" pip install .
  • 使用 pip 安裝當前目錄(mlx)下的 MLX 庫。
  • CMAKE_BUILD_PARALLEL_LEVEL="" 用於設定並行構建的級別。這裡沒有指定,所以預設按單執行緒構建。

3. 安裝開發依賴項並使用可編輯安裝

CMAKE_BUILD_PARALLEL_LEVEL="" pip install -e ".[dev]"
  • 該步驟為開發環境準備。-e 代表可編輯安裝,意味著程式碼改動可以立刻生效,無需重新安裝。
  • "."[dev] 表示除了主庫外,還安裝開發依賴項,比如測試工具、靜態分析工具等。

4. 更快的本地構建

CMAKE_BUILD_PARALLEL_LEVEL="" python setup.py build_ext -j --inplace
  • 這個命令用於更快地編譯和構建擴充套件模組。-j 表示並行構建,允許同時使用多個核心進行構建。--inplace 將編譯的結果直接放在原始碼目錄中,而不是單獨生成一個構建目錄。

5. 執行測試

python -m unittest discover python/tests
  • 使用 Python 自帶的 unittest 模組執行測試。
  • discover 會自動查詢 python/tests 目錄下的所有測試用例並執行,確保庫的功能符合預期。

6. 可選:安裝 stubs 以支援 IDE 自動補全和型別檢查

python setup.py generate_stubs
  • generate_stubs 生成 stubs 檔案(型別提示資訊),這對 IDE 很有用,可實現程式碼補全和型別檢查等功能,使開發更加流暢。

總結:

  • 這段步驟涵蓋了如何從原始碼安裝 MLX 庫、設定開發環境、進行快速本地構建、執行測試以及提升開發體驗(如 IDE 的型別檢查支援)。

問題

環境變數CMAKE_BUILD_PARALLEL_LEVEL="",為什麼是空字元

解答

在上文中,環境變數 CMAKE_BUILD_PARALLEL_LEVEL="" 被設定為空字元,而沒有指定具體的並行級別,可能的原因有以下幾點:

1. 允許系統預設行為

  • CMAKE_BUILD_PARALLEL_LEVEL 是一個控制並行構建時程序數的環境變數。當它被設定為空字元時,相當於不主動指定該變數的值,從而讓系統選擇預設的行為。
  • 如果該變數為空,CMake 可能會使用單執行緒構建,或者根據 CMake 的版本或平臺預設配置選擇一個合適的並行度。

2. 避免覆蓋使用者設定

  • 在某些開發或構建環境中,使用者可能已經全域性設定了 CMAKE_BUILD_PARALLEL_LEVEL,並且希望使用他們自己的設定。
  • 在這種情況下,明確設定 CMAKE_BUILD_PARALLEL_LEVEL="" 可以避免指令碼覆蓋使用者自己定義的並行級別,確保使用者的本地配置不被干擾。

3. 避免潛在構建問題

  • 並行構建在某些系統或專案中可能會引起編譯錯誤或資源衝突。透過不指定並行構建(即留空),可以避免此類問題,特別是在開發環境不確定或專案程式碼未完全最佳化的情況下。
  • 這樣做可以確保即使並行構建存在風險,也不會因為並行設定而引發不可預見的構建問題。

4. 為開發者提供靈活性

  • 如果你是開發者,設定空字元允許你根據具體情況靈活地決定是否要指定並行級別,或者使用其他方式(如命令列引數)來決定構建的並行度。這種情況下,設定空字元相當於不強制要求某個並行級別。

5. 相容性考慮

  • 某些平臺可能對並行構建支援有限,或者配置的資源不足。在這些情況下,留空可能是為了保證跨平臺的構建相容性,不強制使用並行構建。

總結:

  • 設定 CMAKE_BUILD_PARALLEL_LEVEL="" 是為了確保構建指令碼不強制要求並行構建,允許系統預設行為,同時避免潛在的並行構建問題。這種做法為不同開發者提供了更靈活的選擇,並且能更好地適應不同的開發環境。

相關文章