《Ai学习笔记》-模型集成部署

后续大多数模型提升速度和精度:

提升速度:

-知识蒸馏,以distillBert和tinyBert为代表

-神经网络优化技巧。prune来剪裁多余的网络节点,混合精度(fp32和fp26混合来降低计算精度从从而实现速度的提升)

提升精度:

-增强算力。Roberta

-改进网络。xlnet,利用transformer-xl

-多任务学习(ensemble)

DistillBERT

DistilBERT, a distilled version of BERT: smaller, faster, cheaper andlighter HuggingFace

原因:

模型:应用到线上服务对服务的计算资源要求非常高

效果:对transformer进行了知识蒸馏,得到了一个只有原始模型40%大小的学生模型,并且在下游任务上的效果和教室模型相差不多,并且inference的时间是之前的60%

使用Bert-base作为teacher model

-在12层Transformer-encoder的基础上每2层中去掉一层,减少到6层,每一层用teacher model对应层的参数初始化。

-去掉了token type embedding和pooler。

-利用teacher model的soft target和teacher model的隐层参数来训练student model.

目的:在精度损失不大的情况下压缩模型大小提高其推理速度,更适应线上应用满足业务需求。

完整的大模型在线项目流程:

为什么要部署?

模型的服务方式

模型的服务方式主要分为离线预测和在线预测两大类,这两种服务方式各有特点,适用于不同的场景需求。下面详细解释这两种服务方式:

离线预测

定义: 离线预测是指在非实时的环境下,对历史数据或批量数据进行模型预测。这种预测方式通常在数据处理和分析阶段使用,不直接响应即时查询或请求。

特点:

  1. 数据处理量大: 适合处理大量历史数据或大数据集,可以在计算资源相对充裕的时间段(如夜间)运行。
  2. 不实时: 预测结果不是立即生成,不需要实时响应用户请求,因此对延迟要求不高。
  3. 资源调度灵活: 可以利用闲时计算资源进行批处理,成本效益较高。
  4. 适用场景: 适用于数据分析、市场趋势预测、报表生成、用户行为分析等不需要即时反馈的场景。

在线预测

定义: 在线预测是指模型部署在服务器上,能够实时接收输入数据并迅速返回预测结果的一种服务方式。它强调低延迟和高可用性,以支持即时决策。

特点:

  1. 实时性: 能够立即响应用户的查询或请求,提供即时预测结果,适用于需要快速反馈的场景。
  2. 低延迟: 对系统的响应时间有严格要求,需要高效的计算能力和优化的算法设计来保证用户体验。
  3. 资源要求高: 需要持续运行的计算资源和高效的数据传输能力,以应对不确定的并发访问压力。
  4. 适用场景: 适用于推荐系统、实时交易分析、欺诈检测、语音识别、自动驾驶等需要即时决策的场景。

总结

选择离线预测还是在线预测,主要取决于应用场景对时效性的要求、数据处理规模以及资源成本的考量。离线预测适用于大数据量的批处理分析,而在线预测则更侧重于实时交互和服务响应。在实际应用中,两者往往结合使用,比如先通过离线预测进行模型训练和参数优化,然后将模型部署为在线服务,以满足不同业务场景的需求。

部署方式:

1.server framework + deeplearning framework api

2.server framework+ deeplearning serving

Server Framework (服务器框架)

服务器框架是构建应用程序后端的核心,它提供了处理网络请求、数据处理、安全控制及与其他系统交互的能力。常见的服务器框架包括但不限于:

  • Flask / Django (Python): Flask以其轻量级和灵活性著称,适合快速搭建小型服务;Django则是一个功能全面的高级Web框架,适合构建大型项目,自带ORM、模板引擎等。
  • Express.js (Node.js): 适用于快速构建Web应用和服务的轻量级框架,特别适合开发RESTful APIs。
  • Spring Boot (Java): 面向Java平台,简化了新Spring应用的初始搭建以及开发过程,提供了默认配置来快速运行应用程序。

Deep Learning Framework API / Serving

这部分专注于如何高效、可靠地部署和管理深度学习模型,确保模型能够在生产环境中实时响应预测请求。关键技术和框架包括:

  • TensorFlow Serving: 专为TensorFlow模型设计的高性能服务系统,支持模型版本管理、高效加载和低延迟预测服务。
  • PyTorch Serving: 类似于TensorFlow Serving,针对PyTorch模型,旨在简化从研究到生产的路径,提供动态加载模型、版本控制等功能。
  • ONNX Runtime: 开放神经网络交换(ONNX)格式的支持工具,允许模型在不同框架间转换,并高效执行,支持TensorFlow、PyTorch等多种模型格式。

综合部署方式

结合这两部分,一个典型的部署流程可能如下:

  1. 模型训练: 使用TensorFlow、PyTorch等框架训练模型。
  2. 模型转换与优化: 如有必要,将模型转换为通用格式如ONNX,进行优化以提高推理速度。
  3. 部署准备: 利用Server Framework(如Flask)搭建后端服务,配置API端点。
  4. 集成Deep Learning Serving: 将训练好的模型通过TensorFlow Serving或类似服务部署,确保模型加载至服务器内存,准备接受预测请求。
  5. 接口对接: 通过Server Framework的API调用Deep Learning Serving中的模型接口,处理客户端请求,将预测结果返回给前端应用或客户端。

这样的架构设计既充分利用了深度学习框架的强大功能,又通过服务器框架的灵活性和可扩展性保证了服务的稳定性和效率,是实现复杂AI应用部署的优选方案。

算法人员思考问题维度:

-长耗时操作

-一次性操作

-接口控制

-处理时长

-模型大小

-服务降级策略

-回滚兼容策略

-实验方式

-多模型并行或者串行

部署架构参考

python Server Framework & model API

Flask(灵活,轻量级,插件多)

Tornado(异步,速度快,插件少)

Django(全能,重,大型项目)


Python API实验、训练

Python/C++ API部署、预测

Bert-as-service & Tf-serving

https://github.com/hanxiao/bert-as-service

https://github.com/tensorflow/serving

https://www.tensorflow.org/tfx/guide/serving

可以基于docker来部署

tensorflow-模型容器化

是的,TensorFlow 主要是为了构建和运行机器学习模型而设计的。它是Google开发的一个开源软件库,特别强大于深度学习领域。TensorFlow 提供了一系列工具和库,帮助开发者完成以下任务:

  1. 构建模型:你可以使用 TensorFlow 来定义各种机器学习模型,无论是简单的线性模型还是复杂的深度神经网络。通过组合不同的层、激活函数和损失函数,你可以创建出定制化的模型来解决特定问题。

  2. 训练模型:TensorFlow 支持数据的导入、预处理,并提供了多种优化算法来训练模型。它利用反向传播和自动微分来高效地更新模型参数,以最小化损失函数。

  3. 评估与调整:模型训练完成后,你可以使用 TensorFlow 测试模型性能,进行验证,并根据需要调整模型参数或结构以优化结果。

  4. 部署模型:TensorFlow 支持将训练好的模型部署到服务器、移动设备或网页应用中,进行实时或批量预测。

  5. 分布式计算:TensorFlow 支持分布式训练,能够在多个GPU或TPU上并行运行,大大加快训练速度。

  6. 高级特性:除了基础功能,TensorFlow 还包括诸如模型优化、模型服务、可视化工具(如TensorBoard)等高级特性,便于模型的调试、监控和优化。

因此,简单来说,TensorFlow 是一个用于创建、训练、评估和部署机器学习模型的综合平台。

具体代码分析:

阅读理解与多模型集成技术

XLNet代码分析 - 李理的博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/16142.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【教学类-58-04】黑白三角拼图04(2-10宫格,每个宫格随机1张-6张,带空格纸,1页6张黑白,1张6张白卡)

背景需求: 前期制作了黑白三角拼图2*2、3*3、4*4,确定了基本模板,就可以批量制作更多格子数 【教学类-58-01】黑白三角拼图01(2*2宫格)固定256种随机抽取10张-CSDN博客文章浏览阅读522次,点赞13次&#x…

高中数学:平面向量-题型总结及解题思路梳理

一、知识点及解题思路梳理 高中,2/3的向量题目是坐标向量题,1/3是几何向量题。但是,这1/3的几何向量题可以转换成坐标向量题。 二、练习 例题1 几何型向量题 例题2

【机器学习300问】100、怎么理解卷积神经网络CNN中的池化操作?

一、什么是池化? 卷积神经网络(CNN)中的池化(Pooling)操作是一种下采样技术,其目的是减少数据的空间维度(宽度和高度),同时保持最重要的特征并降低计算复杂度。池化操作不…

若依 Ruoyi-Vue PageHelper 分页失效 total为记录数

分页插件PageHelper返回记录总数total竟然出错了 执行控制台的SQL,查询出来的total数量是对的,很奇怪分页的total设置为查询到的记录数。 怀疑对list.stream操作,影响了分页,代码发现确实是这样,debug,居然…

firewalld 防火墙

firewalld概述 Linux系统防火墙从CentOS7开始的默认防火墙工作在网络层,属于包过滤防火墙 Firewalld和iptables的关系 netfilter 位于Linux内核中的包过滤功能体系称为Linux防火墙的“内核态” firewalld Centos默认的管理防火墙规则的工具称为防火墙的“用…

Gradient-checkpointing的原理

原文: 将更大的网络安装到内存中。|by 雅罗斯拉夫布拉托夫 |张量流 |中等 (medium.com) 前向传播时,隔几层就保留一层activation数据,其余层的activation都释放掉; 反向传播时,从最近的checkpoint去重新跑forward&…

Ps:消失点滤镜 - 测量工具

Ps菜单:滤镜/消失点 Filter/Vanishing Point 快捷键:Ctrl Alt V “消失点”滤镜中的测量工具 Measure Tool用于在透视平面内测量图像中对象的大小,适用于建筑师、设计师、法医和木工等需要精确测量的用户。 快捷键:R ◆ ◆ ◆…

基于springboot+vue的4S店车辆管理系统

开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…

CMS Full GC流程以及调优配置

个人博客 CMS Full GC流程以及调优配置 | iwts’s blog CMS CMS 收集器是以实现最短 STW 时间为目标的收集器,所以对于偏业务的后台开发而言,基本上都无脑选CMS了。 多线程收集器,工作在老年代,采用标记清除算法。比较特殊&am…

【QNX】Qnx IPC通信 Message-passing

Qnx IPC通信 Message-passing Message-passing介绍 QNX提供了多种IPC(Interprocess Communication )通信方式,包括Message-passing、Plus(脉冲)、Event、Signal、共享内存、Pipe,当然还有socket。 Message-passing是Qnx IPC的主…

【数据结构与算法 经典例题】判断链表是否带环

💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:数据结构与算法刷题系列(C语言) 期待您的关注 目录

dubbo复习:(9)配置中心的大坑,并不能像spring cloud那样直接从配置中心读取自定义的配置

配置中心只是为 Dubbo 配置提供管理使用的(比如配置服务超时时间等)。不要尝试通过Value类似的方式从dubbo 配置中心(比如nacos、zookeeper、Apollo)来获取数据 https://github.com/apache/dubbo/issues/11200可以在application.yml中主要写注册中心的配置&#xf…

【深度学习基础】NumPy数组库的使用

目录 写在开头 一、数组的类型与维度 数组的类型 数组的维度 二、数组的创建 递增数组 同值数组 随机数数组 三、数组的索引 访问/修改单个元素 花式索引 数组的切片 四、数组的变形 数组的转置 数组的翻转 数组的形状改变 数组的拼接 五、数组的运算 数…

Linux系统启动原理

Linux系统启动原理及故障排除 Centos6系统启动过程 修改系统启动级别 vim /etc/inittabCentos7启动流程 加载BIOS信息,进行硬件检测 根据BIOS设定读取设备中的MBR,加载Boot loader 加载内核,内核初始化以后以模块的形式动态加载硬件 并且加…

FFmpeg的流程

文章目录 前序代码结构FFmpeg.cffmpeg_opt.c 小结 前序 之前看过FFmpeg的各种命令,然后不是很理解。相信很多人都不是很理解,毕竟,单纯的去记住那些命令行本身就需要很大的内存,我们的大脑内存又有限,所以&#xff0c…

java “错误:编码GBK 的不可映射字符”

环境:JDK-17 本机编码:utf-8 代码编码:GBK 错误:java “错误:编码GBK 的不可映射字符” 解决1:记事本打开java源文件,另存为选择ANSI编码 解决2:复制代码再将编码格式改为utf-8,…

java欢迪迈手机商城设计与实现源码(springboot+vue+mysql)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的欢迪迈手机商城设计与实现。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 欢迪迈手机商城…

spring状态机实战

一、什么是状态机 状态机是有限状态自动机的简称,是现实事物运行规则抽象而成的一个数学模型,是一种概念性机器,它能采取某种操作来响应一个外部事件。这种操作不仅能取决于接收到的事件,还能取决于各个事件的相对发生顺序。状态…

不同网段的通信过程

这里的AA和HH指的是mac地址,上面画的是路由器 底下的这个pc1,或者其他的连接在这里的pc,他们的默认网关就是路由器的这个192.168.1.1/24这个接口 来看看通信的过程 1、先判断(和之前一样) 2、去查默认网关&#xf…