一、写在前面

公司正好有这个需求,故我这边简单接受进行模型的部署和demo程序的编写,顺便学习了解整个大模型的部署全流程。这篇博客会简单提到大模型部署的全流程,侧重点在推理这里。并且这篇博客也是结合之前的MNN部署流程来编写的,最好连下来一起看。

MNN框架在WIN10上的部署

MNN框架在Win10上的部署,支持OpenGL和Vulkan

关于MNN工程框架编译出来的静态库和动态库的使用

二、 大模型部署全流程概述

几乎全部的大模型部署流程都是一样的步骤(好吧是我了解的是这样的)

  • 训练
  • 转换
  • 推理

  1. 训练:根据需要实现的目标获取数据集,对数据集预处理,利用不同的框架进行训练(TensorFlow、PyTorch、PaddlePaddle、MNN等等)

    主流推荐:TensorFlow、PyTorch、PaddlePaddle,因为推行时间长,技术成熟,训练出来的效果也较好。并且其他的框架也同样有转换工具可以将模型转换为适合自身框架的模型格式,所以应该不用太担心这方面的使用和操作。

    训练基本步骤:

    (1)数据收集:(收集足够多的目标模型的功能数据,用于模型训练)

    (2)数据预处理;(清洗、数据归一化、数据增强等等)

    (3)选择模型架构(根据问题的性质选择合适的机器学习算法或神经网络架构)

    (4)选择优化算法(选择一个算法来调整模型的参数,如梯度下降、Adam等)

    (5)配置训练参数(设置学习率、批大小(batch size)、迭代次数(epochs)等)

    (6)模型验证(使用数据当中的验证集评估模型)

    (7)模型评估

    对于MNN框架来说,虽然官方也提供了训练的工具链,不过最好还是使用较为成熟的框架。

  1. 转换:将目标模型转换为适合自身部署框架的模型结构,一般来说框架官方会提供相应源码来帮助用户实现模型的转换

    一般来说包含:模型压缩、量化、裁剪等等,用于减小模型体积、提高推理速度等等。在使用模型转换工具的时候,会有相应的参数可以进行配置。

    对于MNN框架来说,同样提供了转换工具(MNNConvert),以供用于将其他框架训练的模型转换为.mnn后缀的模型文件。

  1. 推理:是模型对新输入数据做出预测的过程,也是对大模型的应用。需要多个不同流程来帮助模型实现快速且准确的响应。

    主要流程囊括:
  • 前处理

    在模型进行推理之前,需要对输入数据进行处理,以确保数据格式和范围与模型训练时一致。这可能包括数据清洗、归一化、编码等步骤
  • 推理核心

    是模型实际进行预测的部分。根据模型类型,这可能涉及到前向传播、特征提取等操作
  • 后处理

    推理完成后,输出的结果可能需要进一步的处理才能用于实际应用。例如,分类模型的输出可能是概率分布,需要转换为具体的类别标签

三、机器学习模型部署推理流程实例

这里将以我实际进行的一个小项目来进行讲解。模型目标是实现图片上二维码位置的框选检测

  1. 模型训练:

    这里我是直接拿模型来使用的,模型支持灰度图像、320X256大小的图片输入的检测。故在模型推理阶段需要对输入图像预处理,使其符合模型输入数据的要求。

    模型名称为:AI_ROI_Dete_NCHW_1x1x320x256_V4.0.0.0.onnx

    后续会将工程和模型发布在GitHub上。
  2. 模型转换
  3. 模型推理

MNN当中输入张量方式在CPU和GPU上的区别

机器学习框架推理流程简述(以一项部署在windows上的MNN框架大模型部署过程为例子)的更多相关文章

  1. 魅族5.0以上设备(亲测有效)激活Xposed框架的流程

    对于喜欢研究手机的哥们来说,大多时候会使用到Xposed框架及种种功能强大的模块,对于5.0以下的系统版本,只要手机能获得ROOT权限,安装和激活Xposed框架是比较简单的,但随着系统版本的持续更新 ...

  2. SSH三作品的框架和流程

    Hibernate工作的,为什么? 原理: 1.通过Configuration().configure();读取并解析hibernate.cfg.xml配置文件 2.由hibernate.cfg.xm ...

  3. 华为7.0系统最简单激活xposed框架的流程

    对于喜欢搞机的哥们而言,很多时候会接触到Xposed框架及其种类繁多功能无敌的模块,对于5.0以下的系统版本,只要手机能获得root权限,安装和激活Xposed框架是异常简易的,但随着系统版本的不断更 ...

  4. SpringMVC框架搭建流程(完整详细版)

    SpringMVC框架搭建流程 开发过程 1)配置DispatcherServlet前端控制器 2)开发处理具体业务逻辑的Handler(@Controller. @RequestMapping) 3 ...

  5. EGADS框架处理流程分析

    最近在搞异常检测相关的工作,因此调研了业界常用的异常检测系统.通过查阅相关资料,发现业界对雅虎开源的EGADS系统评价比较高,其git项目已有980个star.这周阅读了项目的源码,梳理了系统框架的基 ...

  6. 视频结构化 AI 推理流程

    「视频结构化」是一种 AI 落地的工程化实现,目的是把 AI 模型推理流程能够一般化.它输入视频,输出结构化数据,将结果给到业务系统去形成某些行业的解决方案. 换个角度,如果你想用摄像头来实现某些智能 ...

  7. struts2 框架处理流程

    struts2 框架处理流程 流程图如下: 注意:StrutsPrepareAndExecuteFilter替代了2.1.3以前的FilterDispatcher过滤器,使得在执行Action之前可以 ...

  8. SSH(Struts2+Spring+Hibernate)框架搭建流程<注解的方式创建Bean>

    此篇讲的是MyEclipse9工具提供的支持搭建自加包有代码也是相同:用户登录与注册的例子,表字段只有name,password. SSH,xml方式搭建文章链接地址:http://www.cnblo ...

  9. OpenCart框架运行流程介绍

    框架运行流程介绍 这样的一个get请求http://hostname/index.php?route=common/home 发生了什么? 1. 开始执行入口文件index.php. 2. requi ...

  10. J2EE进阶(六)SSH框架工作流程项目整合实例讲解

    J2EE进阶(六)SSH框架工作流程项目整合实例讲解 请求流程 经过实际项目的进行,结合三大框架各自的运行机理可分析得出SSH整合框架的大致工作流程. 首先查看一下客户端的请求信息: 对于一个Web项 ...

随机推荐

  1. [nRF24L01+] 5. 数据和控制接口

    5. 数据和控制接口 5.1. 特点 管脚: IRQ(该信号为低电平有效信号,由三个可屏蔽中断源控制) CE(此信号为高电平,用于在RX或TX模式下激活芯片) CSN(SPI信号) SCK(SPI信号 ...

  2. Typora中的markdown语法的学习

    markdown语法学习 二级标题 三级标题 四级标题 字体 hello world hello world hello world hello world 引用 我是最nb的 分割线 图片 ctrl ...

  3. HLK-RM60 + openwrt调试

    1. 简介 HLK-RM60官网 https://www.hlktech.com/en/Goods-176.html 采用联发科SOC, MT7621/MT7905/MT7975 实际上采购的是MT7 ...

  4. 树上启发式合并——dsu on tree

    参考文章: 树上启发式合并 [dsu on tree]树上启发式合并总结 树上启发式合并の详解 启发式合并 启发式算法是什么呢? 启发式算法是基于人类的经验和直观感觉,对一些算法的优化. 举个例子,最 ...

  5. 使用win-acme在windows+iis服务器下配置自动续期SSL证书【转】

    发现阿里云免费证书只有3个月有效期了,手动操作太麻烦,咨询阿里云客服,阿里云说这是大势所趋,遂转向其他云,后来发现百度云还有1年的免费证书,继续问阿里云客服,其他友商都还在免费1年的,为啥阿里云免费的 ...

  6. php自定义函数访问其他地方定义的变量

    新捣鼓php,很多地方有.net的思维好难改过来. 在Connection/config.php 自定义了数据库连接字符串 然后在外部页面,自定义了一个function,对数据库进行操作 然后死活都给 ...

  7. Storybook version8 智能化构建组件文档与单元测试

    根据官方文档说法,storybook 是一个独立构建前端UI组件与页面的车间. Storybook is a frontend workshop for building UI components ...

  8. 反DDD模式之关系型数据库

    本文书接上回<图穷匕见-所有反DDD模式都是垃圾>,关注公众号(老肖想当外语大佬)获取信息: 最新文章更新: DDD框架源码(.NET.Java双平台): 加群畅聊,建模分析.技术实现交流 ...

  9. 【赵渝强老师】Redis的慢查询日志

    Redis慢查询日志帮助开发和运维人员定位系统存在的慢操作.慢查询日志就是系统在命令执行前后计算每条命令的执行时间,当超过预设阀值,就将这条命令的相关信息(慢查询ID,发生时间戳,耗时,命令的详细信息 ...

  10. linux tracepoint增加

    引入tracepoint的背景 当需要获取内核的debug信息时,通常你会通过以下printk的方式打印信息: void trace_func() { //-- printk("输出信息&q ...