跳到正文
原文
Hugging Face Blog·· 2023-08-22精选AI 评分71

Hugging Face 发布 IDEFICS:Flamingo 的开源复现多模态模型

Introducing IDEFICS: An Open Reproduction of State-of-the-art Visual Langage Model

AI 导读

Hugging Face 发布 IDEFICS,一个基于公开数据和模型构建的开源视觉语言模型,可复现 DeepMind 未公开的 Flamingo。该模型接受任意图像与文本序列输入并输出文本,提供 base 和 instructed 两种变体,各有 9B 和 80B 参数规模。

推荐理由

Hugging Face 公开了 Flamingo 的开源复现细节,读者可了解其数据构成与双版本参数规模。

正文 · AI 翻译

我们非常高兴发布 IDEFICS(Image-aware Decoder Enhanced à la Flamingo with Interleaved Cross-attentionS),一个开放获取的视觉语言模型。IDEFICS 基于 Flamingo,这是 DeepMind 最初开发的最先进的视觉语言模型,但并未公开发布。与 GPT-4 类似,该模型接受任意序列的图像和文本输入,并生成文本输出。IDEFICS 仅基于公开可用的数据和模型(LLaMA v1 和 OpenCLIP)构建,并提供两种变体——基础版本和指令版本。每种变体都有 90 亿和 800 亿参数规模可供选择。

最先进 AI 模型的开发应该更加透明。我们开发 IDEFICS 的目标是复现并为 AI 社区提供能够与 Flamingo 等大型专有模型能力相匹配的系统。为此,我们采取了重要步骤,为这些 AI 系统带来透明度:我们仅使用公开可用的数据,提供了用于探索训练数据集的工具,分享了构建此类制品过程中的技术经验与教训,并在发布前通过对抗性提示评估了模型的危害性。我们希望 IDEFICS 能够与 OpenFlamingo(另一个 Flamingo 在 90 亿参数规模上的开放复现)等模型一起,为多模态 AI 系统更开放的研究奠定坚实基础。

在 Hub 上试用 demo 和 模型!

Screenshot of IDEFICS generation for HF Woodstock of AI

什么是 IDEFICS?

IDEFICS 是一个 800 亿参数的多模态模型,接受图像和文本序列作为输入,并生成连贯的文本作为输出。它可以回答关于图像的问题、描述视觉内容、创作以多张图像为基础的故事等。

IDEFICS 是 Flamingo 的开放获取复现,在各种图像-文本理解基准测试中,其性能与原始闭源模型相当。它提供两种变体——800 亿参数和 90 亿参数。

Plot comparing the performance of Flamingo, OpenFlamingo and IDEFICS

我们还提供了微调版本 idefics-80B-instruct 和 idefics-9B-instruct,适用于对话用例。

训练数据

IDEFICS 在多个公开可用数据集的混合数据上进行了训练:Wikipedia、Public Multimodal Dataset 和 LAION,以及我们创建的一个名为 OBELICS 的新 115B token 数据集。OBELICS 包含从网络抓取的 1.41 亿份交错图像-文本文档,并包含 3.53 亿张图像。

我们提供了 OBELICS 的交互式可视化,可借助 Nomic AI 探索数据集内容。

Interactive visualization of OBELICS

IDEFICS 架构、训练方法和评估的详细信息,以及有关数据集的信息,均可在模型卡片和我们的研究论文中获取。此外,我们还记录了模型训练过程中的技术见解与经验,为 IDEFICS 的开发提供了宝贵视角。

伦理评估

在这个项目开始时,通过一系列讨论,我们制定了一份伦理章程,以帮助指导项目期间所做的决策。这份章程列出了一些价值观,包括自我批判、透明和公平,我们在项目推进和模型发布的过程中一直力求践行这些价值观。

作为发布流程的一部分,我们通过用可能引发我们不希望看到的模型响应的图像和文本对模型进行对抗性提示(这一过程称为红队测试),在内部评估了模型的潜在偏见。

请通过演示试用 IDEFICS,查看相应的模型卡和数据集卡,并通过社区标签告诉我们您的反馈!我们致力于改进这些模型,并让机器学习社区能够使用大型多模态 AI 模型。

许可证

该模型构建于两个预训练模型之上:laion/CLIP-ViT-H-14-laion2B-s32B-b79K 和 huggyllama/llama-65b。前者在 MIT 许可证下发布,而后者在专注于研究目的的特定非商业许可证下发布。因此,用户应遵守该许可证,直接向Meta 的表格提出申请。

这两个预训练模型通过我们训练的新初始化参数相互连接。这些参数不基于构成复合模型的两个冻结基础模型中的任何一个。我们以 MIT 许可证发布我们训练的额外权重。

IDEFICS 入门

IDEFICS 模型已在 HF Mirror Hub 上提供,并在最新的 transformers 版本中得到支持。以下是一个试用它的代码示例:

import torch
from transformers import IdeficsForVisionText2Text, AutoProcessor

device = "cuda" if torch.cuda.is_available() else "cpu"

checkpoint = "HuggingFaceM4/idefics-9b-instruct"
model = IdeficsForVisionText2Text.from_pretrained(checkpoint, torch_dtype=torch.bfloat16).to(device)
processor = AutoProcessor.from_pretrained(checkpoint)

# We feed to the model an arbitrary sequence of text strings and images. Images can be either URLs or PIL Images.
prompts = [
    [
        "User: What is in this image?",
        "https://upload.wikimedia.org/wikipedia/commons/8/86/Id%C3%A9fix.JPG",
        "<end_of_utterance>",

        "\nAssistant: This picture depicts Idefix, the dog of Obelix in Asterix and Obelix. Idefix is running on the ground.<end_of_utterance>",

        "\nUser:",
        "https://static.wikia.nocookie.net/asterix/images/2/25/R22b.gif/revision/latest?cb=20110815073052",
        "And who is that?<end_of_utterance>",

        "\nAssistant:",
    ],
]

# --batched mode
inputs = processor(prompts, add_end_of_utterance_token=False, return_tensors="pt").to(device)
# --single sample mode
# inputs = processor(prompts[0], return_tensors="pt").to(device)

# Generation args
exit_condition = processor.tokenizer("<end_of_utterance>", add_special_tokens=False).input_ids
bad_words_ids = processor.tokenizer(["<image>", "<fake_token_around_image>"], add_special_tokens=False).input_ids

generated_ids = model.generate(**inputs, eos_token_id=exit_condition, bad_words_ids=bad_words_ids, max_length=100)
generated_text = processor.batch_decode(generated_ids, skip_special_tokens=True)
for i, t in enumerate(generated_text):
    print(f"{i}:\n{t}\n")

来源:Hugging Face Blog · hf-mirror.com