《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代码分析 - 李理的博客

  • 10
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值