CN115344356B - 基于容器化实现分布式训练系统及其构建方法 - Google Patents
基于容器化实现分布式训练系统及其构建方法 Download PDFInfo
- Publication number
- CN115344356B CN115344356B CN202211269955.8A CN202211269955A CN115344356B CN 115344356 B CN115344356 B CN 115344356B CN 202211269955 A CN202211269955 A CN 202211269955A CN 115344356 B CN115344356 B CN 115344356B
- Authority
- CN
- China
- Prior art keywords
- service
- notebook
- kubeflow
- api
- module
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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
- G06F8/63—Image based installation; Cloning; Build to order
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/77—Processing image or video features in feature spaces; using data integration or data reduction, e.g. principal component analysis [PCA] or independent component analysis [ICA] or self-organising maps [SOM]; Blind source separation
- G06V10/778—Active pattern-learning, e.g. online learning of image or video features
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45575—Starting, stopping, suspending or resuming virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- Databases & Information Systems (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Multimedia (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种基于容器化实现分布式训练系统及其构建方法,包括:改造原始Kubeflow机器学习开源平台中Notebook镜像;使用Kubeflow机器学习的开源平台Api应用程序编程接口自主研发Notebook Api服务模块,Notebook Api服务模块调用操作Kubeflow机器学习的开源平台中的Notebook服务;研发Notebook Service服务模块调用Notebook Api服务模块、train服务模块;Notebook Servic服务模块和Notebook Api服务模块的日志写入目录。本发明提高算法工程师的模型训练人工成本、时间成本以及解决分布式训练环境部署问题。
Description
技术领域
本发明涉及新一代信息技术领域,具体地,涉及一种基于容器化实现分布式训练系统及其构建方法,适用于智能制造产业中的计算机视觉质检领域。
背景技术
在针对工业质检图像检测模型训练场景下,通常是在工业现场利用算力机器训练模型,往往现场环境不具备快速训练迭代模型的条件,经常会遇到算力机器单台显卡张数不满足,或者显卡张数满足但是分布在多台算力机器设备上需要修改模型训练代码,从而导致需要提高实施工程师技术要求、项目交付时长增加、部署模型需要特定要求服务器,极大的增加企业的人工成本、时间成本、部署成本。
专利文献CN109101342B(申请号:CN201810805446.X)公开了一种分布式作业协调控制方法、装置、计算机设备及存储介质,其中方法可包括:位于参数服务器进程所在容器中的第一job_coordinator进程启动,进行自旋同步,直到作业中的所有参数服务器Pod均为运行状态,为所在容器中的参数服务器进程分配唯一编号,启动所在容器中的参数服务器进程,并控制作业返回状态;位于训练进程所在容器中的第二job_coordinator进程启动,进行自旋同步,直到作业中的所有训练进程Pod均为运行状态,为所在容器中的训练进程分配唯一编号,启动所在容器中的训练进程,建立训练进程与作业中的所有参数服务器进程的链接,并控制作业返回状态。但该发明没有使模型训练从单机单卡改编为多机多卡。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种基于容器化实现分布式训练系统及其构建方法。
根据本发明提供的一种基于容器化实现分布式训练系统构建方法,包括:
步骤S1:改造原始Kubeflow机器学习的开源平台中Notebook镜像;
步骤S2:使用Kubeflow机器学习的开源平台Api应用程序编程接口自主研发Notebook Api服务模块,Notebook Api服务模块调用操作Kubeflow机器学习的开源平台中的Notebook服务;
步骤S3:研发Notebook Service服务模块调用Notebook Api服务模块、train服务模块;
步骤S4:Notebook Servic服务模块和Notebook Api服务模块的日志写入目录。
优选地,在所述步骤S1中:
Kubeflow框架Notebook服务的镜像改造,包括如下步骤:
步骤S1.1:改造原始Kubeflow机器学习的开源平台中Notebook镜像,集成Tensorboard服务以及指定启动Tensorboard服务时S3挂载盘中需要扫描的日志路径,具体为:
Kubernetes是用于自动部署、扩充和管理容器化应用程序的开源系统,Kubeflow是用于Kubernetes上的机器学习的开源平台,Notebook是Kubeflow机器学习开源平台提供的一种在Kubernetes中运行基于Web的开发环境的方法,TensorBoard服务是提供机器学习实验所需的可视化功能和工具,S3是一种对象存储服务被挂载在Kubernetes中作为存储盘使用;
拉取原始Kubeflow平台中Notebook镜像类别中的原始镜像作为基础镜像,安装Tensorboard服务,并且在Dockerfile文件中CMD命令里追加启动命令,启动时读取S3挂载盘中具体某个namespace_id下Tensorboard目录中的训练日志;
步骤S1.2:Kubeflow平台自定义资源PyTorchJob用于在Kubernetes上运行PyTorch模型分布式训练作业;集成train服务模块,train服务由Python开发,采用Kubernetes Api方式创建Kubeflow平台自定义资源PytrochJob分布式训练任务,具体为:
通过Shell脚本使用Git命令克隆算法模型代码块封装到train服务中,开发Web接口调用Kubernetes Api创建Kubeflow平台自定义资源PytrochJob分布式训练任务,接口包含创建模型训练、中止模型训练、停止模型训练,其中创建模型训练接口中参数包含Master、Worker数量、S3挂载盘中数据样本集目录、S3挂载盘中训练日志输出目录,该服务启动命令追加在Dockerfile文件中CMD命令里,Dockerfile创建自定义notebook镜像上传到私库中提供后续Notebook Service服务创建使用。
优选地,在所述步骤S2中:
所述Notebook Api服务模块的开发包括如下步骤:
步骤S2.1:使用Kubeflow平台Api应用程序编程接口开发Notebook Api服务模块,完成对Kubernetes集群中Notebook Pod的操作,具体为:
使用Kubeflow框架Api应用程序编程接口开发Notebook Api服务模块,其包含Notebook Pod的创建、修改、暂停、删除、获取状态以及挂载PVC、挂载S3中数据样本集目录和Tensorboard服务的日志目录;
步骤S2.2:使用Kubeflow平台Api应用程序编程接口开发创建Notebook Pod、删除Notebook Pod接口时,增加train服务模块、Tensorboard服务的Service、Virtualservice,具体为:
在被调用Notebook Pod创建和删除接口时,分别对Notebook Pod中运行的train服务模块、Tensorboard服务模块分别创建Service、Virtualservice,其中train服务模块Service的targetPort为9999,Tensorboard服务Service的targetPort为6006,两个服务的Service中Port统一为80,其中为控制Kubernetes集群中Virtualservice的数量,Kubernetes集群中所有的Notebook Pod中的train服务模块、Tensorboard服务统一采用同一个Virtualservice,对请求路径进行区分。
优选地,在所述步骤S3中:
所述Notebook Service模块的开发包括如下步骤:
步骤S3.1:创建Notebook默认模版,指定创建默认Notebook时的资源参数,包括:CPU、内存、GPU、PVC、namespace和image,具体为:
在Nacos中创建Notebook默认模版Ymal配置文件,配置默认创建Notebook的资源参数,在Notebook Service服务启动时加载进来,在Web界面创建Notebook时未指定参数时使用默认的Notebook模版;
步骤S3.2:在S3中创建数据样本集目录,算法工程师在界面上传一个或多个样本数据集以供分布式训练使用,在S3中创建Tensorboard服务的日志目录,后续分布式训练任务日志会输出在该目录下,同时增加Kubeflow平台的用户体系认证,使用Kubeflow用户对Notebook进行操作,具体为:
S3是一种对象存储服务,同时也对外提供Client Api接口用于对S3服务进行操作;使用S3Client Api在S3对象存储服务中创建数据样本集目录、Tensorboard服务的日志目录,后续数据样本集上传文件写入到数据样本集目录中,Notebook Pod中Tensorboard服务运行时读取S3中创建的Tensorboard服务的日志目录,创建AuthInterceptor拦截器,每次调用Notebook相关接口、Kubeflow自定义资源服务接口时被AuthInterceptor拦截器拦截,认证属于Kubeflow中的用户通过验证,其中用户的Cookie会被缓存在Redis中并设置过期时间为1个小时;
步骤S3.3:NoteBook Service服务中封装调用NoteBook Api服务、Kubeflow自定义资源服务,具体为:
在Web界面调用NoteBook Service服务时,统一封装调用NoteBook Api服务、train服务,调用NoteBook Api服务时把Notebook模版所需要的参数传递进去,调用train服务时把分布式训练相关参数传递进去。
优选地,在所述步骤S4中:
步骤S4.1:Notebook Servic和Notebook Api服务的日志统一采用Json结构写入到S3目录,统一采集写入到ES使用kibana查看日志信息,具体为:
Notebook Service和Notebook Api服务运行在Kubernetes集群中,服务运行的Pod中挂载着S3挂载盘,当出现日志信息时以Json格式写入当天目录文件夹内的文件中,由Logstash统一采集写入到ES集群中,在出现排查错误情况时使用kibana查看日志信息;
步骤S4.2:Kubeflow自定义资源服务创建的分布式Pytroch Job的日志,输出到NoteBook Pod中运行的Tensorboard服务日志指定挂载的S3目录,具体为:
Pytroch Job分布式训练任务运行时会输出训练指标相关的日志,每个NoteBook中由Kubeflow自定义资源服务启动的Pytroch Job分布式训练任务会统一写入当前Notebook中Tensorboard服务挂载的S3日志目录文件夹下,登录Tensorboard服务的Web界面在Pytroch Job分布式训练任务运行时查看相关指标。
根据本发明提供的一种基于容器化实现分布式训练系统构建系统,包括:
模块M1:改造原始Kubeflow机器学习的开源平台中Notebook镜像;
模块M2:使用Kubeflow机器学习的开源平台Api应用程序编程接口自主研发Notebook Api服务模块,Notebook Api服务模块调用操作Kubeflow机器学习的开源平台中的Notebook服务;
模块M3:研发Notebook Service服务模块调用Notebook Api服务模块、train服务模块;
模块M4:Notebook Servic服务模块和Notebook Api服务模块的日志写入目录。
优选地,在所述模块M1中:
Kubeflow框架Notebook服务的镜像改造,包括如下步骤:
模块M1.1:改造原始Kubeflow机器学习的开源平台中Notebook镜像,集成Tensorboard服务以及指定启动Tensorboard服务时S3挂载盘中需要扫描的日志路径,具体为:
Kubernetes是用于自动部署、扩充和管理容器化应用程序的开源系统,Kubeflow是用于Kubernetes上的机器学习的开源平台,Notebook是Kubeflow机器学习开源平台提供的一种在Kubernetes中运行基于Web的开发环境的方法,TensorBoard服务是提供机器学习实验所需的可视化功能和工具,S3是一种对象存储服务被挂载在Kubernetes中作为存储盘使用;
拉取原始Kubeflow平台中Notebook镜像类别中的原始镜像作为基础镜像,安装Tensorboard服务,并且在Dockerfile文件中CMD命令里追加启动命令,启动时读取S3挂载盘中具体某个namespace_id下Tensorboard目录中的训练日志;
模块M1.2:Kubeflow平台自定义资源PyTorchJob用于在Kubernetes上运行PyTorch模型分布式训练作业;集成train服务模块,train服务由Python开发,采用Kubernetes Api方式创建Kubeflow平台自定义资源PytrochJob分布式训练任务,具体为:
通过Shell脚本使用Git命令克隆算法模型代码块封装到train服务中,开发Web接口调用Kubernetes Api创建Kubeflow平台自定义资源PytrochJob分布式训练任务,接口包含创建模型训练、中止模型训练、停止模型训练,其中创建模型训练接口中参数包含Master、Worker数量、S3挂载盘中数据样本集目录、S3挂载盘中训练日志输出目录,该服务启动命令追加在Dockerfile文件中CMD命令里,Dockerfile创建自定义notebook镜像上传到私库中提供后续Notebook Service服务创建使用。
优选地,在所述模块M2中:
所述Notebook Api服务模块的开发包括如下步骤:
模块M2.1:使用Kubeflow平台Api应用程序编程接口开发Notebook Api服务模块,完成对Kubernetes集群中Notebook Pod的操作,具体为:
使用Kubeflow框架Api应用程序编程接口开发Notebook Api服务模块,其包含Notebook Pod的创建、修改、暂停、删除、获取状态以及挂载PVC、挂载S3中数据样本集目录和Tensorboard服务的日志目录;
模块M2.2:使用Kubeflow平台Api应用程序编程接口开发创建Notebook Pod、删除Notebook Pod接口时,增加train服务模块、Tensorboard服务的Service、Virtualservice,具体为:
在被调用Notebook Pod创建和删除接口时,分别对Notebook Pod中运行的train服务模块、Tensorboard服务模块分别创建Service、Virtualservice,其中train服务模块Service的targetPort为9999,Tensorboard服务Service的targetPort为6006,两个服务的Service中Port统一为80,其中为控制Kubernetes集群中Virtualservice的数量,Kubernetes集群中所有的Notebook Pod中的train服务模块、Tensorboard服务统一采用同一个Virtualservice,对请求路径进行区分。
优选地,在所述模块M3中:
所述Notebook Service模块的开发包括如下步骤:
模块M3.1:创建Notebook默认模版,指定创建默认Notebook时的资源参数,包括:CPU、内存、GPU、PVC、namespace和image,具体为:
在Nacos中创建Notebook默认模版Ymal配置文件,配置默认创建Notebook的资源参数,在Notebook Service服务启动时加载进来,在Web界面创建Notebook时未指定参数时使用默认的Notebook模版;
模块M3.2:在S3中创建数据样本集目录,算法工程师在界面上传一个或多个样本数据集以供分布式训练使用,在S3中创建Tensorboard服务的日志目录,后续分布式训练任务日志会输出在该目录下,同时增加Kubeflow平台的用户体系认证,使用Kubeflow用户对Notebook进行操作,具体为:
S3是一种对象存储服务,同时也对外提供Client Api接口用于对S3服务进行操作;使用S3Client Api在S3对象存储服务中创建数据样本集目录、Tensorboard服务的日志目录,后续数据样本集上传文件写入到数据样本集目录中,Notebook Pod中Tensorboard服务运行时读取S3中创建的Tensorboard服务的日志目录,创建AuthInterceptor拦截器,每次调用Notebook相关接口、Kubeflow自定义资源服务接口时被AuthInterceptor拦截器拦截,认证属于Kubeflow中的用户通过验证,其中用户的Cookie会被缓存在Redis中并设置过期时间为1个小时;
模块M3.3:NoteBook Service服务中封装调用NoteBook Api服务、Kubeflow自定义资源服务,具体为:
在Web界面调用NoteBook Service服务时,统一封装调用NoteBook Api服务、train服务,调用NoteBook Api服务时把Notebook模版所需要的参数传递进去,调用train服务时把分布式训练相关参数传递进去。
优选地,在所述模块M4中:
模块M4.1:Notebook Servic和Notebook Api服务的日志统一采用Json结构写入到S3目录,统一采集写入到ES使用kibana查看日志信息,具体为:
Notebook Service和Notebook Api服务运行在Kubernetes集群中,服务运行的Pod中挂载着S3挂载盘,当出现日志信息时以Json格式写入当天目录文件夹内的文件中,由Logstash统一采集写入到ES集群中,在出现排查错误情况时使用kibana查看日志信息;
模块M4.2:Kubeflow自定义资源服务创建的分布式Pytroch Job的日志,输出到NoteBook Pod中运行的Tensorboard服务日志指定挂载的S3目录,具体为:
Pytroch Job分布式训练任务运行时会输出训练指标相关的日志,每个NoteBook中由Kubeflow自定义资源服务启动的Pytroch Job分布式训练任务会统一写入当前Notebook中Tensorboard服务挂载的S3日志目录文件夹下,登录Tensorboard服务的Web界面在Pytroch Job分布式训练任务运行时查看相关指标。
与现有技术相比,本发明具有如下的有益效果:
1、本发明提高算法工程师的模型训练人工成本、时间成本以及解决分布式训练环境部署问题;
2、本发明的模型训练从单机单卡改编为多机多卡,节约服务器资源成本并且提高数据样本吞吐量;
3、本发明提高模型开发效率,算法工程师仅需要专注于算法模型开发,训练以及运行环境资源在界面操作即可完成。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为本发明拓扑图;
图2为notebook处理操作图;
图3为分布式训练相关操作图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
实施例1:
本发明实现基于容器化实现分布式训练整体流程,提供界面化方式创建分布式训练任务、数据集管理、训练日志在线查看等服务,提高模型训练迭代效率、模型训练时数据样本吞吐量大小以及服务器内存、CPU、显卡等资源的利用率,解决企业中算法工程师需要繁重的配置以及部署分布式环境问题,使其专注于开发模型算法提高工作效率。
根据本发明提供的一种基于容器化实现分布式训练系统构建方法,如图1-图3所示,包括:
根据本发明提供的一种基于容器化实现分布式训练系统构建方法,包括:
步骤S1:改造原始Kubeflow机器学习的开源平台中Notebook镜像;
具体地,在所述步骤S1中:
Kubeflow框架Notebook服务的镜像改造,包括如下步骤:
步骤S1.1:改造原始Kubeflow机器学习的开源平台中Notebook镜像,集成Tensorboard服务以及指定启动Tensorboard服务时S3挂载盘中需要扫描的日志路径,具体为:
Kubernetes是用于自动部署、扩充和管理容器化应用程序的开源系统,Kubeflow是用于Kubernetes上的机器学习的开源平台,Notebook是Kubeflow机器学习开源平台提供的一种在Kubernetes中运行基于Web的开发环境的方法,TensorBoard服务是提供机器学习实验所需的可视化功能和工具,S3是一种对象存储服务被挂载在Kubernetes中作为存储盘使用;
拉取原始Kubeflow平台中Notebook镜像类别中的原始镜像作为基础镜像,安装Tensorboard服务,并且在Dockerfile文件中CMD命令里追加启动命令,启动时读取S3挂载盘中具体某个namespace_id下Tensorboard目录中的训练日志;
步骤S1.2:Kubeflow平台自定义资源PyTorchJob用于在Kubernetes上运行PyTorch模型分布式训练作业;集成train服务模块,train服务由Python开发,采用Kubernetes Api方式创建Kubeflow平台自定义资源PytrochJob分布式训练任务,具体为:
通过Shell脚本使用Git命令克隆算法模型代码块封装到train服务中,开发Web接口调用Kubernetes Api创建Kubeflow平台自定义资源PytrochJob分布式训练任务,接口包含创建模型训练、中止模型训练、停止模型训练,其中创建模型训练接口中参数包含Master、Worker数量、S3挂载盘中数据样本集目录、S3挂载盘中训练日志输出目录,该服务启动命令追加在Dockerfile文件中CMD命令里,Dockerfile创建自定义notebook镜像上传到私库中提供后续Notebook Service服务创建使用。
步骤S2:使用Kubeflow机器学习的开源平台Api应用程序编程接口自主研发Notebook Api服务模块,Notebook Api服务模块调用操作Kubeflow机器学习的开源平台中的Notebook服务;
具体地,在所述步骤S2中:
所述Notebook Api服务模块的开发包括如下步骤:
步骤S2.1:使用Kubeflow平台Api应用程序编程接口开发Notebook Api服务模块,完成对Kubernetes集群中Notebook Pod的操作,具体为:
使用Kubeflow框架Api应用程序编程接口开发Notebook Api服务模块,其包含Notebook Pod的创建、修改、暂停、删除、获取状态以及挂载PVC、挂载S3中数据样本集目录和Tensorboard服务的日志目录;
步骤S2.2:使用Kubeflow平台Api应用程序编程接口开发创建Notebook Pod、删除Notebook Pod接口时,增加train服务模块、Tensorboard服务的Service、Virtualservice,具体为:
在被调用Notebook Pod创建和删除接口时,分别对Notebook Pod中运行的train服务模块、Tensorboard服务模块分别创建Service、Virtualservice,其中train服务模块Service的targetPort为9999,Tensorboard服务Service的targetPort为6006,两个服务的Service中Port统一为80,其中为控制Kubernetes集群中Virtualservice的数量,Kubernetes集群中所有的Notebook Pod中的train服务模块、Tensorboard服务统一采用同一个Virtualservice,对请求路径进行区分。
步骤S3:研发Notebook Service服务模块调用Notebook Api服务模块、train服务模块;
具体地,在所述步骤S3中:
所述Notebook Service模块的开发包括如下步骤:
步骤S3.1:创建Notebook默认模版,指定创建默认Notebook时的资源参数,包括:CPU、内存、GPU、PVC、namespace和image,具体为:
在Nacos中创建Notebook默认模版Ymal配置文件,配置默认创建Notebook的资源参数,在Notebook Service服务启动时加载进来,在Web界面创建Notebook时未指定参数时使用默认的Notebook模版;
步骤S3.2:在S3中创建数据样本集目录,算法工程师在界面上传一个或多个样本数据集以供分布式训练使用,在S3中创建Tensorboard服务的日志目录,后续分布式训练任务日志会输出在该目录下,同时增加Kubeflow平台的用户体系认证,使用Kubeflow用户对Notebook进行操作,具体为:
S3是一种对象存储服务,同时也对外提供Client Api接口用于对S3服务进行操作;使用S3Client Api在S3对象存储服务中创建数据样本集目录、Tensorboard服务的日志目录,后续数据样本集上传文件写入到数据样本集目录中,Notebook Pod中Tensorboard服务运行时读取S3中创建的Tensorboard服务的日志目录,创建AuthInterceptor拦截器,每次调用Notebook相关接口、Kubeflow自定义资源服务接口时被AuthInterceptor拦截器拦截,认证属于Kubeflow中的用户通过验证,其中用户的Cookie会被缓存在Redis中并设置过期时间为1个小时;
步骤S3.3:NoteBook Service服务中封装调用NoteBook Api服务、Kubeflow自定义资源服务,具体为:
在Web界面调用NoteBook Service服务时,统一封装调用NoteBook Api服务、train服务,调用NoteBook Api服务时把Notebook模版所需要的参数传递进去,调用train服务时把分布式训练相关参数传递进去。
步骤S4:Notebook Servic服务模块和Notebook Api服务模块的日志写入目录。
具体地,在所述步骤S4中:
步骤S4.1:Notebook Servic和Notebook Api服务的日志统一采用Json结构写入到S3目录,统一采集写入到ES使用kibana查看日志信息,具体为:
Notebook Service和Notebook Api服务运行在Kubernetes集群中,服务运行的Pod中挂载着S3挂载盘,当出现日志信息时以Json格式写入当天目录文件夹内的文件中,由Logstash统一采集写入到ES集群中,在出现排查错误情况时使用kibana查看日志信息;
步骤S4.2:Kubeflow自定义资源服务创建的分布式Pytroch Job的日志,输出到NoteBook Pod中运行的Tensorboard服务日志指定挂载的S3目录,具体为:
Pytroch Job分布式训练任务运行时会输出训练指标相关的日志,每个NoteBook中由Kubeflow自定义资源服务启动的Pytroch Job分布式训练任务会统一写入当前Notebook中Tensorboard服务挂载的S3日志目录文件夹下,登录Tensorboard服务的Web界面在Pytroch Job分布式训练任务运行时查看相关指标。
根据本发明提供的一种基于容器化实现分布式训练系统构建系统,包括:
模块M1:改造原始Kubeflow机器学习的开源平台中Notebook镜像;
具体地,在所述模块M1中:
Kubeflow框架Notebook服务的镜像改造,包括如下步骤:
模块M1.1:改造原始Kubeflow机器学习的开源平台中Notebook镜像,集成Tensorboard服务以及指定启动Tensorboard服务时S3挂载盘中需要扫描的日志路径,具体为:
Kubernetes是用于自动部署、扩充和管理容器化应用程序的开源系统,Kubeflow是用于Kubernetes上的机器学习的开源平台,Notebook是Kubeflow机器学习开源平台提供的一种在Kubernetes中运行基于Web的开发环境的方法,TensorBoard服务是提供机器学习实验所需的可视化功能和工具,S3是一种对象存储服务被挂载在Kubernetes中作为存储盘使用;
拉取原始Kubeflow平台中Notebook镜像类别中的原始镜像作为基础镜像,安装Tensorboard服务,并且在Dockerfile文件中CMD命令里追加启动命令,启动时读取S3挂载盘中具体某个namespace_id下Tensorboard目录中的训练日志;
模块M1.2:Kubeflow平台自定义资源PyTorchJob用于在Kubernetes上运行PyTorch模型分布式训练作业;集成train服务模块,train服务由Python开发,采用Kubernetes Api方式创建Kubeflow平台自定义资源PytrochJob分布式训练任务,具体为:
通过Shell脚本使用Git命令克隆算法模型代码块封装到train服务中,开发Web接口调用Kubernetes Api创建Kubeflow平台自定义资源PytrochJob分布式训练任务,接口包含创建模型训练、中止模型训练、停止模型训练,其中创建模型训练接口中参数包含Master、Worker数量、S3挂载盘中数据样本集目录、S3挂载盘中训练日志输出目录,该服务启动命令追加在Dockerfile文件中CMD命令里,Dockerfile创建自定义notebook镜像上传到私库中提供后续Notebook Service服务创建使用。
模块M2:使用Kubeflow机器学习的开源平台Api应用程序编程接口自主研发Notebook Api服务模块,Notebook Api服务模块调用操作Kubeflow机器学习的开源平台中的Notebook服务;
具体地,在所述模块M2中:
所述Notebook Api服务模块的开发包括如下步骤:
模块M2.1:使用Kubeflow平台Api应用程序编程接口开发Notebook Api服务模块,完成对Kubernetes集群中Notebook Pod的操作,具体为:
使用Kubeflow框架Api应用程序编程接口开发Notebook Api服务模块,其包含Notebook Pod的创建、修改、暂停、删除、获取状态以及挂载PVC、挂载S3中数据样本集目录和Tensorboard服务的日志目录;
模块M2.2:使用Kubeflow平台Api应用程序编程接口开发创建Notebook Pod、删除Notebook Pod接口时,增加train服务模块、Tensorboard服务的Service、Virtualservice,具体为:
在被调用Notebook Pod创建和删除接口时,分别对Notebook Pod中运行的train服务模块、Tensorboard服务模块分别创建Service、Virtualservice,其中train服务模块Service的targetPort为9999,Tensorboard服务Service的targetPort为6006,两个服务的Service中Port统一为80,其中为控制Kubernetes集群中Virtualservice的数量,Kubernetes集群中所有的Notebook Pod中的train服务模块、Tensorboard服务统一采用同一个Virtualservice,对请求路径进行区分。
模块M3:研发Notebook Service服务模块调用Notebook Api服务模块、train服务模块;
具体地,在所述模块M3中:
所述Notebook Service模块的开发包括如下步骤:
模块M3.1:创建Notebook默认模版,指定创建默认Notebook时的资源参数,包括:CPU、内存、GPU、PVC、namespace和image,具体为:
在Nacos中创建Notebook默认模版Ymal配置文件,配置默认创建Notebook的资源参数,在Notebook Service服务启动时加载进来,在Web界面创建Notebook时未指定参数时使用默认的Notebook模版;
模块M3.2:在S3中创建数据样本集目录,算法工程师在界面上传一个或多个样本数据集以供分布式训练使用,在S3中创建Tensorboard服务的日志目录,后续分布式训练任务日志会输出在该目录下,同时增加Kubeflow平台的用户体系认证,使用Kubeflow用户对Notebook进行操作,具体为:
S3是一种对象存储服务,同时也对外提供Client Api接口用于对S3服务进行操作;使用S3Client Api在S3对象存储服务中创建数据样本集目录、Tensorboard服务的日志目录,后续数据样本集上传文件写入到数据样本集目录中,Notebook Pod中Tensorboard服务运行时读取S3中创建的Tensorboard服务的日志目录,创建AuthInterceptor拦截器,每次调用Notebook相关接口、Kubeflow自定义资源服务接口时被AuthInterceptor拦截器拦截,认证属于Kubeflow中的用户通过验证,其中用户的Cookie会被缓存在Redis中并设置过期时间为1个小时;
模块M3.3:NoteBook Service服务中封装调用NoteBook Api服务、Kubeflow自定义资源服务,具体为:
在Web界面调用NoteBook Service服务时,统一封装调用NoteBook Api服务、train服务,调用NoteBook Api服务时把Notebook模版所需要的参数传递进去,调用train服务时把分布式训练相关参数传递进去。
模块M4:Notebook Servic服务模块和Notebook Api服务模块的日志写入目录。
具体地,在所述模块M4中:
模块M4.1:Notebook Servic和Notebook Api服务的日志统一采用Json结构写入到S3目录,统一采集写入到ES使用kibana查看日志信息,具体为:
Notebook Service和Notebook Api服务运行在Kubernetes集群中,服务运行的Pod中挂载着S3挂载盘,当出现日志信息时以Json格式写入当天目录文件夹内的文件中,由Logstash统一采集写入到ES集群中,在出现排查错误情况时使用kibana查看日志信息;
模块M4.2:Kubeflow自定义资源服务创建的分布式Pytroch Job的日志,输出到NoteBook Pod中运行的Tensorboard服务日志指定挂载的S3目录,具体为:
Pytroch Job分布式训练任务运行时会输出训练指标相关的日志,每个NoteBook中由Kubeflow自定义资源服务启动的Pytroch Job分布式训练任务会统一写入当前Notebook中Tensorboard服务挂载的S3日志目录文件夹下,登录Tensorboard服务的Web界面在Pytroch Job分布式训练任务运行时查看相关指标。
实施例2:
实施例2为实施例1的优选例,以更为具体地对本发明进行说明。
一种基于容器化实现分布式训练系统及介质。包括Kubeflow框架Notebook服务的镜像改造、Notebook Service模块开发、Notebook Api模块开发、统一日志收集模块开发。
Notebook Service模块会调用 Notebook Api模块,也会直接请求调用具体的某个Notebook服务,Notebook Api会调用操作(包括创建、删除、修改、查询)Notebook服务,Notebook原生镜像中不包含 Tensorboard、集成Kubeflow自定义资源服务等,需要对镜像改造,所以需要对Notebook原生镜像改造成符合要求的镜像,这一系列操作都是相互依赖的。
所述Kubeflow框架Notebook服务的镜像改造,包括如下步骤:
步骤A:改造原始Kubeflow框架中Notebook镜像,集成Tensorboard服务以及指定启动Tensorboard服务时S3挂载盘中需要扫描的日志路径,具体为:
拉取原始Kubeflow框架中Notebook镜像类别中的jupyter-pytorch-cuda镜像作为基础镜像,安装Tensorboard服务,并且在Dockerfile文件中CMD命令里追加tensorboard--logdir/data/namespace_id/tensorboard启动命令,上述命令意为启动时读取S3挂载盘中具体某个namespace_id下Tensorboard目录中的训练日志;
步骤B:集成Kubeflow自定义资源服务,该服务由Python开发,采用KubernetesApi方式创建Kubeflow自定义资源PytrochJob分布式训练任务,具体为:
通过Shell脚本使用Git命令克隆算法模型代码块封装到Kubeflow自定义资源服务中,开发Web接口调用Kubernetes Api创建Kubeflow自定义资源PytrochJob分布式训练任务,接口包含创建模型训练、中止模型训练、停止模型训练等,其中创建模型训练接口中参数包含Master、Worker数量、S3挂载盘中数据样本集目录、S3挂载盘中训练日志输出目录等,该服务启动命令uwsgi--ini/data/train_Api/uwsgi.ini同样追加在Dockerfile文件中CMD命令里,Dockerfile创建镜像jupyter-notebook-pytorch-cuda上传到私库中提供后续Notebook Service服务创建使用。
所述Notebook Service模块开发,包括如下步骤:
步骤A:创建Notebook默认模版,指定创建默认Notebook时的资源参数,如:
CPU、内存、GPU、PVC、namespace、image等,具体为:
在Nacos中创建Notebook默认模版Ymal配置文件,配置默认创建Notebook的资源参数,在Notebook Service服务启动时加载进来,在Web界面创建Notebook时未指定参数时使用默认的Notebook模版;
步骤B:在S3中创建数据样本集目录,算法工程师在界面可上传一个或多个样本数据集以供分布式训练使用,在S3中创建Tensorboard服务的日志目录,后续分布式训练任务日志会输出在该目录下,同时增加Kubeflow的用户体系认证,使用Kubeflow用户对Notebook进行操作,具体为:
使用S3Client Api在S3对象存储服务中创建数据样本集目录、Tensorboard服务的日志目录,后续数据样本集上传文件会写入到数据样本集目录中,Notebook Pod中Tensorboard服务运行时会读取S3中创建的Tensorboard服务的日志目录,创建AuthInterceptor拦截器,每次调用Notebook相关接口、Kubeflow自定义资源服务接口时会被AuthInterceptor拦截器拦截,认证属于Kubeflow中的用户才会通过验证,其中用户的Cookie会被缓存在Redis中并设置过期时间为1个小时;
步骤C:NoteBook Service服务中封装调用NoteBook Api服务、Kubeflow自定义资源服务,具体为:
在Web界面化调用NoteBook Service服务时,统一封装调用NoteBook Api服务、Kubeflow自定义资源服务,使其调用关系简单化,调用NoteBook Api服务时会把Notebook模版所需要的参数传递进去,调用Kubeflow自定义资源服务时会把分布式训练相关参数传递进去;
所述Notebook Api模块开发,包括如下步骤:
步骤A:使用Kubeflow框架Api封装创建Notebook Api接口,完成对Kubernetes集群中Notebook Pod的操作,具体为:
使用Kubeflow框架Api封装创建Notebook Api接口,其接口包含Notebook Pod的创建、修改、暂停、删除、获取状态以及挂载PVC、挂载S3中数据样本集目录和Tensorboard服务的日志目录等;
步骤B:使用Kubernetes Api封装创建和删除Notebook Pod时增加创建Kubeflow自定义资源服务、Tensorboard服务的Service、Virtualservice,具体为:
在被调用Notebook Pod创建和删除接口时,会对Notebook Pod中运行的Kubeflow自定义资源服务、Tensorboard服务分别创建Service,其中targetPort分别为9999、6006,port统一为80,其中为控制Kubernetes集群中Virtualservice的数量,Notebook Pod中的Kubeflow自定义资源服务、Tensorboard服务统一采用同一个Virtualservice,请求路径分别采用/{name}-pretreatment/、/{name}-tensorboard/区分;
所述统一日志收集模块开发,包括如下步骤:
步骤A:Notebook Servic和Notebook Api服务的日志统一采用Json结构写入到S3目录,统一采集写入到ES使用kibana查看日志信息,具体为:
Notebook Service和Notebook Api服务均运行在Kubernetes集群中,服务运行的Pod中均挂载着S3挂载盘,当出现日志信息时会以Json格式写入当天目录文件夹内notebook_service.log、notebook_Api.log文件中,由Logstash统一采集写入到ES集群中,在出现排查错误情况时可使用kibana查看日志信息;
步骤B:Kubeflow自定义资源服务创建的分布式Pytroch Job的日志,输出到NoteBook Pod中运行的Tensorboard服务日志指定挂载的S3目录,具体为:
Pytroch Job分布式训练任务运行时会输出训练指标相关的日志,每个NoteBook中由Kubeflow自定义资源服务启动的Pytroch Job分布式训练任务会统一写入当前Notebook中Tensorboard服务挂载的S3日志目录文件夹下,登录Tensorboard服务的Web界面即可在Pytroch Job分布式训练任务运行时查看相关指标。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。
Claims (4)
1.一种基于容器化实现分布式训练系统构建方法,其特征在于,包括:
步骤S1:改造原始Kubeflow机器学习的开源平台中Notebook镜像;
步骤S2:使用Kubeflow机器学习的开源平台Api应用程序编程接口自主研发NotebookApi服务模块,Notebook Api服务模块调用操作Kubeflow机器学习的开源平台中的Notebook服务;
步骤S3:研发Notebook Service服务模块调用Notebook Api服务模块、train服务模块;
步骤S4:Notebook Servic服务模块和Notebook Api服务模块的日志写入目录;
Kubeflow框架Notebook服务的镜像改造,包括如下步骤:
步骤S1.1:改造原始Kubeflow机器学习的开源平台中Notebook镜像,集成Tensorboard服务以及指定启动Tensorboard服务时S3挂载盘中需要扫描的日志路径,具体为:
Kubernetes是用于自动部署、扩充和管理容器化应用程序的开源系统,Kubeflow是用于Kubernetes上的机器学习的开源平台,Notebook是Kubeflow机器学习开源平台提供的一种在Kubernetes中运行基于Web的开发环境的方法,TensorBoard服务是提供机器学习实验所需的可视化功能和工具,S3是一种对象存储服务被挂载在Kubernetes中作为存储盘使用;
拉取原始Kubeflow平台中Notebook镜像类别中的原始镜像作为基础镜像,安装Tensorboard服务,并且在Dockerfile文件中CMD命令里追加启动命令,启动时读取S3挂载盘中具体某个namespace_id下Tensorboard目录中的训练日志;
步骤S1.2:Kubeflow平台自定义资源PyTorchJob用于在Kubernetes上运行PyTorch模型分布式训练作业;集成train服务模块,train服务由Python开发,采用Kubernetes Api方式创建Kubeflow平台自定义资源内的PytrochJob分布式训练任务,具体为:
通过Shell脚本使用Git命令克隆算法模型代码块封装到train服务中,开发Web接口调用Kubernetes Api创建Kubeflow平台自定义资源内的PytrochJob分布式训练任务,接口包含创建模型训练、中止模型训练、停止模型训练,其中创建模型训练接口中参数包含Master、Worker数量、S3挂载盘中数据样本集目录、S3挂载盘中训练日志输出目录,服务启动命令uwsgi--ini/data/train_Api/uwsgi.ini追加在Dockerfile文件中CMD命令里,Dockerfile创建自定义notebook镜像上传到私库中提供后续Notebook Service服务创建使用;
在所述步骤S2中:
所述Notebook Api服务模块的开发包括如下步骤:
步骤S2.1:使用Kubeflow平台Api应用程序编程接口开发Notebook Api服务模块,完成对Kubernetes集群中Notebook Pod的操作,具体为:
使用Kubeflow框架Api应用程序编程接口开发Notebook Api服务模块,其包含Notebook Pod的创建、修改、暂停、删除、获取状态以及挂载PVC、挂载S3中数据样本集目录和Tensorboard服务的日志目录;
步骤S2.2:使用Kubeflow平台Api应用程序编程接口开发创建Notebook Pod、删除Notebook Pod接口时,增加train服务模块、Tensorboard服务的Service、Virtualservice,具体为:
在被调用Notebook Pod创建和删除接口时,分别对Notebook Pod中运行的train服务模块、Tensorboard服务模块分别创建Service、Virtualservice,其中train服务模块Service的targetPort为9999,Tensorboard服务Service的targetPort为6006,两个服务的Service中Port统一为80,其中为控制Kubernetes集群中Virtualservice的数量,Kubernetes集群中所有的Notebook Pod中的train服务模块、Tensorboard服务统一采用同一个Virtualservice,对请求路径进行区分;
在所述步骤S3中:
所述Notebook Service模块的开发包括如下步骤:
步骤S3.1:创建Notebook默认模版,指定创建默认Notebook时的资源参数,包括:CPU、内存、GPU、PVC、namespace和image,具体为:
在Nacos中创建Notebook默认模版Ymal配置文件,配置默认创建Notebook的资源参数,在Notebook Service服务启动时加载进来,在Web界面创建Notebook时未指定参数时使用默认的Notebook模版;
步骤S3.2:在S3中创建数据样本集目录,算法工程师在界面上传一个或多个样本数据集以供分布式训练使用,在S3中创建Tensorboard服务的日志目录,后续分布式训练任务日志会输出在该目录下,同时增加Kubeflow平台的用户体系认证,使用Kubeflow用户对Notebook进行操作,具体为:
S3是一种对象存储服务,同时也对外提供Client Api接口用于对S3服务进行操作;使用S3Client Api在S3对象存储服务中创建数据样本集目录、Tensorboard服务的日志目录,后续数据样本集上传文件写入到数据样本集目录中,Notebook Pod中Tensorboard服务运行时读取S3中创建的Tensorboard服务的日志目录,创建AuthInterceptor拦截器,每次调用Notebook相关接口、Kubeflow自定义资源服务接口时被AuthInterceptor拦截器拦截,认证属于Kubeflow中的用户通过验证,其中用户的Cookie会被缓存在Redis中并设置过期时间为1个小时;
步骤S3.3:NoteBook Service服务中封装调用NoteBook Api服务、Kubeflow自定义资源服务,具体为:
在Web界面调用NoteBook Service服务时,统一封装调用NoteBook Api服务、train服务,调用NoteBook Api服务时把Notebook模版所需要的参数传递进去,调用train服务时把分布式训练相关参数传递进去。
2.根据权利要求1所述的基于容器化实现分布式训练系统构建方法,其特征在于,在所述步骤S4中:
步骤S4.1:Notebook Servic和Notebook Api服务的日志统一采用Json结构写入到S3目录,统一采集写入到ES使用kibana查看日志信息,具体为:
Notebook Service和Notebook Api服务运行在Kubernetes集群中,服务运行的Pod中挂载着S3挂载盘,当出现日志信息时以Json格式写入当天目录文件夹内的文件中,由Logstash统一采集写入到ES集群中,在出现排查错误情况时使用kibana查看日志信息;
步骤S4.2:Kubeflow自定义资源服务创建的分布式Pytroch Job的日志,输出到NoteBook Pod中运行的Tensorboard服务日志指定挂载的S3目录,具体为:
Pytroch Job分布式训练任务运行时会输出训练指标相关的日志,每个NoteBook中由Kubeflow自定义资源服务启动的Pytroch Job分布式训练任务会统一写入当前Notebook中Tensorboard服务挂载的S3日志目录文件夹下,登录Tensorboard服务的Web界面在PytrochJob分布式训练任务运行时查看相关指标。
3.一种基于容器化实现分布式训练系统构建系统,其特征在于,包括:
模块M1:改造原始Kubeflow机器学习的开源平台中Notebook镜像;
模块M2:使用Kubeflow机器学习的开源平台Api应用程序编程接口自主研发NotebookApi服务模块,Notebook Api服务模块调用操作Kubeflow机器学习的开源平台中的Notebook服务;
模块M3:研发Notebook Service服务模块调用Notebook Api服务模块、train服务模块;
模块M4:Notebook Servic服务模块和Notebook Api服务模块的日志写入目录;
在所述模块M1中:
Kubeflow框架Notebook服务的镜像改造,包括如下步骤:
模块M1.1:改造原始Kubeflow机器学习的开源平台中Notebook镜像,集成Tensorboard服务以及指定启动Tensorboard服务时S3挂载盘中需要扫描的日志路径,具体为:
Kubernetes是用于自动部署、扩充和管理容器化应用程序的开源系统,Kubeflow是用于Kubernetes上的机器学习的开源平台,Notebook是Kubeflow机器学习开源平台提供的一种在Kubernetes中运行基于Web的开发环境的方法,TensorBoard服务是提供机器学习实验所需的可视化功能和工具,S3是一种对象存储服务被挂载在Kubernetes中作为存储盘使用;
拉取原始Kubeflow平台中Notebook镜像类别中的原始镜像作为基础镜像,安装Tensorboard服务,并且在Dockerfile文件中CMD命令里追加启动命令,启动时读取S3挂载盘中具体某个namespace_id下Tensorboard目录中的训练日志;
模块M1.2:Kubeflow平台自定义资源PyTorchJob用于在Kubernetes上运行PyTorch模型分布式训练作业;集成train服务模块,train服务由Python开发,采用Kubernetes Api方式创建Kubeflow平台自定义资源内的PytrochJob分布式训练任务,具体为:
通过Shell脚本使用Git命令克隆算法模型代码块封装到train服务中,开发Web接口调用Kubernetes Api创建Kubeflow平台自定义资源内的PytrochJob分布式训练任务,接口包含创建模型训练、中止模型训练、停止模型训练,其中创建模型训练接口中参数包含Master、Worker数量、S3挂载盘中数据样本集目录、S3挂载盘中训练日志输出目录,服务启动命令uwsgi--ini/data/train_Api/uwsgi.ini追加在Dockerfile文件中CMD命令里,Dockerfile创建自定义notebook镜像上传到私库中提供后续Notebook Service服务创建使用;
在所述模块M2中:
所述Notebook Api服务模块的开发包括如下步骤:
模块M2.1:使用Kubeflow平台Api应用程序编程接口开发Notebook Api服务模块,完成对Kubernetes集群中Notebook Pod的操作,具体为:
使用Kubeflow框架Api应用程序编程接口开发Notebook Api服务模块,其包含Notebook Pod的创建、修改、暂停、删除、获取状态以及挂载PVC、挂载S3中数据样本集目录和Tensorboard服务的日志目录;
模块M2.2:使用Kubeflow平台Api应用程序编程接口开发创建Notebook Pod、删除Notebook Pod接口时,增加train服务模块、Tensorboard服务的Service、Virtualservice,具体为:
在被调用Notebook Pod创建和删除接口时,分别对Notebook Pod中运行的train服务模块、Tensorboard服务模块分别创建Service、Virtualservice,其中train服务模块Service的targetPort为9999,Tensorboard服务Service的targetPort为6006,两个服务的Service中Port统一为80,其中为控制Kubernetes集群中Virtualservice的数量,Kubernetes集群中所有的Notebook Pod中的train服务模块、Tensorboard服务统一采用同一个Virtualservice,对请求路径进行区分;
在所述模块M3中:
所述Notebook Service模块的开发包括如下步骤:
模块M3.1:创建Notebook默认模版,指定创建默认Notebook时的资源参数,包括:CPU、内存、GPU、PVC、namespace和image,具体为:
在Nacos中创建Notebook默认模版Ymal配置文件,配置默认创建Notebook的资源参数,在Notebook Service服务启动时加载进来,在Web界面创建Notebook时未指定参数时使用默认的Notebook模版;
模块M3.2:在S3中创建数据样本集目录,算法工程师在界面上传一个或多个样本数据集以供分布式训练使用,在S3中创建Tensorboard服务的日志目录,后续分布式训练任务日志会输出在该目录下,同时增加Kubeflow平台的用户体系认证,使用Kubeflow用户对Notebook进行操作,具体为:
S3是一种对象存储服务,同时也对外提供Client Api接口用于对S3服务进行操作;使用S3Client Api在S3对象存储服务中创建数据样本集目录、Tensorboard服务的日志目录,后续数据样本集上传文件写入到数据样本集目录中,Notebook Pod中Tensorboard服务运行时读取S3中创建的Tensorboard服务的日志目录,创建AuthInterceptor拦截器,每次调用Notebook相关接口、Kubeflow自定义资源服务接口时被AuthInterceptor拦截器拦截,认证属于Kubeflow中的用户通过验证,其中用户的Cookie会被缓存在Redis中并设置过期时间为1个小时;
模块M3.3:NoteBook Service服务中封装调用NoteBook Api服务、Kubeflow自定义资源服务,具体为:
在Web界面调用NoteBook Service服务时,统一封装调用NoteBook Api服务、train服务,调用NoteBook Api服务时把Notebook模版所需要的参数传递进去,调用train服务时把分布式训练相关参数传递进去。
4.根据权利要求3所述的基于容器化实现分布式训练系统构建系统,其特征在于,在所述模块M4中:
模块M4.1:Notebook Servic和Notebook Api服务的日志统一采用Json结构写入到S3目录,统一采集写入到ES使用kibana查看日志信息,具体为:
Notebook Service和Notebook Api服务运行在Kubernetes集群中,服务运行的Pod中挂载着S3挂载盘,当出现日志信息时以Json格式写入当天目录文件夹内的文件中,由Logstash统一采集写入到ES集群中,在出现排查错误情况时使用kibana查看日志信息;
模块M4.2:Kubeflow自定义资源服务创建的分布式Pytroch Job的日志,输出到NoteBook Pod中运行的Tensorboard服务日志指定挂载的S3目录,具体为:
Pytroch Job分布式训练任务运行时会输出训练指标相关的日志,每个NoteBook中由Kubeflow自定义资源服务启动的Pytroch Job分布式训练任务会统一写入当前Notebook中Tensorboard服务挂载的S3日志目录文件夹下,登录Tensorboard服务的Web界面在PytrochJob分布式训练任务运行时查看相关指标。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211269955.8A CN115344356B (zh) | 2022-10-18 | 2022-10-18 | 基于容器化实现分布式训练系统及其构建方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211269955.8A CN115344356B (zh) | 2022-10-18 | 2022-10-18 | 基于容器化实现分布式训练系统及其构建方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115344356A CN115344356A (zh) | 2022-11-15 |
CN115344356B true CN115344356B (zh) | 2023-01-31 |
Family
ID=83957698
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211269955.8A Active CN115344356B (zh) | 2022-10-18 | 2022-10-18 | 基于容器化实现分布式训练系统及其构建方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115344356B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021238251A1 (zh) * | 2020-05-28 | 2021-12-02 | 苏州浪潮智能科技有限公司 | 一种基于Kubernetes的推理服务系统 |
CN113805850A (zh) * | 2021-08-12 | 2021-12-17 | 紫光云(南京)数字技术有限公司 | 基于多种深度学习和机器学习框架的人工智能管理系统 |
EP3961411A1 (en) * | 2020-08-25 | 2022-03-02 | Cognizant Technology Solutions U.S. Corporation | Method for decentralized accessioning for distributed machine learning and other applications |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114020413A (zh) * | 2021-11-05 | 2022-02-08 | 沈阳飞机设计研究所扬州协同创新研究院有限公司 | 一种基于Kubernetes容器集群的分布式强化学习系统设计方法 |
-
2022
- 2022-10-18 CN CN202211269955.8A patent/CN115344356B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021238251A1 (zh) * | 2020-05-28 | 2021-12-02 | 苏州浪潮智能科技有限公司 | 一种基于Kubernetes的推理服务系统 |
EP3961411A1 (en) * | 2020-08-25 | 2022-03-02 | Cognizant Technology Solutions U.S. Corporation | Method for decentralized accessioning for distributed machine learning and other applications |
CN113805850A (zh) * | 2021-08-12 | 2021-12-17 | 紫光云(南京)数字技术有限公司 | 基于多种深度学习和机器学习框架的人工智能管理系统 |
Also Published As
Publication number | Publication date |
---|---|
CN115344356A (zh) | 2022-11-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107733704B (zh) | 一种基于虚拟化和容器技术的勘探开发云的系统和方法 | |
US20180176335A1 (en) | Cloud-enabled i/o configuration of a control system | |
CN107566165B (zh) | 一种发现及部署电力云数据中心可用资源的方法及系统 | |
CN108376100A (zh) | 基于安全的容器调度 | |
CN112602025A (zh) | 工业控制器的数字孪生的自动设置 | |
CN107612962B (zh) | 一种分布式仿真评估试验管理系统 | |
CN112104723A (zh) | 一种多集群的数据处理系统及方法 | |
CN110099098A (zh) | 工业机器人数据上传方法、系统、可读存储介质及设备 | |
CN111414391A (zh) | 一种访问多数据源的方法及系统 | |
CN103634138A (zh) | 分布式调度的远程管理与运维方法及其系统 | |
CN112631614A (zh) | 应用部署方法、装置、计算机设备和存储介质 | |
CN107632877A (zh) | Vdi与voi架构虚拟机融合系统及启动方法 | |
CN112104726A (zh) | 一种工业物联网对象存储实时监测系统 | |
CN104145222A (zh) | 用于控制逻辑的同步的设备和方法 | |
CN111586022A (zh) | 防火墙开墙验证方法、电子装置、计算机设备及存储介质 | |
CN111104336A (zh) | 一种基于容器和vnc的服务接口在线测试方法及装置 | |
CN110870257B (zh) | 分派在局域的、模块化的计算机网络(边缘云)之内的数字资源 | |
CN110427260A (zh) | 主机作业调度方法、装置及系统 | |
CN115344356B (zh) | 基于容器化实现分布式训练系统及其构建方法 | |
CN104836831B (zh) | 一种用于物联网的物体服务方法 | |
CN112564979B (zh) | 构建任务的执行方法、装置、计算机设备和存储介质 | |
US20100100609A1 (en) | System and method for directing display of a standard operation procedure of an item using multimedia devices | |
CN102523124A (zh) | 一种cdn网络中批量处理大量主机的方法及装置 | |
US7159012B2 (en) | Computational data processing system and computational process implemented by means of such a system | |
US10489867B2 (en) | Apparatus and method for deploying analytics |
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 |