热点资讯 | 从ChatGPT看AI模型服务化趋势(人工智能框架比较)

时间:2023-05-19 01:31:02来源:网络整理
导读从ChatGPT看AI模型服务化趋势大模型是人工智能的发展趋势和未来面对以上这两点挑战,我们可以看到目前模型服务化已成成为一个必然的趋势(Model-as-a-

从ChatGPT看AI模型服务趋势

全文:5356字,12张图片

预计阅读时间:14分钟

1、大模型是人工智能的发展趋势和未来

“从代码打补丁到智能问答,ChatGPT已经显得无所不能”,“上线仅5天,用户已突破100万”。 从ChatGPT的实际表现和带来的市场热度来看,大模型势必是人工智能的发展趋势和未来。

在这里,大模型是对结构复杂、参数庞大的深度学习模型的统称。 大参数也必然意味着这个模型对底层的计算实例也有更高的要求。 下图列出了目前市场上比较主流的一些AI大模型服务,以及它们依赖的算力资源。 可以看出承载那些大模型的大规模GPU集群基本都是大规模GPU集群,其中ChatGPT的原型版本就是GPT3。 5 需要数万个 V100GPU 才能满足其训练和推理任务要求。

图片

图:主流大型模型AI服务基础架构

除了对基础设施的高要求外,大模型还意味着引入强大的算法。 这里的强算法是相对弱的,但是弱算法并不是说它的精度不高,而是因为项目的帧率高。 时延、数据安全等需求,这种弱算法模型只能解决有限领域的特定问题,比如工业场景中的产品缺陷检测就是典型的弱算法模型,受限于数据采集渠道,大部分算法只能针对某些特定领域实现产业化产品类型或某些类型的缺陷,并不普遍。 相反,强算法在通用领域实现了大规模的数据收集和高复杂度的模型结构。 它可以代替人类的工作。 这时候,评价一个强算法的优劣,不再局限于它的算法准确率,更多的是从商业模式的角度:由于一个强算法的初始购买量非常巨大,我们需要判断其是否存在需求是否充足,是否具有投资价值。

图片

图:AI算法在不同领域的能力

基于这样的趋势,类似AIGC的大模型也给行业带来了新的技术挑战。 首先是对算力需求的快速下降。 可以看出,2018年OpenAI发布的GPT参数为1.17亿。 GPT-3参数数量直接飙升至1750亿。 AI模型对算力的需求在过去几年增长了约100万倍,平均每年增长十倍以上。 这种增长甚至超过了算法精度下降的需求。 据悉,这类AI应用也对模型的迭代速度提出了更高的要求。 大型模型需要依靠大量的训练数据和更多真实场景​​中的反馈来帮助它们提高准确性。 GPT-3之后,OpenAI的所有模型都没有开源,但是它提供了API调用,在真实用户调用和模型迭代之间建立了一个飞轮。 他特别关注现实世界数据的调用和这些数据在模型上的迭代。

2、MaaS将成为人工智能企业的核心商业模式

面对以上两个挑战,我们可以看到模型服务已经成为必然趋势(Model-as-a-Service),也将成为人工智能的核心商业模式。 模型服务虽然不是一个新概念,但其本质是集中托管算力和模型,对外提供可以使用模型能力提供训练和推理服务的API socket,非常适合推理应用对并发要求较高的场景。 下图是一个相对简化的模型服务架构。 最右边是模型仓库人工智能框架比较,用于存放模型,进行模型版本管理。 中间是模型服务器,用于承载计算资源和承载推理任务。 ,最左边是用户端的客户端,用于发起任务请求,通过API调用向模型服务器发送输入输出数据,获取推理结果数据。

php框架比较_人工智能框架比较_比较法的框架

图片

图:模型服务架构

在这个框架中有一个很重要的角色叫做模型服务器人工智能框架比较,那么我们为什么要使用模型服务器呢? 首先,对于普通用户来说,他们不需要购买昂贵的AI硬件设备,通过手机或终端的整合。 客户端程序可以轻松体验大模型的服务,提高使用门槛,提升用户体验; 对于AI应用开发者而言,使用通用API获取模型推理服务,可以更适合不同编程语言、不同系统架构下的产品集成; 最后,对于AI模型开发者和算法研究者来说,引入这样的模型服务器也更方便他们有效管理现有算力,可以根据实际业务量合理分配资源。 最大化使用率,同时按照API调用次数收费,也更具商业可行性。

图片

图:模型服务器的价值

3. OpenVINO™模型服务器提高AI服务部署门槛

图:使用 OpenVINO™ 部署 StableDiffusion 模型

说到这里,就不得不提到OpenVINO™的模型服务器。 如果你了解 OpenVINO™,你男朋友应该知道 OpenVINO™ 可以通过引入运行时动态库或静态库来部署加速深度学习模型。 此外,OpenVINO™还提供模型服务器等部署方式。 OpenVINO™ Model Server(以下简称OVMS)是一款用于快速部署深度学习模型的高性能工具。 灵活高效,提高AI模型部署门槛。

图片

图:OpenVINO™ 模型服务器架构

OVMS的系统架构可以分为客户端和服务端两部分。 客户端发起请求,服务器响应请求。 它主要具有以下特点:

简单:标准化的网络 API 套接字(gRPC 和 RESTful),易于集成。

快速:以docker形式部署,只需几行命令行即可快速搭建一套完整的模型服务器

效率:OVMS底层继承了OpenVINO的推理引擎,因此可以兼容各种Intel平台,压榨设备的计算能力,增加延迟,提高吞吐率。

部署:OVMS基于云原生架构设计。 可通过K8s部署,动态扩展能力强。 同时,通过Scheduler组件,可以平衡后端推理请求的负载,平衡前端的计算资源。

运维:OVMS可以通过配置文件动态管理模型的版本,并且支持模型热更新,这意味着我们可以实时更新模型,无需暂时停止当前服务。

据悉,OVMS还支持以下能力:

兼容 TensorFlowServingAPI 和 KServeAPI

·支持C++版本gRPC、RESTful API

支持机型增减、配置热更新

·支持动态规格

·支持多机型部署

·支持OpenVINOIR/ONNX/PaddlePaddle模型

·支持本地和远程模型文件存储(GCS/AWSS3/AzureStorage)

·支持裸机/VM/Docker/K8s部署

支持多种异构估计硬件CPU/GPU/VPU

比较法的框架_人工智能框架比较_php框架比较

·提供性能测试客户端,快速验证AI服务性能

4. OpenVINO™模型服务器部署示例

下面我们通过一个简单的例子来看看如何快速搭建文本测量任务的模型服务器。

第一步是安装DockerEngine

我们可以参考docker()官方文档安装容器服务,我们可以使用如下命令来验证dockerengine是否安装成功。

!docker run 你好世界

如果出现如下复制输出,则表示docker安装成功。

图:验证dockerengine是否安装成功

第二步,规划模型仓库

OVMS对服务器端模型文件的存放路径有一定的格式要求:

1)每个模型必须存放在单独的根目录文件夹下,如:model1、model2

2) 每个模型目录必须包含一个子目录。 子目录的名称为模型的版本号,如1或2。每个根目录下可以有多个子目录,用于存放不同版本的模型。

3) 一个版本目录只能包含单个模型的所有模型文件

图片

图:OVMS模型仓库文件夹结构示例

第三步拉取并启动OVMS镜像

可以通过以下命令拉取OVMS镜像,快速启动本地基于端口的OVMS服务器:

!dockerrun -d --rm --name="ovms" -v$(pwd)/models:/models-p9000:9000openvino/model_server:latest --model_path/models/detection/--model_namedetection --port9000

下面是服务启动时需要配置的一些重要参数:

图片

如果发现服务启动失败是因为9000端口已经被占用,我们可以在linux系统上使用netstat -tln命令查看端口占用情况,将化机端口改为空闲端口,例如: -p9020:9000。

第四步,编译客户端应用

客户端应用程序主要用于发起推理请求,并接受来自模型服务器的结果数据进行后续处理或展示。 从通信套接字来看,OVMS目前支持gRPC和RESTapi数据传输套接字。 总的来说,gRPC 的性能优于 REST。 如果应用对时效性要求高,推荐使用gRPC编译客户端应用。 其次,从编程socket的维度来看,OVMS客户端兼容TensorFlowServing和KServeAPI两种socket规范,同时支持Python和C++两种编程语言,这也意味着如果用户之前的应用部署在TensorFlowServing或者Triton上,就可以了将这些应用程序迁移到 OVMS 非常容易。 下面是ovmsclient工具包的一个例子,里面已经集成了TensorFlowServing api,下面是几个常用的socket:

1.安装并加载ovmsclient工具包

!pip install lovmsclient from ovmsclient import make_grpc_client

php框架比较_比较法的框架_人工智能框架比较

2.创建客户端对象并绑定服务端口

address="localhost:9000"client=make_grpc_client(地址)

复制后,我们可以观察到如下输出,证明该模型目前可以接受推理任务

{1:{'state':'AVAILABLE','error_code':0,'error_message':'OK'}}

3.获取模型服务状态和模型元数据

model_status=client.get_model_status(model_name="检测") model_metadata=client.get_model_metadata(model_name="检测")

复制后,我们可以观察到如下输出,其中有模型输入输出的名称,以及它们的维度和形状信息。

{'model_version':1,'inputs':{'image':{'shape':[1,3,704,704],'dtype':'DT_FLOAT'}},'outputs':{'1204_1205.0':{' shape':[484],'dtype':'DT_FLOAT'},'1141_1142.0':{'shape':[1000],'dtype':'DT_FLOAT'},'1469_1470.0':{'shape' :[100],'dtype':'DT_FLOAT'},'labels':{'shape':[100],'dtype':'DT_INT32'},'1267_1268.0':{'shape':[121] ,'dtype':'DT_FLOAT'},'boxes':{'shape':[100,5],'dtype':'DT_FLOAT'},'1078_1079.0':{'shape':[1000],' dtype':'DT_FLOAT'},'1330_1331.0':{'shape':[36],'dtype':'DT_FLOAT'}}}

4、OVMS支持输入二进制补码格式或NumpyArray格式的原始结果数据,这里我们将原始图像转换成NumpyArray格式,推送到模型服务器,并发起推理请求

boxes=client.predict(inputs=inputs, model_name="detection")['boxes']

这里可以从之前查询到的模型元数据中得到结果数据框对应的键值['boxes']。 客户端收到模型服务返回的boxes结果数据后,我们可以在客户端对这部分数据进行后处理,得到最终可以应用的结果数据。

本例的具体过程和演示效果可以参考OpenVINOnotebook:

5.总结

从目前ChatGPT的火爆程度可以看出,大模型势必是人工智能的发展趋势和未来。 同时,模型服务将成为人工智能企业的核心业务模式,有利于更好地管理大型模型基础设施资源,提升用户体验。 OpenVINO™模型服务器可以帮助模型开发者简单、快速、高效地部署和维护AI推理服务,促进大型模型的商业化。

最新文章