# UserWarning: You are using a decoder-only model with padding_side='right'. This may produce incorrect results. Consider setting padding_side='left' before tokenizing.

- **ID:** `huggingface/decoder-only-padding-side-warning`
- **Domain:** huggingface
- **Category:** config_error
- **Verification:** ai_generated
- **Fix Rate:** 92%

## Root Cause

Decoder-only models (e.g., GPT, LLaMA) expect padding on the left side to maintain causal masking; right padding causes attention to attend to padding tokens in the middle of the sequence.

## Version Compatibility

| Version | Status | Introduced | Deprecated |
|---------|--------|------------|------------|
| transformers>=4.30.0 | active | — | — |
| torch>=2.0.0 | active | — | — |
| Python>=3.8 | active | — | — |

## Workarounds

1. **Set padding_side='left' and pad_token to eos_token before tokenizing:
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained('meta-llama/Llama-2-7b-chat-hf')
tokenizer.padding_side = 'left'
tokenizer.pad_token = tokenizer.eos_token
inputs = tokenizer(texts, padding=True, return_tensors='pt')** (92% success)
   ```
   Set padding_side='left' and pad_token to eos_token before tokenizing:
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained('meta-llama/Llama-2-7b-chat-hf')
tokenizer.padding_side = 'left'
tokenizer.pad_token = tokenizer.eos_token
inputs = tokenizer(texts, padding=True, return_tensors='pt')
   ```
2. **Use a data collator that handles left padding automatically, such as DataCollatorForSeq2Seq with padding_side='left':
from transformers import DataCollatorForSeq2Seq
data_collator = DataCollatorForSeq2Seq(tokenizer, padding=True, pad_to_multiple_of=8)
tokenizer.padding_side = 'left'** (85% success)
   ```
   Use a data collator that handles left padding automatically, such as DataCollatorForSeq2Seq with padding_side='left':
from transformers import DataCollatorForSeq2Seq
data_collator = DataCollatorForSeq2Seq(tokenizer, padding=True, pad_to_multiple_of=8)
tokenizer.padding_side = 'left'
   ```

## Dead Ends

- **** — Setting padding_side='right' and adding an attention_mask is a common wrong fix; the model still sees padding in the middle of the sequence, breaking causal masking. (70% fail)
- **** — Disabling padding entirely (padding=False) often causes batch processing to fail due to uneven sequence lengths, leading to a different error. (90% fail)
