From 5b96538e991d87d24b1b14263173e972619a48ce Mon Sep 17 00:00:00 2001 From: Taha Abdullah Date: Thu, 22 Aug 2024 16:12:20 +0200 Subject: [PATCH 1/3] updating cuda and rocm to pytorch 2.4 spec --- Docker/Dockerfile | 2 +- Docker/build.py | 15 +++++++------- env/fastsurfer.yml | 50 +++++++++++++++++++++++----------------------- 3 files changed, 33 insertions(+), 34 deletions(-) diff --git a/Docker/Dockerfile b/Docker/Dockerfile index 9eb14c75..1dcdb1a6 100644 --- a/Docker/Dockerfile +++ b/Docker/Dockerfile @@ -72,7 +72,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* ARG PYTHON_VERSION=3.10 -ARG FORGE_VERSION=23.11.0-0 +ARG FORGE_VERSION=24.3.0-0 # Install conda RUN wget --no-check-certificate -qO ~/miniforge.sh \ diff --git a/Docker/build.py b/Docker/build.py index f30c9b08..045a9a0a 100755 --- a/Docker/build.py +++ b/Docker/build.py @@ -30,9 +30,8 @@ Target = Literal['runtime', 'build_common', 'build_conda', 'build_freesurfer', 'build_base', 'runtime_cuda'] CacheType = Literal["inline", "registry", "local", "gha", "s3", "azblob"] -AllDeviceType = Literal["cpu", "cuda", "cu116", "cu117", "cu118", "rocm", "rocm5.1.1", - "rocm5.4.2"] -DeviceType = Literal["cpu", "cu116", "cu117", "cu118", "rocm5.1.1", "rocm5.4.2"] +AllDeviceType = Literal["cpu", "cuda", "cu118", "cu121", "cu124", "rocm6.1"] +DeviceType = Literal["cpu", "cu118", "cu121", "cu124", "rocm6.1"] CREATE_BUILDER = "Create builder with 'docker buildx create --name fastsurfer'." CONTAINERD_MESSAGE = ( @@ -61,8 +60,8 @@ class DEFAULTS: # torch 2.0.1 comes compiled with cu117, cu118, and rocm5.4.2 MapDeviceType: Dict[AllDeviceType, DeviceType] = dict( ((d, d) for d in get_args(DeviceType)), - rocm="rocm5.1.1", - cuda="cu117", + rocm="rocm6.1", + cuda="cu124", ) BUILD_BASE_IMAGE = "ubuntu:22.04" RUNTIME_BASE_IMAGE = "ubuntu:22.04" @@ -185,12 +184,12 @@ def make_parser() -> argparse.ArgumentParser: parser.add_argument( "--device", - choices=["cpu", "cuda", "cu117", "cu118", "rocm", "rocm5.4.2"], + choices=["cpu", "cuda", "cu118", "cu121", "cu124", "rocm", "rocm6.1"], required=True, help="""selection of internal build stages to build for a specific platform.
- - cuda: defaults to cu118, cuda 11.8
+ - cuda: defaults to cu124, cuda 12.4
- cpu: only cpu support
- - rocm: defaults to rocm5.4.2 (experimental)""", + - rocm: defaults to rocm6.1 (experimental)""", ) parser.add_argument( "--tag", diff --git a/env/fastsurfer.yml b/env/fastsurfer.yml index ec406b9c..4e3567f3 100644 --- a/env/fastsurfer.yml +++ b/env/fastsurfer.yml @@ -5,28 +5,28 @@ channels: - defaults dependencies: - - h5py=3.7.0 - - lapy=1.0.1 - - matplotlib=3.7.1 - - nibabel=5.1.0 - - numpy=1.25.0 - - pandas=1.5.3 - - pillow=10.0.1 - - pip=23.1.2 - - python=3.10 - - python-dateutil=2.8.2 - - pyyaml=6.0 - - scikit-image=0.19.3 - - scikit-learn=1.2.2 - - scipy=1.10.1 - - setuptools=67.8.0 - - tensorboard=2.12.1 - - tqdm=4.66 - - yacs=0.1.8 - - pip - - pip: - - --extra-index-url https://download.pytorch.org/whl/cu117 - - simpleitk==2.2.1 - - torch==2.0.1 - - torchio==0.18.83 - - torchvision==0.15.2 +- h5py=3.11.0 +- lapy=1.1.0 +- matplotlib=3.9.2 +- nibabel=5.2.1 +- numpy=1.26.4 +- pandas=2.2.2 +- pillow=10.4.0 +- pip=24.2 +- python=3.10 +- python-dateutil=2.9.0 +- pyyaml=6.0.2 +- requests=2.32.3 +- scikit-image=0.24.0 +- scikit-learn=1.5.1 +- scipy=1.14.1 +- setuptools=72.2.0 +- tensorboard=2.17.1 +- tqdm=4.66.5 +- yacs=0.1.8 +- pip: + - --extra-index-url https://download.pytorch.org/whl/cu124 + - simpleitk==2.4.0 + - torch==2.4.0+cu124 + - torchio==0.19.9 + - torchvision==0.19.0+cu124 From b60716f8729707b1a94a4d2bb4433058564d15e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20K=C3=BCgler?= Date: Fri, 23 Aug 2024 19:09:05 +0200 Subject: [PATCH 2/3] Fix comment/version dependency documentation in build.py Add rocm as a valid device option to build.py fix typo install_env.py for rocm remove extra } in export_pip-r.sh Fix Docker build for cuda 11.8 Add weights_only=True for torch.load to clean up torch warnings. Fix delim_whitespace warning in data_utils.py Fix AMD ROCm documentation. --- Docker/Dockerfile | 3 +++ Docker/README.md | 16 ++++++++-------- Docker/build.py | 4 +++- Docker/install_env.py | 2 +- FastSurferCNN/data_loader/data_utils.py | 2 +- FastSurferCNN/inference.py | 4 +++- FastSurferCNN/utils/checkpoint.py | 4 +++- HypVINN/inference.py | 4 +++- env/export_pip-r.sh | 2 -- 9 files changed, 25 insertions(+), 16 deletions(-) diff --git a/Docker/Dockerfile b/Docker/Dockerfile index 1dcdb1a6..8e4f854e 100644 --- a/Docker/Dockerfile +++ b/Docker/Dockerfile @@ -189,6 +189,9 @@ SHELL ["/bin/bash", "--login", "-c"] COPY --from=selected_freesurfer_build_image /opt/freesurfer /opt/freesurfer COPY --from=selected_conda_build_image /venv /venv +# Fix for cuda11.8+cudnn8.7 bug+warning: https://github.com/pytorch/pytorch/issues/97041 +RUN if [[ "$DEVICE" == "cu118" ]] ; then cd /venv/python3.10/site-packages/torch/lib && ln -s libnvrtc-*.so.11.2 libnvrtc.so ; fi + # Copy fastsurfer over from the build context and add PYTHONPATH COPY . /fastsurfer/ ENV PYTHONPATH=/fastsurfer:/opt/freesurfer/python/packages \ diff --git a/Docker/README.md b/Docker/README.md index c2f0d319..d5d12af8 100644 --- a/Docker/README.md +++ b/Docker/README.md @@ -139,7 +139,7 @@ As you can see, only the tag of the image is changed from gpu to cpu and the sta Here we build an experimental image to test performance when running on AMD GPUs. Note that you need a supported OS and Kernel version and supported GPU for the RocM to work correctly. You need to install the Kernel drivers into your host machine kernel (amdgpu-install --usecase=dkms) for the amd docker to work. For this follow: -https://docs.amd.com/en/latest/deploy/linux/quick_start.html +https://rocm.docs.amd.com/projects/install-on-linux/en/latest/install/quick-start.html#rocm-install-quick, https://rocm.docs.amd.com/projects/install-on-linux/en/latest/install/amdgpu-install.html#amdgpu-install-dkms and https://rocm.docs.amd.com/projects/install-on-linux/en/latest/how-to/docker.html ```bash PYTHONPATH= @@ -149,9 +149,8 @@ python build.py --device rocm --tag my_fastsurfer:rocm and run segmentation only: ```bash -docker run --rm --cap-add=SYS_PTRACE --security-opt seccomp=unconfined \ - --device=/dev/kfd --device=/dev/dri --group-add video --ipc=host \ - --shm-size 8G \ +docker run --rm --security-opt seccomp=unconfined \ + --device=/dev/kfd --device=/dev/dri --group-add video \ -v /home/user/my_mri_data:/data \ -v /home/user/my_fastsurfer_analysis:/output \ my_fastsurfer:rocm \ @@ -159,12 +158,13 @@ docker run --rm --cap-add=SYS_PTRACE --security-opt seccomp=unconfined \ --sid subjectX --sd /output ``` -Note, we tested on an AMD Radeon Pro W6600, which is [not officially supported](https://docs.amd.com/en/latest/release/gpu_os_support.html), but setting `HSA_OVERRIDE_GFX_VERSION=10.3.0` [inside docker did the trick](https://en.opensuse.org/AMD_OpenCL#ROCm_-_Running_on_unsupported_hardware): +In conflict with the official ROCm documentation (above), we also needed to add the group render `--group-add render` (in addition to `--group-add video`). + +Note, we tested on an AMD Radeon Pro W6600, which is [not officially supported](https://docs.amd.com/en/latest/release/gpu_os_support.html), but setting `HSA_OVERRIDE_GFX_VERSION=10.3.0` [inside docker did the trick](https://en.opensuse.org/SDB:AMD_GPGPU#Using_CUDA_code_with_ZLUDA_and_ROCm): ```bash -docker run --rm --cap-add=SYS_PTRACE --security-opt seccomp=unconfined \ - --device=/dev/kfd --device=/dev/dri --group-add video --ipc=host \ - --shm-size 8G \ +docker run --rm --security-opt seccomp=unconfined \ + --device=/dev/kfd --device=/dev/dri --group-add video --group-add render \ -v /home/user/my_mri_data:/data \ -v /home/user/my_fastsurfer_analysis:/output \ -e HSA_OVERRIDE_GFX_VERSION=10.3.0 \ diff --git a/Docker/build.py b/Docker/build.py index 045a9a0a..6467c7bf 100755 --- a/Docker/build.py +++ b/Docker/build.py @@ -30,7 +30,7 @@ Target = Literal['runtime', 'build_common', 'build_conda', 'build_freesurfer', 'build_base', 'runtime_cuda'] CacheType = Literal["inline", "registry", "local", "gha", "s3", "azblob"] -AllDeviceType = Literal["cpu", "cuda", "cu118", "cu121", "cu124", "rocm6.1"] +AllDeviceType = Literal["cpu", "cuda", "cu118", "cu121", "cu124", "rocm", "rocm6.1"] DeviceType = Literal["cpu", "cu118", "cu121", "cu124", "rocm6.1"] CREATE_BUILDER = "Create builder with 'docker buildx create --name fastsurfer'." @@ -58,6 +58,7 @@ class DEFAULTS: # and rocm versions, if pytorch comes with new versions. # torch 1.12.0 comes compiled with cu113, cu116, rocm5.0 and rocm5.1.1 # torch 2.0.1 comes compiled with cu117, cu118, and rocm5.4.2 + # torch 2.4 comes compiled with cu118, cu121, cu124 and rocm6.1 MapDeviceType: Dict[AllDeviceType, DeviceType] = dict( ((d, d) for d in get_args(DeviceType)), rocm="rocm6.1", @@ -230,6 +231,7 @@ def make_parser() -> argparse.ArgumentParser: --cache type=registry,ref=server/fastbuild,mode=max. Will default to the environment variable FASTSURFER_BUILD_CACHE: {cache_kwargs.get('default', 'N/A')}""", + metavar="type={inline,local,...}[,=[,...]]", **cache_kwargs, ) parser.add_argument( diff --git a/Docker/install_env.py b/Docker/install_env.py index 841431ff..3d03d38d 100644 --- a/Docker/install_env.py +++ b/Docker/install_env.py @@ -19,7 +19,7 @@ def mode(arg: str) -> str: if arg in ["base", "cpu"] or \ re.match("^cu\\d+$", arg) or \ - re.match("^rocm\\d+\\.\\d+(\\.\\d+)?$"): + re.match("^rocm\\d+\\.\\d+(\\.\\d+)?$", arg): return arg else: raise argparse.ArgumentTypeError(f"The mode was '{arg}', but should be " diff --git a/FastSurferCNN/data_loader/data_utils.py b/FastSurferCNN/data_loader/data_utils.py index 9f98aa53..dd11302b 100644 --- a/FastSurferCNN/data_loader/data_utils.py +++ b/FastSurferCNN/data_loader/data_utils.py @@ -623,7 +623,7 @@ def read_classes_from_lut(lut_file: str | Path): if lut_file.suffix == ".csv": kwargs["sep"] = "," elif lut_file.suffix == ".txt": - kwargs["delim_whitespace"] = True + kwargs["sep"] = "\\s+" else: raise RuntimeError( f"Unknown LUT file extension {lut_file}, must be csv, txt or tsv." diff --git a/FastSurferCNN/inference.py b/FastSurferCNN/inference.py index cdf5b169..f99fea0a 100644 --- a/FastSurferCNN/inference.py +++ b/FastSurferCNN/inference.py @@ -213,7 +213,9 @@ def load_checkpoint(self, ckpt: Union[str, os.PathLike]): # make sure the model is, where it is supposed to be self.model.to(self.device) - model_state = torch.load(ckpt, map_location=device) + # WARNING: weights_only=False can cause unsafe code execution, but here the + # checkpoint can be considered to be from a safe source + model_state = torch.load(ckpt, map_location=device, weights_only=False) self.model.load_state_dict(model_state["model_state"]) # workaround for mps (move the model back to mps) diff --git a/FastSurferCNN/utils/checkpoint.py b/FastSurferCNN/utils/checkpoint.py index 31052bb4..6663a9e0 100644 --- a/FastSurferCNN/utils/checkpoint.py +++ b/FastSurferCNN/utils/checkpoint.py @@ -228,7 +228,9 @@ def load_from_checkpoint( loaded_epoch : int Epoch number. """ - checkpoint = torch.load(checkpoint_path, map_location="cpu") + # WARNING: weights_only=False can cause unsafe code execution, but here the + # checkpoint can be considered to be from a safe source + checkpoint = torch.load(checkpoint_path, map_location="cpu", weights_only=False) if drop_classifier: classifier_conv = ["classifier.conv.weight", "classifier.conv.bias"] diff --git a/HypVINN/inference.py b/HypVINN/inference.py index 10134526..07953dae 100644 --- a/HypVINN/inference.py +++ b/HypVINN/inference.py @@ -181,7 +181,9 @@ def load_checkpoint(self, ckpt: str): of a model. """ logger.info("Loading checkpoint {}".format(ckpt)) - model_state = torch.load(ckpt, map_location=self.device) + # WARNING: weights_only=False can cause unsafe code execution, but here the + # checkpoint can be considered to be from a safe source + model_state = torch.load(ckpt, map_location=self.device, weights_only=False) self.model.load_state_dict(model_state["model_state"]) def get_modelname(self): diff --git a/env/export_pip-r.sh b/env/export_pip-r.sh index 49433793..042563e1 100644 --- a/env/export_pip-r.sh +++ b/env/export_pip-r.sh @@ -73,5 +73,3 @@ pyversion=$(echo "$out" | head -n 1 | cut -d" " -f2) echo "" echo "# $out" } >> $1 - -} \ No newline at end of file From 3e58ed7c9b4ae35593dd81edd9ee8d864b1b9b7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20K=C3=BCgler?= Date: Mon, 2 Sep 2024 14:11:36 +0200 Subject: [PATCH 3/3] Fix script to create requirements.txt export requirements.txt and requirements.cpu.txt from respective docker images --- env/export_pip-r.sh | 12 +- requirements.cpu.txt | 104 +++++++++++++++ requirements.txt | 303 +++++++++++++++---------------------------- requirements_cpu.txt | 201 ---------------------------- 4 files changed, 216 insertions(+), 404 deletions(-) create mode 100644 requirements.cpu.txt delete mode 100644 requirements_cpu.txt diff --git a/env/export_pip-r.sh b/env/export_pip-r.sh index 042563e1..9ec14c61 100644 --- a/env/export_pip-r.sh +++ b/env/export_pip-r.sh @@ -48,21 +48,23 @@ echo "Exporting versions from $2..." echo "#" } > $1 -pip_cmd="python --version && pip list --format=freeze --no-color --all --disable-pip-version-check --no-input" +pip_cmd="python --version && pip list --format=freeze --no-color --disable-pip-version-check --no-input" if [ "${2/#.sif}" != "$2" ] then # singularity - cmd="singularity exec $2 /bin/bash -c '$pip_cmd'" + cmd=("singularity" "exec" "$2" "/bin/bash" -c "$pip_cmd") + clean_cmd="singularity exec $2 /bin/bash -c '$pip_cmd'" else # docker - cmd="docker run --entrypoint /bin/bash $2 -c '$pip_cmd'" + clean_cmd="docker run --rm -u : --entrypoint /bin/bash $2 -c '$pip_cmd'" + cmd=("docker" "run" --rm -u "$(id -u):$(id -g)" --entrypoint /bin/bash "$2" -c "$pip_cmd") fi { echo "# Which ran the following command:" - echo "# $cmd" + echo "# $clean_cmd" echo "#" } >> $1 -out=$($cmd) +out=$("${cmd[@]}") hardware=$(echo "$out" | grep "torch==" | cut -d"+" -f2) pyversion=$(echo "$out" | head -n 1 | cut -d" " -f2) { diff --git a/requirements.cpu.txt b/requirements.cpu.txt new file mode 100644 index 00000000..fe88cd9e --- /dev/null +++ b/requirements.cpu.txt @@ -0,0 +1,104 @@ +# +# This file is autogenerated by kueglerd from deepmi/fastsurfer:cpu-v2.3.0 +# by the following command from FastSurfer: +# +# ./requirements.cpu.txt deepmi/fastsurfer:cpu-v2.3.0 +# +# Which ran the following command: +# docker run --rm -u : --entrypoint /bin/bash deepmi/fastsurfer:cpu-v2.3.0 -c 'python --version && pip list --format=freeze --no-color --disable-pip-version-check --no-input' +# +# +# Image was configured for cpu using python version 3.10.14 +# +--extra-index-url https://download.pytorch.org/whl/cpu + +# Python 3.10.14 +absl-py==2.1.0 +Brotli==1.1.0 +cached-property==1.5.2 +certifi==2024.7.4 +cffi==1.17.0 +charset-normalizer==3.3.2 +click==8.1.7 +colorama==0.4.6 +contourpy==1.2.1 +cycler==0.12.1 +Deprecated==1.2.14 +filelock==3.15.4 +fonttools==4.53.1 +fsspec==2024.6.1 +grpcio==1.62.2 +h2==4.1.0 +h5py==3.11.0 +hpack==4.0.0 +humanize==4.10.0 +hyperframe==6.0.1 +idna==3.8 +imagecodecs==2024.6.1 +imageio==2.35.1 +importlib_metadata==8.4.0 +importlib_resources==6.4.4 +Jinja2==3.1.4 +joblib==1.4.2 +kiwisolver==1.4.5 +lapy==1.1.0 +lazy_loader==0.4 +Markdown==3.6 +markdown-it-py==3.0.0 +MarkupSafe==2.1.5 +matplotlib==3.9.2 +mdurl==0.1.2 +mpmath==1.3.0 +munkres==1.1.4 +networkx==3.3 +nibabel==5.2.1 +numpy==1.26.4 +packaging==24.1 +pandas==2.2.2 +pillow==10.4.0 +pip==24.2 +plotly==5.23.0 +protobuf==4.25.3 +psutil==6.0.0 +pycparser==2.22 +Pygments==2.18.0 +pyparsing==3.1.4 +PySide6==6.7.2 +PySocks==1.7.1 +python-dateutil==2.9.0 +pytz==2024.1 +PyWavelets==1.7.0 +PyYAML==6.0.2 +requests==2.32.3 +rich==13.8.0 +scikit-image==0.24.0 +scikit-learn==1.5.1 +scikit-sparse==0.4.14 +scipy==1.14.1 +setuptools==72.2.0 +shellingham==1.5.4 +shiboken6==6.7.2 +SimpleITK==2.4.0 +six==1.16.0 +sympy==1.13.2 +tenacity==9.0.0 +tensorboard==2.17.1 +tensorboard-data-server==0.7.0 +threadpoolctl==3.5.0 +tifffile==2024.8.24 +torch==2.4.0+cpu +torchio==0.19.9 +torchvision==0.19.0+cpu +tornado==6.4.1 +tqdm==4.66.5 +typer==0.12.5 +typing_extensions==4.12.2 +tzdata==2024.1 +unicodedata2==15.1.0 +urllib3==2.2.2 +Werkzeug==3.0.4 +wheel==0.44.0 +wrapt==1.16.0 +yacs==0.1.8 +zipp==3.20.0 +zstandard==0.23.0 diff --git a/requirements.txt b/requirements.txt index 4ee513bf..f168f221 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,210 +1,117 @@ # -# This file is autogenerated by pip-compile with Python 3.10 -# by the following command: +# This file is autogenerated by kueglerd from deepmi/fastsurfer:cu124-v2.3.0 +# by the following command from FastSurfer: # -# pip-compile requirements.in +# ./requirements.txt deepmi/fastsurfer:cu124-v2.3.0 # ---extra-index-url https://download.pytorch.org/whl/cu117 +# Which ran the following command: +# docker run --rm -u : --entrypoint /bin/bash deepmi/fastsurfer:cu124-v2.3.0 -c 'python --version && pip list --format=freeze --no-color --disable-pip-version-check --no-input' +# +# +# Image was configured for cu124 using python version 3.10.14 +# +--extra-index-url https://download.pytorch.org/whl/cu124 -absl-py==2.0.0 - # via tensorboard -cachetools==5.3.2 - # via google-auth -certifi==2023.7.22 - # via requests +# Python 3.10.14 +absl-py==2.1.0 +Brotli==1.1.0 +cached-property==1.5.2 +certifi==2024.7.4 +cffi==1.17.0 charset-normalizer==3.3.2 - # via requests click==8.1.7 - # via torchio -cmake==3.27.7 - # via triton -contourpy==1.2.0 - # via matplotlib +colorama==0.4.6 +contourpy==1.2.1 cycler==0.12.1 - # via matplotlib -deprecated==1.2.14 - # via torchio -filelock==3.13.1 - # via - # torch - # triton -fonttools==4.44.3 - # via matplotlib -google-auth==2.23.4 - # via - # google-auth-oauthlib - # tensorboard -google-auth-oauthlib==1.0.0 - # via tensorboard -grpcio==1.59.2 - # via tensorboard -h5py==3.7.0 - # via -r requirements.in -humanize==4.8.0 - # via torchio -idna==3.4 - # via requests -imageio==2.32.0 - # via scikit-image -jinja2==3.1.2 - # via torch -joblib==1.3.2 - # via scikit-learn +Deprecated==1.2.14 +filelock==3.15.4 +fonttools==4.53.1 +fsspec==2024.6.1 +grpcio==1.62.2 +h2==4.1.0 +h5py==3.11.0 +hpack==4.0.0 +humanize==4.10.0 +hyperframe==6.0.1 +idna==3.8 +imagecodecs==2024.6.1 +imageio==2.35.1 +importlib_metadata==8.4.0 +importlib_resources==6.4.4 +Jinja2==3.1.4 +joblib==1.4.2 kiwisolver==1.4.5 - # via matplotlib -lapy==1.0.1 - # via -r requirements.in -lit==17.0.5 - # via triton -markdown==3.5.1 - # via tensorboard -markupsafe==2.1.3 - # via - # jinja2 - # werkzeug -matplotlib==3.7.1 - # via -r requirements.in +lapy==1.1.0 +lazy_loader==0.4 +Markdown==3.6 +markdown-it-py==3.0.0 +MarkupSafe==2.1.5 +matplotlib==3.9.2 +mdurl==0.1.2 mpmath==1.3.0 - # via sympy -networkx==3.2.1 - # via - # scikit-image - # torch -nibabel==5.1.0 - # via - # -r requirements.in - # lapy - # torchio -numpy==1.25.0 - # via - # -r requirements.in - # contourpy - # h5py - # imageio - # lapy - # matplotlib - # nibabel - # pandas - # pywavelets - # scikit-image - # scikit-learn - # scipy - # tensorboard - # tifffile - # torchio - # torchvision -oauthlib==3.2.2 - # via requests-oauthlib -packaging==23.2 - # via - # matplotlib - # nibabel - # plotly - # scikit-image -pandas==1.5.3 - # via -r requirements.in -pillow==10.0.1 - # via - # -r requirements.in - # imageio - # matplotlib - # scikit-image - # torchvision -plotly==5.18.0 - # via lapy -protobuf==4.25.1 - # via tensorboard -psutil==5.9.6 - # via lapy -pyasn1==0.5.0 - # via - # pyasn1-modules - # rsa -pyasn1-modules==0.3.0 - # via google-auth -pyparsing==3.1.1 - # via matplotlib -python-dateutil==2.8.2 - # via - # -r requirements.in - # matplotlib - # pandas -pytz==2023.3.post1 - # via pandas -pywavelets==1.4.1 - # via scikit-image -pyyaml==6.0 - # via - # -r requirements.in - # yacs -requests==2.31.0 - # via - # requests-oauthlib - # tensorboard - # torchvision -requests-oauthlib==1.3.1 - # via google-auth-oauthlib -rsa==4.9 - # via google-auth -scikit-image==0.19.3 - # via -r requirements.in -scikit-learn==1.2.2 - # via -r requirements.in -scipy==1.10.1 - # via - # -r requirements.in - # lapy - # scikit-image - # scikit-learn - # torchio -simpleitk==2.2.1 - # via - # -r requirements.in - # torchio +munkres==1.1.4 +networkx==3.3 +nibabel==5.2.1 +numpy==1.26.4 +nvidia-cublas-cu12==12.4.2.65 +nvidia-cuda-cupti-cu12==12.4.99 +nvidia-cuda-nvrtc-cu12==12.4.99 +nvidia-cuda-runtime-cu12==12.4.99 +nvidia-cudnn-cu12==9.1.0.70 +nvidia-cufft-cu12==11.2.0.44 +nvidia-curand-cu12==10.3.5.119 +nvidia-cusolver-cu12==11.6.0.99 +nvidia-cusparse-cu12==12.3.0.142 +nvidia-nccl-cu12==2.20.5 +nvidia-nvjitlink-cu12==12.4.99 +nvidia-nvtx-cu12==12.4.99 +packaging==24.1 +pandas==2.2.2 +pillow==10.4.0 +pip==24.2 +plotly==5.23.0 +protobuf==4.25.3 +psutil==6.0.0 +pycparser==2.22 +Pygments==2.18.0 +pyparsing==3.1.4 +PySide6==6.7.2 +PySocks==1.7.1 +python-dateutil==2.9.0 +pytz==2024.1 +PyWavelets==1.7.0 +PyYAML==6.0.2 +requests==2.32.3 +rich==13.7.1 +scikit-image==0.24.0 +scikit-learn==1.5.1 +scikit-sparse==0.4.14 +scipy==1.14.1 +setuptools==72.2.0 +shellingham==1.5.4 +shiboken6==6.7.2 +SimpleITK==2.4.0 six==1.16.0 - # via python-dateutil -sympy==1.12 - # via torch -tenacity==8.2.3 - # via plotly -tensorboard==2.12.1 - # via -r requirements.in -tensorboard-data-server==0.7.2 - # via tensorboard -tensorboard-plugin-wit==1.8.1 - # via tensorboard -threadpoolctl==3.2.0 - # via scikit-learn -tifffile==2023.9.26 - # via scikit-image -torch==2.0.1+cu117 - # via - # -r requirements.in - # torchio - # torchvision - # triton -torchio==0.18.83 - # via -r requirements.in -torchvision==0.15.2+cu117 - # via -r requirements.in -tqdm==4.65.0 - # via - # -r requirements.in - # torchio -triton==2.0.0 - # via torch -typing-extensions==4.8.0 - # via torch -urllib3==2.1.0 - # via requests -werkzeug==3.0.1 - # via tensorboard -wheel==0.41.3 - # via tensorboard +sympy==1.13.2 +tenacity==9.0.0 +tensorboard==2.17.1 +tensorboard-data-server==0.7.0 +threadpoolctl==3.5.0 +tifffile==2024.8.24 +torch==2.4.0+cu124 +torchio==0.19.9 +torchvision==0.19.0+cu124 +tornado==6.4.1 +tqdm==4.66.5 +triton==3.0.0 +typer==0.12.5 +typing_extensions==4.12.2 +tzdata==2024.1 +unicodedata2==15.1.0 +urllib3==2.2.2 +Werkzeug==3.0.4 +wheel==0.44.0 wrapt==1.16.0 - # via deprecated yacs==0.1.8 - # via -r requirements.in - -# The following packages are considered to be unsafe in a requirements file: -# setuptools +zipp==3.20.0 +zstandard==0.23.0 diff --git a/requirements_cpu.txt b/requirements_cpu.txt deleted file mode 100644 index 2e342b12..00000000 --- a/requirements_cpu.txt +++ /dev/null @@ -1,201 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.10 -# by the following command: -# -# pip-compile --output-file=requirements_cpu.txt requirements.in -# ---extra-index-url https://download.pytorch.org/whl/cpu - -absl-py==2.0.0 - # via tensorboard -cachetools==5.3.2 - # via google-auth -certifi==2023.7.22 - # via requests -charset-normalizer==3.3.2 - # via requests -click==8.1.7 - # via torchio -contourpy==1.2.0 - # via matplotlib -cycler==0.12.1 - # via matplotlib -deprecated==1.2.14 - # via torchio -filelock==3.13.1 - # via torch -fonttools==4.44.3 - # via matplotlib -google-auth==2.23.4 - # via - # google-auth-oauthlib - # tensorboard -google-auth-oauthlib==1.0.0 - # via tensorboard -grpcio==1.59.2 - # via tensorboard -h5py==3.7.0 - # via -r requirements.in -humanize==4.8.0 - # via torchio -idna==3.4 - # via requests -imageio==2.32.0 - # via scikit-image -jinja2==3.1.2 - # via torch -joblib==1.3.2 - # via scikit-learn -kiwisolver==1.4.5 - # via matplotlib -lapy==1.0.1 - # via -r requirements.in -markdown==3.5.1 - # via tensorboard -markupsafe==2.1.3 - # via - # jinja2 - # werkzeug -matplotlib==3.7.1 - # via -r requirements.in -mpmath==1.3.0 - # via sympy -networkx==3.2.1 - # via - # scikit-image - # torch -nibabel==5.1.0 - # via - # -r requirements.in - # lapy - # torchio -numpy==1.25.0 - # via - # -r requirements.in - # contourpy - # h5py - # imageio - # lapy - # matplotlib - # nibabel - # pandas - # pywavelets - # scikit-image - # scikit-learn - # scipy - # tensorboard - # tifffile - # torchio - # torchvision -oauthlib==3.2.2 - # via requests-oauthlib -packaging==23.2 - # via - # matplotlib - # nibabel - # plotly - # scikit-image -pandas==1.5.3 - # via -r requirements.in -pillow==10.0.1 - # via - # -r requirements.in - # imageio - # matplotlib - # scikit-image - # torchvision -plotly==5.18.0 - # via lapy -protobuf==4.25.1 - # via tensorboard -psutil==5.9.6 - # via lapy -pyasn1==0.5.0 - # via - # pyasn1-modules - # rsa -pyasn1-modules==0.3.0 - # via google-auth -pyparsing==3.1.1 - # via matplotlib -python-dateutil==2.8.2 - # via - # -r requirements.in - # matplotlib - # pandas -pytz==2023.3.post1 - # via pandas -pywavelets==1.4.1 - # via scikit-image -pyyaml==6.0 - # via - # -r requirements.in - # yacs -requests==2.31.0 - # via - # requests-oauthlib - # tensorboard - # torchvision -requests-oauthlib==1.3.1 - # via google-auth-oauthlib -rsa==4.9 - # via google-auth -scikit-image==0.19.3 - # via -r requirements.in -scikit-learn==1.2.2 - # via -r requirements.in -scipy==1.10.1 - # via - # -r requirements.in - # lapy - # scikit-image - # scikit-learn - # torchio -simpleitk==2.2.1 - # via - # -r requirements.in - # torchio -six==1.16.0 - # via python-dateutil -sympy==1.12 - # via torch -tenacity==8.2.3 - # via plotly -tensorboard==2.12.1 - # via -r requirements.in -tensorboard-data-server==0.7.2 - # via tensorboard -tensorboard-plugin-wit==1.8.1 - # via tensorboard -threadpoolctl==3.2.0 - # via scikit-learn -tifffile==2023.9.26 - # via scikit-image -torch==2.0.1+cpu - # via - # -r requirements.in - # torchio - # torchvision -torchio==0.18.83 - # via -r requirements.in -torchvision==0.15.2+cpu - # via -r requirements.in -tqdm==4.65.0 - # via - # -r requirements.in - # torchio -typing-extensions==4.8.0 - # via torch -urllib3==2.1.0 - # via requests -werkzeug==3.0.1 - # via tensorboard -wheel==0.41.3 - # via tensorboard -wrapt==1.16.0 - # via deprecated -yacs==0.1.8 - # via -r requirements.in - -# The following packages are considered to be unsafe in a requirements file: -# setuptools