Reputation: 15
I am currently trying to use the Helsinki-NLP/opus-mt-en-de and de-en models. I was trying to setup a pipeline and use both as LLMChain but I keep getting the same error:
ValueError: The following `model_kwargs` are not used by the model: ['pipeline_kwargs', 'return_full_text'] (note: typos in the generate arguments will also show up in this list)
I used the following snippet to initialise both models and ran the snippet after to test the output:
def get_translation_chains():
_de_en_translation_prompt = PromptTemplate.from_template(
"""Translate the following text from German to English:
{text}
"""
)
_en_de_translation_prompt = PromptTemplate.from_template(
"""Translate the following text from English to German:
{text}
"""
)
_en_to_de_tokenizer = AutoTokenizer.from_pretrained("Helsinki-NLP/opus-mt-en-de")
_en_to_de_model = AutoModelForSeq2SeqLM.from_pretrained("Helsinki-NLP/opus-mt-en-de")
_de_to_en_tokenizer = AutoTokenizer.from_pretrained("Helsinki-NLP/opus-mt-de-en")
_de_to_en_model = AutoModelForSeq2SeqLM.from_pretrained("Helsinki-NLP/opus-mt-de-en")
_en_to_de_pipeline = pipeline(
model=_en_to_de_model,
tokenizer=_en_to_de_tokenizer,
task="translation",
)
_de_to_en_pipeline = pipeline(
model=_de_to_en_model,
tokenizer=_de_to_en_tokenizer,
task="translation",
)
_de_to_en_llm = HuggingFacePipeline(pipeline=_de_to_en_pipeline)
_en_to_de_llm = HuggingFacePipeline(pipeline=_en_to_de_pipeline)
_de_to_en_chain = LLMChain(
prompt=_de_en_translation_prompt,
llm=_de_to_en_llm,
)
_en_to_de_chain = LLMChain(
prompt=_en_de_translation_prompt,
llm=_en_to_de_llm,
)
return _en_to_de_chain, _de_to_en_chain
en_to_de_chain, de_to_en_pipeline = get_translation_chains()
print(en_to_de_chain.invoke({"text": "Hello, how are you?"}))
I am fairly new to using LLMs and both the huggingface and langchain libraries and could not find anything to give me a clue on this one.
I tried to use the pipeline with only setting the task I wanted "translation_de_to_en" and the other way around as well as using "translation" only for both default and more detailed pipeline. I also tried to set the kwargs option to None and False but with no success
Upvotes: 0
Views: 1514
Reputation: 1232
Your code doesn't have any errors.
The reason for the error is that, as of as of version 0.0.28
of langchain-community
, only the tasks
text2text-generation
text-generation
summarization
are supported with HuggingFacePipeline
.
Your task is translation
, which is not supported, as of yet.
As to why the error occurs, Langchain passes the argument return_full_text
(see this, line 264) to the underlying HuggingFace model. However, MarianMTModel
(the model you're using) doesn't take this as a parameter.
You're better off using the base HuggingFace model directly. This is the easiest solution.
translation = _en_to_de_pipeline("Hello, how are you?")
print(translation)
Output
[{'translation_text': "Hallo, wie geht's?"}]
It returns without error.
Upvotes: 1