Something went wrong. Try again.
lol
Something went wrong. Try again.
6.8 kB · 210 lines
Nix
at master
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211{ lib, stdenv, buildPythonPackage, fetchFromGitHub, fetchpatch,
# build-system setuptools,
# dependencies addict, distutils, matplotlib, numpy, opencv4, pyyaml, rich, termcolor, yapf,
# tests bitsandbytes, dvclive, lion-pytorch, lmdb, mlflow, parameterized, pytestCheckHook, torchvision, transformers, writableTmpDirAsHomeHook,}:
buildPythonPackage (finalAttrs: { pname = "mmengine"; version = "0.10.7"; pyproject = true;
src = fetchFromGitHub { owner = "open-mmlab"; repo = "mmengine"; tag = "v${finalAttrs.version}"; hash = "sha256-hQnwenuxHQwl+DwQXbIfsKlJkmcRvcHV1roK7q2X1KA="; };
patches = [ # Explicitly disable weights_only in torch.load calls # https://github.com/open-mmlab/mmengine/pull/1650 (fetchpatch { name = "torch-2.6.0-compat.patch"; url = "https://github.com/open-mmlab/mmengine/pull/1650/commits/c21b8431b2c625560a3866c65328cff0380ba1f8.patch"; hash = "sha256-SLr030IdYD9wM/jPJuZd+Dr1jjFx/5/YkJj/IwhnNQg="; }) ];
postPatch = # Fails in python >= 3.13 # exec(compile(f.read(), version_file, "exec")) does not populate the locals() namesp # In python 3.13, the locals() dictionary in a function does not automatically update with # changes made by exec(). # https://peps.python.org/pep-0558/ '' substituteInPlace setup.py \ --replace-fail \ "return locals()['__version__']" \ "return '${finalAttrs.version}'" '' + '' substituteInPlace tests/test_config/test_lazy.py \ --replace-fail "import numpy.compat" "" '';
build-system = [ setuptools ];
dependencies = [ addict distutils matplotlib numpy opencv4 pyyaml rich termcolor yapf ];
pythonImportsCheck = [ "mmengine" ];
nativeCheckInputs = [ bitsandbytes dvclive lion-pytorch lmdb mlflow parameterized pytestCheckHook torchvision transformers writableTmpDirAsHomeHook ];
preCheck = # Otherwise, the backprop hangs forever. More precisely, this exact line: # https://github.com/open-mmlab/mmengine/blob/02f80e8bdd38f6713e04a872304861b02157905a/tests/test_runner/test_activation_checkpointing.py#L46 # Solution suggested in https://github.com/pytorch/pytorch/issues/91547#issuecomment-1370011188 '' export MKL_NUM_THREADS=1 '';
disabledTestPaths = [ # Require unpackaged aim "tests/test_visualizer/test_vis_backend.py::TestAimVisBackend"
# Cannot find SSL certificate # _pygit2.GitError: OpenSSL error: failed to load certificates: error:00000000:lib(0)::reason(0) "tests/test_visualizer/test_vis_backend.py::TestDVCLiveVisBackend"
# AttributeError: type object 'MagicMock' has no attribute ... "tests/test_fileio/test_backends/test_petrel_backend.py::TestPetrelBackend" ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ # RuntimeError: attempt to insert nil object from objects[1] "tests/test_visualizer/test_visualizer.py::TestVisualizer::test_draw_featmap" "tests/test_visualizer/test_visualizer.py::TestVisualizer::test_show"
# AssertionError: torch.bfloat16 != torch.float32 "tests/test_runner/test_amp.py::TestAmp::test_autocast"
# ValueError: User specified autocast device_type must be cuda or cpu, but got mps "tests/test_runner/test_runner.py::TestRunner::test_test" "tests/test_runner/test_runner.py::TestRunner::test_val"
# Fails in pytestCheckHook due to multiple copies accessing the same resources (nixpkgs-review "tests/test_hooks/test_ema_hook.py::TestEMAHook::test_after_test_epoch" "tests/test_hooks/test_ema_hook.py::TestEMAHook::test_after_val_epoch" "tests/test_hooks/test_ema_hook.py::TestEMAHook::test_before_test_epoch" "tests/test_hooks/test_ema_hook.py::TestEMAHook::test_before_val_epoch" "tests/test_infer/test_infer.py" "tests/test_runner/test_runner.py::TestRunner::test_checkpoint"
# torch.distributed.DistNetworkError: [...] message: address already in use # Happens in nixpkgs-review due to the lack of network namespacing # Note: These all worked fine in nix-build "tests/test_dist/test_dist.py" "tests/test_dist/test_utils.py" # fails in _init_dist_env "tests/test_hooks/test_sync_buffers_hook.py::TestSyncBuffersHook::test_sync_buffers_hook" "tests/test_model/test_model_utils.py::test_is_model_wrapper" "tests/test_model/test_wrappers/test_model_wrapper.py::TestDistributedDataParallel" "tests/test_optim/test_optimizer/test_optimizer.py::TestZeroOptimizer::test_zero_redundancy_optimizer" "tests/test_runner/test_runner.py::TestRunner::test_custom_loop" "tests/test_runner/test_runner.py::TestRunner::test_default_scope" "tests/test_runner/test_runner.py::TestRunner::test_init" "tests/test_runner/test_runner.py::TestRunner::test_train" "tests/test_optim/test_optimizer/test_optimizer_wrapper.py::TestOptimWrapper::test_optim_context" "tests/test_testing/test_runner_test_case.py"
# TypeError: 'BaseDataset' object is not callable "tests/test_dataset/test_base_dataset.py::TestBaseDataset::test_get_subset[False-True]" ];
disabledTests = [ # Require network access "test_fileclient" "test_http_backend" "test_misc"
# RuntimeError "test_dump" "test_deepcopy" "test_copy" "test_lazy_import"
# AssertionError: os is not <module 'os' (frozen)> "test_lazy_module" ] ++ lib.optionals (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64) [ # RuntimeError: Failed to initialize cpuinfo! "test_to_device_and_dtype_00_cpu" "test_to_device_and_dtype_01_cpu" "test_to_device_and_dtype_02_cpu" "test_to_device_and_dtype_09_cpu" "test_to_device_and_dtype_10_cpu" "test_to_device_and_dtype_11_cpu" "test_to_device_and_dtype_12" "test_to_device_and_dtype_13" "test_to_device_and_dtype_14" "test_to_device_and_dtype_21" "test_to_device_and_dtype_22" "test_to_device_and_dtype_23" "test_to_dtype_0" "test_to_dtype_3" ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ # Fails when max-jobs is set to use fewer processes than cores # for example `AssertionError: assert 14 == 4` "test_setup_multi_processes"
# Crashes in pytestCheckHook due to MPS incompatibility in torch "test_with_runner" ];
meta = { description = "Library for training deep learning models based on PyTorch"; homepage = "https://github.com/open-mmlab/mmengine"; changelog = "https://github.com/open-mmlab/mmengine/releases/tag/${finalAttrs.src.tag}"; license = with lib.licenses; [ asl20 ]; maintainers = with lib.maintainers; [ rxiao ]; };})