CN108681777B - 一种基于分布式系统的机器学习程序运行的方法和装置 - Google Patents
一种基于分布式系统的机器学习程序运行的方法和装置 Download PDFInfo
- Publication number
- CN108681777B CN108681777B CN201810425406.2A CN201810425406A CN108681777B CN 108681777 B CN108681777 B CN 108681777B CN 201810425406 A CN201810425406 A CN 201810425406A CN 108681777 B CN108681777 B CN 108681777B
- Authority
- CN
- China
- Prior art keywords
- machine learning
- learning program
- server node
- server
- resources
- 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
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种基于分布式系统的机器学习程序运行的方法和装置,涉及计算机技术领域。该方法的一具体实施方式包括:根据机器学习程序的运行请求,获取分布式系统中用于运行所述机器学习程序的资源;根据所述资源中服务器节点的端口信息和标识信息,生成启动参数;将所述机器学习程序以及所述启动参数发送给对应的服务器节点,使得所述服务器节点启动运行所述机器学习程序。能够根据用户提交的运行请求自动获取资源,并根据获取资源的服务器节点的端口信息和标识信息,生成启动参数,则可通过该启动参数对应的启动服务器节点自动运行机器学习程序,提高了机器学习程序运行的效率。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种基于分布式系统的机器学习程序运行的方法和装置。
背景技术
如今,在很多领域都有应用到机器学习或者深度学习,例如图像识别、语音识别、自动驾驶等领域。目前比较流行的深度学习框架有Tensorflow、Caffe等,使用这些框架进行分布式处理时,需要人为登录到每台服务器,将待运行的机器学习程序拷贝到该服务器中,以及人工启动程序在该服务器中运行,进而存在运行效率低的问题。
发明内容
有鉴于此,本发明实施例提供一种基于分布式系统的机器学习程序运行的方法和装置,能够根据用户提交的运行请求自动获取资源,并根据获取资源的服务器节点的端口信息和标识信息,生成启动参数,则可通过该启动参数对应的启动服务器节点自动运行机器学习程序,提高了机器学习程序运行的效率。
为实现上述目的,根据本发明实施例的一个方面,提供了一种的基于分布式系统的机器学习程序运行方法。
本发明实施例的基于分布式系统的机器学习程序运行的方法包括:根据机器学习程序的运行请求,获取分布式系统中用于运行所述机器学习程序的资源;根据所述资源中服务器节点的端口信息和标识信息,生成启动参数;将所述机器学习程序以及所述启动参数发送给对应的服务器节点,使得所述服务器节点启动运行所述机器学习程序。
可选地,根据机器学习程序的运行请求,获取分布式系统中用于运行所述机器学习程序的资源的步骤包括:根据机器学习程序的运行请求,确定出运行所述机器学习程序所需的资源;向分布式系统的资源管理器申请所需的资源;以及,获取所述资源管理器返回的资源。
可选地,在获取分布式系统中用于运行所述机器学习程序的资源之后,以及在根据所述资源中服务器节点的端口信息和标识信息,生成启动参数之前,还包括:确认获取的资源中服务器节点已就绪;向所述资源中服务器节点的任务管理器发送启动信息,使得所述任务管理器绑定其服务器节点的端口。
可选地,在将所述机器学习程序以及所述启动参数发送给对应的服务器节点之后,还包括:接收所述服务器节点返回的心跳信息;根据所述心跳信息,判断所述服务器节点中是否存在异常服务器节点;如果存在,则根据该异常服务器节点的端口信息和标识信息生成重启参数,将所述重启参数发送给所述异常服务器。
可选地,在将所述机器学习程序以及所述启动参数发送给对应的服务器节点之后,还包括:获取所有服务器节点的运行数据;根据预设的存储路径存储所述运行数据。
为实现上述目的,根据本发明实施例的另一个方面,提供了一种基于分布式系统的机器学习程序运行的装置。
本发明实施例的基于分布式系统的机器学习程序运行的装置包括:资源获取模块,用于根据机器学习程序的运行请求,获取分布式系统中用于运行所述机器学习程序的资源;
启动参数生成模块,用于根据所述资源中服务器节点的端口信息和标识信息,生成启动参数;
发送模块,用于将所述机器学习程序以及所述启动参数发送给对应的服务器节点,使得所述服务器节点启动运行所述机器学习程序。
可选地,所述资源获取模块,还用于根据机器学习程序的运行请求,确定出运行所述机器学习程序所需的资源;向分布式系统的资源管理器申请所需的资源;以及,获取所述资源管理器返回的资源。
可选地,本发明实施例的基于分布式系统的机器学习程序运行的装置还包括:节点任务管理器启动模块,用于确认获取的资源中服务器节点已就绪;向所述资源中服务器节点的任务管理器发送启动信息,使得所述任务管理器绑定其服务器节点的端口。
可选地,本发明实施例的基于分布式系统的机器学习程序运行的装置还包括:容错模块,用于接收所述服务器节点返回的心跳信息;根据所述心跳信息,判断所述服务器节点中是否存在异常服务器节点;
如果存在,则启动参数生成模块根据该异常服务器节点的端口信息和标识信息生成重启参数,发送模块将所述重启参数发送给所述异常服务器。
可选地,本发明实施例的基于分布式系统的机器学习程序运行的装置还包括:存储模块,用于获取所有服务器节点的运行数据;根据预设的存储路径存储所述运行数据。
为实现上述目的,根据本发明实施例的再一个方面,提供了一种基于分布式系统的机器学习程序运行的电子设备。
本发明实施例的基于分布式系统的机器学习程序运行的电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现上述任一项的基于分布式系统的机器学习程序运行的方法。
为实现上述目的,根据本发明实施例的再一个方面,提供了一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现上述任一项的基于分布式系统的机器学习程序运行的方法。
上述发明中的一个实施例具有如下优点或有益效果:能够根据用户的运行请求申请到资源,并根据获取资源的服务器节点的端口信息和标识信息,生成启动参数,则可通过该启动参数对应的启动服务器节点自动运行机器学习程序。进而,提高了系统运行效率。并且,对获取到的资源进行锁定,避免了在多用户的情况下,发送资源冲突的问题。本发明实施例还能够根据各个服务器节点返回的心跳数据对异常节点进行监控,如果出现异常节点,则可自动容错,提高了机器学习程序的稳定性和成功率。对于运行的数据进行存储,便于快速查询机器学习程序运行时的状态与日志,也可便于对历史运行的任务进行查询。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明实施例的基于分布式系统的机器学习程序运行的方法的主要流程的示意图;
图2是根据本发明实施例的实现Hadoop集群运行深度学习程序的系统的示意图;
图3是根据本发明实施例的端口预留过程的示意图;
图4是根据本发明实施例的容错过程的示意图;
图5是根据本发明实施例的历史信息索引页的示意图;
图6是根据本发明实施例的历史信息详情页的示意图;
图7是根据本发明实施例基于分布式系统的机器学习程序运行的装置的主要模块的示意图;
图8是本发明实施例可以应用于其中的示例性系统架构图;
图9是适于用来实现本发明实施例的终端设备或服务器的计算机系统的结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
图1是根据本发明实施例的基于分布式系统的机器学习程序运行的方法的主要流程的示意图,如图1所示,本发明实施例的基于分布式系统的机器学习程序运行的方法主要包括:
步骤S101:根据机器学习程序的运行请求,获取分布式系统中用于运行机器学习程序的资源。具体的,根据机器学习程序的运行请求,确定出运行机器学习程序所需的资源;向分布式系统的资源管理器申请所需的资源;以及,获取资源管理器返回的资源。其中,该运行请求中包括该机器学习程序的相关参数,该参数至少包括需要的参数服务器parameter server的个数和需要的执行服务器worker的个数,该参数还可以包括运行系统资源管理器需要的内存量、作业名、是否启用tensorboard、依赖文件、任务队列名、输入数据目录、输出数据目录、单个parameter server需要的cpu个数、单个parameter server需要的内存量、单个worker需要的cpu个数、单个worker需要的gpu卡个数、单个worker需要的内存量、运行时使用的Docker环境依赖文件或者程序的启动命令格式等。所以用户将机器学习程序的运行请求发送至对应的任务队列中,从该任务队列中获取到运行请求后,可自动根据该运行请求确认出所需的资源,并自动申请获取到相应的资源。其中,为避免获取的资源中有一些可能存在不可用的问题,所以获取到相应的资源一般会大于确认出的所需的资源。对于分布式系统运行机器学习程序,通过上述过程,能够根据运行参数自动获取到相应的资源,大大提高了操作的效率。
步骤S102:根据资源中服务器节点的端口信息和标识信息,生成启动参数。获取到资源之后,可通过运行系统的资源管理器获取到该资源中的服务器节点的端口信息和标识信息,并进一步根据该端口信息和标识信息生成其服务器节点的启动参数,通过该启动参数可启动服务器节点运行机器学习程序。其中,端口信息指的是计算机的通讯端口的信息,标识信息包括服务器节点的IP地址和该服务器节点的角色信息。则,启动参数为服务器的IP:Port加角色信息,如:
ps_hosts=["xx.xxx.xx.xxxx:oooo","xx.xxx.xx.xxxx:oooo"];
worker_hosts=["xx.xxx.xx.xxxx:oooo","xx.xxx.xx.xxxx:oooo","xx.xxx.xx.xxxx:oooo"]。
并且,在获取分布式系统中用于运行机器学习程序的资源之后,以及在根据资源中服务器节点的端口信息和标识信息,生成启动参数之前,本发明实施例还包括:确认获取的资源中服务器节点已就绪;向资源中服务器节点的任务管理器发送启动信息,使得任务管理器绑定其服务器节点的端口。在分布式运行机器学习程序的过程中,会存在多个用户使用同一台服务器造成端口冲突的问题,而本发明实施例通过绑定服务器节点的端口,可有效避免资源使用冲突。
步骤S103:将机器学习程序以及启动参数发送给对应的服务器节点,使得服务器节点启动运行机器学习程序。在将机器学习程序以及启动参数发送给对应的服务器节点之后,接收服务器节点返回的心跳信息;根据心跳信息,判断服务器节点中是否存在异常服务器节点;如果存在,则根据该异常服务器节点的端口信息和标识信息生成重启参数,将重启参数发送给异常服务器。通过该过程可实现自动化容错,提高了分布式系统运行机器学习程序的稳定性和成功率。其中,心跳是指设备之间发送的周期性信息,以判断设备的健康状况,判断对方是否“存活”。如果在指定的时间内仍没有收到设备的心跳信息,就可以怀疑此设备发生故障,再仔细检查确认故障是否发生,确认故障后就要采取必要的措施。
以及,在将机器学习程序以及启动参数发送给对应的服务器节点之后,获取所有服务器节点的运行数据;根据预设的存储路径存储运行数据。进而基于存储的信息,可便于快速查询机器学习程序运行时的状态及日志,以及支持查询机器学习程序运行的历史信息。
本发明实施例能够根据用户的运行请求申请到资源,并根据获取资源的服务器节点的端口信息和标识信息,生成启动参数,则可通过该启动参数对应的启动服务器节点自动运行机器学习程序。进而,提高了系统运行效率。并且,对获取到的资源进行锁定,避免了在多用户的情况下,发送资源冲突的问题。本发明实施例还能够根据各个服务器节点返回的心跳数据对异常节点进行监控,如果出现异常节点,则可自动容错,提高了机器学习程序的稳定性和成功率。对于运行的数据进行存储,便于快速查询机器学习程序运行时的状态与日志,也可便于对历史运行的任务进行查询。
图2是根据本发明实施例的实现Hadoop集群运行深度学习程序的系统的示意图。
Hadoop集群由多台部署了Hadoop服务的物理服务器组成的集群。Hadoop是一种分布式系统,包含分布式存储系统HDFS(Hadoop Distributed File System)和分布式计算系统MapReduce。Hadoop集群中负责资源管理与作业调度的组件为YARN(Yet AnotherResource Negotiator,另一种资源协调者),YARN是一种新的Hadoop资源管理器,它是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度。如图2所示,实现Hadoop集群运行深度学习程序的系统包括客户端Client、管理服务AppMaster、节点服务NodeServer和历史查询服务HistoryServer。
其中,Client的功能至少包括:根据用户提交的运行请求将深度学习程序提交到对应的集群上;提交到集群上之后,实时获取作业的状态和日志系统打印到终端界面上;终止作业的执行。用户可使用Client将深度学习程序提交到Hadoop集群上运行。提交程序时,可在运行请求中指定所需的参数服务器parameter server(PS)和执行服务器worker的个数。例如,该运行请求中包括的参数主要有:
参数1:--appname,作业名
参数2:--board_enable,是否启用tensorboard(用于可视化TensorFlow模型的训练过程的工具)
参数3:--files,依赖文件
参数4:--queue,任务队列名
参数5:--am_memory,YARN AM需要的内存资源
参数6:--am_cores,需要的内存资源
参数7:--input${PREFIX}/tmp/input_mnist,输入数据目录
参数8:--output${PREFIX}/tmp/output_mnist,输出数据目录
参数9:--docker_image bdp-docker.jd.com:5000/wise_algorithm,运行时使用的Docker环境依赖文件
参数10:--ps_num 1,需要的参数服务器parameter server的个数
参数11:--ps_cores2,单个parameter server需要的cpu个数
参数12:--ps_memory 2048,单个parameter server需要的内存量
参数13:--tfcmd'python mnist_on_yarn.py--training_epochs=20',分布式深度学习程序的启动命令
参数14:--worker_num2,需要的执行服务器worker的个数
参数15:--worker_cores 2,单个worker需要的cpu个数
参数16:--worker_gpus 1,单个worker需要的gpu卡个数(可以为0)
参数17:--worker_memory 4096,单个worker需要的内存量
AppMaster主要负责管理当前深度学习程序,处理容错和计算资源申请与释放。对于每个深度学习程序,都会有自己的一个AppMaster。它启动后会根据用户提交程序时指定的参数向YARN的ResourceManager请求资源Container,Container请求成功后负责启动NodeServer服务。而且,AppMaster内部提供了Web服务,用户可以直接使用浏览器访问AppMaster查看深度学习程序运行时信息。
对于运行一个深度学习程序,会有多个NodeServer,NodeServer主要负责从当前节点预留端口和启动深度学习程序。当NodeServer启动之后首先预留端口,并将端口信息和标识信息注册回AppMaster,即将ip与端口信息、节点角色信息(是parameter server还是worker)返回AppMaster。当AppMaster发现所有的NodeServer都已经就绪后,AppMaster会通知NodeServer启动深度学习程序。AppMaster判断所有的NodeServer是否已就绪的过程是,对比用户请求的节点数与实际启动的节点数是否匹配;如果匹配,则说明已经就绪。用户提交时指定了资源量与节点个数,当AppMaster发现需要的资源都已经就绪,就会启动深度学习程序执行。
HistoryServer可以是一个独立的Web服务,每当一个深度学习程序运行完成后都会将运行信息注册到这个程序中。用户可以直接通过网页进行查询历史信息。
图3是根据本发明实施例的端口预留过程的示意图,如图3所示,NodeServer进行端口预留过程包括:
步骤S301:NodeServer启动并初始化信息。
步骤S302:随机获得一个端口进行锁定;NodeServer启动之后会进入端口预留处理,这时会在当前节点随机获得一个端口(端口范围控制在30000~40000之间,可配置),然后尝试锁定。
步骤S303:判断锁定是否成功。如果是,则进行步骤S304;否则,进行步骤S302。
步骤S304:注册端口信息和IP到AppMaster。当锁定端口成功之后,NodeServer会将服务器节点的IP和端口信息注册到AppMaster上,AppMaster收到此消息后会将该服务器节点加入就绪节点列表。
步骤S305:是否收到AppMaster的启动参数。如果是,则进行步骤S306;否则,进行步骤S304。
步骤S306:启动服务器节点运行深度学习程序。AppMaster监测到所有NodeServer就绪之后,根据已就绪的服务器节点的IP和端口信息生成启动参数,并将启动参数传递给各个服务器节点的NodeServer。NodeServer接收到启动参数后,以这个启动参数启动该服务器节点运行深度学习程序。
步骤S307:将服务器节点的运行数据通知AppMaster。在服务节点运行深度学习程序的过程中,可按照预设的时间段将运行数据返回至AppMaster。以及,在深度学习程序执行完成后,并释放该服务器节点的资源。
在本发明实施例中,ResourceManager从队列中选择一个用户通过客户端提交的待运行的请求后,ResourceManager根据请求中的参数首先找一个服务器启动AppMaster,并标记该请求已经运行,从队列中移除该请求。AppMaster启动后根据运行请求再次向ResourceManager申请资源给NodeServer。ResourceManager根据其资源请求将资源给AppMaster,AppMaster得到资源后通知该资源对应的服务器节点启动NodeServer。NodeServer启动后绑定端口并注册信息给AppMaster,AppMaster确认所有服务器节点就绪后动态生成深度学习运行的启动参数,并通知所有的NodeServer启动对应的服务器节点运行集群学习程序。NodeServer收到启动命令,取出启动参数,并以这个启动参数启动深度学习程序,并发送心跳给AppMaster标记自己为运行状态。AppMaster监控等待所有NodeServer运行完成,并根据NodeServer返回的信息更新历史数据库,使得将最新的信息通过界面进行展示。
图4是根据本发明实施例的容错过程的示意图。通过上述过程可知,以及如图4所示,NodeServer启动后定期向AppMaster发送状态信息。如果AppMaster发现其中有一个NodeServer在配置的时间段(如3分钟)内没有发送信息报告自己的状态,AppMaster会尝试关闭这个NodeServer服务。并且,记录NodeServer运行失败数据。如果3分钟没有响应,很有可能NodeServer卡死,需要利用YARN把这个Server整个关闭并释放掉。当资源释放掉之后,AppMaster想要再拿到资源只能重新申请。所以,NodeServer关闭成功之后,AppMaster会重新向ResourceManager申请资源,并指定资源必须在刚才运行异常的节点上。AppMaster得到重新申请的资源后,再次以相同的参数在这个节点上启动NodeServer服务。启动重试的NodeServer服务,服务启动重新绑定上次失败时使用的端口,绑定成功后以相同的参数(重启参数)启动深度学习程序。如果绑定端口失败或启动NodeServer失败。AppMaster则会认为这台服务器异常(坏掉或下线),不再进行重试处理。同时深度学习程序将会以当前状态继续运行。
图5是根据本发明实施例的历史信息索引页的示意图;图6是根据本发明实施例的历史信息详情页的示意图。将每个服务器节点的运行数据按照预设的存储路径进行存储,则便于查询相应数据。用户可以通过历史查询服务快速得到之前运行的作业的历史信息,该历史查询服务包含如下内容:作业基本信息索引页,记录了所有已经运行完成的作业信息,如图5所示,该信息包括作业标识信息AppID、作业名AppName、提交时间Stated、运行耗时Completed、运行状态Duration、提交用户TF User和是否启用tensorboard。用户可通过点击作业ID跳转到信息详情页,如图6所示。通过详细信息页可得知之前作业运行使用的服务器IP和端口信息、每台服务器运行时所消耗的资源信息和历史日志信息。显示的信息包括:提交时间、提交用户、运行耗时、作业ID、作业名、运行状态,以及深度学习作业的总请求资源、每个资源使用情况、运行状态、日志链接等。
图7是根据本发明实施例基于分布式系统的机器学习程序运行的装置的主要模块的示意图,如图7所示,本发明实施例基于分布式系统的机器学习程序运行的装置700主要包括资源获取模块701、启动参数生成模块702和发送模块703。
资源获取模块701用于,根据机器学习程序的运行请求,获取分布式系统中用于运行机器学习程序的资源。资源获取模块,还用于根据机器学习程序的运行请求,确定出运行机器学习程序所需的资源;向分布式系统的资源管理器申请所需的资源;以及,获取资源管理器返回的资源。
启动参数生成模块702用于,根据资源中服务器节点的端口信息和标识信息,生成启动参数。
发送模块703用于,将机器学习程序以及启动参数发送给对应的服务器节点,使得服务器节点启动运行机器学习程序。
本发明实施例基于分布式系统的机器学习程序运行的装置还包括:节点任务管理器启动模块,用于确认获取的资源中服务器节点已就绪;向资源中服务器节点的任务管理器发送启动信息,使得任务管理器绑定其服务器节点的端口。
本发明实施例基于分布式系统的机器学习程序运行的装置还包括:容错模块,用于接收服务器节点返回的心跳信息;根据心跳信息,判断服务器节点中是否存在异常服务器节点;如果存在,则启动参数生成模块根据该异常服务器节点的端口信息和标识信息生成重启参数,发送模块将重启参数发送给异常服务器。
本发明实施例基于分布式系统的机器学习程序运行的装置还包括:存储模块,用于获取所有服务器节点的运行数据;根据预设的存储路径存储运行数据。
本发明实施例能够根据用户的运行请求申请到资源,并根据获取资源的服务器节点的端口信息和标识信息,生成启动参数,则可通过该启动参数对应的启动服务器节点自动运行机器学习程序。进而,提高了系统运行效率。并且,对获取到的资源进行锁定,避免了在多用户的情况下,发送资源冲突的问题。本发明实施例还能够根据各个服务器节点返回的心跳数据对异常节点进行监控,如果出现异常节点,则可自动容错,提高了机器学习程序的稳定性和成功率。对于运行的数据进行存储,便于快速查询机器学习程序运行时的状态与日志,也可便于对历史运行的任务进行查询。
图8示出了可以应用本发明实施例的基于分布式系统的机器学习程序运行的方法或基于分布式系统的机器学习程序运行的装置的示例性系统架构800。
如图8所示,系统架构800可以包括终端设备801、802、803,网络804和服务器805。网络804用以在终端设备801、802、803和服务器805之间提供通信链路的介质。网络804可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备801、802、803通过网络804与服务器805交互,以接收或发送消息等。终端设备801、802、803上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
终端设备801、802、803可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器805可以是提供各种服务的服务器,例如对用户利用终端设备801、802、803所浏览的购物类网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的产品信息查询请求等数据进行分析等处理,并将处理结果反馈给终端设备。
需要说明的是,本发明实施例所提供的基于分布式系统的机器学习程序运行的方法一般由服务器805执行,相应地,基于分布式系统的机器学习程序运行的装置一般设置于服务器805中。
应该理解,图8中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
下面参考图9,其示出了适于用来实现本发明实施例的终端设备的计算机系统900的结构示意图。图9示出的终端设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图9所示,计算机系统900包括中央处理单元(CPU)901,其可以根据存储在只读存储器(ROM)902中的程序或者从存储部分908加载到随机访问存储器(RAM)903中的程序而执行各种适当的动作和处理。在RAM 903中,还存储有系统900操作所需的各种程序和数据。CPU 901、ROM 902以及RAM 903通过总线904彼此相连。输入/输出(I/O)接口905也连接至总线904。
以下部件连接至I/O接口905:包括键盘、鼠标等的输入部分906;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分907;包括硬盘等的存储部分908;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分909。通信部分909经由诸如因特网的网络执行通信处理。驱动器910也根据需要连接至I/O接口905。可拆卸介质911,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器910上,以便于从其上读出的计算机程序根据需要被安装入存储部分908。
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分909从网络上被下载和安装,和/或从可拆卸介质911被安装。在该计算机程序被中央处理单元(CPU)901执行时,执行本发明的系统中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括资源获取模块、启动参数生成模块和发送模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,资源获取模块还可以被描述为“根据机器学习程序的运行请求,获取分布式系统中用于运行所述机器学习程序的资源的模块”。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:根据机器学习程序的运行请求,获取分布式系统中用于运行机器学习程序的资源;根据资源中服务器节点的端口信息和标识信息,生成启动参数;将机器学习程序以及启动参数发送给对应的服务器节点,使得服务器节点启动运行机器学习程序。
本发明实施例能够根据用户的运行请求申请到资源,并根据获取资源的服务器节点的端口信息和标识信息,生成启动参数,则可通过该启动参数对应的启动服务器节点自动运行机器学习程序。进而,提高了系统运行效率。并且,对获取到的资源进行锁定,避免了在多用户的情况下,发送资源冲突的问题。本发明实施例还能够根据各个服务器节点返回的心跳数据对异常节点进行监控,如果出现异常节点,则可自动容错,提高了机器学习程序的稳定性和成功率。对于运行的数据进行存储,便于快速查询机器学习程序运行时的状态与日志,也可便于对历史运行的任务进行查询。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (8)
1.一种基于分布式系统的机器学习程序运行的方法,其特征在于,包括:
根据机器学习程序的运行请求,获取分布式系统中用于运行所述机器学习程序的资源;
根据所述资源中服务器节点的端口信息和标识信息,生成启动参数;
将所述机器学习程序以及所述启动参数发送给对应的服务器节点,使得所述服务器节点启动运行所述机器学习程序;
其中,根据机器学习程序的运行请求,获取分布式系统中用于运行所述机器学习程序的资源的步骤包括:根据机器学习程序的运行请求,确定出运行所述机器学习程序所需的资源;向分布式系统的资源管理器申请所需的资源;以及,获取所述资源管理器返回的资源;其中,获取的资源大于运行所述机器学习程序所需的资源;
在将所述机器学习程序以及所述启动参数发送给对应的服务器节点之后,还包括:接收所述服务器节点返回的心跳信息;根据所述心跳信息,判断所述服务器节点中是否存在异常服务器节点;如果存在,则根据该异常服务器节点的端口信息和标识信息生成重启参数,将所述重启参数发送给所述异常服务器;
其中,当接收到服务器节点发送的注册端口信息和IP的消息后,将所述服务器节点加入就绪节点列表;当所有服务器节点就绪之后,根据已就绪的服务器节点的IP和端口信息生成启动参数。
2.根据权利要求1所述的方法,其特征在于,在获取分布式系统中用于运行所述机器学习程序的资源之后,以及在根据所述资源中服务器节点的端口信息和标识信息,生成启动参数之前,还包括:
确认获取的资源中服务器节点已就绪;
向所述资源中服务器节点的任务管理器发送启动信息,使得所述任务管理器绑定其服务器节点的端口。
3.根据权利要求1所述的方法,其特征在于,在将所述机器学习程序以及所述启动参数发送给对应的服务器节点之后,还包括:
获取所有服务器节点的运行数据;
根据预设的存储路径存储所述运行数据。
4.一种基于分布式系统的机器学习程序运行的装置,其特征在于,包括:
资源获取模块,用于根据机器学习程序的运行请求,获取分布式系统中用于运行所述机器学习程序的资源;
启动参数生成模块,用于根据所述资源中服务器节点的端口信息和标识信息,生成启动参数;
发送模块,用于将所述机器学习程序以及所述启动参数发送给对应的服务器节点,使得所述服务器节点启动运行所述机器学习程序;
所述资源获取模块,还用于根据机器学习程序的运行请求,确定出运行所述机器学习程序所需的资源;向分布式系统的资源管理器申请所需的资源;以及,获取所述资源管理器返回的资源;其中,获取的资源大于运行所述机器学习程序所需的资源;
所述装置还包括容错模块,用于接收所述服务器节点返回的心跳信息;根据所述心跳信息,判断所述服务器节点中是否存在异常服务器节点;如果存在,则启动参数生成模块根据该异常服务器节点的端口信息和标识信息生成重启参数,发送模块将所述重启参数发送给所述异常服务器;
其中,当接收到服务器节点发送的注册端口信息和IP的消息后,将所述服务器节点加入就绪节点列表;当所有服务器节点就绪之后,根据已就绪的服务器节点的IP和端口信息生成启动参数。
5.根据权利要求4所述的装置,其特征在于,还包括:节点任务管理器启动模块,用于确认获取的资源中服务器节点已就绪;向所述资源中服务器节点的任务管理器发送启动信息,使得所述任务管理器绑定其服务器节点的端口。
6.根据权利要求4所述的装置,其特征在于,还包括:存储模块,用于获取所有服务器节点的运行数据;根据预设的存储路径存储所述运行数据。
7.一种基于分布式系统的机器学习程序运行的电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-3中任一所述的方法。
8.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-3中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810425406.2A CN108681777B (zh) | 2018-05-07 | 2018-05-07 | 一种基于分布式系统的机器学习程序运行的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810425406.2A CN108681777B (zh) | 2018-05-07 | 2018-05-07 | 一种基于分布式系统的机器学习程序运行的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108681777A CN108681777A (zh) | 2018-10-19 |
CN108681777B true CN108681777B (zh) | 2021-07-20 |
Family
ID=63802258
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810425406.2A Active CN108681777B (zh) | 2018-05-07 | 2018-05-07 | 一种基于分布式系统的机器学习程序运行的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108681777B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109388479A (zh) * | 2018-11-01 | 2019-02-26 | 郑州云海信息技术有限公司 | mxnet系统中深度学习数据的输出方法和装置 |
CN109800475A (zh) * | 2018-12-27 | 2019-05-24 | 北京百度网讯科技有限公司 | 自动驾驶数据处理方法、装置、设备和计算机存储介质 |
CN110689138B (zh) * | 2018-12-29 | 2021-03-19 | 中科寒武纪科技股份有限公司 | 运算方法、装置及相关产品 |
CN110262897B (zh) * | 2019-06-13 | 2023-01-31 | 东北大学 | 一种基于负载预测的Hadoop计算任务初始分配方法 |
CN110688230B (zh) * | 2019-10-17 | 2022-06-24 | 广州文远知行科技有限公司 | 一种同步训练方法、装置、计算机设备和存储介质 |
CN110852445A (zh) * | 2019-10-28 | 2020-02-28 | 广州文远知行科技有限公司 | 分布式机器学习训练方法、装置、计算机设备和存储介质 |
CN111753997B (zh) * | 2020-06-28 | 2021-08-27 | 北京百度网讯科技有限公司 | 分布式训练方法、系统、设备及存储介质 |
CN112035220A (zh) * | 2020-09-30 | 2020-12-04 | 北京百度网讯科技有限公司 | 开发机操作任务的处理方法、装置、设备以及存储介质 |
CN113377498A (zh) * | 2021-06-24 | 2021-09-10 | 北京字节跳动网络技术有限公司 | 资源调度方法、装置、电子设备及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102394939A (zh) * | 2011-11-21 | 2012-03-28 | 苏州阔地网络科技有限公司 | 一种分布式系统的部署方法及系统 |
CN103092698A (zh) * | 2012-12-24 | 2013-05-08 | 中国科学院深圳先进技术研究院 | 云计算应用自动部署系统及方法 |
CN105956021A (zh) * | 2016-04-22 | 2016-09-21 | 华中科技大学 | 一种适用于分布式机器学习的自动化任务并行的方法及其系统 |
CN107294771A (zh) * | 2017-05-17 | 2017-10-24 | 上海斐讯数据通信技术有限公司 | 一种适用于大数据集群的高效部署系统以及使用方法 |
CN107454141A (zh) * | 2017-06-29 | 2017-12-08 | 福建天泉教育科技有限公司 | 解决端口冲突的方法及计算机可读存储介质 |
CN107450977A (zh) * | 2015-12-30 | 2017-12-08 | 北京典赞科技有限公司 | 基于yarn的面向gpgpu集群的资源管理调度方法 |
CN107766136A (zh) * | 2017-09-30 | 2018-03-06 | 南威软件股份有限公司 | 一种任务集群调度管理的方法 |
CN107807815A (zh) * | 2017-10-19 | 2018-03-16 | 北京京东尚科信息技术有限公司 | 分布式处理任务的方法和装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103064742B (zh) * | 2012-12-25 | 2016-05-11 | 中国科学院深圳先进技术研究院 | 一种hadoop集群的自动部署系统及方法 |
US20170323015A1 (en) * | 2016-05-04 | 2017-11-09 | Dart Music, Inc. | Automated metadata cleanup and distribution platform |
CN106201694B (zh) * | 2016-07-13 | 2019-06-14 | 北京农信互联科技有限公司 | 一种分布式系统下执行定时任务的配置方法及系统 |
CN107609652B (zh) * | 2017-08-30 | 2019-10-25 | 第四范式(北京)技术有限公司 | 执行机器学习的分布式系统及其方法 |
-
2018
- 2018-05-07 CN CN201810425406.2A patent/CN108681777B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102394939A (zh) * | 2011-11-21 | 2012-03-28 | 苏州阔地网络科技有限公司 | 一种分布式系统的部署方法及系统 |
CN103092698A (zh) * | 2012-12-24 | 2013-05-08 | 中国科学院深圳先进技术研究院 | 云计算应用自动部署系统及方法 |
CN107450977A (zh) * | 2015-12-30 | 2017-12-08 | 北京典赞科技有限公司 | 基于yarn的面向gpgpu集群的资源管理调度方法 |
CN105956021A (zh) * | 2016-04-22 | 2016-09-21 | 华中科技大学 | 一种适用于分布式机器学习的自动化任务并行的方法及其系统 |
CN107294771A (zh) * | 2017-05-17 | 2017-10-24 | 上海斐讯数据通信技术有限公司 | 一种适用于大数据集群的高效部署系统以及使用方法 |
CN107454141A (zh) * | 2017-06-29 | 2017-12-08 | 福建天泉教育科技有限公司 | 解决端口冲突的方法及计算机可读存储介质 |
CN107766136A (zh) * | 2017-09-30 | 2018-03-06 | 南威软件股份有限公司 | 一种任务集群调度管理的方法 |
CN107807815A (zh) * | 2017-10-19 | 2018-03-16 | 北京京东尚科信息技术有限公司 | 分布式处理任务的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN108681777A (zh) | 2018-10-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108681777B (zh) | 一种基于分布式系统的机器学习程序运行的方法和装置 | |
CN108737270B (zh) | 一种服务器集群的资源管理方法和装置 | |
US10171377B2 (en) | Orchestrating computing resources between different computing environments | |
US9729488B2 (en) | On-demand mailbox synchronization and migration system | |
KR100773016B1 (ko) | 데이터 처리 시스템, 테스트 방법, 모니터링 방법, 네트워크 데이터 처리 시스템, 데이터 처리 시스템 및 기록 매체 | |
US8522231B2 (en) | Updating a plurality of computers | |
CN109729106B (zh) | 处理计算任务的方法、系统和计算机程序产品 | |
US11539803B2 (en) | Highly available private cloud service | |
CN106557288B (zh) | 一种获取打印数据的方法及装置 | |
CN109218356B (zh) | 管理服务器上有状态应用的方法和设备 | |
CN113220433B (zh) | 一种代理程序运行管理方法及系统 | |
CN109428926B (zh) | 一种调度任务节点的方法和装置 | |
CN113206877A (zh) | 一种会话保持方法及装置 | |
CN107908481A (zh) | 一种数据同步方法、装置和系统 | |
CN108958933B (zh) | 任务执行器的配置参数更新方法、装置及设备 | |
CN114296953A (zh) | 一种多云异构系统及任务处理方法 | |
CN110113176B (zh) | 用于配置服务器的信息同步方法及装置 | |
US9893936B2 (en) | Dynamic management of restful endpoints | |
US9760412B2 (en) | Client server communication system | |
US20210149709A1 (en) | Method and apparatus for processing transaction | |
CN111831503B (zh) | 一种基于监控代理的监控方法和监控代理装置 | |
CN109729177B (zh) | 用于生成信息的方法和装置 | |
CN112491940B (zh) | 代理服务器的请求转发方法及装置、存储介质及电子设备 | |
CN107045452B (zh) | 虚拟机调度方法和装置 | |
CN106657195B (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 |