Skip to content

Modernize conda environment#34

Merged
jandom merged 135 commits into
aqlaboratory:pixi-betafrom
sdvillal:modernize-conda-environment
Mar 23, 2026
Merged

Modernize conda environment#34
jandom merged 135 commits into
aqlaboratory:pixi-betafrom
sdvillal:modernize-conda-environment

Conversation

@sdvillal
Copy link
Copy Markdown
Contributor

@sdvillal sdvillal commented Nov 12, 2025

Summary

Adds a modern conda environment following best practices to improve the quality of life of conda users.

The environment is self-contained, including a sane toolchain to build extensions fully compatible with the rest of dependencies, and with batteries included (inference, bioinformatics, fast kernels, dev dependencies).

We maintain a pixi workspace and an automatically generated conda environment for non-pixi users.

We still need to iron-out four known problems (see overcomments in pixi.toml and upcoming issues) and add documentation.

From here, creating conda-forge openfold3 package and bioconda openfold3-extra should be simple enough.

Changes

Related Issues

TBC

Testing

Current environment passes all tests and produce sensible predictions.

Other Notes

This is exploratory at the moment. Will cleanup commit history or open a clean PR when we are done.

@Emrys-Merlin
Copy link
Copy Markdown
Contributor

Thank you for the draft!

@Emrys-Merlin
Copy link
Copy Markdown
Contributor

DeepSpeed accepted our first upstream fix regarding the ninja detection (deepspeedai/DeepSpeed#7687). Once a new version is released, this should allow us to get rid of the PyPI ninja dependency. Of course, this fix will only come into play if we decide against the vendoring approach.

@sdvillal
Copy link
Copy Markdown
Contributor Author

sdvillal commented Dec 1, 2025

As of 2024/12/01, packages still installed from pypi after installing openfold3 in devel/editable mode:

To investigate

  • aria2, both from CF (v 1.37.0) and pypi (v 0.0.1b0)

Proposed solution: remove aria2 from pypi dependencies, as it is currently unused in OF3 codebase. The pypi package is an old convenience and should in general not be used to install aria2, as it is not even such big of a convenience.

Because of cuequivariance_ops_torch_cu12

  • cuequivariance_ops_torch_cu12
  • cuequivariance_ops_cu12
  • nvidia_cublas_cu12 both from CF (libcublas 12.9.1.4) and pypi (v12.9.1.4)

These should at the very least aligned with the CF version, but likely it is best to just install all from pypi until we understand how to deal with the license. The key question is what to do with libcublas, maybe we should add synonyms to parselmouth in pixi - although I am not 100% sure these two packages are 100% binary compatible.

Currently the biggest block to have a conda package with these is their LICENSE.

See also: NVIDIA/cuEquivariance#218

It could be interesting to see if openequivariance could be a viable alternative:
https://github.com/PASSIONLab/OpenEquivariance

Because of mkl

  • mkl both from CF (2025.3.0) and pypi (2025.3.0)
  • intel_openmp
  • onemkl_license
  • tbb both from CF (2022.3.0) and pypi (2022.3.0)
  • tcmlib
  • umf
  • intel_cmplr_lib_url

Proposed solution: remove mkl from pypi dependencies, as it is actually unused (pytorch links it statically, numpy and scipy are not build against it and do not dynamically dispatch).

@jandom
Copy link
Copy Markdown
Collaborator

jandom commented Dec 17, 2025

hi there @sdvillal thanks for this – we're currently working on a bunch of related issues
#70
#75

Hopefully we can combine it all together with your PR after the holidays?

@sdvillal
Copy link
Copy Markdown
Contributor Author

sdvillal commented Dec 23, 2025

hi there @sdvillal thanks for this – we're currently working on a bunch of related issues #70 #75

Hopefully we can combine it all together with your PR after the holidays?

Also:
#79
sdvillal#1 (now merged)

@sdvillal
Copy link
Copy Markdown
Contributor Author

Coming back to this after the end of year "hiatus". Current state and TODOs:

  • Need to catch up with changes and PRs upstream.
  • Fully isolating/vendoring the evoformer extension, to get rid completely of the deepspeed dependency, is proving very hairy - so likely we will need to open a PR upstream to also fix CUTLASS detection.
  • Take care of all the open issues above.

all tests pass, predictions seem to be correct
corresponds to a modernized conda environment following best practices
Comments

Overcommenting issues
incomplete, we might not need the native sources
from upstream commit df59f203f40c8a292dd019ae68c9e6c88f107026
incomplete, we might not need the native sources
from upstream commit df59f203f40c8a292dd019ae68c9e6c88f107026
Use vendored deepspeed in the attention primitives
@jandom jandom added the safe-to-test Internal only label used to indicate PRs that are ready for automated CI testing. label Mar 16, 2026
@sdvillal
Copy link
Copy Markdown
Contributor Author

sdvillal commented Mar 17, 2026

Good stuff @jandom

I was surprised the new multiprocessing config affected your box (apologies!). I have narrowed down to change things only in osx (in fact I will feel more comfortable if we do not hardcode "spawn" there). Can you try again?

On a positive note, tests also pass nicely in blackwell + linux-64.

@jandom
Copy link
Copy Markdown
Collaborator

jandom commented Mar 17, 2026

I was surprised the new multiprocessing config affected your box (apologies!). I have narrowed down to change things only in osx (in fact I will feel more comfortable if we do not hardcode "spawn" there). Can you try again?

I'm not sure that's impacting me, haven't tried on my osx yet, this was on a DGX

@jandom
Copy link
Copy Markdown
Collaborator

jandom commented Mar 17, 2026

Still broken on linux without additional changes, this time only a config change was needed

diff --git a/examples/example_runner_yamls/low_mem.yml b/examples/example_runner_yamls/low_mem.yml
index 78f8acc9..1273ed97 100644
--- a/examples/example_runner_yamls/low_mem.yml
+++ b/examples/example_runner_yamls/low_mem.yml
@@ -1,6 +1,8 @@
-# Model changes for low memory 
+# Model changes for low memory
 model_update:
-  presets: 
+  presets:
     - predict
     - low_mem
-    - pae_enabled
\ No newline at end of file
+    - pae_enabled
+data_module_args:
+  num_workers: 0

Claude then proceed to propose this delightful change (I'm not impressed)

        # macOS MPS requires fork: https://github.com/pytorch/pytorch/issues/87688
        # Linux requires spawn: fork segfaults when CUDA threads are already running
        # (Python 3.12+ warns, 3.14 will change the default)
        multiprocess_context = None
        if num_workers:
            if platform.system() == "Darwin" and torch.backends.mps.is_available():
                multiprocess_context = "fork"
            else:
                multiprocess_context = "spawn"

Update: everything is passing for me locally, yay!

Passed (4):
  ✓ openfold3-cuda12
  ✓ openfold3-cuda12-pypi
  ✓ openfold3-cuda13
  ✓ openfold3-cuda13-pypi

The only thing I see missing here is the Dockerfile updates? (I'm happy to add those, pixi activation is even tricker than conda activation in docker). Here is an idea – let's merge this into a dummy branch on this repo, so that we can start iterating on the docker image stuff (which will be hard on your fork, comparatively)

@sdvillal sdvillal force-pushed the modernize-conda-environment branch from 1fb8bf2 to 610ae56 Compare March 20, 2026 08:47
We would still need to document this for users
@sdvillal sdvillal force-pushed the modernize-conda-environment branch from 610ae56 to 23811a4 Compare March 20, 2026 09:31
@sdvillal
Copy link
Copy Markdown
Contributor Author

sdvillal commented Mar 20, 2026

Thanks a lot for the tests @jandom. Good stuff.

I guess the pae_enabled problem will be taken care of by #142

I have created a more sophisticated solution to the multiprocessing_context in 23811a4 (apologies for the force-push, and note a fixed capitalization error later) that:

  • allows the setting to be overridden by the user
  • provides sensible defaults (note that I have set "forkserver" instead of "spawn" in linux to match the new python 3.14 default, we can go back to "spawn" if it still fails)
  • and gives informative logging if a misconfiguration is detected.

If you like it we will need to document. We can also revert into your solution if we prefer simplicity. Let me know :-)

As we discussed in our call, I removed our example dockerfiles. I would suggest to do that in a subsequent PR, or we can try to bring it to this PR. In any case, if you need help, we can lend a hand.

As we are removing "hacks.py" and the newer deepspeed versions have fixed the cutlass configuration problems, we will need to update the docs introduced here. Happy to do too.

Should we open an issue to document the failing tests for cuEquivariance > 0.7? I do not know if these are legit issues or if the tests need update.

@jandom jandom changed the base branch from main to dev March 21, 2026 16:22
@jandom jandom self-requested a review March 21, 2026 16:22
Copy link
Copy Markdown
Collaborator

@jandom jandom left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hell yeah, let's do this – massive thanks to @sdvillal for putting this together.

I'm approving this after extensive testing, including a small training run (eh). It's a massive improvement over the conda workflow, which we should deprecate going forward.

I propose we sqash-merge into a 'dev' branch, and iterate a bit more, because I want to make sure the docker images work as well. Deprecate the conda during 2026Q2, and pixi-only starting 2026Q3.

@sdvillal
Copy link
Copy Markdown
Contributor Author

To my mind, we could already merge this to main (feel free to squash-merge) and iterate from there. While there are improvements that will come later, it is good if people can start playing with it, while the old workflows are still in place. That would potentially give us nice intel into trouble, allow to submit smaller improvements as PRs, and get us to a more polished finish line before we deprecate.

We should update the lock file before merging.

Happy to follow your lead.

@jandom
Copy link
Copy Markdown
Collaborator

jandom commented Mar 22, 2026

You're probably right – this doesn't actually remove anything, the conda thing should still work (my main worry, the research team will take a while to migrate)

@jandom jandom deleted the branch aqlaboratory:pixi-beta March 23, 2026 11:29
@jandom jandom closed this Mar 23, 2026
@jandom jandom reopened this Mar 23, 2026
@jandom jandom changed the base branch from dev to pixi-beta March 23, 2026 11:32
@jandom
Copy link
Copy Markdown
Collaborator

jandom commented Mar 23, 2026

With @jnwei we've got some reports that things might be breaking in training, we want to put this on 'pixi-beta' branch for now.

@jandom jandom merged commit ab94e60 into aqlaboratory:pixi-beta Mar 23, 2026
1 of 2 checks passed
@jandom jandom mentioned this pull request Mar 23, 2026
4 tasks
@sdvillal
Copy link
Copy Markdown
Contributor Author

Awesome, thanks @jandom.

What type of problems do we have at training? Could we open issues? One thing that worries me is than the kalign-python pypi packages bundle their own OpenMP runtimes, which I heard is dangerous.

@jandom jandom deleted the modernize-conda-environment branch March 24, 2026 11:29
jandom added a commit that referenced this pull request Apr 23, 2026
* Modernize conda environment (#34)

* Add initial pixi environment

all tests pass, predictions seem to be correct
corresponds to a modernized conda environment following best practices

* Reorder dependencies for easier read

* Add openfold3 as an editable dependency

* Sync cuda-python pin between pypi package and the conda environment

* Comments

Comments

Overcommenting issues

* Add explicitly a conda yml version of the pixi environment

* Improve some wordings

* Update pixi lockfile

* Vendoring pieces of deepspeed

incomplete, we might not need the native sources
from upstream commit df59f203f40c8a292dd019ae68c9e6c88f107026

* Swap ninja verification with pytorch's

* Vendoring pieces of deepspeed

incomplete, we might not need the native sources
from upstream commit df59f203f40c8a292dd019ae68c9e6c88f107026

* Use vendored deepspeed evoformer builder

Use vendored deepspeed in the attention primitives

* Add symlink to vendored deepspeed as in upstream

* Vendor also op_builder.__init__ from deepspeed

* Import explicitly EvoformerAttnBuilder, avoiding broken introspection magic

* Add a ignore mechanism for cutlass detection in vendored deepspeed

* Apply cutlass detection workaround and remove all nvidia-cutlass tricks from pixi environment

* Remove nvidia-cutlass from openfold-3 dependencies (fix later)

* Remove pypi ninja dependency in pixi workspace

* No need for cutlass hacks

* Add pixi config to .gitattributes

* Remove deepspeed hacks for good

* Update pixi lockfile

* Update pixi conda environment

* Remove MKL from pypi dependencies, as it is unused

* Remove aria2 from pypi dependencies, unused and not so much of a convenience

* Update lockfile

Update lockfile

* Re-enable pure PyPI install

* Disable hack when conda is active

* More comments on cutlass python API deprecation and pytorch

* Make pixi environments (CPU, CUDA12, CUDA13, for all major platforms)

* Increase LMDB map size to make test pass in osx-arm64

* Better comments of TODOs in pixi.toml

Better comments of TODOs in pixi.toml

Better comments of TODOs in pixi.toml

* Pin cuequivariance until test failure is investigated

* Move deepspeed to optional dependency also in pyproject

* Pyproject: extend python version support

* Pyproject: move dependencies table together with optional-dependencies

* Pyproject: document future decision on dependency-groups

* Pyproject: reformat to consolidate indent to 4 spaces

* Pyproject: reorder dependencies for easier read

* Pixi: add scipy

* Pixi: add comment on CUDA13

* Pixi: make cuequivariance CUDA generic for its conda packages

* Pixi: add reminder about devel install

* Pyproject: fix and improve readability, add URLs

* pixi.toml: make more readable by showing first envs, then base, then variants

* pixi.toml: pin deepspeed to 0.18.3, first one with ninja detection fixed

* pixi.toml: fully enable aarch64 and cuda13, revamp docs

* pixi.lock: update

* pixi.toml: add triton to cuequivariance dependencies for CUDA13

* pixi.lock: update

* pixi.toml: include pip to allow users to play

* pixi.toml: formatting for better readability

* pixi.toml: restrict cuequivariance-cu13 to linux-64 until we unpin to >=0.8

* pixi.toml: formatting for better readability

* pixi.toml: make pytorch-gpu an isolated environment feature

in this way we can more easily express when a package is not ready yet in CF

* pixi.toml: add environments that combine mostly pypi-based deps with CUDA from conda

* pixi.toml: add openfold3-editable-full and account for lack of cuequivariance for python=3.14

* pixi.toml: brief documentation of the pypi-dominant environments

* pixi.toml: add also the dev optional dependency group to openfold3-full

* pyproject.toml: pin cuequivariance to <0.8 until we adapt tests

* pixi.toml: add kalign to required non-pypi dependencies

* pixi.toml: add more bioinformatics tools to non-pypi

* pixi.toml: make env setup be part of the deepspeed-build feature

* pixi.toml: simplify management of pypi features

* pixi.lock: update, all tests pass A100,B300 x CUDA12,CUDA13

* pixi.toml: add table of what works and what needs test

* pixi.toml: add tasks for exporting to regular conda environment yamls

* conda environments: delete outdated modernized conda env, use new tasks instead

* pixi.toml: bump min pixi version

* pixi.toml: remove unnecessary comments

* pixi.toml: remove unnecessary envvar definition for isolating extension builds

* pixi.toml: better definition of maintenance environment

pixi.toml: better definition of maintenance environment

pixi.toml: better definition of maintenance environment

* pixi.toml: add simple task to run test and save rsults to an environment-specific dir

* of3: enable pickling regardless of forking strategy and platform

* of3: enable multiple data loader workers in osx mps backed

* Vendor improved deepspeed builder from upstream PR

See: deepspeedai/DeepSpeed#7760

* pixi.lock: update

* pixi.toml: remove some comment noise

* of3: fix multiprocessing configuration corner case in osx

* docker: move outdated example dockerfiles to docker/pixi-examples

* examples: add example runner for osx inference

* pixi.toml: ensure we get the right pytorch from pypi

something smilar should actually be supported in pyproject.toml

* pixi.lock: update, fixed torch cuda missmatch in pypi environments

* pixi.toml: fix lock export + make default environment be maintenance

* pixi.toml: use a more consitent name for environment arg

* pixi.lock: update

* pixi.toml: workaround for no-default-feature breaking the test task (pixi bug)

* pixi.toml: issue with pixi pypi resolution seems solved

* Revert "pixi.toml: issue with pixi pypi resolution seems solved"

This reverts commit ded3482.

* pixi.toml: better document problem and workaround

* pixi.toml: make the test task present in all relevant environments

this I feel makes less surprising its use, as opposed to passing the environment as an arg to a dependent task

* pixi.toml: let CUDA13 flow freely

* pixi.lock: update for initial pytorch 2.10, cuda 13.1 support

* pixi.toml: add safe cuda environments (no accelerators)

* of3: remove deepspeed hacks

note that there are still some in __init__.py

* of3: unvendor deepspeed

* pixi.toml: simplify deepspeed dependency after our changes made it to CF/pypi

* pixi.toml: remove safe environments as we are not maintaining them

* pixi.toml: enable pytorch-coda in cuda 13 env after 2.10 release

* pyproject.toml: pin deepspeed to >0.18.5, improved evoformer compilation

* Add awscrt to dependencies, missing from recent PR

* pixi.toml: setup correctly path to PTXAS_BLACKWELL for triton >=3.6.0

* pixi.toml: add -safe environments, at the moment just without cuequivariance

these are also conda-pure environments

* pixi.lock: update after consolidation (no vendor, pytorch 2.10 + CF cuda13)

* pixi.toml: update outdated comments

* updates with GB10 tests (#2)

* updates with GB10 tests

* cleanup

* harmonize

* linting data_module.py

* speculative changes

* pixi.toml: remove safe environments

* pixi.lock: update after removal of safe environments

* Remove pixi docker examples, to rework

* Comment-out workaround for hard to reproduce ABI mismatch problem

* pixi.toml: bump pixi, improve conda export by including all env variables

* pixi.toml: unpin biotite

* pixi.toml: python has its own feature

* pixi.toml: bump deepspeed

* pyproject.toml: bump deepspeed to version without Evoformer build bug

* pixi.toml: detail on workaround

* pixi.lock: update

* pixi.toml: add example task to update safely the lockfile

* pixi.toml: remove kalign2

* tests: fix test depending on unspecified glob return order

* pixi.toml: better metadata

* docs: wip

* pixi.lock: update

* Allow to configure multiprocessing start and set safe defaults

We would still need to document this for users

* Fix capitalization error

* Fix capitalization error

* Fix typo

* pixi.lock: update

---------

Co-authored-by: Tim Adler <tim.adler@bayer.com>
Co-authored-by: Jan Domański <jan.domanski@omsf.io>

* fix linter problems

* add pre-commit

* add pixi.excalidraw to docs

* remove blackwell build instructions (obsolete)

* update docs to recommend pixi

* better docs on pixi

* update pixi.lock

* docker build and tests for pixi

* set a sensible 2mb default

* more context manager plus dirty dataclass

* unit tests

* more linting

* missed a dep: regenerate pixi.lock

* remove duplicate projects

* review: comments from Jennifer

* update pixi.lock

---------

Co-authored-by: Santi Villalba <sdvillal@users.noreply.github.com>
Co-authored-by: Tim Adler <tim.adler@bayer.com>
Co-authored-by: Jennifer Wei <97625454+jnwei@users.noreply.github.com>
jandom added a commit that referenced this pull request Apr 28, 2026
* Modernize conda environment (#34)

* Add initial pixi environment

all tests pass, predictions seem to be correct
corresponds to a modernized conda environment following best practices

* Reorder dependencies for easier read

* Add openfold3 as an editable dependency

* Sync cuda-python pin between pypi package and the conda environment

* Comments

Comments

Overcommenting issues

* Add explicitly a conda yml version of the pixi environment

* Improve some wordings

* Update pixi lockfile

* Vendoring pieces of deepspeed

incomplete, we might not need the native sources
from upstream commit df59f203f40c8a292dd019ae68c9e6c88f107026

* Swap ninja verification with pytorch's

* Vendoring pieces of deepspeed

incomplete, we might not need the native sources
from upstream commit df59f203f40c8a292dd019ae68c9e6c88f107026

* Use vendored deepspeed evoformer builder

Use vendored deepspeed in the attention primitives

* Add symlink to vendored deepspeed as in upstream

* Vendor also op_builder.__init__ from deepspeed

* Import explicitly EvoformerAttnBuilder, avoiding broken introspection magic

* Add a ignore mechanism for cutlass detection in vendored deepspeed

* Apply cutlass detection workaround and remove all nvidia-cutlass tricks from pixi environment

* Remove nvidia-cutlass from openfold-3 dependencies (fix later)

* Remove pypi ninja dependency in pixi workspace

* No need for cutlass hacks

* Add pixi config to .gitattributes

* Remove deepspeed hacks for good

* Update pixi lockfile

* Update pixi conda environment

* Remove MKL from pypi dependencies, as it is unused

* Remove aria2 from pypi dependencies, unused and not so much of a convenience

* Update lockfile

Update lockfile

* Re-enable pure PyPI install

* Disable hack when conda is active

* More comments on cutlass python API deprecation and pytorch

* Make pixi environments (CPU, CUDA12, CUDA13, for all major platforms)

* Increase LMDB map size to make test pass in osx-arm64

* Better comments of TODOs in pixi.toml

Better comments of TODOs in pixi.toml

Better comments of TODOs in pixi.toml

* Pin cuequivariance until test failure is investigated

* Move deepspeed to optional dependency also in pyproject

* Pyproject: extend python version support

* Pyproject: move dependencies table together with optional-dependencies

* Pyproject: document future decision on dependency-groups

* Pyproject: reformat to consolidate indent to 4 spaces

* Pyproject: reorder dependencies for easier read

* Pixi: add scipy

* Pixi: add comment on CUDA13

* Pixi: make cuequivariance CUDA generic for its conda packages

* Pixi: add reminder about devel install

* Pyproject: fix and improve readability, add URLs

* pixi.toml: make more readable by showing first envs, then base, then variants

* pixi.toml: pin deepspeed to 0.18.3, first one with ninja detection fixed

* pixi.toml: fully enable aarch64 and cuda13, revamp docs

* pixi.lock: update

* pixi.toml: add triton to cuequivariance dependencies for CUDA13

* pixi.lock: update

* pixi.toml: include pip to allow users to play

* pixi.toml: formatting for better readability

* pixi.toml: restrict cuequivariance-cu13 to linux-64 until we unpin to >=0.8

* pixi.toml: formatting for better readability

* pixi.toml: make pytorch-gpu an isolated environment feature

in this way we can more easily express when a package is not ready yet in CF

* pixi.toml: add environments that combine mostly pypi-based deps with CUDA from conda

* pixi.toml: add openfold3-editable-full and account for lack of cuequivariance for python=3.14

* pixi.toml: brief documentation of the pypi-dominant environments

* pixi.toml: add also the dev optional dependency group to openfold3-full

* pyproject.toml: pin cuequivariance to <0.8 until we adapt tests

* pixi.toml: add kalign to required non-pypi dependencies

* pixi.toml: add more bioinformatics tools to non-pypi

* pixi.toml: make env setup be part of the deepspeed-build feature

* pixi.toml: simplify management of pypi features

* pixi.lock: update, all tests pass A100,B300 x CUDA12,CUDA13

* pixi.toml: add table of what works and what needs test

* pixi.toml: add tasks for exporting to regular conda environment yamls

* conda environments: delete outdated modernized conda env, use new tasks instead

* pixi.toml: bump min pixi version

* pixi.toml: remove unnecessary comments

* pixi.toml: remove unnecessary envvar definition for isolating extension builds

* pixi.toml: better definition of maintenance environment

pixi.toml: better definition of maintenance environment

pixi.toml: better definition of maintenance environment

* pixi.toml: add simple task to run test and save rsults to an environment-specific dir

* of3: enable pickling regardless of forking strategy and platform

* of3: enable multiple data loader workers in osx mps backed

* Vendor improved deepspeed builder from upstream PR

See: deepspeedai/DeepSpeed#7760

* pixi.lock: update

* pixi.toml: remove some comment noise

* of3: fix multiprocessing configuration corner case in osx

* docker: move outdated example dockerfiles to docker/pixi-examples

* examples: add example runner for osx inference

* pixi.toml: ensure we get the right pytorch from pypi

something smilar should actually be supported in pyproject.toml

* pixi.lock: update, fixed torch cuda missmatch in pypi environments

* pixi.toml: fix lock export + make default environment be maintenance

* pixi.toml: use a more consitent name for environment arg

* pixi.lock: update

* pixi.toml: workaround for no-default-feature breaking the test task (pixi bug)

* pixi.toml: issue with pixi pypi resolution seems solved

* Revert "pixi.toml: issue with pixi pypi resolution seems solved"

This reverts commit ded3482.

* pixi.toml: better document problem and workaround

* pixi.toml: make the test task present in all relevant environments

this I feel makes less surprising its use, as opposed to passing the environment as an arg to a dependent task

* pixi.toml: let CUDA13 flow freely

* pixi.lock: update for initial pytorch 2.10, cuda 13.1 support

* pixi.toml: add safe cuda environments (no accelerators)

* of3: remove deepspeed hacks

note that there are still some in __init__.py

* of3: unvendor deepspeed

* pixi.toml: simplify deepspeed dependency after our changes made it to CF/pypi

* pixi.toml: remove safe environments as we are not maintaining them

* pixi.toml: enable pytorch-coda in cuda 13 env after 2.10 release

* pyproject.toml: pin deepspeed to >0.18.5, improved evoformer compilation

* Add awscrt to dependencies, missing from recent PR

* pixi.toml: setup correctly path to PTXAS_BLACKWELL for triton >=3.6.0

* pixi.toml: add -safe environments, at the moment just without cuequivariance

these are also conda-pure environments

* pixi.lock: update after consolidation (no vendor, pytorch 2.10 + CF cuda13)

* pixi.toml: update outdated comments

* updates with GB10 tests (#2)

* updates with GB10 tests

* cleanup

* harmonize

* linting data_module.py

* speculative changes

* pixi.toml: remove safe environments

* pixi.lock: update after removal of safe environments

* Remove pixi docker examples, to rework

* Comment-out workaround for hard to reproduce ABI mismatch problem

* pixi.toml: bump pixi, improve conda export by including all env variables

* pixi.toml: unpin biotite

* pixi.toml: python has its own feature

* pixi.toml: bump deepspeed

* pyproject.toml: bump deepspeed to version without Evoformer build bug

* pixi.toml: detail on workaround

* pixi.lock: update

* pixi.toml: add example task to update safely the lockfile

* pixi.toml: remove kalign2

* tests: fix test depending on unspecified glob return order

* pixi.toml: better metadata

* docs: wip

* pixi.lock: update

* Allow to configure multiprocessing start and set safe defaults

We would still need to document this for users

* Fix capitalization error

* Fix capitalization error

* Fix typo

* pixi.lock: update

---------

Co-authored-by: Tim Adler <tim.adler@bayer.com>
Co-authored-by: Jan Domański <jan.domanski@omsf.io>

* fix linter problems

* add pre-commit

* add pixi.excalidraw to docs

* remove blackwell build instructions (obsolete)

* update docs to recommend pixi

* better docs on pixi

* update pixi.lock

* docker build and tests for pixi

* set a sensible 2mb default

* more context manager plus dirty dataclass

* unit tests

* more linting

* missed a dep: regenerate pixi.lock

* remove duplicate projects

* First draft for rocm env

* First working install

* Remove pytorch-lighting dep in pixi.toml

* test: add per-platform snapshots for triangular attention and multiplicative update

Floating point arithmetic is not associative: different hardware
parallelizes reductions (e.g. matrix multiplications, attention
softmax) in different orders, accumulating rounding errors differently.
CUDA and ROCm therefore produce results that diverge by up to ~2e-6
even on identical inputs. Snapshot comparisons are now routed to
nvidia/ or rocm/ subdirectories based on torch.version.hip, so each
platform validates consistency with itself across code changes.

* Regenerate pixi.lock

* Revert accidental formatting changes

* Update docs

---------

Co-authored-by: Santi Villalba <sdvillal@users.noreply.github.com>
Co-authored-by: Jan Domański <jan.domanski@omsf.io>
Co-authored-by: Ubuntu <ubuntu@ip-10-149-152-207.eu-central-1.compute.internal>
Co-authored-by: Gagan <gagandeep.singh@amd.com>
jandom added a commit that referenced this pull request Apr 28, 2026
* Modernize conda environment (#34)

* Add initial pixi environment

all tests pass, predictions seem to be correct
corresponds to a modernized conda environment following best practices

* Reorder dependencies for easier read

* Add openfold3 as an editable dependency

* Sync cuda-python pin between pypi package and the conda environment

* Comments

Comments

Overcommenting issues

* Add explicitly a conda yml version of the pixi environment

* Improve some wordings

* Update pixi lockfile

* Vendoring pieces of deepspeed

incomplete, we might not need the native sources
from upstream commit df59f203f40c8a292dd019ae68c9e6c88f107026

* Swap ninja verification with pytorch's

* Vendoring pieces of deepspeed

incomplete, we might not need the native sources
from upstream commit df59f203f40c8a292dd019ae68c9e6c88f107026

* Use vendored deepspeed evoformer builder

Use vendored deepspeed in the attention primitives

* Add symlink to vendored deepspeed as in upstream

* Vendor also op_builder.__init__ from deepspeed

* Import explicitly EvoformerAttnBuilder, avoiding broken introspection magic

* Add a ignore mechanism for cutlass detection in vendored deepspeed

* Apply cutlass detection workaround and remove all nvidia-cutlass tricks from pixi environment

* Remove nvidia-cutlass from openfold-3 dependencies (fix later)

* Remove pypi ninja dependency in pixi workspace

* No need for cutlass hacks

* Add pixi config to .gitattributes

* Remove deepspeed hacks for good

* Update pixi lockfile

* Update pixi conda environment

* Remove MKL from pypi dependencies, as it is unused

* Remove aria2 from pypi dependencies, unused and not so much of a convenience

* Update lockfile

Update lockfile

* Re-enable pure PyPI install

* Disable hack when conda is active

* More comments on cutlass python API deprecation and pytorch

* Make pixi environments (CPU, CUDA12, CUDA13, for all major platforms)

* Increase LMDB map size to make test pass in osx-arm64

* Better comments of TODOs in pixi.toml

Better comments of TODOs in pixi.toml

Better comments of TODOs in pixi.toml

* Pin cuequivariance until test failure is investigated

* Move deepspeed to optional dependency also in pyproject

* Pyproject: extend python version support

* Pyproject: move dependencies table together with optional-dependencies

* Pyproject: document future decision on dependency-groups

* Pyproject: reformat to consolidate indent to 4 spaces

* Pyproject: reorder dependencies for easier read

* Pixi: add scipy

* Pixi: add comment on CUDA13

* Pixi: make cuequivariance CUDA generic for its conda packages

* Pixi: add reminder about devel install

* Pyproject: fix and improve readability, add URLs

* pixi.toml: make more readable by showing first envs, then base, then variants

* pixi.toml: pin deepspeed to 0.18.3, first one with ninja detection fixed

* pixi.toml: fully enable aarch64 and cuda13, revamp docs

* pixi.lock: update

* pixi.toml: add triton to cuequivariance dependencies for CUDA13

* pixi.lock: update

* pixi.toml: include pip to allow users to play

* pixi.toml: formatting for better readability

* pixi.toml: restrict cuequivariance-cu13 to linux-64 until we unpin to >=0.8

* pixi.toml: formatting for better readability

* pixi.toml: make pytorch-gpu an isolated environment feature

in this way we can more easily express when a package is not ready yet in CF

* pixi.toml: add environments that combine mostly pypi-based deps with CUDA from conda

* pixi.toml: add openfold3-editable-full and account for lack of cuequivariance for python=3.14

* pixi.toml: brief documentation of the pypi-dominant environments

* pixi.toml: add also the dev optional dependency group to openfold3-full

* pyproject.toml: pin cuequivariance to <0.8 until we adapt tests

* pixi.toml: add kalign to required non-pypi dependencies

* pixi.toml: add more bioinformatics tools to non-pypi

* pixi.toml: make env setup be part of the deepspeed-build feature

* pixi.toml: simplify management of pypi features

* pixi.lock: update, all tests pass A100,B300 x CUDA12,CUDA13

* pixi.toml: add table of what works and what needs test

* pixi.toml: add tasks for exporting to regular conda environment yamls

* conda environments: delete outdated modernized conda env, use new tasks instead

* pixi.toml: bump min pixi version

* pixi.toml: remove unnecessary comments

* pixi.toml: remove unnecessary envvar definition for isolating extension builds

* pixi.toml: better definition of maintenance environment

pixi.toml: better definition of maintenance environment

pixi.toml: better definition of maintenance environment

* pixi.toml: add simple task to run test and save rsults to an environment-specific dir

* of3: enable pickling regardless of forking strategy and platform

* of3: enable multiple data loader workers in osx mps backed

* Vendor improved deepspeed builder from upstream PR

See: deepspeedai/DeepSpeed#7760

* pixi.lock: update

* pixi.toml: remove some comment noise

* of3: fix multiprocessing configuration corner case in osx

* docker: move outdated example dockerfiles to docker/pixi-examples

* examples: add example runner for osx inference

* pixi.toml: ensure we get the right pytorch from pypi

something smilar should actually be supported in pyproject.toml

* pixi.lock: update, fixed torch cuda missmatch in pypi environments

* pixi.toml: fix lock export + make default environment be maintenance

* pixi.toml: use a more consitent name for environment arg

* pixi.lock: update

* pixi.toml: workaround for no-default-feature breaking the test task (pixi bug)

* pixi.toml: issue with pixi pypi resolution seems solved

* Revert "pixi.toml: issue with pixi pypi resolution seems solved"

This reverts commit ded3482.

* pixi.toml: better document problem and workaround

* pixi.toml: make the test task present in all relevant environments

this I feel makes less surprising its use, as opposed to passing the environment as an arg to a dependent task

* pixi.toml: let CUDA13 flow freely

* pixi.lock: update for initial pytorch 2.10, cuda 13.1 support

* pixi.toml: add safe cuda environments (no accelerators)

* of3: remove deepspeed hacks

note that there are still some in __init__.py

* of3: unvendor deepspeed

* pixi.toml: simplify deepspeed dependency after our changes made it to CF/pypi

* pixi.toml: remove safe environments as we are not maintaining them

* pixi.toml: enable pytorch-coda in cuda 13 env after 2.10 release

* pyproject.toml: pin deepspeed to >0.18.5, improved evoformer compilation

* Add awscrt to dependencies, missing from recent PR

* pixi.toml: setup correctly path to PTXAS_BLACKWELL for triton >=3.6.0

* pixi.toml: add -safe environments, at the moment just without cuequivariance

these are also conda-pure environments

* pixi.lock: update after consolidation (no vendor, pytorch 2.10 + CF cuda13)

* pixi.toml: update outdated comments

* updates with GB10 tests (#2)

* updates with GB10 tests

* cleanup

* harmonize

* linting data_module.py

* speculative changes

* pixi.toml: remove safe environments

* pixi.lock: update after removal of safe environments

* Remove pixi docker examples, to rework

* Comment-out workaround for hard to reproduce ABI mismatch problem

* pixi.toml: bump pixi, improve conda export by including all env variables

* pixi.toml: unpin biotite

* pixi.toml: python has its own feature

* pixi.toml: bump deepspeed

* pyproject.toml: bump deepspeed to version without Evoformer build bug

* pixi.toml: detail on workaround

* pixi.lock: update

* pixi.toml: add example task to update safely the lockfile

* pixi.toml: remove kalign2

* tests: fix test depending on unspecified glob return order

* pixi.toml: better metadata

* docs: wip

* pixi.lock: update

* Allow to configure multiprocessing start and set safe defaults

We would still need to document this for users

* Fix capitalization error

* Fix capitalization error

* Fix typo

* pixi.lock: update

---------

Co-authored-by: Tim Adler <tim.adler@bayer.com>
Co-authored-by: Jan Domański <jan.domanski@omsf.io>

* fix linter problems

* add pre-commit

* add pixi.excalidraw to docs

* remove blackwell build instructions (obsolete)

* update docs to recommend pixi

* better docs on pixi

* update pixi.lock

* docker build and tests for pixi

* set a sensible 2mb default

* more context manager plus dirty dataclass

* unit tests

* more linting

* missed a dep: regenerate pixi.lock

* remove duplicate projects

* review: comments from Jennifer

* update pixi.lock

* cuequivariance support in pixi

* update documentation for cuequivariance for kernels

* regenerate pixi.lock

---------

Co-authored-by: Santi Villalba <sdvillal@users.noreply.github.com>
Co-authored-by: Tim Adler <tim.adler@bayer.com>
Co-authored-by: jnwei <jennifer.wei@omsf.io>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

safe-to-test Internal only label used to indicate PRs that are ready for automated CI testing.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants