ludwig 为视觉语言模型微调(IDEFICS等)添加支持,

euoag5mw  于 5个月前  发布在  其他
关注(0)|答案(6)|浏览(49)

IDEFICS: https://huggingface.co/blog/idefics
示例配置:

input_features:
  - name: prompt
    type: text
  - name: img
    type: image
output_features:
  - name: response
    type: text
gwbalxhn

gwbalxhn1#

你好,@tgaddair。我想为这个项目做出贡献,你能帮助我理解问题并开始吗?

cnjp1d6j

cnjp1d6j2#

Hi @tgaddair ,我也想解决这个问题,并为项目做出贡献!

icomxhvb

icomxhvb3#

感谢@vishnu2411和@yashlondhe90960的帮助!
在查看HuggingFace实现的IdeficsVisionTextToText后,我认为对Ludwig所做的更改不应该太糟糕。主要需要做的事情是将IdeficsProcessor的一些功能拆分出来,以便在Ludwig的预处理阶段独立准备文本输入和图像输入,然后确保在训练/推理过程中正确地将文本和图像输入提供给模型。
具体来说:

  1. 现有的AutoTokenizer对于任何HF模型都应该适用,因此希望文本预处理不需要做任何改变。然而,看起来IdeficsProcessor在这里会在提示中插入一些特殊的占位符,用于表示图像。因此,如果我们在Ludwig的format_data_with_prompt函数中看到配置有一个或多个图像输入特征,那么我们可能需要进行一些类似的操作。
  2. 对于Idefics,我们可能需要一个与Ludwig中的VitEncoder非常相似的新Image Encoder。编码器的目的是将输入图像调整/裁剪为Idefics期望的大小。正向函数本身可以是一个空操作,因为我们只想将原始像素数据直接提供给主Idefics模型。
  3. 我们需要重新设计Ludwig中的LLM类,以便除了CausalLM模型之外,还能处理多个输入/VisionTextToText模型。目前这可以是一些简单的if-else语句(例如,查看AutoConfig,如果模型是IdeficsVisionTextToText,则使用一种实现,否则使用另一种)。
  4. 我们需要放宽Ludwig模式中对LLM仅要求一个文本输入特征的约束。我们还需要在模式中支持LLM的图像特征。
    出于测试目的,有一个https://huggingface.co/HuggingFaceM4/tiny-random-idefics,它应该允许我们在没有太多开销的情况下在整个CPU上运行所有内容。
    听起来可能很多,所以很高兴能开始一个Slack频道、举行一次Zoom会议或合作在一个PR上帮助启动项目!
toiithl6

toiithl64#

这是一些很好的信息@tgaddair,我认为我们可以通过一个松散的频道来讨论这个问题。

yrdbyhpb

yrdbyhpb5#

伟大的@vishnu2411!我认为我们可以在这里从简单开始,尝试为第一个版本添加对使用IdeficsVisionTextToText模型的支持,只需使用字符串(公共)URL。
我为我们创建了一个Slack频道以便在此协作:#p-visual-language-models
在那里见!

zaq34kh6

zaq34kh66#

无法加入频道,因为它要求使用@predibase.com域名的电子邮件帐户。

相关问题