QSIPrep Docker setup -- suspiciously long runtime

Summary of what happened:

I ran QSIPrep on a single subject as a test before running it on a large dataset and it did not complete after 24 hours. I understand that it’s a complex pipeline to run, but it shouldn’t take 24 hours to process one subject, especially on a powerful computer, so I don’t know what I am doing incorrectly. I am using Docker Desktop (version 4.40.0) on an M2 Max chip MacOS with 32 GB of memory and running Sonoma 14.0. In Docker’s resources, I allocated 12/12 available CPU, 24GB out of 32 GB available, and increased my disk usage to 1.51 TB out of 2 TB available. There have not been any crash logs generated and it did not seem to have stalled. When I stopped the process I had this in my output folder:

├── dataset_description.json
├── logs
│   ├── CITATION.bib
│   ├── CITATION.md
│   └── CITATION.tex
├── sub-003
│   ├── anat
│   │   ├── sub-003_from-ACPC_to-anat_mode-image_xfm.mat
│   │   ├── sub-003_from-ACPC_to-MNI152NLin2009cAsym_mode-image_xfm.h5
│   │   ├── sub-003_from-anat_to-ACPC_mode-image_xfm.mat
│   │   ├── sub-003_from-MNI152NLin2009cAsym_to-ACPC_mode-image_xfm.h5
│   │   ├── sub-003_space-ACPC_desc-aseg_dseg.nii.gz
│   │   ├── sub-003_space-ACPC_desc-brain_mask.nii.gz
│   │   ├── sub-003_space-ACPC_desc-preproc_T1w.json
│   │   ├── sub-003_space-ACPC_desc-preproc_T1w.nii.gz
│   │   └── sub-003_space-ACPC_dseg.nii.gz
│   ├── figures
│   │   ├── sub-003_about.html
│   │   └── sub-003_summary.html
│   ├── log
│   │   └── 20250520-200316_17b33e2e-2b07-421f-99f5-845599abe5d8
│   │       └── qsiprep.toml
│   └── ses-pre
│       ├── anat
│       │   └── sub-003_ses-pre_acq-avg_from-orig_to-anat_mode-image_xfm.txt
│       ├── dwi
│       │   └── sub-003_ses-pre_space-ACPC_desc-preproc_dwi.json
│       └── figures
│           ├── sub-003_ses-pre_acq-b1000b2000_desc-denoising_dwi.svg
│           ├── sub-003_ses-pre_acq-b3000_desc-denoising_dwi.svg
│           ├── sub-003_ses-pre_conform.html
│           ├── sub-003_ses-pre_desc-seg_mask.svg
│           ├── sub-003_ses-pre_desc-summary_dwi.html
│           └── sub-003_ses-pre_t1w2mni.svg
└── sub-003.html

11 directories, 25 files

Command used (and if a helper script was used, a link to the helper script or the command generated):

docker run -ti --rm \
  --platform linux/amd64 \
  -v /path/to/my/data:/data:ro \
  -v /path/to/output/folder:/out \
  -v /Applications/freesurfer/7.4.1/license.txt:/opt/freesurfer/license.txt \
  pennlinc/qsiprep:latest \
  /data /out participant \
  --participant-label 003 \
  --session-id pre \
  --fs-license-file /opt/freesurfer/license.txt \
  --output-resolution 1.0 \
  --skip-bids-validation \
  --ignore fieldmaps \
  --stop-on-first-crash \
  --b0-threshold 1

Version:

Latest (1.0.1 at this time)

Environment (Docker, Singularity / Apptainer, custom installation):

Docker

Data formatted according to a validatable standard? Please provide the output of the validator:

PASTE VALIDATOR OUTPUT HERE

Relevant log outputs (up to 20 lines):

PASTE LOG OUTPUT HERE

Screenshots / relevant information:


Hi @madeleineb and welcome to neurostars!

Did you try also setting the memory and CPU as qsiprep arguments? How much data per subject (number of runs, volume, voxel size)? 1.0 is also a pretty small voxel resolution. What was the last parts of the log? Did you look at any resource monitoring to see how much memory was used? I also do not know how well Apple Silicon is supported.

Why specify that if you’re on a Mac?

Best,
Steven