Error during inference

#6
by alvations - opened

With this input,

"תאגיד הדלק והכימיקלים של סין (באנגלית: China Petroleum & Chemical Corporation, בסינית: 中国石油化工股份有限公司) או סינופק (אנגלית: Sinopec Limited, סינית: 中国石化, סינית מסורתית: 中國石化, פין-יין: Zhōngguó Shíhuà) היא תאגיד נפט וגז ממשלתי סיני הממוקם בבייג'ינג."

the model throws the error for transformers==4.31.0:

---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-31-e2292311132f> in <module>
----> 1 translator(s)

~/Library/Python/3.8/lib/python/site-packages/transformers/pipelines/text2text_generation.py in __call__(self, *args, **kwargs)
    365               token ids of the translation.
    366         """
--> 367         return super().__call__(*args, **kwargs)

~/Library/Python/3.8/lib/python/site-packages/transformers/pipelines/text2text_generation.py in __call__(self, *args, **kwargs)
    163         """
    164 
--> 165         result = super().__call__(*args, **kwargs)
    166         if (
    167             isinstance(args[0], list)

~/Library/Python/3.8/lib/python/site-packages/transformers/pipelines/base.py in __call__(self, inputs, num_workers, batch_size, *args, **kwargs)
   1120             )
   1121         else:
-> 1122             return self.run_single(inputs, preprocess_params, forward_params, postprocess_params)
   1123 
   1124     def run_multi(self, inputs, preprocess_params, forward_params, postprocess_params):

~/Library/Python/3.8/lib/python/site-packages/transformers/pipelines/base.py in run_single(self, inputs, preprocess_params, forward_params, postprocess_params)
   1127     def run_single(self, inputs, preprocess_params, forward_params, postprocess_params):
   1128         model_inputs = self.preprocess(inputs, **preprocess_params)
-> 1129         model_outputs = self.forward(model_inputs, **forward_params)
   1130         outputs = self.postprocess(model_outputs, **postprocess_params)
   1131         return outputs

~/Library/Python/3.8/lib/python/site-packages/transformers/pipelines/base.py in forward(self, model_inputs, **forward_params)
   1026                 with inference_context():
   1027                     model_inputs = self._ensure_tensor_on_device(model_inputs, device=self.device)
-> 1028                     model_outputs = self._forward(model_inputs, **forward_params)
   1029                     model_outputs = self._ensure_tensor_on_device(model_outputs, device=torch.device("cpu"))
   1030             else:

~/Library/Python/3.8/lib/python/site-packages/transformers/pipelines/text2text_generation.py in _forward(self, model_inputs, **generate_kwargs)
    185         generate_kwargs["max_length"] = generate_kwargs.get("max_length", self.model.config.max_length)
    186         self.check_inputs(input_length, generate_kwargs["min_length"], generate_kwargs["max_length"])
--> 187         output_ids = self.model.generate(**model_inputs, **generate_kwargs)
    188         out_b = output_ids.shape[0]
    189         if self.framework == "pt":

~/Library/Python/3.8/lib/python/site-packages/torch/utils/_contextlib.py in decorate_context(*args, **kwargs)

~/Library/Python/3.8/lib/python/site-packages/transformers/generation/utils.py in generate(self, inputs, generation_config, logits_processor, stopping_criteria, prefix_allowed_tokens_fn, synced_gpus, assistant_model, streamer, **kwargs)
   1625             )
   1626             # 13. run beam search
-> 1627             return self.beam_search(
   1628                 input_ids,
   1629                 beam_scorer,

~/Library/Python/3.8/lib/python/site-packages/transformers/generation/utils.py in beam_search(self, input_ids, beam_scorer, logits_processor, stopping_criteria, max_length, pad_token_id, eos_token_id, output_attentions, output_hidden_states, output_scores, return_dict_in_generate, synced_gpus, **model_kwargs)
   2930             model_inputs = self.prepare_inputs_for_generation(input_ids, **model_kwargs)
   2931 
-> 2932             outputs = self(
   2933                 **model_inputs,
   2934                 return_dict=True,

~/Library/Python/3.8/lib/python/site-packages/torch/nn/modules/module.py in _call_impl(self, *args, **kwargs)
   1499     def parameters(self, recurse: bool = True) -> Iterator[Parameter]:
   1500         r"""Returns an iterator over module parameters.
-> 1501 
   1502         This is typically passed to an optimizer.
   1503 

~/Library/Python/3.8/lib/python/site-packages/transformers/models/marian/modeling_marian.py in forward(self, input_ids, attention_mask, decoder_input_ids, decoder_attention_mask, head_mask, decoder_head_mask, cross_attn_head_mask, encoder_outputs, past_key_values, inputs_embeds, decoder_inputs_embeds, labels, use_cache, output_attentions, output_hidden_states, return_dict)
   1454                 )
   1455 
-> 1456         outputs = self.model(
   1457             input_ids,
   1458             attention_mask=attention_mask,

~/Library/Python/3.8/lib/python/site-packages/torch/nn/modules/module.py in _call_impl(self, *args, **kwargs)
   1499     def parameters(self, recurse: bool = True) -> Iterator[Parameter]:
   1500         r"""Returns an iterator over module parameters.
-> 1501 
   1502         This is typically passed to an optimizer.
   1503 

~/Library/Python/3.8/lib/python/site-packages/transformers/models/marian/modeling_marian.py in forward(self, input_ids, attention_mask, decoder_input_ids, decoder_attention_mask, head_mask, decoder_head_mask, cross_attn_head_mask, encoder_outputs, past_key_values, inputs_embeds, decoder_inputs_embeds, use_cache, output_attentions, output_hidden_states, return_dict)
   1256 
   1257         # decoder outputs consists of (dec_features, past_key_value, dec_hidden, dec_attn)
-> 1258         decoder_outputs = self.decoder(
   1259             input_ids=decoder_input_ids,
   1260             attention_mask=decoder_attention_mask,

~/Library/Python/3.8/lib/python/site-packages/torch/nn/modules/module.py in _call_impl(self, *args, **kwargs)
   1499     def parameters(self, recurse: bool = True) -> Iterator[Parameter]:
   1500         r"""Returns an iterator over module parameters.
-> 1501 
   1502         This is typically passed to an optimizer.
   1503 

~/Library/Python/3.8/lib/python/site-packages/transformers/models/marian/modeling_marian.py in forward(self, input_ids, attention_mask, encoder_hidden_states, encoder_attention_mask, head_mask, cross_attn_head_mask, past_key_values, inputs_embeds, use_cache, output_attentions, output_hidden_states, return_dict)
    999 
   1000         # embed positions
-> 1001         positions = self.embed_positions(input_shape, past_key_values_length)
   1002 
   1003         hidden_states = inputs_embeds + positions

~/Library/Python/3.8/lib/python/site-packages/torch/nn/modules/module.py in _call_impl(self, *args, **kwargs)
   1499     def parameters(self, recurse: bool = True) -> Iterator[Parameter]:
   1500         r"""Returns an iterator over module parameters.
-> 1501 
   1502         This is typically passed to an optimizer.
   1503 

~/Library/Python/3.8/lib/python/site-packages/torch/utils/_contextlib.py in decorate_context(*args, **kwargs)

~/Library/Python/3.8/lib/python/site-packages/transformers/models/marian/modeling_marian.py in forward(self, input_ids_shape, past_key_values_length)
    138             past_key_values_length, past_key_values_length + seq_len, dtype=torch.long, device=self.weight.device
    139         )
--> 140         return super().forward(positions)
    141 
    142 

~/Library/Python/3.8/lib/python/site-packages/torch/nn/modules/sparse.py in forward(self, input)
    160             self.norm_type, self.scale_grad_by_freq, self.sparse)
    161 
--> 162     def extra_repr(self) -> str:
    163         s = '{num_embeddings}, {embedding_dim}'
    164         if self.padding_idx is not None:

~/Library/Python/3.8/lib/python/site-packages/torch/nn/functional.py in embedding(input, weight, padding_idx, max_norm, norm_type, scale_grad_by_freq, sparse)
   2208     else:
   2209         raise ValueError("mode has to be one of sum, mean or max")
-> 2210 
   2211     if max_norm is not None:
   2212         # XXX: equivalent to

IndexError: index out of range in self

To replicate the error:

from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
from transformers import pipeline


tokenizer = AutoTokenizer.from_pretrained("Helsinki-NLP/opus-mt-mul-en")
model = AutoModelForSeq2SeqLM.from_pretrained("Helsinki-NLP/opus-mt-mul-en")


translator = pipeline("translation", tokenizer=tokenizer, model=model, max_length=1024)

s = "תאגיד הדלק והכימיקלים של סין (באנגלית: China Petroleum & Chemical Corporation, בסינית: 中国石油化工股份有限公司) או סינופק (אנגלית: Sinopec Limited, סינית: 中国石化, סינית מסורתית: 中國石化, פין-יין: Zhōngguó Shíhuà) היא תאגיד נפט וגז ממשלתי סיני הממוקם בבייג'ינג."

translator(s, src_lang="he")

Found a few more inputs that causes the same error:

from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
from transformers import pipeline

tokenizer = AutoTokenizer.from_pretrained("Helsinki-NLP/opus-mt-mul-en")
model = AutoModelForSeq2SeqLM.from_pretrained("Helsinki-NLP/opus-mt-mul-en")

translator = pipeline("translation", tokenizer=tokenizer, model=model, max_length=1024)

s = """לכל מכרי ומוקירי זכרי:מציאאות לפמיםם נס מממקום הכי פפחות צפוי אבל עם גב ללקיר הכל אפשרי וואני מבייט בגדדרר הירוקה לשברי כלים שהייתי מיועד לשם, כאשר עו"ס אקים משולב מרעהו ברפש לנפש לפקח על מה שתקנו "פיגור של גאונים" לטאטטא חצר בבית מלאכה ואחרי שנתייים אולי לתפור ידיעות לתיקי בתי ספר,ואז כבר התחלתי לגשש במעש אוותנטי לא רווחי להגיע ללעינים אחרות ואחרי שנתיים טסתי מעעבר לגדרות ולחומות,בטיפול מיטבי להסתיר כספי ירושה שאני טרחתי לאבי כבן שנואאת וגרושת הלב והכל ידעו ארבעים שנה לפני בהתעלמו גם הפדגוגיה. זכיתי בהכרת קרן ננובל לספרו,לא תיחום אמנותי לשמו,עדות קן הקוקיה כמציאות גהינומית וגדרות נעולות. פתרון סופי לא איחר לבוא, איש מכל מיודעי ואז דור הורי ככבר ירד מהבמה, ביגון למראה הילד החביב שכבר"לא יעשה צבא" שנותר פסיקה אספסופית להשאר אפס. צנועיםם,סולידים,אלטרואאיסטים ותרומיים מאכל לחייתו המדינה,אווי לשופטות ברצצחחנות חוכמה להררי ולנטול משפחה שואה או עקירה,ילדי באי עירק וצפון אפריקה נדונו לאותה שטנת הפקרה.כל כוחות דעת באנגלית בי"ל השקעתי למנוע מגדר ירוקה לסגור עלי..בשנתי ה70 "כוכב ההלכת של מר סאמלר". לסול בלו בעיר ואם"""

translator(s, src_lang="he")

and

s = """
במודל איינשטיין מ-1907 (בניגוד למודל דביי המאוחר יותר) אנו מתחשבים רק בגבול הטמפרטורה הגבוהה: k B T ≫ ℏ ω α . {\displaystyle k_{B}T\gg \hbar \omega _{\alpha }.\,} אזי 1 − e − ℏ ω α / k B T ≈ ℏ ω α / k B T {\displaystyle 1-e^{-\hbar \omega _{\alpha }/k_{B}T}\approx \hbar \omega _{\alpha }/k_{B}T\,} ואנו מקבלים F = N ε 0 + k B T ∑ α log ⁡ ( ℏ ω α k B T ) . {\displaystyle F=N\varepsilon _{0}+k_{B}T\sum _{\alpha }\log \left({\frac {\hbar \omega _{\alpha }}{k_{B}T}}\right).} נגדיר את הממוצע הגאומטרי של התדירות להיות log ⁡ ω ¯ = 1 M ∑ α log ⁡ ω α , {\displaystyle \log {\bar {\omega }}={\frac {1}{M}}\sum _{\alpha }\log \omega _{\alpha },} כאשר M הוא סך כל דרגות החופש של המערכת."""

translator(s, src_lang="he")

Those look like long inputs but seems to be caused by long outputs generated:

s = """ד״ר שלומי קודש, מנהל ביה"ח סורוקה | על פרופ' שאול סוקניק ז"ל"""
translator(s, src_lang="he")

Sign up or log in to comment