CN110750251B - 读写通信方法、读写器装置及存储介质 - Google Patents

读写通信方法、读写器装置及存储介质 Download PDF

Info

Publication number
CN110750251B
CN110750251B CN201910912855.4A CN201910912855A CN110750251B CN 110750251 B CN110750251 B CN 110750251B CN 201910912855 A CN201910912855 A CN 201910912855A CN 110750251 B CN110750251 B CN 110750251B
Authority
CN
China
Prior art keywords
data
field
tfrecord
file
format
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201910912855.4A
Other languages
English (en)
Other versions
CN110750251A (zh
Inventor
何海林
徐滢
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Chengdu Pinguo Technology Co Ltd
Original Assignee
Chengdu Pinguo Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Chengdu Pinguo Technology Co Ltd filed Critical Chengdu Pinguo Technology Co Ltd
Priority to CN201910912855.4A priority Critical patent/CN110750251B/zh
Publication of CN110750251A publication Critical patent/CN110750251A/zh
Application granted granted Critical
Publication of CN110750251B publication Critical patent/CN110750251B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本发明公开一种读写通信方法、读写器装置及存储介质,基于TensorFlow工具包和Spark计算框架的用于操作TFRecord格式的文件,包括:在Spark环境中,基于Scala代码实现一个TFRecord生成器,该工具用于在Spark集群中将相关数据基于DataFrame生成Meta信息;TFRecord生成器将Meta信息和数据文件本身到文件系统中;基于TensorFlow工具包基于Python代码实现一个TFRecord读取器,用于读取文件系统中的Meta信息和TFRecord格式的文件;基于TFRecord读取器实现多种需求完成数据采样进行模型训练等工作;本发明为模型生成千万级甚至更大量级的数据样本,满足深度训练需要,同时,基于本技术方案,通过样本量以及输出的样本文件数,能够完成数据抽样和分组,另外,本技术方案无需进行手动处理,可以大大减少人工干预和编码,更加方便、高效。

Description

读写通信方法、读写器装置及存储介质
技术领域
本发明涉及应用程序领域和涉及一部分机器学习领域,具体涉及一种基于TensorFlow和Spark实现的TFRecord格式文件的读写通信方法、读写器装置及存储介质。
背景技术
TensorFlow是一种开源工具包,用于实现各种机器学习模型,已经被很多机器学习研究和开发人员应用在各种场景下。TFRecord格式作为使用TensorFlow工具包进行机器学习模型训练和推理过程中常见的文件格式,可以为多种类型的机器学习模型提供数据样本,例如LSTM、DNN、Deep MF等深度学习模型。在一些规模较小的数据可以通过类似NumPy工具包生成类似DataFrame格式的基于内存的数据以便快速导入。但当数据量非常大时,就需要将样本数据文件存储到硬盘中,在模型训练或者推理过程中以小批量的方式分批读取,基于TFRecord就可以完成大规模的较快的数据移动、读取、处理速度,达到加快训练或者推理的速度,同时可以节约内存空间。以序列化模型举例来说,一个用户需要获取较长时间段内的样本数据,比如30天内的对某一物品的浏览和点击记录;如果加上用户量比较大时,处理和生成TFRecord格式的数据的操作本身就会耗费非常多的计算资源和时间成本,而后续在模型中也只能取一部分甚至一小部分的样本数据进行模型训练,可能会造成模型欠拟合的情况。
发明内容
为了解决上述问题,本发明提供一种基于Spark框架和TensorFlow工具包开发的用于生成和读取包含Meta信息的TFRecord格式文件的软件代码包。以解决较大规模数据量需求下产生的用于机器学习训练和推理的样本数据,使用方便、高效,且后续获取更加灵活。
为此,本发明采用的技术方案是:
本发明第一方面提供了一种分别基于TensorFlow和Spark实现的TFRecord格式的读写通信方法,分别基于Spark的TFRecord格式文件生成器,以及基于TensorFlow工具包的TFRecord格式文件读取器。具体包括:
S1.使用Spark将数据进行分片并读取相应信息
使用Spark将数据进行分片并读取到内存队列中,从内存队列中读取对应分片中的样本数据量以及DataFrame中每个字段的数据格式信息进行处理,得到元数据信息;
S2.基于Scala代码以及相关工具包,将S1所述DataFrame中每个字段的数据格式信息和元数据信息写入到文件系统中;
S3.基于TensorFlow工具包,提供一个TFRecord格式的读取器,所述读取器通过读取元数据信息文件,获取所述文件系统中TFRecord格式样本数量;
S4.基于TensorFlow中的DataSet从所述文件系统中读取对应抽样的TFRecord格式的文件数据。
进一步地,S1中所述DataFrame中每个字段的数据格式信息包括:字段名、字段类型和默认值。
进一步地,S1中所述元数据信息包括:文件名、数据样本数量、文件大小、路径、存储位置和/或时间。
进一步地,S1还包括:读取DataFrame的Schema结构,遍历Schema中每个字段的字段名和特征字段类型,根据特征字段类型标记字段的维度;对类别型字段从DataFrame中列举出列表。
进一步地,S2中所述文件系统包括AWS S3和HDFS。
本发明第二方面提供了一种用于实施分别基于TensorFlow和Spark实现的TFRecord格式的读写通信方法的读写器装置,具体包括:
数据读取模块,用于将数据进行分片并读取相应信息;
数据写入模块,用于将每个字段的数据格式信息和元数据信息写入到文件系统中;
分析模块,用于获取文件系统中TFRecord格式样本数量以及基于TensorFlow中的DataSet从所述文件系统中读取对应抽样的TFRecord格式的文件数据。
本发明第三方面提供了一种存储介质,所述存储介质包括储存的程序,其中,所述程序运行时执行第一方面中任一项所述的方法。
本发明第四方面提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行第一方面中任一项所述的方法。
通过上述技术方案,本发明的有益效果在于:
1.基于Spark的工作原理,可以依托分布式计算和底层的计算资源,处理大规模或者超大规模下的数据特征处理流程。较为轻松的为模型生成千万级甚至更大量级的数据样本,从而满足深度学习模型训练需要。
2.基于本技术方案,可以在生成TFRecord的时候就能知道总的数据量以及单个TFRecord格式文件中的样本量,通过样本量以及输出的样本文件数,就可以很好的完成数据抽样和分组。
3.本技术方案中已经提供对应样本数据格式的说明,可以基于Meta信息在模型读取样本数据时进行映射,无需进行手动处理,可以大大减少人工干预和编码,更加方便,更加高效。
附图说明
图1为本技术方案的流程图;
图2为读写器装置结构框架图,其中,包括数据读取模块11,数据写入模块12,数据分析模块13,数据输出模块14。
具体实施方式
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
在本实施案例中,需要启动类似EMR机器完成特征处理流程。假设使用LSTM模型进行物品推荐,模型需要读取最近一个月内活跃用户对物品的浏览、点击、购买等一系列操作。
步骤1:启动EMR集群,基于Spark SQL或者DataFrame API以及Spark ML PipelineAPI完成最近一个月内用户特征和用户行为特征矩阵的构建。具体构建方式可能包括类似聚合操作、获取最新用户特征等形式,细节不在本发明范围内,故不再赘述。构建的结果是用户本身的特征和用户行为特征(包括浏览、点击、购买等各种操作行为)以DataFrame的格式保留在EMR集群内存中。
其中,EMR集群为原生云大数据平台,能够快速处理海量数据,并且具有规模成本效益,本实施例所用的EMR集群可以为阿里云EMR或亚马逊EMR。
其中,Spark SQL为一种安全的、经正式定义的编程语言。它被设计用来支持一些安全或商业集成为关键因素的应用软件的设计。
步骤2:基于本发明中的Spark TFRecord生成器,读取DataFrame中分片列表中各个分片对应的ID以及记录数,其中记录数即代表对应分片中DataFrame中多条记录的数量。同时生成器会读取DataFrame的Schema结构,遍历Schema中每个字段的字段名、字段类型。可能的字段类型包含但不限于字符串、整型、布尔型、浮点型、数组(多维)等。同时会根据特征字段类型标记字段的维度,如标量、向量或者张量,以及标示张量的宽度,是否是序列化数据等。更多的是,生成器会对类别型字段从DataFrame中列举出所有的列表。该列表的重要作用是,在后续的TensorFlow中会被标记为类别型数据。以上这些会整体作为Meta信息。
其中,Schema结构为用一套预先规定的XML元素和属性创建的,这些元素和属性定义了XML文档的结构和内容模式。
步骤3:基于发明的TFRecord生成器,会将上述Meta信息和DataFrame数据样本本身分别以JSON和TFRecord格式写入到文件系统中。供后续模型读取使用。
步骤4:基于本发明的TFRecord读取器,在TensorFlow中会优先读取JSON格式的Meta信息文件,确定总的文件数、样本数、字段列表。通过文件数和样本数可以提供给模型不同的抽样方案,例如随机混合数据、读取指定个数的样本文件。通过字段列表可以完成将TFRe cord中的数据转换成模型可以直接使用的基于TensorFlow框架的数据类型。需要说明的是,本方案会提供一个Feature Handler的工具类代码包,基于TensorFlow实现的用于将Meta中字段列表字段映射成TensorFlow Feature和Feature Column的数据,这部分数据可以由模型直接使用,而不需要每次都经过人工配置或重新编码来确定。
步骤5:基于本发明的TFRecord读取器,基于TensorFlow DataSet API将TFRecord格式的文件按照抽样或者文件个数等方式依次读取到内存中,完成模型的训练或者推理。
实施例2
在本实施例中还提供了一种用于实施基于TensorFlow和Spark实现的TFRecord格式的读写通信方法的读写器装置,该读写器装置用于实现上述实施例1,其中已经进行过说明的不再赘述。如以下所使用的术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
参见图2,是本实施例对用于实施基于TensorFlow和Spark实现的TFRecord格式的读写通信方法的读写器装置的结构框图,如图所示,该装置包括:数据读取模块11,用于将数据进行分片并读取相应信息;数据写入模块12,用于将每个字段的数据格式信息和元数据信息写入到文件系统中;数据分析模块13,用于获取文件系统中TFRecord格式样本数量以及基于TensorFlow中的DataSet从所述文件系统中读取对应抽样的TFRecord格式的文件数据;数据输出模块14,用于输出数据。
本发明的理论原理如下:
在现有的机器学习任务中,数据特征处理通常需要花费非常多的时间来处理,处理的维度和时间跨度往往随着业务模型和机器学习模型的不同而不同,以LSTM为例的序列模型,往往需要使用跨越一周、一个月甚至半年时间段内的用户行为数据,假设以推荐为业务目标,用户行为数据可以是用户在过去一个月内对不同物品的浏览、点击、评分等行为的特征矩阵。如果对应周期内的用户量非常大,完整的用户行为特征矩阵就会变的更大。在如此大的数据量下,常规的基于类似NumPy等工具来产生样本数据流程就会变的比较复杂和非常低的可行性,而非分布式下难以应付千万级或以上的数据量。基于Spark的大数据处理平台,可以相对较好的完成大规模的数据计算,从而在集群中以分布式方式处理不同维度的数据,最终基于Spark DataFrame的形式面向机器学习工程人员。我们可以使用SparkDataFrame较为轻松的获取到Spark中每个分片中有多少的数据量、数据字段类型,从而在最终输出到文件系统时,可以将这部分的信息以Meta信息存储起来,后续在使用TFRecord时可以轻松的获取每个文件对应的数量样本量。当然这中间需要一系列的代码工具用来获取字段信息,以及格式化相关数据信息,以便以类似接口文档的形式,将这些信息交付给读取器。通过预定义的格式,在读取文件时进行一次映射,将TFRecord格式数据映射成TensorFlow中的Feature Columns,以直接喂给模型进行后续训练或者推理用。
需要说明,上述描述的实施例是本发明的一部分实施例,而不是全部实施例,也不是对本发明的限制。基于本发明的实施例,本领域普通技术人员在不付出创造性劳动前提下所获得的所有其他实施例,都属于本发明的保护范围。

Claims (7)

1.一种读写通信方法,基于TensorFlow工具包和Spark计算框架用于操作TFRecord格式的文件,其特征在于,提供基于Spark框架的TFRecord格式文件生成器以及基于TensorFlow工具包的TFRecord格式文件读取器,包括如下步骤:
S1.使用Spark将数据进行分片并读取相应信息;
使用Spark将数据进行分片并读取到内存队列中,从内存队列中读取对应分片中的样本数据量以及DataFrame中每个字段的数据格式信息进行处理,得到元数据信息;
读取DataFrame的Schema结构,遍历Schema中每个字段的字段名和特征字段类型,根据特征字段类型标记字段的维度;
对类别型字段从DataFrame中列举出列表;
S2.基于Scala工具包,将S1所述DataFrame中每个字段的数据格式信息和元数据信息写入到文件系统中;
S3.基于TensorFlow工具包,提供TFRecord格式的读取器,所述读取器通过读取元数据信息文件,获取所述文件系统中TFRecord格式样本数量;
S4.基于TensorFlow中的DataSet从所述文件系统中读取对应抽样的TFRecord格式的文件数据。
2.根据权利要求1所述的读写通信方法,其特征在于,S1中所述DataFrame中每个字段的数据格式信息包括:字段名、字段类型和默认值。
3.根据权利要求1所述的读写通信方法,其特征在于,S1中所述元数据信息包括:文件名、数据样本数量、文件大小、路径、存储位置、时间。
4.根据权利要求1所述的读写通信方法,其特征在于,S2中所述文件系统包括AWS S3和HDFS。
5.一种读写器装置,其特征在于,所述装置包括:
数据读取模块,用于将数据进行分片并读取相应信息;
使用Spark将数据进行分片并读取到内存队列中,从内存队列中读取对应分片中的样本数据量以及DataFrame中每个字段的数据格式信息进行处理,得到元数据信息;
读取DataFrame的Schema结构,遍历Schema中每个字段的字段名和特征字段类型,根据特征字段类型标记字段的维度;
对类别型字段从DataFrame中列举出列表;
数据写入模块,用于将所述DataFrame中每个字段的数据格式信息和元数据信息写入到文件系统中;
数据分析模块,用于基于TensorFlow工具包,提供TFRecord格式的读取器,所述读取器通过读取元数据信息文件,获取所述文件系统中TFRecord格式样本数量;以及基于TensorFlow中的D ataSet从所述文件系统中读取对应抽样的TFRecord格式的文件数据;
数据输出模块,用于输出数据。
6.一种存储介质,其特征在于,所述存储介质包括储存的程序,其中,所述程序运行时执行权利要求1—4中任一项所述的方法。
7.一种处理器,其特征在于,所述处理器用于运行程序,其中,所述程序运行时执行权利要求1—4中任一项所述的方法。
CN201910912855.4A 2019-09-25 2019-09-25 读写通信方法、读写器装置及存储介质 Active CN110750251B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910912855.4A CN110750251B (zh) 2019-09-25 2019-09-25 读写通信方法、读写器装置及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910912855.4A CN110750251B (zh) 2019-09-25 2019-09-25 读写通信方法、读写器装置及存储介质

Publications (2)

Publication Number Publication Date
CN110750251A CN110750251A (zh) 2020-02-04
CN110750251B true CN110750251B (zh) 2023-03-24

Family

ID=69277025

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910912855.4A Active CN110750251B (zh) 2019-09-25 2019-09-25 读写通信方法、读写器装置及存储介质

Country Status (1)

Country Link
CN (1) CN110750251B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105740424A (zh) * 2016-01-29 2016-07-06 湖南大学 一种基于 Spark 平台的高效率文本分类方法
CN108205528A (zh) * 2016-12-16 2018-06-26 上海仪电(集团)有限公司中央研究院 一种面向海量监控数据的检索分析系统
CN108427709A (zh) * 2018-01-25 2018-08-21 朗新科技股份有限公司 一种多源海量数据处理系统及方法
CN108536808A (zh) * 2018-04-04 2018-09-14 国家计算机网络与信息安全管理中心 一种基于Spark计算框架的数据获取方法和装置
CN109063842A (zh) * 2018-07-06 2018-12-21 无锡雪浪数制科技有限公司 一种兼容多种算法框架的机器学习平台
CN110059066A (zh) * 2019-02-26 2019-07-26 中科遥感(深圳)卫星应用创新研究院有限公司 spark结合tensorflow进行遥感影像信息提取的方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10083221B2 (en) * 2016-03-15 2018-09-25 International Business Machines Corporation Providing global metadata in a cluster computing environment

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105740424A (zh) * 2016-01-29 2016-07-06 湖南大学 一种基于 Spark 平台的高效率文本分类方法
CN108205528A (zh) * 2016-12-16 2018-06-26 上海仪电(集团)有限公司中央研究院 一种面向海量监控数据的检索分析系统
CN108427709A (zh) * 2018-01-25 2018-08-21 朗新科技股份有限公司 一种多源海量数据处理系统及方法
CN108536808A (zh) * 2018-04-04 2018-09-14 国家计算机网络与信息安全管理中心 一种基于Spark计算框架的数据获取方法和装置
CN109063842A (zh) * 2018-07-06 2018-12-21 无锡雪浪数制科技有限公司 一种兼容多种算法框架的机器学习平台
CN110059066A (zh) * 2019-02-26 2019-07-26 中科遥感(深圳)卫星应用创新研究院有限公司 spark结合tensorflow进行遥感影像信息提取的方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
TensorLightning: A Traffic-Efficient Distributed Deep Learning on Commodity Spark Clusters;Seil Lee 等;《IEEE Access》;20180530;第06卷;27671-27680 *
基于Spark的流程化机器学习分析方法;赵玲玲 等;《计算机系统应用》;20170106(第12期);162-168 *

Also Published As

Publication number Publication date
CN110750251A (zh) 2020-02-04

Similar Documents

Publication Publication Date Title
US20200050968A1 (en) Interactive interfaces for machine learning model evaluations
AU2015347304B2 (en) Testing insecure computing environments using random data sets generated from characterizations of real data sets
CA2953969A1 (en) Interactive interfaces for machine learning model evaluations
Stoltzfus et al. Phylotastic! Making tree-of-life knowledge accessible, reusable and convenient
Boschetti et al. Python data science essentials
Boschetti et al. Python data science essentials
Sjardin et al. Large scale machine learning with Python
Boschetti et al. Python data science essentials: A practitioner’s guide covering essential data science principles, tools, and techniques
Walkowiak Big Data analytics with R
Porter Scientific databases for environmental research
Werneck et al. A reproducible POI recommendation framework: Works mapping and benchmark evaluation
CN110750251B (zh) 读写通信方法、读写器装置及存储介质
Carter Data science for mathematicians
Crickard Data Engineering with Python: Work with massive datasets to design data models and automate data pipelines using Python
Viswanathan et al. R: Recipes for analysis, visualization and machine learning
CN113515528B (zh) 基于大数据和oracle海量数据的资产筛选系统和方法
Grigorev Mastering Java for data science
Eldridge Best Practices for Designing Efficient Tableau Workbooks
Ilijason Beginning Apache Spark Using Azure Databricks: Unleashing Large Cluster Analytics in the Cloud
Smedley et al. Snoopy: portable software for capture-recapture surveys
Cheah Quality, retrieval and analysis of provenance in large-scale data
Sarkar Learning Spark SQL
Drabas Practical data analysis cookbook
US11841865B2 (en) Database management system and associated methods
WO2023028833A1 (zh) 一种数据处理的方法、装置、设备、程序及介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant