概述
二手淘到一个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 [email protected]: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 [email protected]: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=""
是为了确保构建脚本不强制要求并行构建,允许系统默认行为,同时避免潜在的并行构建问题。这种做法为不同开发者提供了更灵活的选择,并且能更好地适应不同的开发环境。