apple m芯片的深度学习框架 MLX 安装

概述

二手淘到一个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="" 是为了确保构建脚本不强制要求并行构建,允许系统默认行为,同时避免潜在的并行构建问题。这种做法为不同开发者提供了更灵活的选择,并且能更好地适应不同的开发环境。
posted @ 2024-09-14 15:35  立体风  阅读(112)  评论(0编辑  收藏  举报