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!
Hello,
I would like to ask if we can use
MIOPEN_USER_DB_PATHto 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:In my experiments, I observed a gradual speedup during the first run of model training as follows:
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_PATHspecific 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: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!