CN111061642B - 一种基于用户数据的全自动竞赛数据处理系统以及方法 - Google Patents
一种基于用户数据的全自动竞赛数据处理系统以及方法 Download PDFInfo
- Publication number
- CN111061642B CN111061642B CN201911323356.8A CN201911323356A CN111061642B CN 111061642 B CN111061642 B CN 111061642B CN 201911323356 A CN201911323356 A CN 201911323356A CN 111061642 B CN111061642 B CN 111061642B
- Authority
- CN
- China
- Prior art keywords
- local
- file
- user
- installation
- version
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 42
- 238000012545 processing Methods 0.000 title claims abstract description 29
- 238000009434 installation Methods 0.000 claims abstract description 77
- 238000001514 detection method Methods 0.000 claims abstract description 21
- 238000012795 verification Methods 0.000 claims abstract description 10
- 238000012549 training Methods 0.000 claims description 46
- 230000006870 function Effects 0.000 claims description 24
- 230000004069 differentiation Effects 0.000 claims description 14
- 230000002159 abnormal effect Effects 0.000 claims description 8
- 238000013515 script Methods 0.000 claims description 7
- 230000001133 acceleration Effects 0.000 claims description 4
- 238000007781 pre-processing Methods 0.000 claims description 4
- 238000004806 packaging method and process Methods 0.000 claims description 3
- 238000012858 packaging process Methods 0.000 claims description 3
- 230000000977 initiatory effect Effects 0.000 claims 1
- 230000008569 process Effects 0.000 abstract description 13
- 238000007726 management method Methods 0.000 description 22
- 238000011156 evaluation Methods 0.000 description 14
- 230000000875 corresponding effect Effects 0.000 description 11
- 238000012360 testing method Methods 0.000 description 9
- 238000004422 calculation algorithm Methods 0.000 description 7
- 230000008901 benefit Effects 0.000 description 6
- 238000003672 processing method Methods 0.000 description 4
- 238000012550 audit Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 244000035744 Hura crepitans Species 0.000 description 2
- 238000013475 authorization Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000013135 deep learning Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000005265 energy consumption Methods 0.000 description 2
- 230000008676 import Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000007639 printing Methods 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000010835 comparative analysis Methods 0.000 description 1
- 150000001875 compounds Chemical class 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000007373 indentation Methods 0.000 description 1
- 238000012821 model calculation Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 238000013441 quality evaluation Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Stored Programmes (AREA)
Abstract
本发明提出一种基于用户数据的全自动竞赛数据处理系统以及方法。该技术方案主要包括自动化本地启动文件版本检测、自动化本地环境安装、提交代码以及自动化提交代码三大部分。在用户操作使用上操作简单,只需要两步就能实现本地环境自动安装并运行;在程序运行上,实现环境自动版本校验,保证本地启动文件是最新文件,并且用户自定义配置操作简单,能通过用户代码自动获取用户代码中所需要安装的包名,从而通过精准的差异化对比,获得更为准确的用户安装需求;配置精准的历史记录差异化对比,更为精准的避免重复安装,节约用户安装时间;在精准获取需要安装包名后,进行批量安装,安装速度更快;保留历史记录,有效避免重复安装。
Description
技术领域
本发明属于竞赛数据处理技术领域,尤其涉及一种基于用户数据的全自动竞赛数据处理系统以及方法。
背景技术
为了选择出对于同一个化合生命体无法执行的或复杂或规模庞大的任务而提出的多种不同的智能算法优劣,需要事先给定具有实际场景和应用意义的任务,然后,候选者提出各自的算法进行问题解决和性能测试。通常,这个过程可以采用竞赛的方式进行,虽然竞赛并不是唯一的方式,例如还可以进行性能评价。
当前竞赛项目的主要运行方式是通过上传CSV文件进行对比数据集。这种方式基本无法保证参赛者的数据集的真实性,以及数据集的有效性。因为CSV文件在参赛者间可以随意传播。因此仅有部分网站是前10名进行手动上传压缩包的形式上传代码。用户只能在自己的电脑上运行代码以及调试。本地调试的话也仅仅只能进行小批量的数据测试。但是往往竞赛所需要的计算量很大,个人终端电脑很难满足竞赛需求,因此只能购买云服务器然后自己搭建环境测试。最终调试成功后,用户需要再次从自己购买的远程服务器中将对应的运行结果,也就是训练模型以CSV文件的格式导出来之后,再将CSV文件提交到对应的竞赛平台。整个流程繁琐无比,中间有很多的环节都浪费了大量的用户时间。
对此,公开号CN109508293A的发明专利申请(名称:一种高并发的算法竞赛程序在线评测系统,分类号G06F11/36)提出的一种计算机科学教学实验领域的在线评测系统,网站服务器将评测任务发送到评测网关模块上,评测任务包括用户提交的源代码和题目的评测点配置信息。在检查评测任务的合法性后,评测任务就会被加入任务队列等待程序编译。任务队列会带有一个优先度权值,综合考虑到达时间、预计评测时间、用户的优先度等信息赋予优先度。优先度高的任务将会先被评测机模块进行处理测试数据存储模块会从测试数据服务器中获得输入输出文件,并将输入文件的内容通过标准输入提供给用户程序,运行后,用户程序输出到标准输出中,并被评测机获得。在程序运行时控制模块会对沙箱容器进行监控和计时。如果程序能在规定的时间内正常运行完毕并输出,那么对比模块会将输出的结果与测试数据存储模块中的标准输出答案进行对比,判断正确与否。如果沙箱内的程序进行了非法系统调用或者运行超时,则会被控制模块强制中止运行。结果生成模块将对比模块的结果和控制模块提供的运行时间、内存等信息发送回评测网关,由评测网关汇总后发回到网站服务器中,将评测结果展示给用户。该系统仅仅是针对理论上的程序进行测试,并没有任何实际问题的解决过程;公布号CN 106060097B、分类号为H04L29/06的授权专利″一种信息安全竞赛的管理系统及管理方法″提供一种信息安全竞赛的管理系统,所述管理系统包括公有云身份管理子系统和私有云靶机管理子系统,所述公有云身份管理子系统包括账号管理模块、认证授权管理模块和查询模块,所述私有云靶机管理子系统包括资源管理模块、审计管理模块和信息库,其中:所述账号管理模块,其用于响应账号注册请求,创建并存储账号信息,所述账号信息包括相关联的用户账号和密码;所述认证授权管理模块,其用于接收目标用户发来的认证请求,所述认证请求中包括相关联的目标用户账号和目标密码;当所述相关联的目标用户账号和目标密码与所述账号管理模块中存储的账号信息相匹配时,确认通过所述认证请求;所述查询模块,其用于响应用户的查询请求,提供用户的竞赛成绩以及在竞赛过程中产生的日志;所述资源管理模块,其用于在所述私有云靶机管理子系统中配置终端设备、网络安全设备以及服务器,以构建靶机网络;所述审计管理模块,其用于采集用户在竞赛过程中产生的行为数据,并根据所述行为数据生成日志和竞赛成绩;所述信息库,其用于存储所述资源管理模块中配置的终端设备、网络安全设备以及服务器的配置信息以及所述审计管理模块中产生的行为数据、日志以及竞赛成绩。
该竞赛系统并未涉及任何算法或者程序评价本身,仅仅是在对竞赛过程进行管理。
在非专利库中扩充检索发现,存在一些算法类的竞赛评价系统,主要做法如下:
在指定赛题下载相关数据集到本地客户端,在本地客户端完成数据的预处理工作,并在本地客户端配置相关的开发环境、安装深度学习框架依赖,在本地客户端利用GPU计算资源完成模型训练工作,根据模型输入相应的数据文件并生成预测的结果结果文件,一般格式为CSV(一种文件格式)文件。将本地客户端生成的结果文件上传到竞赛平台,通过与云端预先设置的标准进行对比分析、数据处理等等。
然而,发明人进一步发现,上述方法仅仅是泛泛的介绍,并没有具体的技术方案,并且,本地客户端安装开发环境、深度学习框架依赖经常遇到版本不兼容、学习框架安装不上等等问题,实现算法前的环境准备工作消耗较长的时间精力;
此外,本地进行模型训练尤其是针对于大型神经网络结构训练,普通本地客户端中的CPU无法满足模型计算的要求。并且配置本地客户端的GPU硬件设备需要消耗巨大的成本。
本地客户端模型训练完成后,需要再次将验证集数据输入到模型中并得到预测结果文件,提交预测结果文件进行模型质量评估,该程序步骤繁琐且增加了模型的迭代时间成本。并且现有技术主要运行方式是用通过上传CSV文件进行对比数据集,这种方式基本无法保证参赛者的数据集的真实性,以及数据集的有效性。并且,大部分的智能竞赛训练个人设备很难达到训练需求,如果参赛人员想提交出一份有效的数据集,则需要自己去租借或者购买三方GPU服务器,非常费时费力。
为了提高竞赛效率,避免用户将时间浪费在本地环境搭建以及云端环境部署等与竞赛无关操上,亟需一整套自动化技术来提高用户竞赛效率。
发明内容
基于现有技术存在的缺陷,本发明提出一种基于用户数据的全自动竞赛数据处理系统以及方法,通过一系列自动化技术,解决目前竞赛流程繁杂问题,减少用户在与非竞赛相关事情上耗费过多精力,最大限度提高用户参加竞赛效率。
该技术方案主要包括自动化本地启动文件版本检测、自动化本地环境安装、提交代码以及自动化提交代码三大部分。在用户操作使用上操作简单,只需要两步就能实现本地环境自动安装并运行;在程序运行上,实现环境自动版本校验,保证本地启动文件是最新文件,并且用户自定义配置操作简单,能通过用户代码自动获取用户代码中所需要安装的包名,从而通过精准的差异化对比,获得更为准确的用户安装需求;配置精准的历史记录差异化对比,更为精准的避免重复安装,节约用户安装时间;在精准获取需要安装包名后,进行批量安装,安装速度更快;保留历史记录,有效避免重复安装。
在本发明的第一个方面,提出一种基于用户数据的全自动竞赛数据处理系统,所述系统包括:
客户端检测组件,用于自动化的检测本地启动文件的版本;
客户端安装组件,用于自动化安装本地竞赛数据处理系统;
代码提交组件,用于自动化的提交竞赛数据以及竞赛代码;
所述系统还包括本地训练模块和云端训练模块,以及对应于本地训练模块的第一结果展示模块和对应于云端训练模块的第二结果通知组件;
作为本发明的第一个创新点,其中,所述客户端检测组件,在所述客户端启动后,自动检测本地启动环境版本是否是最新版本,并利用客户端安装组件进行自动升级;
如果所述本地启动环境不是最新版本,则进行最新版本的客户端下载,具体包括:
客户端本地启动程序启动后,对本地启动文件进行检测,自动检测本地启动文件是否安装以及版本是否是最新版本;所述本地启动文件第一次或者更新后运行,都会在本地生成一个脚本控制文件,自动记录当前本地启动文件的哈希值,之后每次启动都会通过对比本地和服务器端的哈希值,以此来校验本地文件是否是最新文件;
如果本地没有哈希值或者不是最新哈希值,则会进行多渠道自动下载更新并安装,以此保证本地启动文件的正确安装以及是最新版本;
进一步的,所述系统系统还包括异常检测预处理模块,如果用户当前下载方式下载时出现异常状态则拦截这个异常,然后切换其他方式进行下载;
所述代码提交组件,用于在所述客户端安装组件安装本地竞赛数据处理系统之后,通过本地启动程序将用户的输入参数传给本地启动文件;所述用户提交的输入参数包括竞赛数据以及竞赛代码。
作为本发明的第二个创新,所述系统还包括数据集下载模块,用于在所述客户端安装组件安装本地竞赛数据处理系统之后,自动从服务器加速通道快速下载小数据量集合。
在所述下载小数据量集合下载后,通过所述代码提交组件输入的用户参数,判断用户是提交本地训练还是云端训练,并通过所述第一结果展示模块或第二结果通知组件展示结果或者通知训练进度。
在本发明的第二个方面,提出一种基于用户数据的全自动竞赛数据处理方法,所述方法包括:
S101:本地启动文件版本检测步骤;
S102:本地环境自动化安装步骤;
S103:竞赛代码和竞赛数据自动提交步骤;
S104:竞赛数据处理训练步骤;
S105:竞赛数据结果输出步骤;
其中,步骤S101具体包括:
客户端开始运行的时候,自动检测本地启动环境版本是否是最新版本,并进行自动升级;
步骤S102具体包括:
本地启动环境检测之后自动安装最新的运行环境,运行环境对本地运行环境进行检测,判断本地运行环境是否需要局部化更新,如果有需要更新则自动更新;
步骤S103具体包括:
本地所有的环境以及依赖包检测完毕之后,将本地代码自动打包提交;打包的过程中,自动检测代码文件所在目录中是否缺失比较配置文件,并自动移除不必要的数据集文件。
作为上述方法的优点之一,其中,本地启动文件第一次或者更新后运行即在本地生成一个脚本控制文件,自动记录当前本地启动文件的哈希值,之后每次启动都会通过对比本地和服务器端的哈希值,以此来校验本地文件是否是最新文件。
作为上述方法的优点之二,其中本地启动文件功能运行步骤如下:
S301开始:在命令行中运行Python程序语言,调用目标程序;
S302在当前项目文件夹中搜索并判断是用户是否配置相关配置文件;
S303如果用户并没有配置或创建配置文件,该程序则会将用户自定义配置设定为空;如果用户有自定义配置文件,该程序则会读取用户配置文件,并将记录下来,并记录为用户需求配置;
S304当对用户自定义配置进行分析和记录后,从目标程序的代码中获取其头部部分代码,并进行解析,获取代码中导入的相关包文件,并记录为代码需求配置;
S305将获取的用户需求配置和代码需求配置进行差异化对比获取差异配置;
S306获取所有差异配置之后,判断用户是否有安装记录相关文件;
S307如果用户没有安装记录,则会创建安装记录相关文件,并将用户安装记录记录为历史配置;
S308差异配置与历史配置进行逐条差异化对比;
S309逐条对比的时候如果无差异,则跳过当前条判断,进行下一条判断,如果有差异,则将当前包名及版本号写入安装文件中,并记录为安装配置;
S310执行所有差异化对比后,读取安装配置中的所有数据,并批量安装相关包文件,安装成功则会将对应的安装记录写入历史配置中;
S311当所有需求的安装包都自动化安装完后,调用目标程序并执行相关功能。
进一步的,步骤S305进行差异化对比获取差异配置,具体包括:
通过函数比对方法进行差异化对比,首先对比包名,如果包名不一致,则直接将当前包以及版本号追加写入差异配置;
如果包名一致,则对比版本号,如果版本号一致,则结束本条验证,进行下一条验证;如果版本号不一致,则将当前包以及版本号追加写入差异配置。
本发明上述方法可以通过计算机程序指令的形式实现,并可以集成在移动终端上运行,包括将计算机程序指令存储在计算机可读存储介质的形式。
因此,在本发明的第三个方面,提供一种计算机可读存储介质,其上存储有计算机可读指令,通过处理器和存储器,执行所述可读指令,用于实现所述的方法。
本发明的进一步优点将结合附图,通过具体的实施例进一步体现。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请基于用户数据的全自动竞赛数据处理系统的整体框架图;
图2是本申请基于用户数据的全自动竞赛数据处理方法流程示意图;
图3是本申请基于用户数据的全自动竞赛数据处理方法整体流程图;
图4是本申请客户端运行功能流程图;
图5是本申请本地启动文件功能运行流程图。
具体实施例
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和实施例对本发明做进一步说明。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
首先,定义本发明用到的缩略语和关键术语。
Python:(英国发音:美国发音:)是一种广泛使用的解释型、高级编程、通用型编程语言,由吉多·范罗苏姆创造,第一版发布于1991年。可以视之为一种改良(加入一些其他编程语言的优点,如面向对象)的LISP。Python的设计哲学强调代码的可读性和简洁的语法(尤其是使用空格缩进划分代码块,而非使用大括号或者关键词)。相比于C++或Java,Python让开发者能够用更少的代码表达想法。不管是小型还是大型程序,该语言都试图让程序的结构清晰明了。
Pip(软件包管理系统):pip是一个以Python计算机程序语言写成的软件包管理系统,他可以安装和管理软件包,另外不少的软件包也可以在″Python软件包索引″(英语:Python Package Index,简称PyPI)中找到。
GPU:图形处理器(英语:Graphics Processing Unit,缩写:GPU),又称显示核心、视觉处理器、显示芯片,是一种专门在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上图像运算工作的微处理器。
CSV:逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。通常,所有记录都有完全相同的字段序列。
哈希值:哈希值,又称:散列函数(或散列算法,又称哈希函数,英语:HashFunction)是一种从任何一种数据中创建小的数字″指纹″的方法。散列函数把消息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来。该函数将数据打乱混合,重新创建一个叫做散列值(hash values,hash codes,hash sums,或hashes)的指纹。散列值通常用一个短的随机字母和数字组成的字符串来代表。好的散列函数在输入域中很少出现散列冲突。在散列表和数据处理中,不抑制冲突来区别数据,会使得数据库记录更难找到。
异常处理:异常处理,是编程语言或计算机硬件里的一种机制,用于处理软件或信息系统中出现的异常状况(即超出程序正常执行流程的某些特殊条件)。各种编程语言在处理异常方面具有非常显著的不同点(错误检测与异常处理区别在于:错误检测是在正常的程序流中,处理不可预见问题的代码,例如一个调用操作未能成功结束)。某些编程语言有这样的函数:当输入存在非法数据时不能被安全地调用,或者返回值不能与异常进行有效的区别。例如,C语言中的atoi函数(ASCII串到整数的转换)在输入非法时可以返回0。在这种情况下编程者需要另外进行错误检测(可能通过某些辅助全局变量如C的errno),或进行输入检验(如通过正则表达式),或者共同使用这两种方法。通过异常处理,我们可以对用户在程序中的非法输入进行控制和提示,以防程序崩溃。
接下来参见图1,该实施例公开本申请基于用户数据的全自动竞赛数据处理系统的整体框架图。
在图1中,所述系统包括:
客户端检测组件,用于自动化的检测本地启动文件的版本;
客户端安装组件,用于自动化安装本地竞赛数据处理系统;
代码提交组件,用于自动化的提交竞赛数据以及竞赛代码;
所述系统还包括本地训练模块和云端训练模块,以及对应于本地训练模块的第一结果展示模块和对应于云端训练模块的第二结果通知组件;
其中,所述客户端检测组件,在所述客户端启动后,自动检测本地启动环境版本是否是最新版本,并利用客户端安装组件进行自动升级;
如果所述本地启动环境不是最新版本,则进行最新版本的客户端下载,具体包括:
客户端本地启动程序启动后,对本地启动文件进行检测,自动检测本地启动文件是否安装以及版本是否是最新版本;所述本地启动文件第一次或者更新后运行,都会在本地生成一个脚本控制文件,自动记录当前本地启动文件的哈希值,之后每次启动都会通过对比本地和服务器端的哈希值,以此来校验本地文件是否是最新文件;
如果本地没有哈希值或者不是最新哈希值,则会进行多渠道自动下载更新并安装,以此保证本地启动文件的正确安装以及是最新版本;
本实施例的下载支持多端多方式下载。
以Windows为例:
Widows系统中的可执行程序脚本首先会通过windows系统内置函数bitsadmin下载,如果下载失败的话则会自懂编译vbs程序并尝试下载。
进一步的,所述系统系统还包括异常检测预处理模块,如果用户当前下载方式下载时出现异常状态则拦截这个异常,然后切换其他方式进行下载;
所述代码提交组件,用于在所述客户端安装组件安装本地竞赛数据处理系统之后,通过本地启动程序将用户的输入参数传给本地启动文件;所述用户提交的输入参数包括竞赛数据以及竞赛代码。
所述的系统还包括数据集下载模块,用于在所述客户端安装组件安装本地竞赛数据处理系统之后,自动从服务器加速通道快速下载小数据量集合。
在所述下载小数据量集合下载后,通过所述代码提交组件输入的用户参数,判断用户是提交本地训练还是云端训练,并通过所述第一结果展示模块或第二结果通知组件展示结果或者通知训练进度。
参见图2,是本申请基于用户数据的全自动竞赛数据处理方法流程示意图,主要包括:
S101:本地启动文件版本检测步骤;
S102:本地环境自动化安装步骤;
S103:竞赛代码和竞赛数据自动提交步骤;
S104:竞赛数据处理训练步骤;
S105:竞赛数据结果输出步骤。
进一步参见图3,是本申请基于用户数据的全自动竞赛数据处理方法整体流程图。
[S101]客户端开始运行的时候,会自动检测本地启动环境版本是否是最新版本,并进行自动升级,自动检测是将本地文件转为二进制文件后,通过散列算法变换成固定长度的输出值,通过对比输出值,进行版本判断。
[S102]本地启动环境检测之后,会安装最新的运行环境,运行环境会对本地运行环境进行检测,判断本地运行环境是否需要局部化更新,如果有需要更新的就会自动更新。
[S103]本地所有的环境以及依赖包检测完毕之后,会将本地代码自动打包提交。打包的过程中,会自动检测代码文件所在目录中是否缺失比较配置文件,以及会自动移除不必要的数据集文件。
具体的,参见图4,是本申请客户端运行功能流程图,具体包括:
[S201]开始:Locallauncher(本地启动程序)支持多终端启动,支持Windows、Linux、以及Mac等,例如在Windwos只需要双击Flyai.exe启动文件启动程序即可,Linux或Mac端用户只需直接启动运行Flyai脚本文件即可。
[S202]Local launcher(本地启动程序)启动后,会对Local boot file(本地启动文件)进行检测,自动检测Local boot file(本地启动文件)是否安装以及版本是否是最新版本。在这里,Local boot file(本地启动文件)第一次或者更新后运行,都会在本地生成一个脚本控制文件,自动记录当前Local boot file(本地启动文件)的哈希值,之后每次启动都会通过对比本地和服务器端的哈希值,以此来校验本地文件是否是最新文件,如果本地没有哈希值或者不是最新哈希值,则会进行多渠道自动下载更新并安装,以此保证Localboot file(本地启动文件)的正确安装以及是最新版本。安装的时候,由于不同的用户可能会出现不同的异常情况,针对这种情况,为了保证最新文件能够被正确的下载,我们采用了异常处理机制,当用户通过第一种下载方式下载的时候出现异常状态,我们便会拦截这个异常,然后切换其他方式进行下载。以此来保证文件的正确下载以及安全。
[S203]Local boot file(本地启动文件)安装成功后,Local launcher(本地启动程序)会将用户的输入参数传给Local boot file (本地启动文件)。
[S204]Local boot file(本地启动文件)接收到用户参数后,会进行Localprogram runtime environment(本地程序运行时环境)检测,如果检测通不通过则会进行相关自动化安装配置,检测通过则会进行下一步
[S205]Local program runtime environment(本地程序运行时环境)通过,则会自动从服务器加速通道快速下载小数据量Datasets(数据集)
[S106]下载完Datasets(数据集)后,会判断用户是提交本地训练还是线上训练进行下一步操作,如果是本地训练,则会接受用户参数进行本地训练,并会在客户端实时打印训练日志。如果是提交云端训练,则会将用户参数传递到云端,并提供实时查看日志链接地址,并通过微信公众号、邮箱等方式实时通知用户训练进度。
[S207]最后训练结束后,如果是本地训练,客户端上则会直接展示训练结果,如果是云端训练,则会通过微信公众号或邮箱等形式通知用户训练得分。
进一步参见图5,Local boot file(本地启动文件)功能运行如下:
[S301]开始:在命令行中运行Python程序语言的时候,需用Current program(本程序)去调用Target program(目标程序)。用户如果有自定义安装配置,需在调用程序之前,在项目目录中写入对应配置文件。
[S302]当通过Current program(本程序)调用Target program(目标程序)的时候,会在当前项目文件夹中搜索,使用Python的os模块获取指定文件夹下所有文件名。使用os.walk方法可以遍历指定文件下所有的子目录、非目录子文件。当前搜索是首先使用os.path.exists()函数去直接判断文件是否存在进行搜索。并判断是用户是否配置相关配置文件Custom installation configuration(自定义安装配置)。
[S303]如果用户并没有配置或创建配置文件,该程序则会将用户自定义配置设定为空。如果用户有自定义配置文件,该程序则会使用Python的open()函数打开文件,然后使用readline()函数对文件进行逐行读取用户配置文件,并将对应的数据通过Python的List数据类型方式将数据存储在内存中记录下来,并记录为User demand configuration(用户需求配置)。
[S304]当对用户自定义配置进行分析和记录后,Current program(本程序)会从用Target program(目标程序)的代码中获取其头部部分代码,并进行解析,获取代码中导入的相关包文件,并记录为Code demand configuration(代码需求配置)。
[S305]Current program(本程序)获取了用户需求配置和代码需求配置后会将这两个配置进行通过一个函数方法进行差异化对比,
作为进一步改进,用户自定义放在requirement.txt文件中的配置信息即使用户需求配置。代码需求配置是通过遍历用户各代码文件,并获取各文件中import以及form部分导入的包文件,并进行去重后的集合。差异化对比是通过逐行读取本地用户需求配置,匹配当前用户需求配置与代码需求配置异同,并将结果进行整合,获取差异配置。具体包括:
首先对比包名,如果包名不一致,则直接将当前包以及版本号追加写入Difference configuration(差异配置)。如果包名一致,则对比版本号,如果版本号一致,则结束本条验证,进行下一条验证。如果版本号不一致,则将当前包以及版本号追加写入Difference configuration(差异配置)。
[S306]获取所有Difference configuration(差异配置)之后,Current program(本程序)会读判断用户是否有安装记录相关文件。
[S307]如果用户没有安装记录,则会创建安装记录相关文件,并将用户安装记录记录为History configuration(历史配置)。
[S308]将Difference configuration(差异配置)与History configuration(历史配置)进行差异化对比。
[S309]逐条对比的时候如果无差异,则跳过当前条判断,进行下一条判断,如果有差异,则将当前包名及版本号写入安装文件中,并记录为Installation configuration(安装配置)。
[S310]做完了所有差异化对比后,Currentprogram(本程序)会读取Installationconfiguration(安装配置)中的所有数据,并批量安装相关包文件,安装成功则会将对应的安装记录写入History configuration(历史配置)中。
[S311]当所有需求的安装包都自动化安装完后,Current program(本程序)就会调用Target program(目标程序)并执行相关功能。
通过上面具体实施方式,所述技术领域的技术人员可容易的实现本发明。但是应当理解,本发明并不限于上述的具体实施方式。在公开的实施方式的基础上,所述技术领域的技术人员可任意组合不同的技术特征,从而实现不同的技术方案。
参见上述描述可知,本发明的技术方案整体流程简单,减少用户错误操作;操作方便,全自动化检测运行,极大的增加用户竞赛效率。
有益效果至少体现在:
(1)用户操作使用上:用户操作简单,只需要两步就能实现本地环境自动安装并运行
(2)本地调试有实时日志打印,云端调试有网络日志实时查看,更有训练过程进度更新提醒
(3)程序运行上:-环境自动版本校验,保证Local boot file(本地启动文件)是最新文件;
(4)用户自定义配置操作简单
-能通过用户代码自动获取用户代码中所需要安装的包名
-精准的差异化对比,获得更为准确的用户安装需求
-精准的历史记录差异化对比,更为精准的避免重复安装,节约用户安装时间
-精准获取需要安装包名后,进行批量安装,安装速度更快
-历史记录保存,有效避免以后重复安装。
总之,本发明提出一种基于用户数据的全自动竞赛数据处理系统以及方法,通过一系列自动化技术,解决目前竞赛流程繁杂问题,减少用户在与非竞赛相关事情上耗费过多精力,最大限度提高用户参加竞赛效率。
虽然本文已经示出和描述了本发明的优选实施方式,但对于本领域技术人员显而易见的是,这样的实施方式只是以示例的方式提供的。本领域技术人员现将会在不偏离本发明的情况下想到许多更改、改变和替代。应当理解,在实践本发明的过程中可以采用对本文所描述的本发明实施方式的各种替代方案。以下权利要求旨在限定本发明的范围,并因此覆盖这些权利要求范围内的方法和结构及其等效项。
Claims (9)
1.一种基于用户数据的全自动竞赛数据处理系统,所述系统包括:
客户端检测组件,用于自动化的检测本地启动文件的版本;
客户端安装组件,用于自动化安装本地竞赛数据处理系统;
代码提交组件,用于自动化的提交竞赛数据以及竞赛代码;
其特征在于:
所述系统还包括本地训练模块和云端训练模块,以及对应于本地训练模块的第一结果展示模块和对应于云端训练模块的第二结果通知组件;
其中,所述客户端检测组件,在所述客户端启动后,自动检测本地启动文件的版本是否是最新版本,并利用客户端安装组件进行自动升级;
如果所述本地启动文件的版本不是最新版本,则进行最新版本的客户端下载,具体包括:
客户端本地启动程序启动后,对本地启动文件进行检测,自动检测本地启动文件是否安装以及版本是否是最新版本;所述本地启动文件第一次或者更新后运行,都会在本地生成一个脚本控制文件,自动记录当前本地启动文件的哈希值,之后每次启动都会通过对比本地和服务器端的哈希值,以此来校验本地文件是否是最新文件;
如果本地没有哈希值或者不是最新哈希值,则会进行多渠道自动下载更新并安装,以此保证本地启动文件的正确安装以及是最新版本;
进一步的,所述系统还包括异常检测预处理模块,如果用户当前下载方式下载时出现异常状态则拦截这个异常,然后切换其他方式进行下载;
所述代码提交组件,用于在所述客户端安装组件安装本地竞赛数据处理系统之后,通过本地启动程序将用户的输入参数传给本地启动文件;所述用户提交的输入参数包括竞赛数据以及竞赛代码。
2.如权利要求1所述的系统,还包括数据集下载模块,用于在所述客户端安装组件安装本地竞赛数据处理系统之后,自动从服务器加速通道快速下载小数据量集合。
3.如权利要求2所述的系统,在所述下载小数据量集合下载后,通过所述代码提交组件输入的用户参数,判断用户是提交本地训练还是云端训练,并通过所述第一结果展示模块或第二结果通知组件展示结果或者通知训练进度。
4.一种基于用户数据的全自动竞赛数据处理方法,所述方法包括:
S101:本地启动文件版本检测步骤;
S102:本地环境自动化安装步骤;
S103:竞赛代码和竞赛数据自动提交步骤;
S104:竞赛数据处理训练步骤;
S105:竞赛数据结果输出步骤;
其中,
步骤S101具体包括:
客户端开始运行的时候,自动检测本地启动文件的版本是否是最新版本,并进行自动升级;
步骤S102具体包括:
本地启动文件版本检测之后自动安装最新的运行环境,运行环境对本地运行环境进行检测,判断本地运行环境是否需要局部化更新,如果有需要更新则自动更新;
步骤S103具体包括:
本地所有的环境以及依赖包检测完毕之后,将本地代码自动打包提交;打包的过程中,自动检测代码文件所在目录中是否缺失比较配置文件,并自动移除不必要的数据集文件。
5.如权利要求4所述的方法,其中,步骤S102中进行所述客户端的本地环境自动化安装,具体包括:
本地启动程序启动后,执行自身检测,判断本地启动文件是否安装以及版本是否是最新版本。
6.如权利要求4所述的方法,其中,本地启动文件第一次或者更新后运行即在本地生成一个脚本控制文件,自动记录当前本地启动文件的哈希值,之后每次启动都会通过对比本地和服务器端的哈希值,以此来校验本地启动文件是否是最新文件。
7.如权利要求4所述的方法,其中本地启动文件功能运行步骤如下:
S301:在命令行中运行Python程序语言,调用目标程序;
S302:在当前项目文件夹中搜索并判断是用户是否配置相关配置文件;
S303:如果用户并没有配置或创建配置文件,该程序则会将用户自定义配置设定为空;如果用户有自定义配置文件,该程序则会读取用户配置文件,并将记录下来,并记录为用户需求配置;
S304:当对用户自定义配置进行分析和记录后,从目标程序的代码中获取其头部部分代码,并进行解析,获取代码中导入的相关包文件,并记录为代码需求配置;
S305:将获取的用户需求配置和代码需求配置进行差异化对比获取差异配置;
S306:获取所有差异配置之后,判断用户是否有安装记录相关文件;
S307:如果用户没有安装记录,则会创建安装记录相关文件,并将用户安装记录记录为历史配置;
S308:差异配置与历史配置进行逐条差异化对比;
S309:逐条对比的时候如果无差异,则跳过当前条判断,进行下一条判断,如果有差异,则将当前包名及版本号写入安装文件中,并记录为安装配置;
S310:执行所有差异化对比后,读取安装配置中的所有数据,并批量安装相关包文件,安装成功则会将对应的安装记录写入历史配置中;
S311:当所有需求的安装包都自动化安装完后,调用目标程序并执行相关功能。
8.如权利要求7所述的方法,其中,步骤S305进行差异化对比获取差异配置,具体包括:
通过函数比对方法进行差异化对比,首先对比包名,如果包名不一致,则直接将当前包以及版本号追加写入差异配置;
如果包名一致,则对比版本号,如果版本号一致,则结束本条验证,进行下一条验证;如果版本号不一致,则将当前包以及版本号追加写入差异配置。
9.一种计算机可读存储介质,其上存储有计算机可读指令,通过处理器和存储器,执行所述可读指令,用于实现权利要求4-8任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911323356.8A CN111061642B (zh) | 2019-12-19 | 2019-12-19 | 一种基于用户数据的全自动竞赛数据处理系统以及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911323356.8A CN111061642B (zh) | 2019-12-19 | 2019-12-19 | 一种基于用户数据的全自动竞赛数据处理系统以及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111061642A CN111061642A (zh) | 2020-04-24 |
CN111061642B true CN111061642B (zh) | 2021-02-02 |
Family
ID=70302592
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911323356.8A Active CN111061642B (zh) | 2019-12-19 | 2019-12-19 | 一种基于用户数据的全自动竞赛数据处理系统以及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111061642B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115086356A (zh) * | 2022-06-14 | 2022-09-20 | 北京大学深圳研究生院 | 一种基于竞赛管理平台的云端数据管理方法 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101040552B (zh) * | 2005-04-18 | 2010-12-01 | 捷讯研究有限公司 | 控制软件版本更新的方法和系统 |
US7971182B1 (en) * | 2006-05-09 | 2011-06-28 | Vmware, Inc. | Application environment specifications for provisioning application specific runtime environments using undefined symbols |
CN101254347A (zh) * | 2008-03-20 | 2008-09-03 | 上海交通大学 | 仿人机器人足球竞赛实时仿真系统 |
CN101789886B (zh) * | 2009-01-23 | 2011-12-28 | 中兴通讯股份有限公司 | 一种分布式环境的环境搭建自动化系统及方法 |
CN103353846A (zh) * | 2013-06-28 | 2013-10-16 | 四川农业大学 | 一种项目自动部署插件 |
CN104793946B (zh) * | 2015-04-27 | 2018-07-06 | 广州杰赛科技股份有限公司 | 基于云计算平台的应用部署方法和系统 |
US10884727B2 (en) * | 2015-05-20 | 2021-01-05 | International Business Machines Corporation | Rolling upgrade of a distributed application |
CN106909432B (zh) * | 2017-02-15 | 2020-01-10 | 南京赛宁信息技术有限公司 | 一种ctf在线竞赛平台的在线环境智能部署系统及方法 |
CN109508293A (zh) * | 2018-11-08 | 2019-03-22 | 上海洛谷网络科技有限公司 | 一种高并发的算法竞赛程序在线评测系统 |
CN110427983B (zh) * | 2019-07-15 | 2020-12-01 | 北京智能工场科技有限公司 | 一种基于本地模型与云端反馈的全流程人工智能竞赛系统及其数据处理方法 |
-
2019
- 2019-12-19 CN CN201911323356.8A patent/CN111061642B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN111061642A (zh) | 2020-04-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106156186B (zh) | 一种数据模型管理装置、服务器及数据处理方法 | |
US8626786B2 (en) | Dynamic language checking | |
CN103473506A (zh) | 用于识别恶意apk文件的方法和装置 | |
CN110427983B (zh) | 一种基于本地模型与云端反馈的全流程人工智能竞赛系统及其数据处理方法 | |
CN111475390A (zh) | 日志采集系统部署方法、装置、设备及存储介质 | |
CN116868193A (zh) | 固件组件标识和漏洞评估 | |
CN113448862B (zh) | 软件版本测试方法、装置及计算机设备 | |
CN117555720B (zh) | 代码修复方法、装置、设备及介质 | |
CN112883342A (zh) | 一种组件管控方法、装置及设备 | |
CN115033894A (zh) | 一种基于知识图谱的软件组件供应链安全检测方法及装置 | |
KR20140050323A (ko) | 라이선스 검증 방법 및 그 장치 | |
CN112559344A (zh) | 远程mock测试方法及系统 | |
CN111061642B (zh) | 一种基于用户数据的全自动竞赛数据处理系统以及方法 | |
CN111831300A (zh) | App更新方法、装置、电子设备及计算机可读存储介质 | |
CN114115884B (zh) | 一种编程服务的管理方法以及相关装置 | |
CN106529281A (zh) | 一种可执行文件处理方法及装置 | |
CN111966630B (zh) | 文件类型的检测方法、装置、设备和介质 | |
CN113032256A (zh) | 自动化测试方法、装置、计算机系统和可读存储介质 | |
CN116431481A (zh) | 一种基于多代码情况下的代码参数校验方法及装置 | |
CN109426546B (zh) | 应用启动方法及装置、计算机存储介质及设备 | |
CN116775034A (zh) | 内核观测程序的构建方法、装置及设备 | |
CN115840617A (zh) | 一种调试方法、系统及相关装置 | |
CN113590179B (zh) | 插件检测方法、装置、电子设备及存储介质 | |
CN111427770B (zh) | 一种资源测试方法及相关设备 | |
CN113419738A (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 |