-
Notifications
You must be signed in to change notification settings - Fork 4
Description
RAPIDS currently builds conda packages in CI using conda-build. The rattler-build tool is a newer alternative. It is written in Rust, and should be faster than conda-build (I haven't seen any official benchmarks yet, though). It only supports a limited subset of the meta.yaml recipe format, but that subset is designed to still enable all the same features, just with a more limited syntax (see CEPS 13 and 14). conda-build overhead is nontrivial (I've never benchmarked it, but I know it can stretch into multiple minutes beyond the environment solve when doing local CI reproductions), and reducing that would be quite valuable for us in improving our CI turnaround. Moreover, switching to the more restricted syntax described in the above CEPs would be beneficial because it would convert our conda recipes into pure YAML rather than the extended YAML currently used by meta.yaml. That change is important because the YAML extensions currently in our recipe make it impossible to parse or write with standard YAML parsers, which is a big reason why we have struggled to do things like support meta.yaml files in rapids-dependency-file-generator.
We should do a PoC of replacing conda-build with rattler-build in one repo (preferably something reasonably complex like cudf or cugraph) to see what it would take to make this transition, and how much we would benefit.
rattler-build porting progress
- rmm (Port to rattler-build rmm#1796)
- raft (Port all conda recipes to
rattler-buildraft#2623) - cudf (Port all conda recipes to
rattler-buildcudf#18054) - kvikio (Port all conda recipes to
rattler-buildkvikio#678) - cuml (Port all conda recipes to
rattler-buildcuml#6440) (merged 2025-03-20) -
cucim (Port all conda recipes torattler-build& use strict channel priority cucim#864) - cugraph (Port all conda recipes to
rattler-buildcugraph#4999) -
cugraph-ops - cumlprims_mg (https://github.com/rapidsai/cumlprims_mg/pull/237)
-
cuspatial(Port all conda recipes torattler-buildcuspatial#1555) - cuvs (feat(libcuvs): port libcuvs to rattler-build cuvs#751) (merged 2025-03-19)
- cuxfilter (Port all conda recipes to
rattler-buildcuxfilter#669) - dask-cuda (Port all conda recipes to
rattler-builddask-cuda#1460) -
dependency-file-generator - integration (Port all conda recipes to rattler-build integration#772)
-
jupyterlab-nvdashboard -
ptxcompiler - pynvjitlink ( feat(conda): port conda recipe to rattler-build pynvjitlink#137 )
- rapids-cmake (refactor(conda): remove unused conda package and associated CI resources rapids-cmake#810)
-
rapids-build-backend - rapids-dask-dependency (refactor: port conda-build to rattler-build rapids-dask-dependency#93)
-
rapids-metadata - rapidsmpf ( feat: port conda recipes to
rattler-buildrapidsmpf#289 ) - ucx-py (Port all conda recipes to
rattler-builducx-py#1126) - ucxx (Switch from
conda-buildtorattler-builducxx#374) -
wholegraph
Few more:
- nx-cugraph feat(rattler): port conda build recipe to rattler build nx-cugraph#121
- cugraph-gnn feat(rattler): port conda build recipe to rattler build cugraph-gnn#178
- cuopt https://github.com/rapidsai/cuopt/pull/2420
Follow-up work
I'm going to track a few rattler-build followups here and update as they get resolved:
general
Look into rolling the sccache cache-busting fix for -fdebug-prefix-map into rapids-cmake (xref rapidsai/rapids-cmake#798 (comment))
cudf
- Add default build arg generation to
rapids-rattler-channel-string#156 - Follow up and remove extra wrapping quotes in
contextonce Values ofcontextvariables can have different types depending on the underlying shell prefix-dev/rattler-build#1451 is resolved - Follow up and remove
sedworkaround for-fdebug-prefix-maponce Cache build including output version in environment variables is causingsccachemisses prefix-dev/rattler-build#1458 is resolved - Remove
cuda-nvcc-impldependency once it is provided bynumba-cuda(xref [BUG] Add proper dependencies to conda package NVIDIA/numba-cuda#146) - Strip out
secretsandenvfromcudf-polarsrecipe - Test removing
cuda-versionfrom all pure Python packages (xref Properly support building pure Python packages #43) - Confirm
rapids-dask-dependencyisn't needed bycustreamzand then remove it - Figure out if
python-confluent-kafkashould have run exports - Confirm
streamzis only a test dependency ofcustreamzand then remove it
rmm
- Add default build arg generation to
rapids-rattler-channel-string#156 - Follow up and remove extra wrapping quotes in
contextonce Values ofcontextvariables can have different types depending on the underlying shell prefix-dev/rattler-build#1451 is resolved
cuvs
- Relax/extend pin
mkl=2023tomkl>=2023or similar - combine
cuvs-benchandcuvs-bench-cpurecipes
kvikio
- The
libcufiledependencies are an absolute mess and we would probably benefit from adding a few variants at the intersection of architecture and cuda version Port all conda recipes torattler-buildkvikio#678 (comment)