AutoModelForCausalLMWithValueHead 与 AutoModelForCausalLM 之间的实现(和工作)差异?

问题描述 投票:0回答:1

在你们任何人将其标记为“社区特定”或其他内容之前,只需看看这个问题,你们人们如此自豪地将其标记为NLP集体的一部分

我知道什么是

AutoModelForCausalLM
。我要问的是,在
peft
LoRA 微调教程
中,作者使用了
AutoModelForCausalLMWithValueHead
,当您选择任何带有
PEFT
风格的 LLM 微调的代码或笔记本时,您将发现
AutoModelForCausalLM
正在使用。

我去查阅了AutoModelForCausalLMWithValueHead

官方文档,发现:

除了语言模型头之外还具有值头的自回归模型

我想问的是如何,在哪里,更重要的是,为什么这个额外的

ValueHead
被使用

如果您不知道答案,请尝试投票而不是试图关闭问题。谢谢你:)

deep-learning nlp huggingface-transformers huggingface large-language-model
1个回答
0
投票

首先,这个额外的 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 类。

© www.soinside.com 2019 - 2024. All rights reserved.