作者:
Whitney Foster OpenVINO产品专家
Yury Gorbachev 英特尔院士 OpenVINO 产品架构师
翻译:
武卓博士 英特尔OpenVINO软件布道师
在过去的一年里,大语言模型(LLM)彻底改变了文本处理,为文本摘要、重写、文档分析等提供了解决方案。然而,我们每天与之交互的数据不仅仅是文本,而是多模态的,包括视频、音频和图像。多模态的存在非常普遍,事实上在安全、监控或医疗保健等某些领域至关重要。它代表了从处理文本到处理不同输入和生成不同形式输出的重大演变。例如,多模态模型可以接收长视频,并以图像或音频片段的形式输出关键信息。
为了满足多模态 AI 的需求,OpenVINO2024.5 引入了新的流水线,使开发者能够轻松部署处理语音、图像和视频以及文本的解决方案。让我们探讨一下这些新功能是如何工作的,以及如何从今天开始使用它们。
OpenVINO 2024.5 中的
主要多模态 AI 流水线
文生图
通过文生图流水线(Text2ImagePipeline),利用扩散模型,比如 Stable Diffusion 以及 Stable Diffusion XL 模型, 从输入的文本提示词中生成图像。
输出示例:从一个描述性的文本提示词生成一张现实图像。
语音到文本转换
通过 WhisperPipeline 利用 Whisper 模型家族,将语音音频转换成文字。
使用场景示例:转录访谈或播客,以实现高效的文档记录。
视觉语言处理
用诸如 LLaVA 以及 miniCPMV 的视觉语言模型(VLMs)通过 VLMPipeline 处理图像。
应用示例:用文本描述注释和分析医学图像。
提升部署效率
流水线支持 C++ 以及 Python,以实现更灵活的集成。
模型可以使用 optimum-intel 由 Hugging Face 导出并利用神经网络压缩框架(NNCF)压缩。为获得最优性能,将模型压缩至 INT4 格式。
预览版特性:这些功能正在预览支持中。其它经过验证的模型和流水线优化正在进行中。查看我们的 GitHub 文档以获取更新。有关支持的模型和流水线的最新列表,您可以在此处查看我们的 Github 存储库。
在流水线中支持 LoRA 适配器
大模型的训练异常困难且所需资源密集。LoRA 适配器允许使用很少的资源快速有效地微调模型。这使您可以根据新的图像生成风格或特定领域的任务自定义流行的 AI 模型,而无需重新训练整个模型,AI 社区中有许多预制的适配器和库可供您直接使用。
OpenVINO 2024.5 引入了预览版功能为文本和图像生成模型加载 LoRA 适配器,而无需在编译前将这些适配器融合到主模型中。可以为同一模型加载多个 LoRA 适配器,并根据目标场景在每次生成调用的运行时在这些适配器之间动态切换。
例如,可以通过具有多个自定义 LoRA 的文生图流水线 Text2ImagePipeline 编译模型,然后选择在运行时应用哪种样式的图像,而无需重新编译模型。这种定制化的切换对性能的影响是有较小的,我们正在努力进一步完善它。
以下是我们提供的 LLM 流水线的基本 LoRA 使用代码片段。您可以在我们的仓库中找到 python 的完整示例和类似示例。
using namespace ov::genai; //path to adapter (safetensors file) Adapter adapter(adapter_path); // compile pipeline and register all required adapters during compilation LLMPipeline pipe(models_path, device, adapters(adapter)); //Generate with LoRA adapter and alpha set to 0.75 std::cout << pipe.generate(prompt, max_new_tokens(100), adapters(adapter, 0.75)); //Now, generate without LoRA adapter std::cout << pipe.generate(prompt, max_new_tokens(100), adapters());
通过推测性解码获得高效文本生成
推测性解码已被证明可以通过使用两个模型而不是一个模型来提高生成性能。简而言之,一个非常小的草稿模型会生成文本,并由一个全尺寸的文本生成模型定期进行校正。
从 2024.5 版本开始,通过一个推测性解码的算法实现,开发者可以在大语言模型流水线 LLMPipeline 中使用两个模型。这意味着在创建流水线的时候,开发者可以给它传递附加的草稿模型。以下是一段简化后的代码片段:
//compiling pipeline with draft model and configuration for generation options ov::LLMPipeline pipe( main_model_path, main_device, ov::draft_model(draft_model_path, draft_device), ov::scheduler_config(scheduler_config)); //running generation pipe.generate(prompt, config);
你可以在我们的样例仓库这里找到 python 示例以及全部示例。
当在 AI PC 中运行一个应用的时候,有许多推理选项可用。比如,草稿模型和主模型可以都运行在集成显卡上,或者以组合的方式运行在 CPU 以及集成显卡上。根据草稿模型和主模型的模型大小以及部署的限制,不同的组合方式效率会更高。我们发现,在 CPU 上运行草稿模型以及在集成显卡上运行主模型提供了最具性能的生成方式。
草稿模型并非广泛适用于所有公共模型,典型的限制是草稿模型的训练方式应与大模型相似;至少,分词器应该匹配。
我们已经与英特尔研究院一起,通过使用一项叫做 FastDraft 的新技术,研发了几个高效的小型草稿模型,这里有详细的论文描述。
Phi-3.5 以及 Llama 的高效的草稿模型(Phi-3.5草稿模型大小50MB)已经放在我们在 Hugging Face 的模型仓库中,可以从那里下载快照。
在英特尔 NPU 上支持 LLM
我们的 GitHub 上有很多关于英特尔NPU 上支持 LLM 的请求,现在, Llama 3 8B、Llama 2 7B、Mistral-v0.2-7B、Qwen2-7B-Instruct 和 Phi-3 Mini 的文本生成模型均被添加了这一支持。
现在,当您通过 OpenVINO GenAI API 大语言模型流水线 LLMPipeline文档链接编译模型时,您可以将 NPU 指定为目标设备。如果 NPU 存在于系统中,底层代码将为 NPU 编译模型,后续调用将通过 NPU 运行时堆栈运行。
使用 NPU 时,目前的建议是使用 Channel-Wise 压缩算法压缩模型。这在性能方面更有效率。您可以在我们的文档中找到如何操作。
致谢!
时光飞快!又到了一年的年末,我们想对所有贡献者和 OpenVINO 社区的持续支持表示感谢。您的贡献和反馈帮助我们共同推进了 OpenVINO 的发展之旅。我们期待在2025年一起揭开下一步的面纱!
-
英特尔
+关注
关注
61文章
9919浏览量
171594 -
流水线
+关注
关注
0文章
120浏览量
25639 -
AI
+关注
关注
87文章
30365浏览量
268614 -
OpenVINO
+关注
关注
0文章
90浏览量
185
原文标题:OpenVINO™ 2024.5 新发布:使用流水线简易部署多模态 AI
文章出处:【微信号:英特尔物联网,微信公众号:英特尔物联网】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论