多模态 IDEFICS:揭示开放视觉语言模型的透明度和强大功能

社区文章 发布于 2024 年 1 月 8 日

image/jpeg

引言

在一个创新常被复杂的专有壁垒所掩盖的领域,IDEFICS 的出现——I mage-aware D ecoder E nhanced à la F lamingo with I ninterleaved C ross-attention S 的缩写——代表了开放视觉语言模型领域的一项突破。

image/png

定义:

  1. Hugging Face:一个以普及 AI 模型、促进协作和加速突破性技术传播而闻名的平台。

  2. IDEFICS 模型:作为开源视觉语言模型的巅峰之作,IDEFICS 是一个拥有 800 亿参数的模型,具有处理图像和文本序列的卓越能力。其基于 Flamingo 的基础,与 GPT-4 相媲美,为从不同输入生成连贯的文本输出提供了多功能平台。

IDEFICS 的优势:

  1. 透明度倡议:IDEFICS 倡导透明度,仅利用公开可用的数据和模型,使其区别于闭源模型。其对开放训练数据探索工具的承诺以及开发过程中遇到的技术挑战的披露,在 AI 社区中培养了协作精神。

  2. 对抗性提示评估:IDEFICS 的一个显著特点是其主动缓解危害性的方法。在发布前通过对抗性提示进行细致评估,强调了其对道德 AI 开发的承诺。

IDEFICS 的应用:

IDEFICS 拥有广泛的应用,特别擅长处理图像和文本输入相互交织的任务。一些主要应用包括:

  1. 视觉问答:IDEFICS 能够熟练地根据图像回答问题,使其在基于图像的测验和信息检索中具有宝贵的价值。

  2. 图像字幕:IDEFICS 能够为图像生成描述性字幕,显著增强了视觉内容的可访问性和理解性。

  3. 故事生成:利用多幅图像,IDEFICS 能够创作叙事和故事,展示了其在故事叙述应用中的创造潜力。

  4. 文本生成:除了其主要的多模态功能外,IDEFICS 还展示了独立于视觉输入生成文本的能力,证明了其在各种自然语言理解和生成任务中的多功能性。

  5. 自定义数据微调:用户可以使用自定义数据微调基础模型,根据特定的用例调整 IDEFICS 的响应。

  6. 指令遵循:定制的 IDEFICS 指令版本擅长遵循用户指令,使其成为聊天机器人和对话式 AI 应用的理想选择。

这些应用凸显了 IDEFICS 的多功能性和适应性,将其定位为能够满足各种融合视觉和文本输入任务的多功能工具。

代码实现:

IDEFICS 集成到 Hugging Face Hub 中并在最新版本的 transformers 中获得支持,标志着一个重要的里程碑。通过一个简单的代码示例,IDEFICS 的使用变得更加便捷:

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")

结论:

IDEFICS 不仅仅是一个模型;它证明了通过协作开放所释放的潜力。作为 Flamingo 的继承者,它呼吁 AI 社区拥抱透明度、道德 AI 和共同的进步愿景。

IDEFICS 的旅程并非孤军奋战;这是一项集体努力,邀请爱好者和专家共同塑造开放 AI 模型的未来。

“保持联系,并通过各种平台支持我的工作

Medium:您可以在 https://medium.com/@andysingal 阅读我的最新文章和见解

Paypal:喜欢我的文章吗?请我喝杯咖啡吧!https://paypal.me/alphasingal?country.x=US&locale.x=en_US"

请求和问题:如果您有项目想让我参与,或者对我解释的概念有任何疑问,请随时告诉我。我一直在寻找未来 Notebooks 的新想法,并且乐于帮助解决您可能有的任何疑问。

资源:

社区

注册登录评论