Skip to content

Use of MIOPEN_USER_DB_PATH for training speedup in sequential jobs settings  #3322

Description

@formiel

Hello,

I would like to ask if we can use MIOPEN_USER_DB_PATH to accelerate model training in a sequential job setting, where each job starts after the previous one has finished . As I checked the documentation, it is said that:

System FindDb can be cached into memory and may dramatically increase performance.

In my experiments, I observed a gradual speedup during the first run of model training as follows:

  • Step 0 - 5k: took 545 minutes
  • Step 5k - 10k: took 373 minutes
  • Step 10k - 15k: took 300 minutes
  • Step 15k - 20k: took 162 minutes
  • Step 20k - 25k: took 137 minutes
  • Step 25k - 30k: took 127 minutes
  • Step 30k - 35k: took 110 minutes.

However, I need to setup the jobs sequentially due to time constraints imposed by SLURM. During the second run, the model experienced similar phases as the first run, with step 35k - 40k taking 545 minutes and so on.

After reading a previous comment and the documentation, I wonder if setting the MIOPEN_USER_DB_PATH specific to each job (based on the experiment name) and SLURM process ID as below could help leverage the optimized convolutional kernels found in previous runs to make training faster:

export MIOPEN_USER_DB_PATH="$SCRATCH/tmp/miopen-cache/${CONFIG}_ngpus${NGPUs}/$SLURM_PROCID"
export MIOPEN_CUSTOM_CACHE_DIR="${MIOPEN_USER_DB_PATH}"
mkdir -p ${MIOPEN_USER_DB_PATH}

If not, is there any way to sustain the performance observed in the previous run, such that the first 5k step of the next job takes 110 minutes please? As the same training on A100 takes 60 minutes for each 5K steps, the average run on MI250x as shown above would take around 250 minutes, which is more than 4 times longer than on A100.

Many thanks in advance for your response!

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions