in lm_human_preferences/lm_tasks.py [0:0]
def postprocess_fn_from_hparams(hparams: TaskHParams, padding_token: int):
def get_mask(responses, truncate_token, truncate_after):
# We want to truncate at the first occurrence of truncate_token that appears at or after
# position truncate_after in the responses
mask = tf.cast(tf.equal(responses, truncate_token), tf.int32)
mask = tf.concat([tf.zeros_like(mask)[:,:truncate_after], mask[:,truncate_after:]], axis=1)
return tf.cast(tf.cumsum(mask, axis=1) - mask, tf.bool)
if hparams.truncate_token is not None:
def truncate(responses):
mask = get_mask(responses, hparams.truncate_token, hparams.truncate_after)
return tf.where(mask, padding_token * tf.ones_like(responses), responses)
return truncate
else:
return lambda responses: responses