CTranslate2 为xformers添加转换器

bgibtngc  于 3个月前  发布在  其他
关注(0)|答案(6)|浏览(50)

xFormers是一个优化的工具包,用于高度可配置的基于变压器的编码器-解码器模型。通过ctranslate2支持推理将对部署xFormers模型非常有用。

7gcisfzg

7gcisfzg1#

感谢您的请求。
您目前如何使用xFormers?文档中显示,您是否正在构建完整的模型,如使用xFormer.from_config(config)?

gywdnpxw

gywdnpxw2#

是的,不过我认为你也可以从序列化的检查点中(相对简单地)推断出来。我认为一些位可能无法直接转换(例如专门的注意力方案),但除此之外,我认为这可能是一个相当轻量级的操作!

xggvc2p6

xggvc2p63#

通常情况下,检查点不足以完全解决模型架构问题。我们还需要了解激活函数、归一化风格(预归一化与后归一化)等信息,这些信息通常不会保存在检查点中。
一个更普遍的问题是,xFormers没有实现模型的输入和输出层。这意味着我们无法提供一个现成的转换器,因为它还取决于未知的用户代码。然而,我们仍然可以提供一个模板或辅助函数来处理xFormers模型本身,并让用户注册剩余的模块。

23c0lvtd

23c0lvtd4#

我认为唯一没有实现的层是输出层。我需要再次检查激活等是否在检查点中(我认为它们可能在那里,但通过Triton进行了融合),但模板将非常有用(用户可以在检查点中给出键以输出层权重等)!

vjhs03f7

vjhs03f75#

我认为唯一没有实现的层是输出层。对,词嵌入层在"vocab"位置嵌入中实现了。我还发现,在使用预归一化残差风格时,他们在编码器/解码器中没有实现最后一层归一化。实际上,我们支持这一点,但这与其他所有预归一化实现有所不同。

无论如何,这是一个可能的xFormer转换器的实现:https://gist.github.com/guillaumekln/4761f65df1ce3e80f5969fd0f0a2c7f5。它给出了一个关于如何进行转换以及支持的编码器-解码器配置的想法。请查看TODOs并查看是否可以将其适用于您的模型。

7xllpg7q

7xllpg7q6#

你好,@erip,你有机会尝试转换吗?

相关问题