Skip to content

Fix BERTScore OverflowError when the tokenizer has no model_max_length - #790

Open
tonycoder-hub wants to merge 1 commit into
huggingface:mainfrom
tonycoder-hub:cursor/fix-bertscore-model-max-length-overflow-f615
Open

Fix BERTScore OverflowError when the tokenizer has no model_max_length#790
tonycoder-hub wants to merge 1 commit into
huggingface:mainfrom
tonycoder-hub:cursor/fix-bertscore-model-max-length-overflow-f615

Conversation

@tonycoder-hub

Copy link
Copy Markdown

Fixes #739

Problem

bertscore.compute(..., model_type="microsoft/deberta-xlarge-mnli") crashes with OverflowError: int too big to convert under transformers>=5. Tokenizers that omit model_max_length report a huge sentinel, and bert_score forwards it into tokenizer.encode(max_length=...).

Fix

Cap the sentinel to 512 (BERT-family default / DeBERTa max_position_embeddings) before any tokenization, including the idf=True path. Expose an optional max_length override. Models that already declare a real model_max_length are untouched.

#756 proposed a similar cap but applied it after BERTScorer construction, so idf=True still overflowed.

Tests

test_bertscore_caps_undefined_model_max_length and test_bertscore_max_length_overrides_model_max_length in tests/test_metric_common.py (idf=True). python -m pytest tests/test_metric_common.py -k bertscore -q: 3 passed. make quality clean on the changed files.

Tokenizers whose config omits `model_max_length` report transformers'
VERY_LARGE_INTEGER sentinel (~1e30) instead. bert_score forwards that value
to `tokenizer.encode(max_length=...)`, which overflows the Rust tokenizers
backend used by transformers>=5, e.g. for microsoft/deberta-xlarge-mnli.

Cap the sentinel to 512 before any tokenization happens, and add a
`max_length` argument so a different truncation length can be requested.

Fixes huggingface#739

Co-authored-by: Tony Coder <407243179@qq.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

BERTScore: OverflowError with transformers>=5 due to undefined model_max_length

2 participants