xFormers是一个优化的工具包,用于高度可配置的基于变压器的编码器-解码器模型。通过ctranslate2支持推理将对部署xFormers模型非常有用。
7gcisfzg1#
感谢您的请求。您目前如何使用xFormers?文档中显示,您是否正在构建完整的模型,如使用xFormer.from_config(config)?
xFormer.from_config(config)
gywdnpxw2#
是的,不过我认为你也可以从序列化的检查点中(相对简单地)推断出来。我认为一些位可能无法直接转换(例如专门的注意力方案),但除此之外,我认为这可能是一个相当轻量级的操作!
xggvc2p63#
通常情况下,检查点不足以完全解决模型架构问题。我们还需要了解激活函数、归一化风格(预归一化与后归一化)等信息,这些信息通常不会保存在检查点中。一个更普遍的问题是,xFormers没有实现模型的输入和输出层。这意味着我们无法提供一个现成的转换器,因为它还取决于未知的用户代码。然而,我们仍然可以提供一个模板或辅助函数来处理xFormers模型本身,并让用户注册剩余的模块。
23c0lvtd4#
我认为唯一没有实现的层是输出层。我需要再次检查激活等是否在检查点中(我认为它们可能在那里,但通过Triton进行了融合),但模板将非常有用(用户可以在检查点中给出键以输出层权重等)!
vjhs03f75#
我认为唯一没有实现的层是输出层。对,词嵌入层在"vocab"位置嵌入中实现了。我还发现,在使用预归一化残差风格时,他们在编码器/解码器中没有实现最后一层归一化。实际上,我们支持这一点,但这与其他所有预归一化实现有所不同。
无论如何,这是一个可能的xFormer转换器的实现:https://gist.github.com/guillaumekln/4761f65df1ce3e80f5969fd0f0a2c7f5。它给出了一个关于如何进行转换以及支持的编码器-解码器配置的想法。请查看TODOs并查看是否可以将其适用于您的模型。
7xllpg7q6#
你好,@erip,你有机会尝试转换吗?
6条答案
按热度按时间7gcisfzg1#
感谢您的请求。
您目前如何使用xFormers?文档中显示,您是否正在构建完整的模型,如使用
xFormer.from_config(config)
?gywdnpxw2#
是的,不过我认为你也可以从序列化的检查点中(相对简单地)推断出来。我认为一些位可能无法直接转换(例如专门的注意力方案),但除此之外,我认为这可能是一个相当轻量级的操作!
xggvc2p63#
通常情况下,检查点不足以完全解决模型架构问题。我们还需要了解激活函数、归一化风格(预归一化与后归一化)等信息,这些信息通常不会保存在检查点中。
一个更普遍的问题是,xFormers没有实现模型的输入和输出层。这意味着我们无法提供一个现成的转换器,因为它还取决于未知的用户代码。然而,我们仍然可以提供一个模板或辅助函数来处理xFormers模型本身,并让用户注册剩余的模块。
23c0lvtd4#
我认为唯一没有实现的层是输出层。我需要再次检查激活等是否在检查点中(我认为它们可能在那里,但通过Triton进行了融合),但模板将非常有用(用户可以在检查点中给出键以输出层权重等)!
vjhs03f75#
我认为唯一没有实现的层是输出层。对,词嵌入层在"vocab"位置嵌入中实现了。我还发现,在使用预归一化残差风格时,他们在编码器/解码器中没有实现最后一层归一化。实际上,我们支持这一点,但这与其他所有预归一化实现有所不同。
无论如何,这是一个可能的xFormer转换器的实现:https://gist.github.com/guillaumekln/4761f65df1ce3e80f5969fd0f0a2c7f5。它给出了一个关于如何进行转换以及支持的编码器-解码器配置的想法。请查看TODOs并查看是否可以将其适用于您的模型。
7xllpg7q6#
你好,@erip,你有机会尝试转换吗?