QCon大会实录:PB级数据秒级分析-腾讯云原生湖仓DLC架构揭秘

PB 级别的大数据? 在当今数字化时代,PB 级别大数据正日益成为各领域关注的焦点。PB 即佩他字节,1PB 约等于 1000TB 或 100 万 GB,代表着极为庞大的数据存储容量。中国科研团队在超大容量超分辨三维光存储研究中取得突破性进展。上海光学精密机械研究所与上海理工大学等科研单位合作,利用国际首创的双光束调控聚集诱导发光超分辨光存储技术,实现了点尺寸为 54nm、道间距为 70nm 的超分辨数据存储,并完成了 100 层的多层记录,单盘等效容量达 PB 量级。 阅读详情

4875cf451faa6568a82acd70a7b63048.gif

 

导语

‍‍‍‍文章整理了全球软件开发大会QCon《PB级数据秒级分析-腾讯云原生湖仓DLC架构揭秘》。大数据基于海量数据的分析,硬件、存储、计算资源尽量都可以用廉价的资源完成,如何在廉价资源上进行性能优化尤为重要。大数据是一种IO密集型负载,性能优化也首先着眼于IO优化。

‍‍‍‍

fabba4f03a517d90bcff010f937d29d3.png

开篇:云提供了便利的按需使用方式,最佳实践非常重要

主持人:过去几年,数据湖能力已经在腾讯内部包括微信视频号、小程序等多个业务大规模落地,数据规模达到 PB 至 EB 级别,在此基础上,腾讯自研业务也启动了云原生湖仓能力建设。云原生湖仓架构最大的挑战什么?腾讯云原生湖仓DLC从哪些方面着手解决问题?接下来掌声有请腾讯云大数据专家工程师于华丽为大家带来他的分享【PB 级数据秒级分析,腾讯云原生湖仓 DLC 架构揭秘】

于华丽:大家下午好,我是于华丽来自于腾讯大数据。相信已经听了4个专场专题的分享,收获颇丰,但是肯定也是比较累了,那我就先抛整个分享最核心的基础那就是“大数据是io密集型负载,性能优化优先考虑io”。非常荣幸代表腾讯云原生湖仓DLC团队来到qcon,分享DLC做到pb级数据秒级分析的背后的架构逻辑。

ce66e0ef9055b7c5d99b9cb2fc3fc6e9.png

简单做一个自我介绍,我是腾讯DLC内核研发负责人,毕业于复旦大学数学系,接近十年公有云大数据经验,AWS、阿里云、腾讯云基本上这些公有云的厂商都有非常深入的一些合作,踩坑真的是无数,基本上对每一家云厂商特性、问题如数家珍。

总结十年公有云大数据经验来说,公有云用的好可以又快又稳又省钱,用错了可能就是灾难性的,最佳实践非常重要,最佳实践能够落地成全托管saas产品,屏蔽底层复杂逻辑,也就非常有价值了,传统自己idc购买机器流程那么复杂,但是公有云上可能就是填几个数字,填错了可能就是一大笔账单,尤其是有的国外厂商是后付费,绑信用卡,账单一来那真的是一言难尽。

第一部分:云原生湖仓的诞生背景、价值、挑战

50bf8afc1f0664f5a9fd9d8550b2d08d.png

79365de670bc14136a7eb58e704d2d9d.png

首先介绍湖仓到底是什么东西?我相信大家其实对于这个词已经不算陌生了,数据湖,数据仓,湖仓一系列的名词,我用最直白、最狭义方式去解释它的话,是数据湖跟数仓存储架构统一。

数据湖最初的需求是,要存储和分析海量的半结构化非结构化的数据,数据仓备份和温冷数据存储。在公有云找到了对象存储,海量、低价、高SLA和高可靠性这样一个全托管的存储产品,成本方面对象存储对比客户HDFS自建大概有10:1的性价比,还是非常的有吸引力。

这个存储系统看起来这么好,有没有可能把数仓一起解决,结构化数据是不是存在这里,这个需求的升级,就是现代湖仓架构的基础了。

云原生湖仓是什么东西呢?最狭义的理解,就是容器化的计算,把k8s加上了。更加广义的理解应该长在云上,更多的使用云上已有的全托管产品,比如利用对象存储、本身服务也应该云原生化。

6fc2d9298742c23c6317c4eea8876131.png

在云原生湖仓架构下,会面临很大的挑战就是“性能”。为什么有“性能”的挑战?第一:对象存储有很好的成本的优势,但是引入对象存储之后变成了存算分离的架构,损失了本地计算,性能损失30%以上。其次弹性计算跟分析性能是矛盾的变量,scaleup需要时间,甚至有可能弹不出来,没有文件缓存,弹性会引起数据倾斜。最后是敏捷分析,海量明细数据直接分析也是很直接的需求。

第二部分:腾讯云原生湖仓产品DLC是如何应对挑战的

DLC产品定位

9cfbe7827914aba0c892c48a55a53295.png

接下来看DLC是如何应对云原生湖仓的挑战的,具体分享怎么做之前,简单介绍一下DLC 的产品,简单三个字“全托管”,不同于EMR,DLC是开箱即用的,例如交互界面、元数据、安全、spark ddl server、spark history服务等都是全托管的免搭建,而且有很多都是免费提供的。

第二个特点,DLC是腾讯云数据湖解决方案的粘合剂,不同产品能够用一份湖仓数据,带给用户低成本,低维护成本的价值。

DLC架构理念

a3519a6cf17ac0ebf1be6f90540d1d9c.png

接下来讲DLC 的架构理念,DLC 是腾讯大数据自研能力的上云,但是并不是简单平移部署,产品形态是最大的差异,DLC是多租户的全托管产品,我们秉持两大原则:1.保持简单KISS;2.云原生。

保持简单上我们是非常执着的,从两个点去体现两方面:

  1. 对于服务引用非常保守,服务能少则少,取而代之的是sdk的接入,例如右边图的presto的local cache就不会引入alluxio cluster,spark这儿不引入rss服务而是轻量简单的shuffle manager等等;

  2. 降低使用复杂度,DLC集成了腾讯自研supersql,去实现统一函数和语法来去两个引擎无缝切换。另外右边这个图大部分服务都是托管的,如元数据、调度、权限、DDL服务、spark history等这些服务都是用户免搭建,开箱即用。而且大部分都是免费的,免费额度,正确使用也是完全够用的。

云原生原则:狭义的说,DLC都是基于容器的,包括计算引擎和各种服务容器化。广义的说,云原生更应该“长在云上”,DLC直接用云上的对象存储、云数据库、云KAFKA、TDSQL等等全托管的SaaS服务。

DLC实现PB级数据秒级分析

43e70effa04349d0a24473bcd490010c.png

回到最开始的问题“高性能”,PB级数据秒级分析该怎么去做,从三个大维度展开。

在开篇就跟大家铺垫了一个背景,海量数据而且要廉价资源,大数据是I0密集型的负载。我们从三个层面出发讲,大部分都是从IO优化的层面去讲,第一个:多维的Cache的角度出发,包括文件缓存,中间结果缓存等;第二:从弹性模型讲;第三:从三维filter的模型:分区、列、文件。

多维cache

d252830d5f0136d26a35b4f5e3e07658.png

多维Cache分了三个角度:1.文件缓存;2.Fragment结果缓存,中间结果缓存;3.元数据的缓存,重点说说前两个。

文件缓存

文件缓存,在DLC上线了Alluxio  Local  Cache。优点是没有单独的alluxio集群,也不占用计算资源,免运维。当然也会有需要优化的地方,文件级别/split级别,跨租户Cache缓存数据安全,缓存一致性、考虑弹性影响、监控、黑名单一系列需要优化考虑的地方,这些DLC都会帮客户完成。在一些情况下,访问cos的性能有3—10倍的提升。

5d8878f64cbef3b086dcfcf053cc17ee.png

Fragment 结果缓存

其次是中间的结果缓存,优点是不需要预计算,我们知道物化视图也非常流行,但是物化视图的利用率往往不好量化,事实上通常很低。而根据访问行为缓存下来的是用户行为肯定的。另外是用户几乎没有什么成本,同时也很大程度上降低底层存储的压力。同样还会涉及到一些问题需要大家注意,例如缓存一致性,跨租户的安全。性能看来自presto社区的数据,raptorx有接近10X的性能提升。

虚拟集群弹性模型

61f46da1128da61b28ac1e90763904f9.png

刚才讲两种缓存效果接近10倍的性能提升,对弹性模型就有了很高的要求,因为缓存的命中是很依赖集群拓扑的稳定的。另外资源启动要时间,新拉容器和镜像最快也要1—2分钟;最后client预热很重要,包括各种服务都是lazy加载的module等等,这也都是需要30秒甚至1分钟这样的时间,这跟我们要求的秒级分析就差太远了。

那DLC 是如何设计这个问题的,我们是采用虚拟集群架构去解决这个问题。虚拟集群以子集群为最小单位去横向弹子集群,这样子集群拓扑稳定,资源跟client都有很好预热。而且因为子集群的query隔离,子集群也是很容易缩容的。

多维Filter过滤

6ce41f3473220c03e18b84b60db91f4b.png

继续说性能提升,还是IO优化,技术也是比较成熟的,只是还不怎么普及。先看第二个,列存parquet/orc,结合引擎project的下推;这样只是关心的列才会被扫描。第三个分区/分桶也是比较常规了,但是最新业界的新特性比如dynamic partition puning,可以很好的加速分区需要推断的场景。右边两个不仔细展开,下面仔细说说稀疏索引,Bloomfilter、zordering本质逻辑上是类似的,需要结合引擎的谓词下推减少io扫描,加速分析。

稀疏索引

在大数据的海量低成本要求下,稀疏索引可以做到降低存储成本并且加速分析性能,通过减少数据扫描量达到性能提升。具体分两步:第一步数据要进行cluster,类似的数聚在一起,结合引擎谓词下推,性能达到10X以上的提升。同时也能带来存储的下降,这个原理其实很容易理解,类似的数据在一起了,encodin压缩能起到更好的效果。

这个也是大数据引擎,比如说像CK、Doris很重要的性能加速模型。

11a37d21d20933592e701834a1735530.png

稳定性

稳定性也是大数据很重要的诉求,前面看到像索引的构建都需要进行大规模的数据ETL。稳定性相关有很多努力,包括虚拟集群弹性模型本身减少了弹性引擎的数据倾斜、iceberg减少底层list、rename导致任务失败等等问题。这里我们主要分享下DLC 的spark shuffle manager架构。

我们知道腾讯开源了RSS的服务Filestorm,在全托管云原生的场景下我们做了简化和改造,原理是:优先使用本地磁盘,不足的时候spill到cos,下面是业界几种典型的思路,DLC的做法秉持着减少服务引入保持简单,降低用户成本、减少用户/服务的运维出发。效果也很明显,大部分任务/task都会以原有的性能完成任务,少量数据倾斜的任务/task会有损失一定性能稳定的完成。

低成本、易用

07259e29b1ac5d593878a1d3d4639fe6.png

DLC作为全托管的产品,还是要强调一下低成本和易用的特性。基于COS湖存储VS自建HDFS其实80%以上节省,这里主要是EC,以及HDFS要预留资源,以及COS有各种冷热分层策略进一步降低成本。基于EKS或者TKE弹性资源,对比固定资源50%以上的成本,如果是交互式分析场景,周六周日两天成本就是节省的,晚上也是节省的。离线是类似的。

最后DLC是全托管的免运维的一个产品,统一的SQL在两个引擎平滑迁移,SaaS的元数据、DDL服务、权限、调度、SaaS级别的Spark  history保障了用户开箱即用,而且这些公共服务大部分免费,有的是有免费额度的,正确使用都完全够用。

第三部分:湖仓背景下的建模新思路

78ef47ab93f9401a639d587abf9fa96a.png

接下来一起看下,在云原生湖仓架构下,建模有有哪些新思路:

第一个,扁平湖仓架构,核心是不再维护复杂的数仓分层,而是把明细层的数据能够直接高性能分析;第二个是离线增量;第三个,现在业界比较时髦的新方向实时增量湖仓。

00291f9ea80642b28caacde222b93b70.png

仔细讲一下扁平湖仓的结构,要解释为什么需要扁平湖仓建模,首先要看一下为什么要一层层去做分层建模,首先是在传统的数仓架构下,明细数据的分析的性能不够高,被迫去进行的预计算,同时因为多个结果可能会重复利用一部分公共数据,进行了etl抽取。但是在PB级数据秒级分析的能力下,这些几乎都是不必要的。

层层建模的问题:第一是模式是固定的,不够敏捷。响应需求,从需求对接、历史数据刷新、测试验收,一两个周就过去了;其次是计算利用率往往是低的,尤其Cube。Cube虽然命中很快,单cube的利用率往往是个大大的问号,从我们的经验来看其实利用率是非常低的;以及分层离线更新是比较慢的而现在特别火的实时增量更新并不是成熟和稳定,即使做落地了,对于存储和计算硬件的需求往往也是很高的。

那结合第二段云原生湖仓做性能提升各种收手段,启动在明细致层直接分析的扁平湖仓架构的时代。当然最好能结合BI工具的时序结果的缓存,这样BI层都可以省去。

6700ec62bcf545b1c397a180be05c413.png

介绍下游戏客户案例:实时扁平湖仓秒级分析

逻辑架构非常简单直接,数据都是在Kafka,通过DLC   spark去做实时数据的接入到几百张iceberg明细表,并且能够保证幂等,这儿有一个特点就是一个Kafka里面有很多张表的数据,这儿保证幂等也有一些比较有意思的逻辑。入到明细表之后,开启明细表背后的一些优化,用DLC  supersql—spark,进行清洗、合并小文件、以及稀疏索引构建等,最后达到的效果直接用DCL supersql-presto 去做秒级的分析,最后去对接BI的工具,达到一个非常好的分析性能,架构简单明了,扁平湖仓没有各种建模。

西门子 标准程序解读---> 机器手抓取和涂胶控制程序 摘要 该程序实现机械手在OP70/OP90工位的自动化控制,核心功能包括: 流程控制:分段(Seg1-Seg11)管理抓件、涂胶、放件等动作,结合DB1050/DB1250数据块监控工位状态及变位机位置反馈。 安全机制:配置干涉区(FC124)、实时检测安全光/急停信号,防止碰撞;服务程序(FB191)支持维修位触发与安全隔离。 参数配置:通过DB块关联机器人速度、节拍(FB27)、车型编码(如空过=2)及手自动模式(DB70.DBX21.2)。 应用场景:适用于汽车焊接/装配线 阅读详情

相关推荐

【博弈论】势博弈(potential game)、EPG以及最佳响应、Nash均衡和帕累托(pareto)最优的理解

文章目录前言一、Potential game二、Nash均衡和Pareto-optimal(帕累托最优)1.Nash 均衡2.Pareto最优三、Best response(最佳响应)四、Exact potential game(EPG)1.合作-傀儡博弈2.合作博弈3.傀儡博弈4.自激博弈5.双边对称交互博弈使用理解 前言 本文主要详细讲解potential game的概念以及Exact potential game 的定义和分类,以及这么博弈方法是如何在论文中引入并使用的,本文仅是对自己在该模块

weixin_44535200的博客 2万+

数据的PB级别是什么?

PB是数据存储容量的单位,它等于2的50次方个字节,或者在数值上大约等于1000个TB。” 一提到数据量级,人们通常会联想到美国国会图书馆,德勤、麦肯锡、IBM、Gartner和移动广告公司。Adfonic的数据专家向TechTarget记者介绍了PB级数据究竟有多大。麦肯锡首席分析师Michael Chui指出,美国国会图书馆“在2011年4月前已经收集了235TB的数据,而一个PB...

斜阳雨陌 6万+

ICG setup timing violation介绍?

门控时钟(clock gating)在RTL级电路设计过程中进行低功耗优化常用方法,能够有效降低动态功耗(翻转功耗)。Clock gating cell 可以由与门,与非门,或门或者或非门构成,但很容易产生Glitch。在实际使用中,一般用ICG(集成门控时钟单元)来完成clock gating。 下图展示了glitch的产生原因 在CTS时钟树综合的时候,ICG不会被看作sink,通常放置在source点附近,因此就会出现如上图这种结果。上图可以看出,在分析DFF到ICG的setup timing

m0_61003348的博客 9809

交互式分析领域,为何ClickHouse能够杀出重围?

导语 | 在百花齐放的交互式分析领域,ClickHouse 绝对是后起之秀,它虽然年轻,却有非常大的发展空间。本文将分享 PB 级分析型数据库 ClickHouse 的应用场景、整体架构...

QcloudCommunity的博客 982

Nginx/OpenResty目录穿越漏洞复现

Nginx/OpenResty目录穿越漏洞复现 漏洞背景: 2020年03月18日, 360CERT监测发现 openwall oss-security 邮件组披露了两枚漏洞。在特定配置下 nginx/openresty 存在 内存泄漏漏洞/目录穿越漏洞。 Nginx 是异步框架的网页服务器,也可以用作反向代理、负载平衡器和HTTP缓存。 OpenResty是一个基于nginx的Web平台,它对nginx增加LuaJIT引擎使其运行Lua脚本。 影响版本: nginx <= v1.17

小小猪的博客 1万+

API安全攻防实战:从信息搜集到漏洞利用的完整路径

本文详细解析了API安全攻防实战的全过程,从信息搜集到漏洞利用,涵盖了渗透测试的核心技巧和工具使用。通过真实案例展示如何发现和利用API漏洞,如HTTP方法滥用、内容类型转换攻击等,并提供企业级防御策略和测试心得,帮助安全研究人员提升API安全防护能力。

weixin_30394981的博客 434

Elasticsearch如何做到亿级数据查询毫秒级返回?

这个问题说白了,就是看你有没有实际用过 ES,因为啥?其实 ES 性能并没有你想象中那么好的。 很多时候数据量大了,特别是有几亿条数据的时候,可能你会懵逼的发现,跑个搜索怎么一下 5~10s,坑爹了。 第一次搜索的时候,是 5~10s,后面反而就快了,可能就几百毫秒。 你就很懵,每个用户第一次访问都会比较慢,比较卡么?所以你要是没玩儿过 ES,或者就是自己玩玩儿 Demo,...

weixin_34021089的博客 8971

实用电路精讲系列---仪表放大器

摘要 仪表放大器通过三级运放架构实现高共模抑制比(CMRR>100dB)和精密差分放大,其核心是第一级同相运放提供高输入阻抗和可调增益(G=1+2R/RG),第二级差分运放消除共模干扰。具有低失调(≤50μV)、低温漂(≤0.6μV/℃)特性,广泛应用于智能断路器电流监测、ECG心电信号放大等场景。典型电路采用LTC1049运放,通过匹配电阻网络实现199倍差分增益,结合输出缓冲确保信号稳定性。设计时需注意输入共模电压范围限制和增益电阻精度,优选集成IC(如AD620、INA128)以规避分立元件匹配

weixin_40590799的博客 2073

PB级大规模Elasticsearch集群运维与调优实践

一、背景 某中型互联网公司的游戏业务,使用了腾讯云的 Elasticsearch 产品,采用 ELK 架构存储业务日志。 因为游戏业务本身的日志数据量非常大(写入峰值在 100w qps ),在服务客户的几个月中,我们踩了不少坑。经过数次优化与调整,最后将客户的 ES 集群调整得比较稳定,避免了在业务高峰时客户集群的读写异常,并且降低了客户的资金成本和使用成本。 二、与客户的初次交锋 解决方案架构师A:bellen, XX公司要上线一款新游戏,日志存储决定用 ELK 架构,他们决定在 X

weixin_42414008的博客 679

在 SAP ECC 中定义 ledger 时遇到 “Define exactly one leading ledger“(消息号 FAGL_LEDGER_CUST012)的错误

摘要:SAP系统要求必须且只能定义一个主导分类账(Leading Ledger)。当出现错误消息FAGL_LEDGER_CUST012时,需通过事务码FINSC_LEDGER或SPRO路径检查分类账配置,确保仅有一个分类账被标记为"LeadingLedger",其余设为"Non-leadingLedger"。主导分类账是SAP默认用于标准报表的核心分类账,修改配置需谨慎以免影响已有数据。若问题未解决,建议检查未完成配置或查阅SAP Notes获取解决方案。

金牌架构师 802

Jetson Thor平台JP7.0版本96712 GMSL相机驱动调试记录

摘要:本文档记录了在Thor Custom Board (JP7.0GA)上配置GMSL摄像头时遇到的视频流问题及调试过程。问题表现为视频设备(/dev/video11)能正常创建,但获取视频时出现"Internal data stream error",而相同配置在AGX Orin JP6.0上运行正常。通过梳理硬件拓扑、v4l2-ctl测试、提升时钟频率及分析内核日志,发现VI引擎未接收到帧数据包。调试步骤包括检查设备树冲突、调整I2C总线配置、修正通道名称,最终通过屏蔽传感器启动时

jzwjzw19900922的博客 1110

再见了数仓!数据中台已成气候!

提起业务流量,除了全民抢票平台 12306,当数阿里最有发言权。上到双十一千亿级流量洪峰,下到日均百万、千万交易量的平台,每个业务模块背后的高并发架构理念,无处不在。成熟的架构设计只是其一...

梁桂钊的博客 481

观测器选择与工程实践建议

摘要:永磁同步电机(PMSM)无传感器控制中,观测器选型需综合考虑应用场景、性能需求与成本。消费级(家电、工具)推荐滑模观测器(SMO),成本低、鲁棒性强;工业级(伺服、泵阀)适用扩展卡尔曼滤波器(EKF),精度高但计算复杂;车规级(EPS、主驱动)需混合观测器(SMO+EKF),兼顾全速域性能与可靠性。低速时需高频注入法,IPMSM更适用。SMO易实现但存在抖振,EKF调试复杂。未来趋势是混合架构与AI增强,提升适应性与性能。选型需权衡速度范围、电机类型、处理器能力及成本。

汽车软件开发 146

PB级内存计算

PB级内存计算

大连赵哥的博客 2201

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

产品发布 | 轻松实现PB级存储、千万级QPS吞吐,京东云上线【列式存储】服务...

导语据Gartner预测,到2020年全球物联网设备将达260亿台,市场规模突破1.9万亿美元。物联网时代的到来,促使越来越多的设备接入网络,大量的终端设备数据被上传到后端服务器进行分析...

京东科技开发者 493

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

听说,难于上青天的云原生数据湖能开箱即用了?

导语|云原生数据湖架构以低成本优势推动客户上云,同时云上客户得以低成本撬动更多结构化和非结构化数据的价值,是一场云厂商的自我革命。本文由腾讯大数据专家工程师于华丽在 Techo TVP...

QcloudCommunity的博客 284

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

PB级(大数据)的来源

Big Data:Characteristics:Volume Velocity Variety Veracity(精确性) Value …Big Data(大数据)更像是一个商业的用词(最早从商业应用而来),而不是科学的定义。

5092

PB级存储它来了!!! 还在为存不下、取不快、管不好的海量数据而头疼?是时候告别“数据仓储”的旧时代了!

大容量存储

ghygk的博客 292

PB级海量数据服务平台架构设计实践 | 文末福利

基于PB级海量数据实现数据服务平台,需要从各个不同的角度去权衡,主要包括实践背景、技术选型、架构设计,我们基于这三个方面进行了架构实践,下面分别从这三个方面进行详细分析讨论:一、实践背景该数据服务平台架构设计之初,实践的背景可以从三个维度来进行说明:当前现状、业务需求、架构需求,分别如下所示:二、当前现状收集了当前已有数据、分工、团队的一些基本情况,如下所示:1、数据收集和基础数据加工有专门的Te

Java后端技术 5618

一文通览腾讯云大数据ES、数据湖计算、云数据仓库产品新版本技术创新

腾讯全球数字生态大会-大数据专场要点分享

小虚竹的专栏 1万+

大数据架构(PB级)

1.随着互联网快速发展,数据量的快速膨胀,我们日增3000多亿数据量,因此需要针对PB级存储、几百TB的增量数据处理架构设计 2.系统逻辑划分总图: 暂不便透露 3.系统架构图: 4.大数据计算引擎我们是采用Apache Flink流式计算框架,并对其进行了一些优化,目前在生产环境,已经基本稳定运行! 欢迎大家评论!!! 转载于:https://www...

976

PB,TB、GB、MB、KB分别代表什么

计算机存储信息的大小,最基本的单位是字节,一个汉字由两个字节组成,字母和数字由一个字节组成。 容量的单位从小到大依次是:字节(B)、KB、MB、GB、TB。它们之间的关系是。 1TB=1024GB 1GB=1024MB 1MB=1024KB 1KB=1024字节 通常人们都使用简便的叫法,把后面的“B”去掉,所以你问的1GB就是1024MB。 以上是根据教科书给出的答案,不过理论和实际是有点出入的...

wyqwilliam的博客 9万+

pb级别数据mysql_什么是“PB级别的数据”?

展开全部pb指petabyte,它是62616964757a686964616fe78988e69d8331333365646234较高级的存储单位,其上还有EB,ZB,YB等单位,1PB=1024TB。未来学家Raymond Kurzweil在他的论文中关于对PB级数据定义解释说:人类功能记忆的容量预计在1.25个TB,这意味着,800个人类记忆才相当于1个PB。PB级数据存储和使用:AnySh...

weixin_34697150的博客 2802
上一篇: 一文秒懂!腾讯云ES HTTPS 集群访问通信最佳实践
下一篇: 云原生Spark UI Service在腾讯云云原生数据湖产品DLC的实践
腾讯云大数据
博客等级 码龄6年 348粉丝 218原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值