My first thought would be that you only add the ignore index when you calculate your own loss. But before that, the loss that is calculated within the HF model does not have -100 in its labels yet. AFAIK forward does not modify the given labels. So this should be before both model calls, I think:
labels = batch["target_text_input_ids"].clone() 
labels[labels == 0] = -100