cube-studio开源一站式机器学习平台,在线ide,jupyter,vscode,matlab,rstudio,ssh远程连接,tensorboard

全栈工程师开发手册 (作者:栾鹏)
一站式云原生机器学习平台


前言

开源地址:https://github.com/tencentmusic/cube-studio

cube studio 腾讯开源的国内最热门的一站式机器学习mlops/大模型训练平台,支持多租户,sso单点登录,支持在线镜像调试,在线ide开发,数据集管理,图文音标注和自动化标注,任务模板自定义,拖拉拽任务流,模型分布式多机多卡训练,超参搜索,模型管理,推理服务弹性伸缩,支持ml/tf/pytorch/onnx/tensorrt/llm模型0代码服务发布,以及配套资源监控和算力,存储资源管理。支持机器学习,深度学习,大模型 开发训练推理发布全链路。支持元数据管理,维表,指标,sqllab,数据etl等数据中台对接功能。支持多集群,边缘集群,serverless集群方式部署。支持计量计费,资源额度限制,支持vgpu,rdma,国产gpu,arm64架构。

aihub模型市场:支持AI hub模型市场,支持400+开源模型应用一键开发,一键微调,一键部署。

gpt大模型:支持40+开源大模型部署一键部署,支持ray,volcano,spark等分布式计算框架,支持tf,pytorch,mxnet,mpi,paddle,mindspre分布式多机多卡训练框架,支持deepspeed,colossalai,horovod分布式加速框架,支持llama chatglm baichuan qwen系列大模型微调。支持llama-factory 100+llm微调,支持大模型vllm推理加速,支持智能体私有知识库,智能机器人。

在线开发是一个很重要的功能,对于大部分用户来说,在线的IDE比命令vim是要方便很多。cube主要提供了vscode和jupyter两种在线ide。并没有将代码和数据进行分割存储。所以在notebok中打开的就是完全用户自己的代码和数据,可以方便的进行调试。

vscode

theia是一个在线vscode,更像本地IDE,主要服务纯代码开发(多实例,一个人可以同时开多个theia)

在这里插入图片描述

工作目录默认是/mnt,归档目录是/archives,可以把一些想永久保存,不易被误删的文件放在归档目录。

在这里插入图片描述

在vscode里面(本质为theia),用户跟本地vscode基本一致,上传下载文件/文件夹,也可以在theia中打开命令行终端。并且在其中封装了用户的基本环境需求,比如python。

需要说明的是,由于theia的功能中有些进程,例如rg进程,会不停的搜索扫描目录下的所有文件。由于个人目录下包含了用户的代码和用户的数据,文件可能非常多(千万到亿级别的文件数量)。这些进程扫描会严重拖慢分布式存储的性能。所以cube做了定时检杀的功能,能够及时检杀rg和git进程,提高在线vscode的响应速度。

jupyter

在这里插入图片描述

数据挖掘的用户使用jupyter会更多一些。在jupyter里面跟vscode里面相同,也安装了一些实用的插件,比如tensorboard,使用jupyter pro版本可以在jupyter里面打开。

比如我们在pipeline/example/tensorboard中有一个示例文件demo.py,运行这个文件,会生成一个fit_logs文件夹,这就是tf的log目录,进入这个目录,然后使用tensorboard按钮启动tensorboard,就可以查看该训练的情况。

大数据版本

大数据版本的Jupyter notebook,创建notebook时选择Jupyter(bigdata)镜像,集成了大数据常用的基础包,比如spark、flink等。支持爬虫、数据分析、数据挖掘和可视化等常用Python包的使用。

机器学习版本

机器学习版本的Jupyter notebook,创建notebook时选择Jupyter(machinelearning)镜像,集成了机器学习常用的基础包,比如sklearn、scipy等。

深度学习版本

深度学习版本的Jupyter notebook,创建notebook时选择Jupyter(DeepLearning)镜像,集成了深度学习常用的基础包,比如TensorFlow、Keras等。

rstudio

R版本的notebook,创建notebook时选择rstudio(bigdata)镜像,集成了R语言的在线IDE,IDE名称为Rstudio。

matlab

MATLAB版本的notebook,创建notebook时选择matlab(DeepLearning)镜像,集成了MATLAB的在线IDE。

pro版本

Pro版本的Jupyter中使用不同版本的Python内核,从python2.7到python3.9均可支持。

在这里插入图片描述

tensorboard可视化训练

pro版本的Jupyter有tensorboard,创建notebook时镜像选择jupyter-conda-pro(cpu),创建一个pro版本的jupyter,运行/mnt/$username/pipeline/example/tensorboard/demo.py,运行结束会产生结果文件。进入结果文件夹,此时点击“+”符号,打开tensorboard,再选择需要进行可视化的文件,即可查看可视化结果,如下图所示。

在这里插入图片描述

需要注意的是,集成了tensorboard的notebook是CPU版本的,因此,如果我们需要用GPU来训练模型,并且用tensorboard做可视化,可以用GPU版本的notebook来做模型训练,把需要可视化的结果文件写到分布式存储中,再在pro版本的notebook中打开tensorboard。

密码保护

需要修改config.py配置文件中ENABLE_JUPYTER_PASSWORD设置为True并更新到线上,重启后端,则会在每个jupyter后面会自动生成密码,每次进入jupyter要使用这个密码。

在这里插入图片描述

登录jupyter时需要密码

在这里插入图片描述

ssh远程连接jupyter功能

实现原理

jupyter版本的notebook中提供了sshd,会在notebook创建时自动启动ssh-server,并且会自动生成配置文件example/ssh链接

并为每个notebook的pod配置一个单独的service,service使用ip和端口的形式对外暴漏,每个notebook使用的端口为10000+10*id+1

需要公司网络能通过ip+端口的形式访问notebook的服务

操作方法

按照example/ssh链接 文件中的描述,在本地~/.ssh/config中添加链接配置文件

# 将此文件内容追加到~/.ssh/config   ssh root登录密码 cube-studio
# ssh-copy-id -p PORT root@HOST  本地设置免密登录Host cube-studioHostName xx.xx.xx.xxPort xxUser rootIdentityFile ~/.ssh/id_rsaServerAliveInterval 10ControlMaster autoControlPath ~/.ssh/master-%r@%h:%pForwardAgent yes

然后就可以ssh链接远程notebook了,并且可以在本地将文件拖拽到本地vscode,这样文件就是自动同步到在线notebook中

单端口代理jupyter内部ssh server

要实现这个目标,您可以使用SSH端口转发功能。具体来说,您可以在内网中设置一个跳板机(也称为SSH代理服务器),并通过它连接到其他内网SSH服务器。以下是如何实现这个目标的步骤:

  1. 首先,确保您可以从本地客户端访问内网中的跳板机。例如,假设跳板机的IP地址为192.168.1.1,端口号为22,用户为user1。

  2. 在本地客户端上设置SSH代理隧道。这将允许您通过跳板机访问其他内网SSH服务器。例如,假设您希望连接到内网中的SSH服务器A(IP地址:192.168.1.2,端口:10022,用户:user2)和SSH服务器B(IP地址:192.168.1.3,端口:10023,用户:user3)。在本地客户端上,运行以下命令以创建SSH隧道:

    ssh -L 10022:192.168.1.2:10022 -L 10023:192.168.1.3:10023 user1@192.168.1.1 -p 22
    

    user1 是您在跳板机上的用户名。这将在您的本地客户端上创建两个端口转发(10022和10023),分别连接到内网中的SSH服务器A和B。

  3. 现在,您可以通过本地客户端上的端口10022和10023来访问内网中的SSH服务器A和B。例如,要连接到SSH服务器A,您可以运行以下命令:

    ssh user2@127.0.0.1 -p 10022
    

    要连接到SSH服务器B,您可以运行以下命令:

    ssh user3@127.0.0.1 -p 10023
    

    在这两个命令中,user2user3 是您在SSH服务器A和B上的用户名。

通过这种方法,您可以通过仅可以访问的内网IP和端口来访问内网中的不同SSH服务器。

jupyter里面链接spark

对于需要连接数据中台的场景,例如连接Hive或Spark集群,我们可以在自定义Notebook中预先配置好相关的XML文件,以便用户直接使用。这样,开发者只需要配置一次,普通用户就可以直接使用,无需再次配置。

在jupyter中启动提交spark任务,作为driver端需要监听端口,每个notebook在创建的时候会预留 P O R T 1 和 PORT1和 PORT1PORT2两个环境变量代表的端口来对外监听,同时在$SERVICE_EXTERNAL_IP环境变量代表的主机上进行监听,所以需要告诉spark的master,driver的服务监听地址,这样能让master返回数据到driver端

# 创建 SparkSession
spark = SparkSession.builder \.appName("PythonPi") \.master('spark://myspark-master-0.myspark-headless.kubeflow.svc.cluster.local:7077') \.config("spark.executor.memory", "2g") \.config("spark.executor.cores", "2") \.config("spark.cores.max", "8") \.config("spark.driver.memory", "2g") \.config("spark.ui.enabled", False) \.config("spark.driver.port", os.getenv('PORT1')) \.config("spark.blockManager.port", os.getenv('PORT2')) \.config("spark.driver.bindAddress", '0.0.0.0') \.config("spark.driver.host", os.getenv('SERVICE_EXTERNAL_IP')) \.getOrCreate()

tensorboard

使用pro版本的jupyter,在左侧目录树,进入到tensorboard对应的日志目录,再打开右侧的tensorboard按钮

在这里插入图片描述

就可以查看日志目录中所包含的记录的训练过程中的信息和模型的信息

在这里插入图片描述

git功能

pro版本的notebook中,可以直接使用git。比如直接clone一个项目到notebook中,修改文件,点击git图标,就能直接看到原文件和修改后文件的对比。

在这里插入图片描述

gpu监控,cpu,内存监控

图示按钮,可帮助用户在notebook中查看资源的使用情况。需要注意的是,只有GPU版本的notebook可以在notebook中查看GPU监控,其他版本的notebook即使调用了GPU,也只能在grafana中统一查看GPU资源的监控。

在这里插入图片描述

jupyter多内核态

在使用自定义Notebook时,需要注意的是,安装包时应该先激活对应的环境,然后再进行安装。这是因为Jupyter的内核和conda环境是两个不同的概念,需要分别进行管理。

在线ide的资源占用问题

cube采用的方案是只设置notebook的pod的limit,而不设置request,这种方案就对不资源进行独占,这样也就不用清理notebook,只是允许了notebook中的资源干扰。

GPU的占用方式上,允许独占、共享、VGPU三种方式,gpu申请(单位卡),示例:填写1,2,表示训练任务每个容器独占整卡。填写-1为共享占用方式,填写小数(0.1)为vgpu方式,申请具体的卡型号,可以类似 1(V100),目前支持T4/V100/A100。

在这里插入图片描述

在线ide的环境重置问题

如果notebook因为oom,定时清理,机器故障,主动reset等可能原因而重启,notebook中的环境就会丢失,但分布式存储下的内容都会保留,也就是/mnt/$username文件夹下的内容都会保留。

所以我们如果需要环境保存,有两个方案:

  1. cube添加了notebook启动后自动执行/mnt/$username/init.sh脚本,用户只需要在init.sh中定义notebook特定的环境,就可以在启动notebook后拥有自己独特的环境了。

  2. 在notebook中有一个“镜像保存”按钮,每次notebook环境更改之后,都可以点击这个按钮,保存环境,下次重启就会自动用这个镜像来启动notebook,如下图所示。

notebook镜像保存

多实例的virtualservice代理

多实例在线IDE图示

每个用户可以配置多个在线IDE,可以自己配置资源,镜像,类型。每个在线IDE都是通过istio virtualservice来代理的。所以只要在线IDE的镜像启动的web服务支持url prefix,就可以被加进来作为在线IDE,比如matlab,rstudio。每个在线IDE实例,都有独立的以名称为prefix的url地址,在virtualservice配置绑定istio ingressgateway,这样来实现多实例。

名为admin-9d3d的在线IDE的url prefix:

名为admin-e00f的在线IDE的url prefix:

在线ide镜像保存

如果想保存自己notebook中的环境,可以在notebook列表中点击"镜像保存"的按钮,平台将自动将该notebook的pod通过docker commit成镜像,镜像名称为jupyter-user:$notebook-name,并推送到仓库,所以还需要管理员提前配置自己内网的仓库地址和账号密码

在线ide清理和需求

默认情况下在线ide每天晚上会清理三天前的,清理只是关闭容器,不会清理文件,重启容器,环境会丢失。

定时清理任务的配置

在config.py的task_delete_notebook,注释这个任务,可以停止定时清理notebook,每次notebook有效期为3天,清理前一天会提醒用户进行续期。

任务续期

点击对应notebook后的续期按钮,可以为当前notebook续期三天使用时间。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/365977.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是原始权益人?

摘要:每天学习一点金融小知识 原始权益人,在资产证券化(ABS)和公募REITs等金融产品中,指的是证券化基础资产的原始所有者,即金融产品的真正融资方。他们是按照相关规定及约定向资产支持专项计划转移其合法拥…

Mysql面试合集

概念 是一个开源的关系型数据库。 数据库事务及其特性 事务:是一系列的数据库操作,是数据库应用的基本逻辑单位。 事务特性: (1)原子性:即不可分割性,事务要么全部被执行,要么就…

基于决策树的旋转机械故障诊断(Python)

前置文章: 将一维机械振动信号构造为训练集和测试集(Python) https://mp.weixin.qq.com/s/DTKjBo6_WAQ7bUPZEdB1TA 旋转机械振动信号特征提取(Python) https://mp.weixin.qq.com/s/VwvzTzE-pacxqb9rs8hEVw import…

数据库定义语言(DDL)

数据库定义语言(DDL) 一、数据库操作 1、 查询所有的数据库 SHOW DATABASES;效果截图: 2、使用指定的数据库 use 2403 2403javaee;效果截图: 3、创建数据库 CREATE DATABASE 2404javaee;效果截图: 4、删除数据…

Web端登录页和注册页源码

前言&#xff1a;登录页面是前端开发中最常见的页面&#xff0c;下面是登录页面效果图和源代码&#xff0c;CV大法直接拿走。 1、登录页面 源代码&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8"><title>登录</ti…

springboot汽车租赁管理系统08754

目 录 摘 要 第 1 章 引 言 1.1 选题背景和意义 1.2 国内外研究现状 1.3 论文结构安排 第 2 章 系统的需求分析 2.1 系统可行性分析 2.1.1 技术方面可行性分析 2.1.2 经济方面可行性分析 2.1.3 法律方面可行性分析 2.1.4 操作方面可行性分析 2.2 系统功能需求分析…

视频监控EasyCVR视频汇聚/智能边缘网关:EasySearch无法探测到服务器如何处理?

安防监控EasyCVR智能边缘网关/视频汇聚网关/视频网关属于软硬一体的边缘计算硬件&#xff0c;可提供多协议&#xff08;RTSP/RTMP/国标GB28181/GAT1400/海康Ehome/大华/海康/宇视等SDK&#xff09;的设备接入、音视频采集、视频转码、处理、分发等服务&#xff0c;系统具备实时…

华为防火墙在广电出口安全方案中的应用(方案设计、配置、总结)

号主&#xff1a;老杨丨11年资深网络工程师&#xff0c;更多网工提升干货&#xff0c;请关注公众号&#xff1a;网络工程师俱乐部 你们好&#xff0c;我的网工朋友。 不知道你有没有想过&#xff0c;我们每天看电视、上网追剧的广电网络&#xff0c;它的背后是如何确保安全稳定…

RANSAC空间圆拟合实现

由初中的几何知识我们可以知道&#xff0c;确定一个三角形至少需要三个不共线的点&#xff0c;因此确定一个三角形的外接圆至少可用三个点。我们不妨假设三个点坐标为P1(x1,y1,z1),P2(x2,y2,z2),P3(x3,y3,z3)。 圆方程的标准形式为&#xff1a; (xi-x)2(yi-y)2R2 &#xff08;1…

黑马点评下订单-小程序下单没问题但是Postman发送请求失败了,返回401

经过多方探索&#xff0c;这个✓8错误就是由于黑马点评使用了拦截器&#xff0c;我们直接发送请求是会被拦截器拦截下来的&#xff0c;我给出的解决方案是通过配置Postman解决&#xff0c;方法很简单&#xff01; 解决方案 右边的value写上Redis里面登录所用token值就可以了…

MSPG3507——蓝牙接收数据显示在OLED,滴答定时器延时500MS

#include "ti_msp_dl_config.h" #include "OLED.h" #include "stdio.h"volatile unsigned int delay_times 0;//搭配滴答定时器实现的精确ms延时 void delay_ms(unsigned int ms) {delay_times ms;while( delay_times ! 0 ); } int a0; …

昇思25天学习打卡营第10天|FCN图像语义分割

一、简介&#xff1a; 本篇博客是昇思大模型打卡营应用实践部分的第一次分享&#xff0c;主题是计算机视觉&#xff08;CV&#xff09;领域的FCN图像语义分割&#xff0c;接下来几天还会陆续分享其他CV领域的知识&#xff08;doge&#xff09;。 全卷积网络&#xff08;Fully…

微信小程序-插槽slot

一.插槽slot 在页面使用自定义组件的时候&#xff0c;如果在自定义组件里面写子组件&#xff0c;子组件的内容无法显示。 <custom01> <text slotslot-top>你好&#xff0c;上方组件</text> 你好&#xff0c;组件 <text slotslot-bottom>你好&#xf…

【从0实现React18】 (五) 初探react mount流程 完成核心递归流程

更新流程的目的&#xff1a; 生成wip fiberNode树标记副作用flags 更新流程的步骤&#xff1a; 递&#xff1a;beginWork归&#xff1a;completeWork 在 上一节 &#xff0c;我们探讨了 React 应用在首次渲染或后续更新时的整体更新流程。在 Reconciler 工作流程中&#xff…

Nginx 配置文件

Nginx的配置文件的组成部分&#xff1a; 主配置文件&#xff1a;nginx.conf子配置文件&#xff1a;include conf.d/*.conf 全局配置 nginx 有多种模块 核心模块&#xff1a;是 Nginx 服务器正常运行必不可少的模块&#xff0c;提供错误日志记录 、配置文件解析 、事件驱动机…

32.哀家要长脑子了!

1.299. 猜数字游戏 - 力扣&#xff08;LeetCode&#xff09; 公牛还是挺好数的&#xff0c;奶牛。。。妈呀&#xff0c;一朝打回解放前 抓本质抓本质&#xff0c;有多少位非公牛数可以通过重新排列转换公牛数字&#xff0c;意思就是&#xff0c;当这个数不是公牛数字时&#x…

怎样打造交互式3D数据可视化?

本文由ScriptEcho平台提供技术支持 项目地址&#xff1a;传送门 基于Plotly.js的交互式散点图和直方图联动 应用场景介绍 本代码演示了如何使用Plotly.js库创建交互式散点图和直方图联动&#xff0c;允许用户通过套索选择散点图中的数据点&#xff0c;并实时更新直方图以显…

大促前夕即高点,综合电商平台的“稀缺”魔法正在消失?

新一期618大促早已结束良久了&#xff0c;但似乎其产生的余韵却仍旧未消散。 从最直观的资本市场走势来看&#xff0c;自这一波618大促陆续开展之后&#xff0c;包括京东、阿里巴巴、拼多多等港美股股价就一改此前的上行态势&#xff0c;持续下滑至今。 事实上&#xff0c;早…

Hadoop3:MapReduce中的Reduce Join和Map Join

一、概念说明 学过MySQL的都知道&#xff0c;join和left join 这里的join含义和MySQL的join含义一样 就是对两张表的数据&#xff0c;进行关联查询 Hadoop的MapReduce阶段&#xff0c;分为2个阶段 一个Map&#xff0c;一个Reduce 那么&#xff0c;join逻辑&#xff0c;就可以…

【漏洞复现】和丰多媒体信息发布系统 QH.aspx 任意文件上传漏洞

0x01 产品简介 和丰多媒体信息发布系统也称数字标牌&#xff08;Digital Signage&#xff09;&#xff0c;是指通过大屏幕终端显示设备&#xff0c;发布商业、财经和娱乐信息的多媒体专业视听系统&#xff0c;常被称为除纸张媒体、电台、电视、互联网之外的“第五媒体”。该系…