在你们任何人将其标记为“社区特定”或其他内容之前,只需看看这个问题,你们人们如此自豪地将其标记为NLP集体的一部分。
我知道什么是
AutoModelForCausalLM
。我要问的是,在 peft
LoRA 微调教程中,作者使用了 AutoModelForCausalLMWithValueHead
,当您选择任何带有 PEFT
风格的 LLM 微调的代码或笔记本时,您将发现 AutoModelForCausalLM
正在使用。
我去查阅了AutoModelForCausalLMWithValueHead
除了语言模型头之外还具有值头的自回归模型
我想问的是如何,在哪里,更重要的是,为什么这个额外的
ValueHead
被使用
如果您不知道答案,请尝试投票而不是试图关闭问题。谢谢你:)
首先,这个额外的 ValueHead 与 PEFT 无关。
主要是,PPO 优化(一种 RLHF 技术)依赖于计算与在特定状态下采取特定操作(在本例中为选择令牌)相关的“优势”。计算依赖于(状态,动作)对的值减去处于状态的值。您可以查看此函数中的确切计算:https://github.com/huggingface/trl/blob/main/trl/trainer/ppo_trainer.py#L1148
附加的 ValueHead 只是将最后的隐藏状态投影到标量上以估计状态的值。在此处检查 ValueHead 类实现:https://github.com/huggingface/trl/blob/main/trl/models/modeling_value_head.py#L21
注意:仅当您计划执行训练/再训练时才需要 ValueHead 类。