Hello,
I have added to the GPT-2 vocabulary two special tokens ([ss]
, [se]
) and use it to generate sequences.
I want to prohibit GPT-2 from generating some words after having generated [ss]
until it generates [se]
. For example in the following sequence
some words of the sequence [ss] here I want some words not to be generated [se] other words of the sequence.
in other words, I want between [ss]
… [se]
to exclude some words from the generation. As @deathcrush answered here it is possible to prohibit GPT-2 from generating some vocabulary ids in general, but is it possible to do it on condition? (only between those tokens [ss]
and [se]
)
Could you check out this function for contained prefix generation: Models — transformers 4.4.2 documentation
Thank you @patrickvonplaten for your fast reply.
The link you provided is for the models page. Could you point me to the function you are talking about?
@patrickvonplaten I saw that generate
function has a prefix_allowed_tokens_fn
. Were you referring to this?
Yes, that is what he meant.
1 Like
This function is used to constrain beam search. I want to generate text with sampling and specifically with top_p
. Is there a way to utilise this function?
@patrickvonplaten in the documentation of generate function the description of prefix_allowed_tokens_fn
argument says
If provided, this function constraints the beam search to allowed tokens only at each step.
Can this function be applied with sampling as well?
Hey @hfnlpmb,
yes the function can be used in combination with do_sample=True