Comments (12)
Taking this on with high priority because cuspatial CI is blocked, and this might help there.
from build-planning.
I don't fully understand how much you need to be rebuilding, but if the answer is "not much" then maybe you could use https://conda.github.io/conda-pack/ or consider building a docker image instead of re-creating the environment each time?
from build-planning.
I am proposing a flag --prepend-channels
for rapids-dependency-file-generator
that will enable a one-step conda environment creation. This would let us use local channels with CI artifacts and would eliminate the second conda solve used to install CI artifacts. rapidsai/dependency-file-generator#67
from build-planning.
consider building a docker image instead of re-creating the environment each time?
This is a possible solution, but we'd need to maintain a separate Docker image for every repository and every test matrix configuration (e.g. a container containing the cuDF Python test environment on ARM using Python 3.9 and CUDA 12.2). I don't think we have the infrastructure to manage that while also ensuring that the conda environments are regularly updated (every night?) for all the possible containers so that we are aware of upstream changes that affect us. The workflows we have today would require an explosively large number of large containers (many of the containers would need to contain an entire CTK installed by conda).
This would also still require us to have a conda environment in that container that is compatible with the CI artifacts that we are installing. This doesn't avoid the "can't downgrade Arrow 15" problem because we must install the CI artifacts (conda packages built from the current PR) into the container.
from build-planning.
The docker repo suffers from a similar problem and it was (partly) mitigated by dynamically editing the environment file: https://github.com/rapidsai/docker/blob/branch-24.04/context/notebooks.sh#L31, so just throwing that out there.
from build-planning.
Once rapidsai/cuml#5781 is merged, do we plan to roll out the same changes to the rest of RAPIDS? IIUC that's what it would take to close this issue.
from build-planning.
Seems reasonable
We may want ensure that we are always getting cached CI packages too, which would close out issue: #14
from build-planning.
@vyasr Yes, my plan is to convert all of RAPIDS to this single-solve approach.
@jakirkham The approach I'm taking in rapidsai/cuml#5781 will pin the major.minor
versions of the packages as shown below. That isn't a full solution for #14 because nightlies of the same major.minor
could still be selected, but it should help constrain the solver and reduce the likelihood of problems. If you have further suggestions please weigh in on #14 or on that cuML PR (if the code suggestions are small) and I'll adopt your proposals in a follow-up change.
test_libcuml:
common:
- output_types: conda
packages:
- libcuml==24.4.*
- libcuml-tests==24.4.*
test_cuml:
common:
- output_types: conda
packages:
- libcuml==24.4.*
- cuml==24.4.*
from build-planning.
Ok it sounds like that is mostly an issue when we are getting close to (or in the midst of) a release. Is that right?
Agree that could be an issue, but that is a much smaller issue than picking up the prior release (especially well after it went out)
from build-planning.
Yeah, I think the problematic case would be something like changing the dependencies of a package in a way that the conda packages from CI artifacts are not compatible with the rest of the testing environment, and the solver chooses recent nightlies instead of the PR artifacts. @charlesbluca proposed we could pin the exact channels like ${CPP_CHANNEL}::libcuml
but we'd have to find a way to insert that channel information into the package's data in dependencies.yaml
since the channel (a local filepath) isn't known ahead of time.
from build-planning.
An additional minor benefit is that this will speed up CI by reducing the number of solves.
from build-planning.
An additional minor benefit is that this will speed up CI by reducing the number of solves.
This might not have a large impact on CI runtime. See rapidsai/cudf#15201 (comment). tl;dr, test startup time is dominated by network activity (downloading multiple GB of packages from RAPIDS and CTK dependencies) and the potential conda solve time savings are comparatively small.
from build-planning.
Related Issues (20)
- Split RAPIDS C++ conda libraries into standardized components
- Evaluate replacing conda-build with rattler-build
- Merge the miniforge-cuda repo into ci-imgs
- Merge the gha-tools repo into ci-imgs HOT 1
- Investigate using micromamba instead of installing miniforge HOT 1
- Use GHA's caching mechanism to save package manager caches between runs HOT 1
- Add CMake presets to RAPIDS repositories
- Simplify and standardize (or replace) build.sh scripts HOT 5
- Treat clobber warnings as errors for conda builds HOT 10
- update `fmt` and `spdlog` across RAPIDS HOT 2
- Fix UCX support for cuML/RAFT in wheels packages HOT 13
- update scikit-build-core floors, set a minimum version, address deprecation warnings HOT 2
- Add support for CI for workflows in repositories that don't follow the traditional RAPIDS branching model HOT 3
- Merge relevant parts of pypi-wheel-scripts into release-scripts HOT 2
- Enable building only some outputs of conda recipes HOT 1
- Remove unused `setuptools` dependencies HOT 1
- Simplify RAPIDS branching model HOT 2
- Inline contents of simple cmake/thirdparty files
- [TST] Testing project board (ignore me) HOT 1
- Ensure `PARALLEL_LEVEL` variable is set to a suitable value in CI scripts
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from build-planning.