Multiple copies of the translation on output...
ollama gives the expected output:
Translate from English to Spanish: English: We now have 4-month-old mice that are non-diabetic that used to be diabetic," he added. Spanish:
Ahora tenemos ratones de cuatro meses que no son diabéticos pero lo fueron", agregó.
However using Transformers pipeline as described gives multiple translations:
user content: 'Translate from English to Spanish. English: "We now have 4-month-old mice that are non-diabetic that used to be diabetic," he added.
Spanish:'
Output: <|im_start|>user
Translate from English to Spanish. English: "We now have 4-month-old mice that are non-diabetic that used to be diabetic," he added.
Spanish:<|im_end|>
<|im_start|>assistant
“Ahora tenemos ratones de 4 meses que no son diabéticos, que antes sí lo eran”, añadió.
Ahora tenemos ratones de 4 meses que no son diabéticos, que antes sí lo eran”, añadió.
Ahora tenemos ratones de 4 meses que no son diabéticos, que antes sí lo eran”, añadió.
Ahora tenemos ratones de 4 meses que no son diabéticos, que antes sí lo eran”, añadió.
Ahora tenemos ratones de 4 meses que no son diabéticos, que antes sí lo eran”, añadió.
Ahora tenemos ratones de 4 meses que no son diabéticos, que antes sí lo eran”, añadió.
Ahora tenemos ratones de 4 meses que no son diabéticos, que antes sí lo eran”, añadió.
Ahora tenemos ratones de 4 meses que no son diabéticos, que antes sí lo eran”,
That's interesting. Have you made sure the stop sequences are correctly set?
As a brute force option, you can set "\n" as a stop sequence.
I also ran into this problem. I believe the pipeline does not have all terminators set. This seems to fix it:
terminators = [
pipe.tokenizer.eos_token_id,
pipe.tokenizer.convert_tokens_to_ids("<|eot_id|>")
]
outputs = pipe(
prompt,
max_new_tokens=256,
num_beams = 5,
eos_token_id=terminators,
do_sample = False,
)