概述
二手淘到一個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=""
是為了確保構建指令碼不強制要求並行構建,允許系統預設行為,同時避免潛在的並行構建問題。這種做法為不同開發者提供了更靈活的選擇,並且能更好地適應不同的開發環境。