diff --git a/.github/workflows/self-scheduled.yml b/.github/workflows/self-scheduled.yml index d3de9b70e87c..5fb297d5c26c 100644 --- a/.github/workflows/self-scheduled.yml +++ b/.github/workflows/self-scheduled.yml @@ -102,8 +102,10 @@ jobs: working-directory: /transformers/tests run: | if [ "${{ inputs.job }}" = "run_models_gpu" ]; then - echo "folder_slices=$(python3 ../utils/split_model_tests.py --subdirs '${{ inputs.subdirs }}' --num_splits ${{ env.NUM_SLICES }})" >> $GITHUB_OUTPUT - echo "slice_ids=$(python3 -c 'd = list(range(${{ env.NUM_SLICES }})); print(d)')" >> $GITHUB_OUTPUT + python3 ../utils/split_model_tests.py --subdirs '${{ inputs.subdirs }}' --num_splits ${{ env.NUM_SLICES }} > folder_slices.txt + echo "folder_slices=$(cat folder_slices.txt)" >> $GITHUB_OUTPUT + python3 -c "import ast; folder_slices = ast.literal_eval(open('folder_slices.txt').read()); open('slice_ids.txt', 'w').write(str(list(range(len(folder_slices)))))" + echo "slice_ids=$(cat slice_ids.txt)" >> $GITHUB_OUTPUT elif [ "${{ inputs.job }}" = "run_trainer_and_fsdp_gpu" ]; then echo "folder_slices=[['trainer'], ['fsdp']]" >> $GITHUB_OUTPUT echo "slice_ids=[0, 1]" >> $GITHUB_OUTPUT diff --git a/utils/split_model_tests.py b/utils/split_model_tests.py index 344dc5449f35..40a37ab94b13 100644 --- a/utils/split_model_tests.py +++ b/utils/split_model_tests.py @@ -81,6 +81,8 @@ for idx in range(args.num_splits): start = end end = start + num_jobs_per_splits + (1 if idx < num_jobs % args.num_splits else 0) - model_splits.append(d[start:end]) + # Only add the slice if it is not an empty list + if len(d[start:end]) > 0: + model_splits.append(d[start:end]) print(model_splits)