在过去的一年里,我们看到了生成式 AI 用例和模型的爆炸式增长。现在几乎每周都会针对不同的领域发布新的值得注意的生成式模型,这些模型在不断增加的数据集上训练,具有各种计算复杂性。使用像 LoRA 这样的方法,可以在非常适度的训练加速器上微调大模型,这解锁了对基础模型的更多修改。由于资源消耗,部署这些模型仍然是挑战,并且高度依赖于在云端部署模型。
随着 OpenVINO™ 2023.1 版本的发布,我们希望将生成式 AI 的强大功能引入常规台式机和笔记本电脑,让这些模型可以运行在在资源受限的本地环境中,并被您尝试集成到自己的应用程序中。我们在整个产品中针对这些场景进行了优化,实现了一些关键功能,并为我们的下一步工作计划奠定了基础。
也就是说,我们的变化不仅限于生成式 AI,我们还改进了产品的其它部分,并希望它能使您的工作更轻松,并为您带来额外的价值。 让我们来看看这些变化到底是什么。
生成式 AI 功能
大模型的整体堆栈优化。来自生成式 AI 家族的模型有一个共同点——它们亟需资源。模型尺寸巨大,运行它们所需的内存量非常高,对内存带宽的需求也非常大。例如不必要的权重搬运这样简单的问题,都可能会导致由于内存不足而无法运行模型。
为了更好地适应这一点,我们已经跨推理堆栈工作,包括 CPU 和 GPU(集成显卡和独立显卡),目标就是优化我们使用这些模型的方式,包括优化读取和编译模型所需的内存,优化如何处理模型的输入和输出张量以及其他内部结构,从而缩短模型执行时间。
大型语言模型的权重量化。LLM 在执行时需要大量的内存带宽。为了对此进行优化,我们在 NNCF(神经网络压缩框架) 优化框架和 CPU 推理中实现了 int8 LLM 权重量化功能。
使用此功能时,NNCF 将生成优化的 IR 模型文件,与精度为 fp16 的常规模型文件相比,该文件能够将尺寸减小一半。IR 文件将在 CPU 插件中被执行额外的优化,这将改善延迟并减少运行时内存消耗。GPU 的类似功能正在实施中,并将在后续发布的版本中提供。
更容易转换模型。大多数LLM目前来自基于 PyTorch 的环境。要转换这些模型,您现在可以使用我们的直接 PyTorch 转换功能。对于 LLM,与我们之前通过 ONNX 格式的路径相比,这大大加快了转换时间并减少了内存需求。
总体而言,由于我们的优化,我们能够在 CPU 和 GPU 上均能提高 LLM 性能。此外,我们还按 倍数级减少了运行这些模型所需的内存量。在某些情况下,新版本 OpenVINO 可以让我们运行那些以前由于内存不足而失败的模型。我们一直在数十个不同规模和不同任务的 LLM 上验证我们的工作,以确保我们的方法能够很好地扩展到我们所有的平台和支持的操作系统。
我们的转换 API 和权重量化功能也集成到Hugging Face optimum-intel 扩展中,允许您使用 OpenVINO 作为推理堆栈运行生成式模型,或以方便的方式将模型导出为 OpenVINO 格式。
简化您的工作流
不再需要开发包,提供统一的工具。从 2023.1 版本开始,我们不再要求您为运行时和开发环境分别安装单独的软件包。我们一直致力于简化我们的工具,并将所有必要的组件集成到单个 OpenVINO 软件包中。这也意味着模型转换和推理可以通过所有 OpenVINO 分发机制以统一的方式获得:pip,conda,brew 和 archive。
此外,从此版本开始,OpenVINO Python API 可从所有支持最低要求 Python 版本 (3.7) 的软件包中获得。这意味着除了以前可用的 pip 之外,还有conda、brew和指定的 apt 版本。
更高效、更友好的模型转换。我们正在推出 OpenVINO 模型转换工具 (OVC),该工具正在取代我们众所周知的离线模型转换任务中的模型优化器 (MO) 工具。该工具以 OpenVINO 包形式提供,依靠内部模型前端来读取框架格式,不需要原始框架来执行模型转换。例如,如果您想将TF模型转换为 OpenVINO,则不需要安装 TensorFlow。同样,如果您想简单地在 OpenVINO 运行时中读取此模型以进行推理而无需转换,同样也不需要 TensorFlow。
为了在 Python 脚本中转换模型,我们进一步改进了 convert_model API。例如,它允许将模型从 PyTorch 对象转换为 OpenVINO 模型,并编译模型以进行推理或将其保存到 IR 格式,请参见以下示例:
请注意,我们还简化了我们的 Python API,可以直接从 OpenVINO 命名空间获得这些 API,因此这一切变得更简单了。您仍然可以从旧命名空间访问函数,如果您需要 mo 工具,可以安装 openvino-dev。这个工具本身也仍然可用,但我们建议迁移到 ovc 工具。
默认切换到 fp16 IR。随着转换工具的变化,我们现在切换到使用 fp16 精度作为 IR 中的数据类型。这允许将模型大小减小 一半(相对 FP32 精度的模型),并且根据我们执行的测试对准确性没有影响。值得一提的是,IR 精度不会影响硬件插件的执行精度,默认情况下,插件始终以最佳性能继续执行。
更好的 PyTorch 兼容性
前面已经提到,直接转换 PyTorch 模型的功能现在已经成熟,该方案已经被集成在我们的 HuggingFace optimum-intel 中进行模型转换。因此,现在转换模型更容易,因为您绕过了 ONNX 格式的额外步骤(我们仍然无限制地支持)。
为了使 OpenVINO 更接近 PyTorch 生态系统,我们引入了对 torch.compile 和相应后端的支持。您现在可以通过 OpenVINO 堆栈运行您的模型,方法是通过 torch.compile 编译它并指定 openvino 作为后端!
如下例所示:
此功能正在积极增强,我们期待更好的性能和操作覆盖范围,但它已经在我们的集成中使用,例如 Stable Diffusion WebUI。
令人兴奋的新Notebook用例
为了展示您可以直接从笔记本电脑上试用的新功能,我们制作了一些 Jupyter notebooks 示例并更新了现有 notebooks。以下是最令我们兴奋的:
基于大语言模型的聊天机器人 (LLM Chatbot):
https://github.com/openvinotoolkit/openvino_notebooks/tree/main/notebooks/254-llm-chatbot
文生图模型 StableDiffusion XL:
https://github.com/openvinotoolkit/openvino_notebooks/tree/main/notebooks/248-stable-diffusion-xl
文生图模型 Tiny SD:
生成音乐模型 MusicGen:
https://github.com/openvinotoolkit/openvino_notebooks/blob/main/notebooks/250-music-generation
生成视频模型 Text-to-video:
https://github.com/openvinotoolkit/openvino_notebooks/tree/main/notebooks/253-zeroscope-text2video
作者 :
Yury Gorbachev 是英特尔院士,负责 OpenVINO 工具套件的架构™ 和其它人工智能开发工具。多年来,他发起并推动了 OpenVINO 工具套件的发展,将客户服务从简单的推理发展到由多种工具组合而成的成熟的AI/CV工作流。此前,他曾在 Itseez(被英特尔收购)担任首席工程师,并与其他人一起研究 OpenCV 功能,使其能够在嵌入式平台上与客户基于计算机视觉的应用程序一起使用。Yury 在嵌入式系统方面拥有 20 多年的编程经验,在计算机视觉、深度学习和人工智能方面拥有 7 年以上的经验。Yury 拥有 Nizhny Novgorod State University 数学理学硕士学位。
翻译者:
武卓:英特尔 AI 软件布道师。2006 年获得英国约克大学电子学博士学位。曾就职于上海大学,担任副教授,研究生导师,主持国家级及省部级科研项目十余项。曾就职于贝尔实验室(中国)担任研究科学家,负责5G通信标准化及 AI 工业应用相关研究,已授权国际国内专利十余项。曾任职于埃森哲(中国)有限公司,担任数据科学家,负责 AI 相关的行业解决方案制定及交付。目前担任英特尔中国区 AI 布道师。
杨亦诚:英特尔 AI 软件工程师, 毕业于约克大学电子工程系,深度学习解决方案专家。加入 Intel 之前,曾在 Open AI Lab 担任解决方案工程师,致力于边缘智能生态推广与高性能推理框架的技术支持,拥有多年人工智能应用开发与项目落地经验。