当前位置: 首页 > news >正文

数仓模型之维度建模

目录

1、数仓架构原则

2、如何搭建一个好的数仓

2.1 建模方法

2.2 建模解决的痛点

2.3 数仓系统满足的特性

2.4 数仓架构设计

3、维度建模

4、案例

5、问题讨论 


今天我们来聊聊在数仓模型中举足轻重的维度建模。

简单而言,数据仓库的核心目标是为展现层提供优质服务。其中包含ETL过程、数仓规范、数仓分层等建设流程,最终提供更清晰易用的展现层

维度建模的领域主要适用于数据集市层,它的最大的作用其实是为了解决数据仓库建模中的性能问题。
 

1、数仓架构原则

在谈论维度模型前,我们先来聊聊数仓架构。

数仓模型不只是考虑如何设计和实现功能,设计原则应该从访问性能、数据成本、使用成本、数据质量、扩展性来考虑。
 

1)业务数据驱动

保持底层业务的数据驱动为导向,同时结合业务需求驱动的基本原则。

2)便于数据分析

屏蔽底层复杂业务,简单、完整、集成的将数据暴露给分析层。保持底层业务变动与上层需求变动对模型冲击最小化

业务系统变化影响削弱在基础数据层,结合自上而下的建设方法,削弱需求变动对模型的影响,保持数据水平层次清晰化。

3)高内聚松耦合

          主题之内或各个完整意义的系统内数据的高内聚

          主题之间或各个完整意义的系统间数据的低耦合

4)构建仓库基础数据层

底层业务数据整合工作与上层应用开发工作相隔离,为仓库大规模开发奠定基础。仓库层次更加清晰,对外暴露数据更加统一。

2、如何搭建一个好的数仓

好的数据仓库需要满足如下的特点: 稳定可信丰富透明

2.1 建模方法

数仓设计需要满足功能架构、数据架构和技术架构的整体统一。

当前主流建模方法为:ER模型、维度模型。

1)ER模型

常用于oltp数据库建模,应用到构建数仓时更偏重数据整合, 站在企业整体考虑,将各个系统的数据按相似性一致性、合并处理,为数据分析决策服务,但并不便于直接用来支持分析。

主要缺陷:需要全面梳理企业所有的业务和数据流,周期长人员要求高

2)维度建模

面向olap分析场景而生,针对分析场景构建数仓模型。重点关注快速、灵活的解决分析需求,同时能够提供大规模数据的快速响应性能。

不需要完整的梳理企业业务流程和数据,实施周期根据主题边界而定,容易快速实现demo,而且相对来说便于理解、提查询性能、对称并易扩展

2.2 建模解决的痛点

作为大数据板块,数据来源更加广泛,针对的业务域也更加宽广,所以维度建模相对来说更加灵活并适用。

在讨论维度建模之前,关注数仓和BI的基本目标是非常有意义的,在做日常的数据需求的时候,经常会遇到如下几个痛点

  • 收集了海量数据,不知道如何去做ETL

  • 不同来源的数据该如何去聚合

  • 如何方便业务人员快速方便的获取数据

  • 如何定义重要的数据指标

  • 如何确保数据准确性

  • 数据如何支持决策

基于上面的痛点,需要搭建一套DW/BI系统。现在市面上有很多类似的产品,例如:QuickBIGrowingIO神策猛犸等等。

但是对于公司而言,适合自己的才是最好的,大部分公司选择自己搭建或者利用开源的软件(如MateBase),该系统必须满足下面的特性。

2.3 数仓系统满足的特性

1)信息存储便捷

即能跟现在主流数据库打通,系统展现的内容必须是容易理解的,对于业务人员必须直观而且易操作

数据结构和标示必须符合业务思维过程和词汇,用户能够以各种形式切割和分析数据,同时能够快速的将查询结果反馈。

2)指标的唯一性

系统必须以一致性的形式展现信息。也就是说数据必须是可信的,同一指标定义在不同的数据源中,所含的意义必须相同,既 同名同意性。

3)模块的低耦合

系统能够适应变化。当用户需求、业务维度需要调整的调整的时候,设计的DW模型必须能够兼容这些变化。

已经存在数据和指标不应该被破坏或修改,就算一些指标的调整,也要以适当的方式描述变化,并对用户完全透明。

4)数据安全保障

能展示的数据必须是统计的结果数据,一些详单展现和下载必须和平台的权限系统挂钩,避免数据泄漏。

5)监控系统

必须配套一个展现模块的监控系统,能够让产品方知道各个模块的使用情况,对一些访问量比较少的模块可以适当的调整和优化。

2.4 数仓架构设计

1)源事务

业务库或者日志等各个方面的数据源,一般不维护历史信息。

2)ETL

目的是构建和加载数据到展现区的目标维度模型中,划分维度和事实。

3)模型

围绕业务过程度量事件进行构建,为满足用户无法预估的需求,必须包含详细的原子数据。

为避免数据的冗余存储造成的浪费和低效,并方便多业务部门查询方便以及同一指标的数据准确性和业务的扩展性,一般采取以下的架构模式。

3、维度建模

用于度量事实表。事实表一般会有两个或者多个外键与维度表的主键进行关联。事实表的主键一般是组合健,表达多对多的关系。

用于描述环境的维度表。单一主键,维度表的属性是所有查询约束和报表标识的来源。维度提供数据的入口点,提供所有分析的最终标识和分组。

所以维度建模表示每个业务过程包含的事实表,事实表里面存储事件的数值化度量,围绕事实表的是多个维度表,维度表包含事件发生的实际存在的文本环境。

星座模型

从图表中能看出来,维度模型(星型模型)比较简单,而且适于变化,各个维度的地位相同。可根据业务情况进行新增或者修改(只要维度的单一值已经存在事实表中)。

雪花模型

维度建模主要分为4个步骤:

1)选择业务过程

  • 业务过程是通常表示的是业务执行的活动,与之相关的维度描述和每个业务过程事件关联的描述性环境。

  • 通常由某个操作型系统支持,例如:订单系统。

  • 业务过程建立或获取关键性能度量

  • 一系列过程产生一系列事实表。

2)声明粒度

  • 粒度传递的是与事实表度量有关的细节级别。

  • 精确定义某个事实表的每一行表示什么。

  • 对事实表的粒度要达成共识。

3)确认维度

  • 健壮的维度集合来粉饰事实表。

  • 维度表示承担每个度量环境中所有可能的单值描述符。

4)确认事实

  • 不同粒度的事实必须放在不同的事实表中。

  • 事实表的设计完全依赖物理活动,不受最终报表的影响。

  • 事实表通过外健关联与之相关的维度。

  • 查询操作主要是基于事实表开展计算和聚合。

其中粒度是非常重要的,粒度用于确定事实表的行表示什么,建议从关注原子级别的粒度数据开始设计。

原子粒度能够承受无法预估的用户查询,且原子数据可以以各种可能的方式进行上卷。

事实是整个维度建模的核心,其中雪花模型星型模型都是基于一张事实表通过外键关联维表进行扩展。

最终生成一份能够支撑可预知查询需求的模型宽表,而且最后的查询也是落在事实表中进行。

目前常见的维度模型:

  • 星型模型

每一个维表都与都与事实表相关联。数据冗余量较大

  • 雪花模型

有些维表可能不与事实表直接关联,而是通过其他维表关联到事实表。数据冗余量较小

  • 星座模型

由多个事实表相组合,维表是公共的。企业中一般都是星座模型

需要注意:

1)维度表的唯一主键应该是代理键(自然键)。自然键通常具有一定的业务含义,但这些信息是有可能发生变化的,而代理健可以提高关联效率且保持业务的解耦。

2)维度表和事实表关联的每个连接应该基于无含义的整数代理键。

3)固定深度层次在维度表中应该扁平化,规范化的雪花模型不利于多属性浏览,而且大量的表和连接操作会影响性能。

4)非完全独立的维度应该合并为一个维度。例如:日维度、周维度、月维度等可以合并为一个周期维度。

4、案例

维度建模是一个迭代设计过程,设计工作从总线矩阵中抽取实体级别的初始图形化模型开始,详细建模过程要深入定义资源关系、数据质量问题以及每张表的数据转换。

主要目标是建立满足用户需求的模型,校验可加载到模型中的数据,为ETL提供明确的方向。

我们来看看如下以客户创建为事实的售前流程的雪花模型。

  • 事实表

客户创建信息表

  • 维度表

销售信息表、店铺信息表、跟进表/约见表/风控通过表/订单表的维度上卷。

以上面的维度模型可以聚合出创建、跟进、风控等各个维度的上层展现的数据。

5、问题讨论 

维度建模很难提供一个完整地描述真实业务实体之间的复杂关系的抽象方法。实际生产中仍然存在一些实际问题:

  • 建模之前需要进行大量的数据预处理,导致大量的数据处理工作(ETL)。

  • 当业务发生变化,需要重新进行维度定义。重复进行数据预处理,产生大量的数据冗余

  • 单纯的维度建模,不能保证数据来源的一致性准确性;不同层级,维度建模并不完全适用。

常见公司的数仓模型架构:

  • 首先对ETL得到的数据进行E-R(关系)建模,得到一个规范化的公司层面的数据中心库。基于中心数据库为公司各部门建立基于维度建模的数据集市

  • 维度建模都集中在DM层里面,针对具体业务线或者主题域,紧紧围绕着业务模型,直观反映出业务问题。

5.2 分层的误区

数仓层内部的划分不是为了分层而分层,分层是为了解决 ETL 任务及工作流的组织、数据的流向、读写权限的控制、不同需求的满足等各类问题。

业界较为通行的做法将整个数仓层又划分成了 dwd、dwb、dws、dim、mid 等等很多层。然而我们却无法说清层级间清晰的界限是什么,复杂的业务场景令我们无法真正落地执行。

所以数据分层一般来说三层是最基础的:

至于DW层如何进行切分,是根据具体的业务需求和公司场景自己去定义,一般来说需要:

  • 分层是解决数据流向和快速支撑业务的目的

  • 必须按照主题域和业务域进行贯穿

  • 层级之间不可逆向依赖

  • 确定分层规范后,后续最好都遵循这个架构,约定成俗即可

  • 血缘关系、数据依赖、数据字典、数据命名规范等配套先行

DW分层没有最正确的,只有最适合的。

5.3 宽表的误区

所谓宽表,迄今为止没有一个明确的定义。

通常做法是把很多的维度、事实上卷或者下钻之后关联到某一个事实表中,形成一张既包含了大量维度又包含了相关事实的表。

宽表的使用,有其一定的便利性。使用方不需要再去考虑跟维度表的关联,也不需要了解维度表和事实表是什么东西。

但是宽表的使用还是需要注意:

  • 随着业务的增长,我们始终无法预见性地设计和定义宽表究竟该冗余多少维度

  • 同时无法清晰地定义出宽表冗余维度的底线在哪里

甚至为了满足使用的需求,要不断地将维表中已经存在的列增加到宽表中。这直接导致了宽表的表结构频繁发生变动。

通常采用的做法是:

  • 根据主题域和业务域,将某个业务的所有节点梳理清楚

  • 将关键节点的数据作为事实表依据,然后横向扩充其他事实表的,同时纵向的添加该节点上一些主键对应的维度

  • 宽表的建设不依赖具体的业务需求,而是根据整体业务线相匹配;

  • 尽量用维度建模代替宽表

 为什么用维度建模代替宽表会更好呢

  • 维度建模是以某个既定事实为依据。既然是事实表,那么这块的业务如果不变动,事实表的粒度基本不会变。

  • 事实表和维度表解耦。维度表的变更不会影响到事实表,结果表也只需要回刷一下数据流程即可。

  • 新增维度完全可以按照星型模型、雪花模型动态添加。

  • 维度模型可以作为宽表的基础。一旦数据流程确定,可以通过维度模型再生成对应宽表进行快速的业务支撑。

6、扩展:实时数仓

目前不少公司都在尝试以Flink、Kudu为基础的实时数仓架构,里面的数仓分层模型和离线的数仓架构基本相同。

1)ODS原始层

存放原始数据,主要是埋点数据(日志数据)和业务操作数据(binlong),数据源主要是Mysql、HDFS、Kafka等。

2) DW数仓层

存放ETL和主题汇总之后的中间层数据,这块又分为:

  • DWD:数据仓库明细层,以业务过程作为建模驱动,基于每个具体的业务过程特点,构建最细粒度的明细层事实表。

  • DWS:数据仓库轻度汇总层,按照各个业务域进行轻度汇总成分析某一个主题域的服务数据,一般是宽表。

  • DIM:维度表,公共维度层,基于维度建模理念思想,建立整个业务过程的一致性维度,主要使用 MySQL、Hbase、Redis 三种存储引擎。

3)DM数据集市层

以数据域+业务域的理念建设公共汇总层,对于DM层比较复杂,需要综合考虑对于数据落地的要求以及具体的查询引擎来选择不同的存储方式,分为轻度汇总层和高度汇总层。

  • 轻度汇总层以宽表的形式存在,主要是针对业务域进行快速方便的查询;

  • 高度汇总层由明细数据层或轻度汇总层通过聚合计算后,产出部分实时数据指标需求,灵活性比较差,主要做大屏展现。

4)理论上上面还一APP层,应用层,主要是通过这几层之后,生成轻度或者高度汇总的数据,然后根据业务域进行接口封装提供给上层使用。

但是实时数仓面临以下几个实施关键点:

  • 端到端数据延迟、数据流量的监控;

  • 故障的快速恢复能力;

  • 数据的回溯处理,系统支持消费指定时间段内的数据;

  • 实时数据从实时数仓中查询,T+1数据借助离线通道修正;

  • 业务数据质量的实时监控;

实时数仓架构和数据中台一样,虽然都是属于当前比较热门的概念,但是对于实时数仓的狂热追求大可不必。

  • 首先,在技术上几乎没有难点,基于强大的开源中间件(Flink、kudu等)。技术通用。

  • 其次,实时数仓的建设一定是伴随着业务的发展,武断的认为实时数仓架构最符合当前公司的需求是不对的,要考虑实际情况。

如何顺畅的将传统的离线数仓+实时链路处理流程升级到实时数仓架构是个很大的问题。

相关文章:

数仓模型之维度建模

目录 1、数仓架构原则 2、如何搭建一个好的数仓 2.1 建模方法 2.2 建模解决的痛点 2.3 数仓系统满足的特性 2.4 数仓架构设计 3、维度建模 4、案例 5、问题讨论 今天我们来聊聊在数仓模型中举足轻重的维度建模。 简单而言,数据仓库的核心目标是为展现层提…...

Servlet笔记(9):Cookie处理

一、Cookies处理 1、Cookies概念 Cookies是存储在客户端计算机上的文本文件,并保留各种跟踪信息。 识别返回用户的三个步骤 服务器脚本向浏览器发送一组Cookies。例如姓名、年龄或识别号码等。浏览器将这些信息存储在本地计算机上。当下一次浏览器向Web服务器发送…...

骨传导耳机是怎么传声的,选择骨传导耳机的时候需要注意什么?

​骨传导耳机之所以能够成为当下最火的耳机,骨传导技术将声音转化为震动感,通过骨头进行传播,不会堵塞耳朵,就不会影响到周围环境音。这种技术也让骨传导耳机比传统入耳式耳机更安全,无需入耳式设计,避免了…...

达梦数据库DSC集群部署

一、概述 1.1 DSC 集群架构 1.2 架构说明 1、DMDSC 集群是一个多实例、单数据库的系统。 多个数据库实例可以同时访问、修改同一个数据库的数据。 2、数据文件、控制文件在集群系统中只有一份,不论有几个节点,这些节点都平等地使用这些文件, 这些文件保存在共享存储上。 3…...

java 系列之Mybatis

java 系列文章 文章目录java 系列文章前言一、Mybatis 入门1.1 认识 框架(了解)1.2 认识 ORM(要知道)1.3 认识 Mybatis(要知道)二、Mybatis 使用2.1 创建maven项目并导入依赖2.2 准备数据库,包和…...

OBS 进阶 之 摄像头操作

目录 一、摄像头 1、win-dshow插件中,摄像头枚举操作 1)、视频源ID 2)、注册视频源信息...

Linux操作系统基础知识命令参数详解

Linux操作系统 RAID分组 RAID JBOD RAID JBOD的意思是Just a Bunch Of Disks,是将多块硬盘串联起来组成一个大的存储设备,从某种意义上说这种类型不被算作RAID,在维基百科里JBOD同时也被归入非RAID架构。RAID JBOD将所有的磁盘串联成一个单…...

Rust中一些K/V存储引擎

K/V存储引擎的由来可以追溯到20世纪70年代的Berkley DB,而近年来,随着互联网应用的发展,KV存储引擎因其简单高效、可扩展性和适合缓存应用等特点,在分布式存储领域得到了广泛应用。而使用Rust编写KV存储具有内存安全、高性能、并发…...

202302-第四周资讯

山川软件愿为您提供最优质的服务。 您的每一个疑问都会被认真对待,您的每一个建议都将都会仔细思考。 我们希望人人都能分析大数据,人人都能搭建应用。 因此我们将不断完善我们的DEMO、文档、以及视频,期望能在最大程度上快速帮助用户快速…...

九方财富冲刺上市:付费用户开始减少,退款金额飙升至4.9亿元

日前,九方财富控股有限公司(下称“九方财富”)通过港交所上市聆讯,并披露了聆讯后招股书。据贝多财经了解,九方财富最早于2021年8月31日在港交所递表,后在2022年3月、9月分别进行了更新。 据每日经济新闻报…...

SSM+HTML搭建(小白教学)

最近做项目,觉得还是有意义记录以下前后端框架是怎么搭建的,今天给大家介绍介绍SSM:SpringBootSpringMVCMyBatis后端搭建:SpringBoot快速搭建的网站(Spring Initializr)选择创建之后,会下载到一个zip压缩包,对压缩包进行解压(包地址一般选择后端项目的放的文件夹中)用idea打开项…...

【知识蒸馏】知识蒸馏(Knowledge Distillation)技术详解

参考论文:Knowledge Distillation: A Survey 1.前言 ​ 近年来,深度学习在学术界和工业界取得了巨大的成功,根本原因在于其可拓展性和编码大规模数据的能力。但是,深度学习的主要挑战在于,受限制于资源容量&#xff0…...

公司新招了个腾讯5年经验的测试员,让我见识到什么才是真正的测试天花板····

5年测试,应该是能达到资深测试的水准,即不仅能熟练地开发业务,而且还能熟悉项目开发,测试,调试和发布的流程,而且还应该能全面掌握数据库等方面的技能,如果技能再高些的话,甚至熟悉分…...

(一维、二维)数组传参,(一级、二级)指针传参【含样例分析,新手易懂】

目录数组传参一维数组传参二维数组传参指针传参一级指针传参二级指针传参我们在写代码的时候难免要把数组或者指针传给函数&#xff0c;那函数的参数该如何设计呢&#xff1f; 数组传参 一维数组传参 我们首先来看下面代码的几个例子&#xff1a; #include <stdio.h>…...

for循环中的setTimeout以及var let作用域

看了很多解释&#xff0c;感觉都不好理解。这个文章是我自己的理解&#xff0c;可以做个参考&#xff0c;如果我理解的不对&#xff0c;欢迎在评论区指正&#xff1a; var&#xff1a;使用var声明的变量具有全局作用域 &#xff08;循环中每次声明的是同一个变量&#xff09; l…...

有限差分法求解不可压NS方程

网上关于有限差分法解NS方程的程序实现不尽完备&#xff0c;这里是一些补充注解 现有的优秀资料 理论向 【1】如何从物理意义上理解NS方程&#xff1f; - 知乎 【2】NS方程数值解法&#xff1a;投影法的简单应用 - 知乎 【3】[计算流体力学] NS 方程的速度压力法差分格式_…...

Android入门第66天-使用AOP

开篇这篇恐怕又是一篇补足网上超9成关于这个领域实际都是错的、用不起来的一个知识点了。网上太多太多教程和案例用的是一个叫hujiang的AOP组件-com.hujiang.aspectjx:gradle-android-plugin-aspectjx。首先这些错的文章我不知道是怎么来的&#xff0c;其次那些案例真的运行成功…...

pl/sql篇之触发器

简述本文將具体简述触发器的语法&#xff0c;触发条件及其适用场景&#xff0c;希望对读者理解&#xff0c;使用触发器能起到作用。触发器的定位触发器是数据库独立编译&#xff0c;存储的对象&#xff0c;是数据库重要的技术。和函数不同&#xff0c;触发器的执行是主动的&…...

黑马《数据结构与算法2023版》正式发布

有人的地方就有江湖。 在“程序开发”的江湖之中&#xff0c;各种技术流派风起云涌&#xff0c;变幻莫测&#xff0c;每一位IT侠客&#xff0c;对“技术秘籍”的追求和探索也从未停止过。 要论开发技术哪家强&#xff0c;可谓众说纷纭。但长久以来&#xff0c;确有一技&#…...

Spring的创建和使用

目录 创建Spring项目 步骤 1)使用Maven的方式创建Spring项目 2)添加Spring依赖 3)创建启动类 存Bean对象 1.创建Bean对象 2.将Bean注册到Spring中 取Bean对象并使用 步骤 1.先得到Spring上下文对象 2.从Spring中获取Bean对象 3.使用Bean ApplicationContext VS Bea…...

如何实现外网跨网远程控制内网计算机?快解析来解决

远程控制&#xff0c;是指管理人员在异地通过计算机网络异地拨号或双方都接入Internet等手段&#xff0c;连通需被控制的计算机&#xff0c;将被控计算机的桌面环境显示到自己的计算机上&#xff0c;通过本地计算机对远方计算机进行配置、软件安装程序、修改等工作。通俗来讲&a…...

【跟着ChatGPT学深度学习】ChatGPT教我文本分类

【跟着ChatGPT学深度学习】ChatGPT教我文本分类 ChatGPT既然无所不能&#xff0c;我为啥不干脆拜他为师&#xff0c;直接向他学习&#xff0c;岂不是妙哉。说干就干&#xff0c;我马上就让ChatGPT给我生成了一段文本分类的代码&#xff0c;不看不知道&#xff0c;一看吓一跳&am…...

IM即时通讯架构技术:可靠性、有序性、弱网优化等

消息的可靠性是IM系统的典型技术指标&#xff0c;对于用户来说&#xff0c;消息能不能被可靠送达&#xff08;不丢消息&#xff09;&#xff0c;是使用这套IM的信任前提。 换句话说&#xff0c;如果这套IM系统不能保证不丢消息&#xff0c;那相当于发送的每一条消息都有被丢失的…...

【算法】三道算法题两道难度中等一道困难

算法目录只出现一次的数字&#xff08;中等难度&#xff09;java解答参考二叉树的层序遍历&#xff08;难度中等&#xff09;java 解答参考给表达式添加运算符&#xff08;比较困难&#xff09;java解答参考大家好&#xff0c;我是小冷。 上一篇是算法题目 接下来继续看下算法题…...

正交实验与极差分析

正交试验极差分析流程如下图&#xff1a; 正交试验说明 正交试验是研究多因素试验的设计方法。对于多因素、多水平的实验要求&#xff0c;如果每个因素的每个水平都要进行试验&#xff0c;这样就会耗费大量的人力和时间&#xff0c;正交试验可以选择出具有代表性的少数试验进行…...

DEXTUpload .NET增强的上传速度和可靠性

DEXTUpload .NET增强的上传速度和可靠性 DEXTUpload.NET Pro托管在Windows操作系统上的Internet Information Server(IIS)上&#xff0c;服务器端组件基于HTTP协议&#xff0c;支持从web浏览器到web服务器的文件上载。它也可以在ASP.NET服务器应用程序平台开发的任何网站上使用…...

SkyWalking 将方法加入追踪链路(@Trace)

SkyWalking8 自定义链路追踪@Trace 自定义链路,需要依赖skywalking官方提供的apm-toolkit-trace包.在pom.xml的dependencies中添加如下依赖: <dependency><groupId>org.apache.skywalking</groupId><artifactId>apm-toolkit-trace</artifactId>&…...

MySQL Administrator定时备份MySQL数据库

1、下载并安装软件mysql-gui-tools-5.0-r17-win32.exe 2、将汉化包zh_CN文件夹拷贝到软件安装目录 3、菜单中打开MySql Adminstrator&#xff0c;见下图&#xff0c;初次打开无服务实例。 点击已存储连接右侧按钮①&#xff0c;打开下图对话框。点击“新连接”按钮&#xff…...

Kubernetes入门教程 --- 使用二进制安装

Kubernetes入门教程 --- 使用二进制安装1. Introduction1.1 架构图1.2 关键字介绍1.3 简述2. 使用Kubeadm Install2.1 申请三个虚拟环境2.2 准备安装环境2.3 配置yum源2.4 安装Docker2.4.1 配置docker加速器并修改成k8s驱动2.5 时间同步2.6 安装组件3. 基础知识3.1 Pod3.2 控制…...

深度学习模型压缩方法概述

一,模型压缩技术概述 1.1,模型压缩问题定义 因为嵌入式设备的算力和内存有限,因此深度学习模型需要经过模型压缩后,方才能部署到嵌入式设备上。 模型压缩问题的定义可以从 3 角度出发: 模型压缩的收益: 计算: 减少浮点运算量(FLOPs),降低延迟(Latency)存储: 减少内…...