- 博客(109)
- 资源 (7)
- 收藏
- 关注
原创 MegaScale:万级GPU集群中大模型训练
MegaScale是一个专为在超过10,000个GPU上训练大型语言模型(LLMs)而设计的生产系统。该系统通过算法和系统组件的协同设计,解决了大规模训练中的效率和稳定性挑战,从而实现了高效的训练。
2024-08-04 21:31:23
956
1
原创 蚂蚁开源大模型容错框架DLRover介绍
ElasticDL基于 TensorFlow 2.0 和 Kubernetes 的弹性分布式深度学习框架。不同于 Kubeflow/TF-operator 给每个集群部署一个 Kubernetes Operator 的方式, ElasticDL 为每个作业引入一个 master 进程。通过调用 Kubernetes API,master 进程了解集群情况;
2024-08-04 21:31:04
1083
原创 gpu-burn+jupyter notebook镜像Dockerfile及gpu-burn介绍
可以自己将cuda版本换为cuda11.8镜像可打开jupyter,并可在/app目录下执行./gpu_burn
2024-06-11 08:00:00
595
原创 分布式训练基础入门
大型模型并行采用算子内并行+算子间并行解决单设备内存不足,这种情况下,计算中的下游设备(Downstream Device)需要长期持续处于空闲状态,等待上游设备(Upstream Device)的计算完成,才可以开始计算,这极大降低了设备的平均使用率。为了更新参数,计算图的执行分为前向计算和反向计算两个阶段。场景:假设某个算子具有𝑃个参数,而系统拥有𝑁个设备,那么可以将𝑃个参数平均分配给𝑁个设备(每个设备分配𝑃/𝑁个参数),从而让每个设备负责更少的计算量,能够在内存容量的限制下完成前向计算和反向计算。
2024-06-11 08:00:00
1150
原创 SOA架构介绍与简单代码示例
SOA是一种设计方法,其中包含多个服务,服务之间通过相互依赖最终提供一系列的功能。一个服务通常以独立的形式存在与操作系统进程中。各个服务之间通过网络调用。
2023-12-27 16:52:53
873
1
原创 云原生机器学习平台cube-studio开源项目及代码简要介绍
cube-studio是开源的云原生机器学习平台,目前包含特征平台,支持在/离线特征;数据源管理,支持结构数据和媒体标注数据管理;在线开发,在线的vscode/jupyter代码开发;在线镜像调试,支持免dockerfile,增量构建;任务流编排,在线拖拉拽;开放的模板框架,支持tf/pytorch/spark/ray/horovod/kaldi等分布式训练任务;task的单节点debug,分布式任务的批量优先级调度,聚合日志;任务运行资源监控,报警;定时调度,支持补录,忽略,重试,依赖,并发限制,定时任务
2023-12-27 15:26:16
5339
8
原创 加载离线镜像包:在线镜像离线为tar包、tar离线镜像包加载并根据imageId打tag
需要四个文件,第一个是第一步生成的压缩包output.tar,第二个是脚本文件image_offline_load.sh脚本,第三个是image_list.txt 按行 存放需要离线的镜像名称,第四个是第一步生成的 imageid_list.txt 存放离线的镜像id。需要两个文件,第一个是脚本文件image_offline_load.sh脚本,第二个是image_list.txt 按行 存放需要离线的镜像名称。
2023-12-07 20:39:19
862
原创 在物理机内的虚机创建进入容器,执行命令时提示权限不够
查阅资料后发现,具体原因可能是因为安全模块selinux把权限禁掉了,因此我们在启动容器时,给容器加特权,及加上 --privileged=true 参数,如下所示。在服务器上创建容器后,run -it 进入容器后执行命令,却提示权限不够,如下所示。
2023-10-27 11:05:00
332
原创 K8s(Kubernetes)学习(七)——k8s持久化存储:emptyDir、local、nfs、PV&&PVC静态供给&动态供给、configMap、secret
在 Kubernetes 中,ConfigMap 是一种用于存储非敏感信息的 Kubernetes 对象。它用于存储配置数据,如键值对、整个配置文件或 JSON 数据等。ConfigMap 通常用于容器镜像中的配置文件、命令行参数和环境变量等。环境变量注入:将配置数据注入到 Pod 中的容器环境变量中。配置文件注入:将配置数据注入到 Pod 中的容器文件系统中,容器可以读取这些文件。命令行参数注入:将配置数据注入到容器的命令行参数中。基本操作。
2023-09-25 16:10:28
644
原创 K8s进阶之网络:pod内不同容器、同节点不同pod通信、CNI插件、不同节点pod通信、Flannel容器网络、Serivce连接外部网络、服务发现、Nginx反向代理与域名、Ingress代理
CNI如Calico、flannel等本身并不能提供网络服务,它只是定义了对容器网络进行操作和配置的规范。CNI仅关注在创建容器时分配网络资源,和在销毁容器时删除网络资源。常见的CNI插件包括Calico、flannel等。具体的流程如下图所示:在集群里面创建一个 Pod 的时候,首先会通过 apiserver 将 Pod 的配置写入。apiserver 的一些管控组件(比如 Scheduler)会调度到某个具体的节点上去。
2023-09-21 10:34:51
5143
原创 K8s(Kubernetes)学习(六)——Ingress
Ingress 是一种 Kubernetes 资源类型,它允许在 Kubernetes 集群中暴露 HTTP 和 HTTPS 服务。通过 Ingress,您可以将流量路由到不同的服务和端点,而无需使用不同的负载均衡器。Ingress 通常使用 Ingress Controller 实现,它是一个运行在 Kubernetes 集群中的负载均衡器,它根据Ingress 规则配置路由规则并将流量转发到相应的服务。
2023-09-18 16:55:04
942
原创 K8s(Kubernetes)学习(五)——Service:ClusterIP、NodePort、LoadBalancer、 ExternalName
官网地址: https://kubernetes.io/zh-cn/docs/concepts/services-networking/service/将运行在一个或一组 Pod 上的网络应用程序公开为网络服务的方法。通俗定义: Service 用来为 pod 提供网络服务的一种方式。
2023-09-18 16:53:06
1149
原创 shell脚本批量实现项目镜像本地化:docker注册证书login到harbor、将镜像push到harbor仓库、批量判断镜像是否在harbor仓库中已存在、find+sed替换源代码镜像地址
我们使用docker login/push/pull去与Harbor打交道,上传下载镜像等。当然,以上脚本的关键在于image_name与new_name的获取,若new_name可根据image_name修改得到,也可以更改脚本得到适合自己的new_name,以下可供参考。如上所示,我们首先需要准备一个images.txt里面包括了所有下载镜像名及上传名,如下所示,每行包括image_name与new_name,其中用空格隔开。, 然后把harbor的证书ca.crt等拷贝到这个目录即可。
2023-09-13 14:26:40
927
原创 K8s(Kubernetes)学习(四):Controller 控制器:Deployment、StatefulSet、Daemonset、Job
Kubernetes 通常不会直接创建 Pod, 而是通过 Controller 来管理 Pod 的。Controller 中定义了 Pod 的部署特性,比如有几个副本、在什么样的 Node 上运行等。通俗的说可以认为 Controller 就是用来管理 Pod 一个对象。其核心作用可以通过一句话总结: 通过监控集群的公共状态,并致力于将当前状态转变为期望的状态。通俗定义: controller 可以管理 pod 让 pod 更具有运维能力。
2023-09-06 14:16:17
951
1
原创 KubeFlow组件介绍
这很大程度上减少了运维的工作。kubeflow是一个胶水项目,它把诸多对机器学习的支持,比如模型训练,超参数训练,模型部署等进行组合并已容器化的方式进行部署,提供整个流程各个系统的高可用及方便的进行扩展部署了 kubeflow的用户就可以利用它进行不同的机器学习任务。(自定义资源),通过这样一个资源类型,使用 TensorFlow 进行机器学习训练的工程师们不再需要编写繁杂的配置,只需要按照他们对业务的理解,确定 PS 与 worker 的个数以及数据与日志的输入输出,就可以进行一次训练任务。
2023-08-30 16:14:16
2672
原创 算法套路二十——单调栈
单调栈是一种特殊的数据结构,用于解决与元素的相对大小有关的问题。它是一个栈,但其中的元素以的顺序排列,用于处理与有关的问题。
2023-08-10 15:34:29
314
原创 Kubeflow Pipelines介绍与实例
kubeflow/kubeflow 是一个胶水项目,。pipelines 是基于 kubeflow 实现的工作流系统,它的目标是借助 kubeflow 的底层支持,实现出一套工作流,支持数据准备,模型训练,模型部署,可以通过代码提交等等方式触发。
2023-08-10 09:50:07
2499
原创 网络编程——RPC与HTTP基本介绍、历史追溯、主流应用场景、对比分析、为什么还需要使用RPC
RPC并不是一个具体的协议,只是一种协议的规范,它并没有具体实现,只有按照RPC通信协议规范实现的通信框架,也就是RPC框架,才是协议的具体实现,它包括了:接口规范+序列化反序列化规范+通信协议等。现在狭义的RPC一般指一些用IDL(Inteface Description Language)描述接口, 然后生成stub的框架, 比如grpc,thrift,dubbo等,其中grpc,dubbo3.0的传输用的都是HTTP2.0,也已经属于RPC和HTTP的融合体了,这种融合体的设计使得开发人员可以享受到H
2023-07-14 21:04:35
7341
6
原创 Go语言网络编程:HTTP服务端之底层原理与源码分析——http.HandleFunc()、http.ListenAndServe()
在 Golang只需要几行代码便能启动一个 http 服务,在上述代码中,完成了两件事:- 调用 http.HandleFunc 方法,注册了对应于请求路径 /ping 的 handler 函数- 调用 http.ListenAndServe,启动了一个端口为 8999 的 http 服务
2023-07-08 17:02:28
3345
1
原创 网络编程:TCP粘包问题——各层粘包/拆包、Nagle 算法、Go实现长度字段协议解决TCP粘包、使用TCP的应用层协议设计
需要注意的是,即使是连续发送大量数据,在正常的网络环境和合理的数据处理方式下,TCP通常可以保持数据包的完整性和顺序,不会出现粘包。当发送方过于迅速发送数据而使接收方无法跟上或处理不当,此时**可能**发生粘包问题。注意,TCP粘包问题并非TCP协议设计上的缺陷,而是由于TCP协议的数据传输特性和网络条件的影响所致。解决TCP粘包问题通常需要应用层协议设计或使用特定的数据分隔方式来确的数据传输和解析。长度字段协议(Length-Field Protocol):发送方在每个数据包前部添加一个表示数据包长度的字
2023-07-04 19:57:26
4292
原创 Go语言网络编程:Go实现简单的内网穿透
内网穿透是一种通过互联网建立远程连接到私有网络(内网)中设备的技术。通常情况下,内网设备由于位于一个受限制的网络环境中,无法直接从外部访问。内网穿透通过将内网设备的流量转发到公共网络上的服务器,然后再将该流量转发到客户端,从而实现与内网设备的通信。
2023-06-27 16:49:05
3410
7
原创 K8s(Kubernetes)学习(三):pod概念及相关操作
Pod 是可以在 Kubernetes 中创建和管理的、最小的可部署的计算单元。Pod(就像在鲸鱼荚或者豌豆荚中)是一组(一个或多个)容器; 这些容器共享存储、网络、以及怎样运行这些容器的声明。 Pod 中的内容总是并置(colocated)的并且一同调度,在共享的上下文中运行。简言之如果用 Docker 的术语来描述,Pod 类似于共享名字空间并共享文件系统卷的一组容器。
2023-06-27 11:16:00
5139
1
原创 K8s(Kubernetes)学习(二):k8s集群搭建
k8s集群搭建方式1.minikube2.裸机安装3.直接用云平台Kubernetes4.k3s搭建
2023-06-27 10:37:02
2773
1
原创 内网穿透工具cpolar——将内网站点发布至公网、远程连接公司内网电脑
在现代互联的时代,我们经常需要将局域网中的服务器或提供给外部网络进行访问。然而,由于内网通常使用私有IP地址,在没有合适的配置和设置的情况下,对外部网络是不可见的。这就引出了技术,它允许我们在不暴露真实下,访问局域网中的资源。在本篇博客中,我将介绍一个功能强大且易于使用的内网穿透工具:cpolar是一种安全的内网穿透云服务,它将内网下的本地服务器通过安全隧道暴露至公网。使得公网用户可以正常访问内网服务。接下来,我将详细介绍CPolar的特点、使用方法以及内网穿透的应用。
2023-06-25 16:36:06
1911
原创 Channel通道使用进阶:通道关闭原则、生产者消费者问题、高并发map
在进行Channel通道使用之前,先根据总结有缓冲型channel使用的情况,若对下表有疑问可以前往Golang Channel 实现原理与源码分析进行阅读,如下所示:对一个已关闭的通道,进行关闭对一个已关闭的通道,写入数据在多生产者单消费者问题中,我们可以看到我们并没有对业务通道进行关闭,我们只是在给业务通道中写入数据前判断信号通道是否关闭,如果信号通道已经关闭,则直接返回,而不向业务通道中写入数据,因此业务数据并没有关闭,那么就不会引起panic。
2023-06-13 15:01:43
2417
原创 Golang context 实现原理与源码分析
context实际上只定义了接口,凡是实现该接口的类都可称为是一种context,官方包中实现了几个常用的context,分别可用于不同的场景;- cancelCtx实现了Context接口,通过`WithCancel()`创建cancelCtx实例;- timerCtx实现了Context接口,通过`WithDeadline()`和`WithTimeout()`创建timerCtx实例;- valueCtx实现了Context接口,通过`WithValue()`创建valueCtx实例;
2023-06-09 11:47:08
1559
原创 算法套路十九——树形DP
树形 DP,即在树上进行的 DP。由于树固有的递归性质,这里的DP是指是一种通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法,故虽然带有DP,但一般都是通过来进行。
2023-06-04 19:48:55
2116
原创 Golang Channel 实现原理与源码分析
安全访问共享变量是并发编程的一个难点,在 Golang 语言中,倡导通过通信共享内存,实际上就是使用 channel 传递共享变量,在任何给定时间,只有一个 goroutine 可以访问该变量的值,从而避免发生数据竞争。本文关键是对Channel 实现原理进行分析,并附带源码解读,基于源码分析能更加理解Channel实现的过程与原因,对于源码关键步骤及变量给出了注释,不需要完全读懂源码的每个变量及函数,但可以从代码的异常处理角度来理解Channel,就能明白为什么channel的创建、写入、读取、关闭等流
2023-06-02 17:03:16
1744
1
原创 Docker容器核心技术:Linux命名空间Namespaces、控制组cgroups、联合文件系统UnionFS
Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,namespace,以及 OverlayFS 类的 Union FS 等技术,对进程进行封装隔离,属于 操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。
2023-05-30 16:51:42
1954
原创 GO语言并发编程入门:Goroutine、Channel、Context、并发安全、GMP调度模型
并发:多线程程序在一个核的cpu上运行。并行:多线程程序在多个核的cpu上运行。由上可知并发不是并行,并行是直接利用多核实现多线程的运行,并发则主要由切换时间片来实现”同时”运行,go可以设置使用核数,以发挥多核计算机的能力。Go语言之所以被称为现代化的编程语言,就是因为它在语言层面已经内置了调度和上下文切换的机制。Go语言的并发编程特点主要体现在Goroutine协程和Channel通道的使用上。Goroutine协程:Goroutine是Go语言中的并发执行单位。
2023-05-25 15:24:41
1488
1
原创 Go语言网络编程入门:TCP、HTTP、JSON序列化、Gin、WebSocket、RPC、gRPC示例
在本文中,我们将介绍Go语言中的网络编程的不同方式,包括TCP、HTTP、Gin框架、WebSocket、RPC、gRPC的介绍与连接实例,并对所有示例代码都给出了详细的注释,最后对每种模式进行了总结。
2023-05-19 16:08:42
4020
原创 算法套路十七——买卖股票问题:状态机 DP
买卖股票问题是一种典型的状态机 DP问题,设"未持有股票"和"持有股票"两个状态,每个节点表示某一状态下的最大收益,相邻节点之间的边表示在当前状态下进行一次交易得到的收益。
2023-05-17 20:32:47
1339
原创 算法套路十六——DP求解最长递增子序列LIS
给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。
2023-05-15 20:58:15
1599
原创 K8s(Kubernetes)学习(一):k8s概念及组件
而Kubernetes就是一个开源容器集群管理系统,可以在物理或虚拟机的Kubernetes集群上运行容器化应用,提供一个以“容器为中心的基础架构”,实现容器集群的自动化部署、自动扩缩容、维护等功能。在生产环境中, 需要管理运行着应用程序的容器,并确保服务不会下线。 例如,如果一个容器发生故障,则你需要启动另一个容器。 这就可以交给Kubernetes ,它提供了一个可弹性运行分布式系统的框架。Kubernetes 可以通过一个命令为你提供集中式的管理集群机器和应用,加机器、版本升级、版本回滚。
2023-05-14 18:27:08
5340
原创 算法套路十五——动态规划求解最长公共子序列LCS
给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0。一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。例如,“ace” 是 “abcde” 的子序列,但 “aec” 不是 “abcde” 的子序列。两个字符串的 公共子序列 是这两个字符串所共同拥有的子序列。
2023-05-11 19:21:25
2673
原创 初学GoLang易错点
在Go语言中,变量的定义语法与其他编程语言不同,需要注意变量类型在变量名之后如,而不是在变量名之前。你可以使用var关键字声明一个变量,然后使用等号分配一个值。你也可以使用短变量声明(:=)来声明并初始化一个变量,这种语法可以自动推断变量类型,因此你不需要显式地指定变量类型。但是,短变量声明只能在函数内部使用。x := 10另外,Go语言还支持多个变量的声明和初始化。
2023-05-08 18:32:18
1131
1
原创 算法套路十四——动态规划之背包问题:01背包、完全背包及各种变形
0-1背包:有n个物品,第i个物品的体积为w[i],价值为v[i],每个物品至多选一个, 求体积和不超过capacity时的最大价值和,其中i从0开始。
2023-05-01 20:16:33
2900
原创 算法套路十三——动态规划DP入门
动态规划和递归都是通过将大问题分解为较小的子问题来解决问题。它们都可以用来解决具有重叠子问题和最优子结构特性的问题。在很多情况下,。
2023-04-27 18:17:02
1490
中国信通院:人工智能研发运营体系 (MLOps)实践指南
2023-09-06
Fabric-explorer部署的json附件
2023-06-30
华科软件考研复试真题.zip
2023-01-06
SSM项目部署服务器全套资源
2022-04-14
Android 数据库编程SQLite实现学生信息管理应用
2021-06-09
基于Java的愤怒的小鸟游戏的设计与实现.zip.zip
2021-06-08
基于ssm的在线问答系统
2021-06-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人