cuML - RAPIDS ML算法
项目描述
cuML Python包
此文件夹包含cuML算法和ML原语(在Python cuML包中分发)的Python和Cython代码。
内容
构建配置
构建系统使用setup.py进行配置和构建。
cuML的setup.py可以通过环境变量和命令行参数进行配置。
环境变量是
环境变量 | 可能的值 | 未设置时的默认行为 | 行为 |
---|---|---|---|
CUDA_HOME | path/to/cuda_toolkit | 通过nvcc 的位置推断 |
允许手动指定CUDA工具包位置的可选变量。 |
CUML_BUILD_PATH | path/to/libcuml_build_folder | 在 path_to_cuml_repo/cpp/build 路径中查找 | 可选变量,允许手动指定 libcuml++ 构建文件夹的位置。 |
RAFT_PATH | path/to/raft | 如果未找到,将在 path_to_cuml_repo/cpp/build 中查找并克隆 | 可选变量,允许手动指定 RAFT 仓库的位置。 |
命令行参数(例如,在调用时与 setup.py
一起传递,例如 setup.py --singlegpu
)是
参数 | 行为 |
---|---|
clean --all | 清除所有 Python 和 Cython 生成物,包括 pycache 文件夹、cythonization 后生成的 .cpp 文件和编译扩展。 |
--singlegpu | 在不使用多 GPU 算法的情况下构建 cuML 的选项。移除对 nccl、libcumlprims 和 ucx-py 的依赖。 |
cuml.raft中的RAFT集成
RAFT 的 Python 和 Cython 位于 RAFT 仓库 中。它被设计为包含在项目中,而不是单独分发,因此在构建时,setup.py 将从 cuML 创建一个符号链接,cuML 位于 /python/cuml/raft/
,指向 RAFT 的 Python 文件夹。
对于需要修改 RAFT 代码的开发者,请参阅 RAFT 开发者指南 获取建议。
在构建时配置 RAFT
- 如果环境变量
RAFT_PATH
指向 RAFT 仓库,则将使用该仓库。 - 如果已经有一个包含 RAFT 的 libcuml 构建文件夹,setup.py 将使用该 RAFT。此位置可以通过环境变量 CUML_BUILD_PATH 进行配置。
- 如果以上都没有发生,则 setup.py 将克隆 RAFT 并直接使用。
RAFT Python 代码被包含在 cuML 构建和可分发生成物中,就像它始终存在于 cuML 的文件夹结构中一样。
构建需求
cuML 的方便 开发 yaml 文件 包含构建 cuML 所需的所有依赖项。
要构建 cuML 的 Python 包,需要以下依赖项
- 与系统 CUDA 工具包对应的 cudatoolkit 版本
- cython >= 0.29, < 0.30
- numpy
- cmake >= 3.14
- 与 cuML 版本匹配的 cudf 版本
- 与 cuML 版本匹配的 libcuml 版本
- libcuml={{ version }}
- cupy>=7.8.0,<12.0.0a0
- joblib >=0.11
多 GPU 算法所需的包*
- 与 cuML 版本匹配的 libcumlprims 版本
- 与 cuML 版本匹配的 ucx-py 版本
- 与 cuML 版本匹配的 dask-cudf 版本
- nccl>=2.5
- 与 cuML 版本匹配的 rapids-dask-dependency 版本
- 可以使用
--singlegpu
参数标志来避免这些。
Python测试
Python 测试基于 pytest 库。要运行它们,从 path_to_cuml/python/
文件夹中,只需输入 pytest
。