作者: Paula Ramos — Intel AI 布道者
随着AI兴趣的激增,AI开发人员迫切需要这样一种稳健解决方案,可以无缝部署、扩展和优化AI模型。在此背景下,出现了OpenVINO™ 模型服务器(OVMS),它是AI开发中的一个重要组件。
OVMS 是一个可扩展、高性能的解决方案,专为在 Intel 架构上优化的机器学习模型服务而设计。采用 C++ 开发,它旨在简化推理任务的执行,降低复杂性和开销。此外,借助 OpenVINO 优化,OVMS 确保更快且更可靠的性能,使开发人员能够在他们的 AI 项目中实现最佳性能。
宝拉·拉莫斯,英特尔的AI布道师最近与来自OpenVINO团队的软件开发人员阿德里安·托比泽夫斯基和米沃什·日格尔斯基进行了交流,以深入了解OpenVINO模型服务器(OVMS)项目的功能。他们讨论了实用见解和经验、实际应用案例和挑战。
对话中你会学到的内容:- OVMS 如何从 Python 到 C++ 的转变以增强性能以应对实际 AI 需求
- 关于复杂模型管道的 DAG 调度器以及即将支持的 OpenAI API 的见解
- 利用 OVMS 进行对象检测和生成式 AI 等任务的例子
- 将来通过新技术增强 OVMS,以支持大型语言模型,提高效率和优化资源利用的计划
- AI 开发推荐、演示、资源及学习策略
这些见解对于想了解OVMS实际应用及其好处的开发人员来说很有价值。
继续往下看完整对话:
保拉·拉莫斯:很高兴和你们聊天。我非常期待了解更多关于OpenVINO模型服务器的信息。在此之前,你们能简单介绍一下自己以及在英特尔的工作吗?
米洛什·泽格拉斯基:我先来。我是英特尔®的一名软件开发人员,主要负责OpenVINO和OpenVINO模型服务器团队的工作。
大约五年前,我还是个学生的时候加入了英特尔。当时我加入时,OpenVINO 模型服务器仍在开发中。它当时只是由一个三人团队负责的概念验证,但在这几年里,它逐渐成长为一个包含开发和评估团队的完整项目。我主要为模型服务器做开发工作,同时也涉及一些 Kubernetes 和 Python 相关的工作。
亚德里安·托比泽夫斯基: 我的职业生涯始于一名C++软件开发人员。我加入英特尔时,正好赶上了人工智能热潮来临前夕。我在英特尔负责Intel® Xeon® Phi系列,该系列专注于高性能计算。英特尔收购了Nirvana及其Crest系列深度学习加速器后,我便更换了项目。当英特尔将重心转向Habana时,我开始与OVMS团队合作。
当时,因为OVMS可以通过用C++重写来提升性能,它得到了更多的关注。因为我有使用C++的经验,这对我来说是个重返开发领域的绝佳机会。
保罗·拉莫斯:听到背后的故事真是太好了。现在看来你们有一个成功的团队,并且在OpenVINO模型服务器方面做得非常出色,这真是令人印象深刻。正如你提到的人工智能热潮,我可以看到,在每个环节都需要增强能力,无论是云端还是边缘计算。OpenVINO模型服务器是如何在这些方面发挥作用,并与英特尔推进人工智能技术的承诺保持一致的?
阿德里安·托比泽夫斯基:当客户提出需求时,OVMS 实际上就开始流行起来。他们希望在云上也能获得像 OpenVINO 一样的性能,然而,当时英特尔还没有自己的云模型服务解决方案。于是,英特尔开始加大在模型服务上的投入,之后的发展就成为历史了。
米洛兹泽格拉斯基: 的确如此,客户来找我们,说,“我们现在使用TensorFlow Serving,但希望在CPU上能有更好的性能,同时保持当前使用的API不变。你们能搞定吗?”于是我们讨论了是否通过OpenVINO后端为TensorFlow Serving做贡献更合适,或者是否应该开发我们自己的解决方案。
我们的团队与一些正在进行中的概念验证合作,并且在四周内就有了一个可用的OpenVINO Model Server版本。这真是快速且敏捷地响应了客户需求。而客户不断提出更多新功能的需求——随着对OpenVINO需求的增加,很明显服务部分也将随之发展起来。
保罗·拉莫斯:太棒了。我能看出项目中的许多变化。你能介绍一下OpenVINO Model Server最新的功能和增强点吗?
米尔奥兹泽格拉斯基: OVMS 的故事开始于那个客户需求,从那时起,我们一直在努力跟随市场潮流和满足客户的需求。
最初的版本非常小,仅仅是在OpenVINO之上的一层薄薄的服务。之后我们添加了一些版本管理和从远程存储加载模型的功能,以增强模型服务器的功能,特别是在Kubernetes中的模型服务器,在云部署中,从而使快速提供模型变得更加简单。
OpenVINO Model Server于是能从外部存储下载模型。这是阿德里安之前提到的那个节点,我们不得不将其重写为C++。我们进行了性能测试,发现仅靠Python版本无法继续推进。
保罗·拉莫斯:阿德里安那时加入团队,开始使用C++编程是吗?
米洛斯·泽格拉尔斯基: 没错。像阿德里安这样的新成员主导了这个 C++ 实现。我所在的团队负责维护 Python 实现,同时也努力证明 C++ 实现的必要性。
下一个重要功能是支持KServe API,这也受到了我们第一个客户相同的动机驱动。同时,我们也在开发无环图调度功能。
阿德里安·托比泽夫斯基:有向无环图(DAG)调度器是模型流水线的一个实现。这使我们能够拥有一个可以执行物体检测任务的模型,以及另一个可以执行其他任务的模型。想法是提供某种引擎,使得可以真正地连接多个模型,在它们之间添加自定义处理步骤,并生成所需的最终输出,从而无需在服务器和客户端之间来回发送请求。
当然你可以发送单一请求,执行第一次推理后再响应,然后再发出另一个请求,但这会增加整个响应的延迟时间。我们希望在服务器端保持所有操作在一个单一管道中,并使用可用的模型来执行更复杂的任务。
保罗·拉莫斯:DAG是否像MediaPipe一样起到相同的作用?
阿德里安·托比泽夫斯基: 早些年当我们刚开始开发DAG时,MediaPipe还没有那么流行。在某种程度上,它们解决的是类似的问题,但使用方法有点不一样。每个都有自己的一点不同之处,但它们的目的都是让所有东西都在一个管道中流动。
宝拉·拉莫斯:那么,什么样的模型流水线是OpenVINO模型服务器能够支持的?
阿德里安·托比泽夫斯基: 最令人印象深刻的是Holistic 演示,它可以检测出手部的所有关节和面部特征,并在图像上叠加图层来显示手部位置等。你还可以对着摄像头跳舞,看看它是如何捕捉你的姿势的。这是一直最吸引眼球的。
保罗·拉莫斯:非常好,我想再谈一谈AI热潮,尤其是当前的超级AI热潮。特别是生成式AI和大型语言模型。OVMS在超级AI热潮中面临哪些挑战?
米洛斯泽格拉斯基: 生成式AI的最新热潮最近刚刚开始,我们从一开始便注意到这一现象。这不仅与我们最新的特性相关,也与我们的未来计划紧密相连。
我们一开始是这样做的,仅仅使用OVSM来实现传统的AI功能。我们使用了DAG(有向无环图),并加入了自定义的预处理和后处理步骤,比如分词和还原。这种方法有效,但它的增长如此迅速,我们需要一些更强大的工具来追赶。
我们决定让用户能够定义Python逻辑,运行它,并在模型服务器端执行它。这很重要,因为它几乎为用户提供了所有功能的可能性。这也是我们首次实现Stable Diffusion演示的基础,几乎所有的大型语言模型演示集都以此为基础。它是基于MediaPipe构建的,因此可以作为一个管道节点工作,并可与其他节点相连。
保罗·拉莫斯:所以你有这些节点,并且你可以灵活地运行多个节点,我理解得对吗?
米洛什·泽格拉斯基: 你需要一个Python脚本来实现特定的接口,用于初始化你的模型,处理每个请求时的执行部分,以及结束时的清理工作。仅执行部分是必需的。
OpenVINO Model Server 将请求的数据流提供给您的自定义 Python 逻辑,您可以对数据进行任意处理。您可以导入 Optimum,加载一个稳定扩散模型,并让数据通过该模型。您也可以设置一些微小的节点来进行预处理和后处理,并插入一个 C++ 处理节点,从而构建一个包含 Python 和 C++ 的处理管道。
这只是一个用Python快速实现的小脚本,它有效——直到我们找到其他解决方案。所以我来透露一下我们的一些未来计划。
我们有了这些新的LLM技术。因此,在去年年底,VLLM推出了用于提高效率和优化资源利用的前沿技术——这使得整体性能得到了提升。
所以,未来的 OpenVINO Model Server 将会实现我们自己的分页注意力机制、连续批处理、不同的调度策略实现以及对于文本生成。
现在我们收到了一个关于OpenAI API的请求,这也是我们计划很快实现的。
我们已经非常关注这些大规模语言模型(LLMs),以及新的更方便的API接口。因为OpenAI的API在语言建模上确实更方便。我们有KServe和TensorFlow的API,但它们非常通用。它们设计来适用于各种场景,但针对大规模语言模型的特定需求时,使用起来可能不太方便。
阿德里安·托比泽夫斯基: 已有部分用户开始使用OpenAI API了。因此,类似KServe API,如果有人想要切换过来,使用同样的API会更方便。
保拉·拉莫斯: OVMS 是 OpenVINO 生态系统中的一个开源系统。该项目是否接受外部贡献,还是仅仅依靠内部贡献?如果开发者想为这个项目做贡献,他们应该如何更好地参与到这个项目中呢?
米洛什泽格拉斯基:开发人员可以分叉代码,进行修改,然后发起一个拉取请求。我们会审查这个拉取请求,如果觉得有意思,希望能合并进来。
在贡献方面,我们主要处理内部贡献,但也有一些来自外部组织的贡献。
例如,我们与红帽公司合作,为其与OpenShift相关的服务和平台提供支持。并且OpenVINO模型服务器的镜像已经在红帽公司获得了认证,所以他们也在帮助我们满足他们的安全要求等诸如此类的要求。
Paula Ramos:在我们结束这次讨论之前,你对开发者如何开始使用OpenVINO Model Server有什么建议?对于那些想要进入这个领域的新手,你有什么建议吗?
米洛斯泽格拉斯基: 我建议从这些演示开始。阿德里安已经提到了整体版。我推荐最新的使用Python节点的那个。我们在仓库主页上有一个专门标记新内容的板块。我们有一个用于Stable Diffusion文本生成的演示,最近还增加了一个RAG的演示。
说起进入这个领域,我一直主张广泛学习,所以我会说要学习人工智能、深度学习、大语言模型以及它们的工作方式。同时,要掌握C++和Python语言,以及部署时重要的操作系统基础知识。尝试不同的东西,体验各种领域。多试试不同的领域。
阿德里安·托比泽夫斯基: 我们现在生活在一个可以轻松获取大量资源的时代,只要你努力,你真的可以成功。要想在这个领域跟上步伐,你需要投入时间和努力。
更多资源:
OpenVINO™ 模型服务器 GitHub 仓库
OpenVINO 文档
Jupyter 笔记本
安装和设置
产品页面
她现在是英特尔的AI大使,负责推广和传播AI理念。自2000年初以来,她一直在计算机视觉领域工作,并一直是一位AI爱好者。你可以在她的Medium上关注她,了解更多见解。
公告:免责说明您可能需要激活相应的硬件、软件或服务来使用英特尔技术。
没有产品或组件能够达到绝对的安全性。
你的费用和结果可能不同。
© Intel Corporation. Intel、其他 Intel 标志及商标是 Intel Corporation 及其子公司所有的商标。其他名称和品牌可能属于其他公司。
共同学习,写下你的评论
评论加载中...
作者其他优质文章