首页 > 系统相关 >机器学习框架推理流程简述(以一项部署在windows上的MNN框架大模型部署过程为例子)

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

时间:2024-08-21 09:28:32浏览次数:12  
标签:框架 部署 模型 windows MNN 推理 流程

一、写在前面

公司正好有这个需求,故我这边简单接受进行模型的部署和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. 模型推理

标签:框架,部署,模型,windows,MNN,推理,流程
From: https://www.cnblogs.com/Vsonic12138/p/18370926

相关文章

  • Magnet AXIOM 8.3.1 Windows x64 Multilingual - 数字取证与分析
    MagnetAXIOM8.3.1Windowsx64Multilingual-数字取证与分析DigitalForensicSoftware请访问原文链接:https://sysin.org/blog/magnet-axiom/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgMagnetAXIOM-恢复并分析一个案件中的证据检查来自移动、云......
  • 深入理解Java中的Bytecode操作与ASM框架
    引言Java字节码是Java虚拟机(JVM)执行的一种中间语言,它是Java源代码编译后的结果。字节码操作是指直接操作Java类文件的字节码,通过修改字节码可以进行一些动态的、灵活的程序操作。在实际开发中,字节码操作有诸多应用场景,如性能优化、代码生成、运行时代理等。ASM框架是一个强大......
  • node版本管理工具nvm在windows系统使用方法
    nvm是什么nvm全英文也叫node.jsversionmanagement,是一个nodejs的版本管理工具。nvm和n都是node.js版本管理工具,为了解决node.js各种版本存在不兼容现象可以通过它可以安装和切换不同版本的node.js。nvm下载可在点此在github上下载最新版本,本次下载安装的是windows版本。......
  • JetBrains PyCharm 2024.2 (macOS, Linux, Windows) - 面向专业开发者的 Python IDE
    JetBrainsPyCharm2024.2(macOS,Linux,Windows)-面向专业开发者的PythonIDEJetBrains跨平台开发者工具请访问原文链接:https://sysin.org/blog/jetbrains-pycharm/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgJetBrainsPyCharm-面向专业开发者的Pytho......
  • JetBrains Rider 2024.2 (macOS, Linux, Windows) - 快速且强大的跨平台 .NET IDE
    JetBrainsRider2024.2(macOS,Linux,Windows)-快速且强大的跨平台.NETIDEJetBrains跨平台开发者工具请访问原文链接:https://sysin.org/blog/jetbrains-rider/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgJetBrainsRider-快速且强大的跨平台.NETIDE......
  • 基于Python的图书馆可视化管理系统【源码+LW+部署讲解】
    作者简介:Java领域优质创作者、CSDN博客专家、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验,被多个学校常年聘为校外企业导师,指导学生毕业设计并参与学生毕业答辩指导,有较为丰富的相关经验。期待与各位高校教师、企业......
  • 基于Python的图书馆可视化管理系统【源码+LW+部署讲解】
    作者主页:编程千纸鹤作者简介:Java领域优质创作者、CSDN博客专家、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验,被多个学校常年聘为校外企业导师,指导学生毕业设计并参与学生毕业答辩指导,有较为丰富的相关经验。期待......
  • 开始步入Spring框架的学习
    Spring框架Spring概述Spring是一个广泛使用的Java企业级应用开源开发框架,它旨在简化企业级应用的开发。以下是Spring的详细概述:一、创建背景与目的创建背景:Spring框架的创建是为了解决企业级编程开发中的复杂性,实现敏捷开发。它最初由RodJohnson在2002年提出并随后创建......
  • 浅谈 Java Spring框架
    一、基本介绍Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅仅限于服务器端的开发。从简单性、可测试性和松耦合性角度而言,绝大部分Java应用都可以从Spring中受益。二、核心特性依......
  • java项目部署到linux
    手工部署打包获取打包的jar包将jar包放到linux中(可通过xftp软件)的usr/local/ruiji执行jar包java-jarjar包名称指定端口:java-jarjar包名称--server.port=端口号如果端口被占用,查看端口号命令netstat-tuln|grep:8080根据端口号杀死进程lsof-i:8......