跳转至

故障排除

译者:片刻小哥哥

项目地址:https://huggingface.apachecn.org/docs/peft/developer_guides/troubleshooting

原始地址:https://huggingface.co/docs/peft/developer_guides/troubleshooting

如果您在使用 PEFT 时遇到任何问题,请查看以下常见问题列表及其解决方案。

例子不起作用

示例通常依赖于最新的软件包版本,因此请确保它们是最新的。特别是检查以下软件包的版本:

  • 佩夫特 变形金刚 加速 *torch

一般来说,您可以通过在 Python 环境中运行以下命令来更新软件包版本:

python -m pip install -U <package_name>

从源代码安装 PEFT 对于跟上最新发展很有用:

python -m pip install git+https://github.com/huggingface/peft

加载的 PEFT 模型产生不良结果

加载的 PEFT 模型得到较差结果可能有多种原因,如下所列。如果您仍然无法解决问题,请查看其他人是否有类似的情况 问题 在 GitHub 上,如果找不到任何问题,请打开一个新问题。

当打开一个问题时,如果您提供一个重现该问题的最小代码示例,将会有很大帮助。另外,请报告加载的模型的性能是否与微调前的模型相同,是否以随机水平运行,或者是否仅比预期稍差。这些信息可以帮助我们更快地识别问题。

随机偏差

如果您的模型输出与之前的运行不完全相同,则可能存在随机元素问题。例如:

1.请确保它在 .eval() 模式,这很重要,例如,如果模型使用 dropout 2.如果你使用 生成 在语言模型上,可能存在随机采样,因此获得相同的结果需要设置随机种子 3. 如果您使用量化并合并权重,则由于舍入误差,预计会出现小偏差

模型加载不正确

请确保正确加载模型。一个常见的错误是尝试加载 受训 模型与 get_peft_model ,这是不正确的。相反,加载代码应该如下所示:

from peft import PeftModel, PeftConfig

base_model = ...  # to load the base model, use the same code as when you trained it
config = PeftConfig.from_pretrained(peft_model_id)
peft_model = PeftModel.from_pretrained(base_model, peft_model_id)

随机初始化层

对于某些任务,正确配置非常重要 要保存的模块 在配置中考虑随机初始化的层。

举个例子,如果您使用 LoRA 微调序列分类的语言模型,这是必要的,因为🤗 Transformers 在模型顶部添加了一个随机初始化的分类头。如果不添加该层 要保存的模块 ,分类头不会被保存。下次加载模型时,您将得到 不同的 随机初始化的分类头,导致完全不同的结果。

在 PEFT 中,我们尝试正确猜测 要保存的模块 如果您提供 任务类型 配置中的参数。这应该适用于遵循标准命名方案的变压器模型。不过,仔细检查总是一个好主意,因为我们不能保证所有模型都遵循命名方案。

当您加载具有随机初始化层的 Transformer 模型时,您应该看到如下警告:

Some weights of <MODEL> were not initialized from the model checkpoint at <ID> and are newly initialized: [<LAYER_NAMES>].
You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.

应将提到的层添加到 要保存的模块 在配置中以避免所描述的问题。


我们一直在努力

apachecn/AiLearning

【布客】中文翻译组