Jupyter was run in a Docker container at NERSC with a pre-defined reproducible software environment. Parallel computing workers were launched on Cori from Jupyter with  Dask-jobqueue. Workers could be scaled up or down on-demand. Jupyter farmed out parallel tasks to Dask; the results of these parallel runs were pulled back into the notebook and visualized. A large batch of simulations was run to generate data for a machine learning application.