云原生机器学习平台cube-studio开源项目及代码简要介绍

1. cube-studio介绍

云原生机器学习平台cube-studio介绍:https://juejin.cn/column/7084516480871563272

cube-studio是开源的云原生机器学习平台,目前包含特征平台,支持在/离线特征;数据源管理,支持结构数据和媒体标注数据管理;在线开发,在线的vscode/jupyter代码开发;在线镜像调试,支持免dockerfile,增量构建;任务流编排,在线拖拉拽;开放的模板框架,支持tf/pytorch/spark/ray/horovod/kaldi等分布式训练任务;task的单节点debug,分布式任务的批量优先级调度,聚合日志;任务运行资源监控,报警;定时调度,支持补录,忽略,重试,依赖,并发限制,定时任务算力的智能修正;nni,katib,ray的超参搜索;多集群多资源组,算力统筹,联邦调度;tf/pytorch/onnx模型的推理服务,serverless流量管控,tensorrt gpu推理加速,依据gpu利用率/qps等指标的 hpa能力,虚拟化gpu,虚拟显存等服务化能力。

目前cube-studio由腾讯音乐开源到github:https://github.com/tencentmusic/cube-studio

开源试用环境:http://114.96.98.168:20080/frontend/ 可自定义用户名与密码,若未注册过会自动注册

2. 开源代码框架与结构

平台控制端为fab-python框架,基于Flask框架,可先了解Flask框架相关

2.1 数据库相关代码

2.1.1 数据库结构

myapp/models 中存储数据库结构,如图所示
在这里插入图片描述

2.1.2 数据库初始化

在这里插入图片描述

如图所示,在cli.py中初始化写入数据库,对数据的操作通过db.session来进行

2.1.3 数据库的更新迭代

迭代版本文件在myapp/migrations/versions
1、先使用myapp db upgrade命令,将数据库依据versions目录下的接口更新到最新,

2、然后myapp db migrate 将代码中的最新接口更新到versions目录下,

3、然后再调用myapp db upgrade命令更新到最新版数据库
在这里插入图片描述

2.2 后端接口介绍

2.2.1 后端代码介绍

在这里插入图片描述
在这里插入图片描述

如图所示,通过定义一个类,设置route_base基本路由,之后通过@expose定义具体的api接口及restful方法,之后通过appbuilder.add_api将类添加,即可定义一个后端接口。

	#所有api操作header
    headers = {
      'Content-Type': 'application/json',
      'Authorization': '$rtx|$token'
    }
 - api:(GET):http://x.x.x.x/$view/api/
	#获取当前view 增删改查搜索接口中需要发送的参数,以及参数的描述
 - api: (GET):http://xx.xx.xx.xx/$view/api/_info 
 #list接口,其中$value为json序列化后的字符串
 - api: (GET):http:/xxx/api/?form_data=$value
 
 - api:(POST):http://x.x.x.x/$view/api/

 - api:(PUT):http://x.x.x.x/$view/api/<id>

 - api:(GET):http://x.x.x.x/$view/api/<id>

 - api:(DELETE):http://x.x.x.x/$view/api/<id>

	#单数据操作
 - api:(GET):http://x.x.x.x/$view/api/action/$action_name/<id>
	#批数据操作
 - api:(POST):http://x.x.x.x/$view/api/multi_action/$action_name/
	json参数为{"ids":[xx,xx,xx]}

2.2.2 接口过滤函数

过滤函数:
Starts with:sw
Not Starts with:nsw
Ends with:ew
Not Ends with:new
Contains:ct
Not Contains:nct
Equal to:eq
Not Equal to:neq
Greater than:gt
Smaller than:lt
Relation:rel_o_m
No Relation:nrel_o_m
elation as Many:rel_m_m
Filter view with a function:eqf
Filter view where field is in a list returned by a function:inf

#filter示例:
#查询name列包含aa的记录
"filters":[
	{
	  "col": "name",
	  "opr": "ct",   
	  "value": "aa"
	}
]
#filter示例:
#a表通过外键b_id绑定b表,查询指定b_id为1的所有a
"filters":[
    {
        "col": "b",
        "opr": "rel_o_m",
        "value": 1
    }
]

# 分页
"page":0,
"page_size":10,

# 排序
order_column: $column1
order_direction: 'desc'

2.2.3 celery定时/异步任务的开发

  • 定时任务代码开发:myapp/tasks/schedules.py
    在这里插入图片描述

    使用场景: 1、定时任务,比如定时删除旧的workflow,tfjob,pytorchjob,测试的任务,服务,notebook等。 定时提交定时任务的配置,监控gpu资源,以及在多项目组间进行资源调配

  • 异步任务代码开发:myapp/tasks/async_task.py

    使用场景: 1、异步任务,需要花费比较长时间完成的功能,比如灰度升级服务,构建镜像等

  • 任务配置:config.py中CeleryConfig 在这里插入图片描述

2.2.4 监听crd变化

在这里插入图片描述

代码开发:myapp/tools/watch_xx.py
在这里插入图片描述

使用场景:监听训练和推理workflow的状态变化,推送消息,并通过redis缓存记录任务队列

2.2.5 调用k8s相关组件

在这里插入图片描述

3. 项目运行

3.1 本地运行

本地运行起来主要需要两个配置文件mysql-compose.yml,docker-compose.yml
在这里插入图片描述
1 启动本地的docker,windows可启用docker-desktop

2 运行起来mysql数据库

cd ./install/docker目录下执行 docker-compose -f .\mysql-compose.yml up

3.build前后端镜像,

  • 前端镜像dockerfile:install/docker/dockerFrontend/Dockerfile在这里插入图片描述

  • 后端镜像dockerfile:install/docker/Dockerfile.dashboard在这里插入图片描述

4.修改/install/docker/docker-compose.yml中的前后端镜像,并运行docker-compose, 就可以在浏览器中查看页面http://localhost:8888/frontend

docker-compose -f /install/docker/docker-compose.yml up

3.2 运行容器

3.2.1 infra命名空间

在这里插入图片描述
如上图所示:
kubeflow-dashboard:后端容器
kubeflow-dashboard-frontend:前端容器
kubeflow-dashboard-schedule:异步、定时等任务调度容器
kubeflow-dashboard-worker:异步、定时等任务工作容器
kubeflow-watch: crd等监视容器
mysql:数据库
redis:缓存数据库,记录异步、定时等任务队列

3.2.2 kubeflow命名空间

在这里插入图片描述

### 回答1: 尊敬的领导: 我谨向您提交一份云原生平台项目立项的请示。 近年来,随着互联网技术的不断发展,越来越多的企业开始采用云计算、容器化等技术,以提升应用程序的可靠性、弹性、安全性和可维护性。作为一家现代化的企业,我们也应该积极探索和采用这些新技术。 因此,我们计划启动云原生平台项目,构建一个基于 Kubernetes 的云原生平台,以便更好地支持我们的业务发展。该平台将实现应用程序的自动化部署、水平扩展、灰度发布、故障自愈等功能,为业务运维带来更多的便利和效率。 该项目的实施需要技术、人力、资金等多方面的支持,我们已经制定了详细的实施计划和预算,希望能够得到公司的支持和认可。同时,我们也将积极探索开源社区资源,与合作伙伴协同推进该项目的落地。 希望领导批准该项目的立项,支持我们探索和应用云原生技术,提升公司的核心竞争力。谢谢! ### 回答2: 尊敬的领导: 我特此向您呈交云原生平台项目立项的请示。经过对市场需求和公司发展战略的分析,我们发现云原生技术正在成为业界的新趋势,并且对于公司的业务发展具有重要意义。 云原生平台是一种基于云计算的新型软件架构,使用容器、微服务、自动化和弹性伸缩等技术,可以使应用程序在云环境中更加高效、可靠、弹性和可扩展。通过实施云原生平台,可以极大地提高公司的研发效率、降低运维成本,同时提供更好的用户体验和服务质量。 立项该项目的主要目标是: 1. 搭建云原生平台基础设施:通过引入容器技术,建设自动化部署、监控、扩容和回滚等基础设施,为公司的应用程序提供稳定可靠的运行环境。 2. 支持容器化应用开发:提供标准化的容器编排平台,支持开发人员快速部署和调试应用程序,以提高研发效率和灵活性。 3. 推广微服务架构:将大型单体应用拆解为多个独立的微服务,以实现应用程序的高扩展性和可维护性。 项目预期的风险与挑战包括: 1. 技术风险:云原生平台是一项新兴技术,需要培养相关的技术团队,并确保他们具备足够的技能和经验。 2. 组织变革:项目的成功需要引起组织文化和流程的改变,包括协调不同团队之间的合作和沟通。 基于以上分析,我建议立项该云原生平台项目。该项目不仅有助于提升公司技术实力和市场竞争力,还可以推动公司从传统的软件开发模式向现代化的云原生架构转型。我将组建专业团队,制定详细的项目计划和投资规划,并将及时向您报告项目的进展情况和风险控制措施。 希望能得到您的同意和支持,期待项目能够尽快启动,取得良好的效果。 谢谢! ### 回答3: 致 XXX 部门主管: 我谨以此函向您请示关于云原生平台项目立项的事宜。 随着信息技术的快速发展和企业数字化转型的推进,云计算已经逐渐成为企业发展的重要组成部分。为了更好地支持公司业务的可持续发展,提高效率和降低成本,我提议推进云原生平台项目的立项。 云原生平台是一种基于云计算技术的软件开发和部署模式,旨在加快企业应用的构建、发布和管理过程。通过采用容器化部署、微服务架构和自动化运维等技术手段,云原生平台可以实现高度的扩展性、灵活性和可移植性,从而满足企业应对快速变化市场需求的要求。 本次立项的云原生平台项目将主要包括以下几个方面的工作: 1. 建设云原生基础设施:包括云服务器资源的选型与部署、云存储的设计与配置、网络架构的规划等。我们将通过借助主流的云服务提供商,如AWS、Azure或Google Cloud,来构建一个稳定、安全且可扩展的云原生基础设施。 2. 容器化和微服务改造:针对现有的应用进行容器化改造,并将其拆分为独立的微服务,实现服务的解耦和独立部署。通过引入容器编排工具,如Kubernetes或Docker Swarm,实现容器的自动化部署和管理。 3. 自动化运维和监控:构建集中化的日志和监控系统,实现对云原生平台及其上运行的应用进行实时监控和故障排查。利用自动化工具,如Ansible或Terraform,实现运维任务的自动化执行,提高效率和可靠性。 4. 云原生平台使用指南和培训:编写详细的操作手册和使用指南,为公司内部的开发人员提供培训和支持,确保他们能够熟练使用和管理云原生平台。 通过进行云原生平台项目的立项并推进实施,我们有望实现以下目标: 1. 提升开发效率:通过容器化和微服务改造,减少应用的依赖和部署时间,提高开发团队的协同效率。 2. 增强系统稳定性:云原生平台提供弹性伸缩和自动化运维能力,更好地应对高并发和突发流量,保障业务的稳定运行。 3. 降低成本:通过云服务提供商的按需付费模式,合理调配资源,避免过度采购硬件设备,降低企业的IT成本。 4. 加快应用上线和更新速度:云原生平台提供快速的部署和扩容能力,缩短应用的上线时间,快速响应市场需求。 基于以上理由,我请求您的支持和批准,以便我们能够启动云原生平台项目,并组织相应的团队进行实施。我相信,云原生平台的建设将对公司的发展和竞争力提供重要的支持和推动作用。 谢谢您对该项目的关注与支持! 此致 XXX (职务)
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Pistachiout

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值