TStor CSP文件存储在大模型训练中的实践
业务背景
大模型作为人工智能领域的重要发展趋势,正在逐渐改变人们的生活和工作方式。随着近年来大模型领域技术的突破,各类语言模型、图像模型、视频模型快速演进,国内外市场也不断涌现出优秀的大模型研究及商业化平台,预期通过对模型效果的持续优化和产品方案层面的持续包装,共同推动推动国内各行各业的产业升级。
在大模型技术的快速演进中也暴露了若干挑战。比如聚焦在大模型平台的存储领域,如何管理海量的大模型训练物料、如何提升存储系统的性能、如何做好数据安全和信息合规等等,这些问题已成为领域内的火热话题,也成为了国内大模型工程领域能否更上一层楼的关键因素。
本文围绕了大模型训练的存储场景,分享TStor CSP作为腾讯内外部大模型训练场景的存储底座的心得和最佳实践。
TStor CSP大模型存储解决方案架构
在大模型预训练阶段,工程平台会围绕海量语料从零开始进行无监督的训练,通过迭代N个epoch从而得到一个基座大模型;业务通过对基座模型进行有监督的微调得到满足业务场景的专业模型。在这个过程,TStor CSP作为大模型工程平台的存储底座,支持了语料的存储和读取、CheckPoint的写入和清除等操作环节,并提供百GB级别的读写带宽和高可用性。
下图描述了训练过程中算力节点和存储集群的主要的交互路径。

【图1. 训练架构】
在整个训练过程中,我们从如下几个方面进一步剖析TStor CSP的实现方案:
一、高速读写CheckPoint
对于大模型分布式训练任务来说,模型CheckPoint的读写是训练过程中的关键路径。在训练过程中,模型每完成一个 epoch迭代就有需要对CheckPoint进行保存。在这个CheckPoint保存过程中,GPU算力侧需要停机等待。这对于CheckPoint是否能快速写入存储系统提出了很高的挑战。换而言之,如果文件写入慢了,GPU停机等待时间就会拉长,平台整体工作的效率就会被拉低。
而在TStor CSP所支持的案例中,对于175B参数的大模型,其CheckPoint文件总大小为2TB,TStor CSP文件存储可以在30秒完成CheckPoint文件的写入,顺利地满足了业务的需求。
TStor CSP是如何抗住如此高的性能尖峰呢?这得益于多年来CSP文件存储在存储引擎设计和性能的优化。
分布式存储
存储引擎OSD以分片的方式存储数据,将数据块存储在多个OSD节点上,当业务读写一个文件时,读写请求会分发到多个存储节点并行处理,大大提高了系统的响应速度和处理能力。单个节点的网络带宽和磁盘性能不再成为瓶颈。
负载均衡
存储引擎采用受控复制的分布式hash算法,数据分片的存储位置是计算出来而不是通过去查询元数据服务器;同时也解决了常规hash算法在添加删除存储节点时带来的数据迁移问题。该算法能有效地将数据分片均衡映射到不同的存储节点,从而实现数据的均衡分布;避免节点过载和数据的热点问题。提高系统的性能和吞吐量。
直接管理存储设备
大模型存储设备的磁盘介质都是高容量和高性能的NVMe盘,我们在创建存储池时存储引擎直接管理磁盘,绕过本地文件系统,不再需要把数据分片转化为本地文件系统能够识别的文件。从而使得IO路径大大缩短,提高了存储引擎的读写性能。当集群处于高水位,集群的读写性能并不会衰减,而使用本地磁盘文件系统管理磁盘时,常常会遇到性能衰减问题。
快速数据访问
充分利用大模型存储设备的内存大的优势,通过合理分配文件数据和文件元数据内存占用实现数据的读取和写入加速操作。进一步提高数据访问性能。
二、高可用和高可靠
可用性是存储系统亘古不变的命脉,如果系统稳定性不足,不仅会影响系统连续性,还会造成数据丢失带来的业务风险。在大模型系统中同样如此,存储系统的IO中断或数据丢失会直接影响模型训练效果,严重者会导致近几个epoch任务需要推倒重做,大大影响了业务效率。
在TStor CSP存储方案提供多副本和EC纠删码的数据存储策略,同时支持配置不同的故障域级别(支持节点,机柜,机房等级别的故障域),屏蔽服务器故障、机架级别故障等对存储可用性的影响,保障存储服务高可用。同时,同时提供动态调整数据副本恢复速度的能力,保证业务在读写高峰时不受影响。并且,TStor CSP集群中的各组件也都实现了高可靠,整体系统不存在单点问题。
在耗时几个月的大模型训练过程中,TStor CSP未出现一例故障,严格保障了系统可用性和数据可靠性。
TStor CSP文件系统除了能保证在扩容和故障恢复时业务高可用,同时也提供了很多系统内部检测和诊断的机制,通过及时检测潜在故障并上报告警,通知运维人员及时处理潜在风险。
网络丢包检测
当网络丢包不严重时,集群仍然可用;但网络丢包会导致数据传输的延迟和重传,降低集群性能。丢包严重时,会造成集群震荡影处于亚健康状态。TStor CSP会周期性的检测集群中节点之间的网络丢包情况,及时处理。

【图2. 丢包告警】
慢盘检测
慢盘指的是在存储节点中某些磁盘介质性能较低,读写速度慢。慢盘会对集群造成性能下降,因为慢盘的读写速度慢,它会成为数据读写的瓶颈,导致整个集群的吞吐量和响应时间变差。TStor CSP提供了慢盘检测功能。

【图3. 慢盘告警】
三、强安全保障
大模型的CheckPoint和训练产出结果是业务侧的重要资产,为保证业务数据模型的安全和不同业务目录隔离,TStor CSP提供一系列存储安全相关能力:
● 基于路径的IP白名单管理

【图4. IP白名单】
业务管理员可以在TStor CSP控制台上限制只有特定的IP地址或者IP地址范围访问某个业务路径。
基于路径的keyring管理业务管理员可以在TStor CSP控制台上为某个路径创建出一个用户,TStor CSP为该用户生成一个keyring. 用户就可以凭借该keyring挂载授权的路径。
● 审计日志
通过开启审计日志并上报到智研日志汇,业务可分析日常训练中的异常挂载,客户端对文件系统的修改操作(创建,删除,遍历目录等)。同时为大模型训练场景提供了全量客户端列表保障客户端挂载实时在监控范围内。

【图5. 客户端删除文件日志】
四、海量弹性的容量空间
为了支撑大模型训练的需要,文件存储通常提供PB级别的可容容量来支撑并发的训练任务以及保存历史CheckPoint的需求。TStor CSP提供横向扩展的能力,在业务无感知情况下通过渐进调权的方式进行扩容,添加存储节点动态扩容。
以近期我们遇到的若干大模型客户为例,选用的存储机型的磁盘规格是7.68T*24 大容量磁盘,当集群水位比较高扩容时,涉及大量的数据需要向新节点迁移,对业务有一定影响。TStor CSP产品在最初设计时就考虑了扩容对集群的影响,通过异步渐进调权的方式增加扩容节点磁盘的权重,数据迁移在受控的方式下进行避免对业务造成影响。同时允许配置高峰时段,普通时段高速迁移,高峰期自动减速。

【图6. 集群渐进式扩容流程】
五、可运维性
任何技术都不是万能的,只有设置合理的约束,并搭配便捷的运维管控能力,才能更好地支持业务。TStor CSP在支撑大模型训练场景中不断优化自身的运维管控能力,顺利支持了多套大模型业务的复杂运维需求。
图形化运维
集群创建,扩容以及后期的运维都可以通过在CSP控制台操作完成。

【图7. 存储节点管理】

【图8. 数据恢复速度控制】

【图9. 存储节点磁盘性能数据】
-
告警管理
通过消息网关把集群容量数据和故障告警实时推送到微信和企业微信,保证了故障第一时间呈现出来及时修复;避免故障累积,造成集群不可用。
大模型预训练业务的使用量和配额通过企业微信实时地推送到业务负责人,避免业务因超过配额写入失败,造成训练中断。
未来规划
TStor CSP企业服务已上线多年,目前市场上多个训练平台都已接入TStor CSP 文件存储。
TStor CSP也会在未来持续演进,并在如下方面进行规划和布局:
性能优化:支持海量小文件,超大目录等方面进行优化,提高元数据操作的性能。
成本优化:支持高密,低成本大容量磁盘方面进行优化,降低客户使用的总TCO。
运维优化:更加细致化的状态监控,告警,故障自动修复方面进行迭代,优化运维管理界面的交互体验,降低客户使用的复杂度。
希望TStor CSP可以帮助您进行更好的数据存储和管理,完成存储系统的升级。
相关文章:
TStor CSP文件存储在大模型训练中的实践
业务背景 大模型作为人工智能领域的重要发展趋势,正在逐渐改变人们的生活和工作方式。随着近年来大模型领域技术的突破,各类语言模型、图像模型、视频模型快速演进,国内外市场也不断涌现出优秀的大模型研究及商业化平台,预期通过…...
最用的几个git命令
1、git init 用于初始化一个新的Git仓库。 执行这个命令后,Git会在当前目录下创建一个名为".git"的子目录,其中存储着仓库的所有元数据。 2、git clone 用于克隆一个已存在的仓库。 执行这个命令后,将在本地创建仓库的一个副…...
邮件网关CAC2.0防御并行:提升高校师生邮箱账号的全面安全
客户背景 解民生之多艰,育天下之英才。中国农业大学(以下简称“中国农大”)作为教育部直属高校,先后进入国家“211工程”和“985工程”重点建设的高水平研究型大学,首批入选一流大学建设高校(A类ÿ…...
潮玩IP助力环境保护,泡泡玛特发布行业首款碳中和产品
在今年的2023上海PTS国际潮流玩具展上,泡泡玛特正式发布了首款“碳中和”潮玩产品DIMOO X蒙新河狸手办(下简称DIMOO河狸),通过环保主题与流行文化的联合,让年轻人知道野生动物保护有多种方式,同时以创新的设…...
pytorch分布式数据训练结合学习率周期及混合精度
文章目录 1、SPAWN方式2、torchrun 方式 正如标题所写,我们正常的普通训练都是单机单卡或单机多卡。而往往一个高精度的模型需要训练时间很长,所以DDP分布式数据并行和混合精度可以加速模型训练。混精可以增大batch size. 如下提供示例代码,经…...
Looper分析
Looper分析 在 Handler 机制中,Looper 的作用是提供了一个消息循环 ( message loop ) 的机制,用于处理和分发消息。 Looper 是一个线程局部的对象,每个线程只能有一个 Looper 对象。它通过一个无限循环来不断地从消息队列中取出消息&#x…...
LoongArch单机Ceph Bcache加速4K随机写性能测试
LoongArch单机Ceph Bcache加速4K随机写性能测试 两块HDD做OSD [rootceph01 ~]# fio -direct1 -iodepth128 -thread -rwrandwrite -ioenginelibaio -bs4k -size100G -numjobs1 -runtime600 -group_reporting -namemytest -filename/dev/rbd0 mytest: (g0): rwrandwrite, bs(R)…...
景联文科技语音数据标注:AUTO-AVSR模型和数据助力视听语音识别
ASR、VSR和AV-ASR的性能提高很大程度上归功于更大的模型和训练数据集的使用。 更大的模型具有更多的参数和更强大的表示能力,能够捕获到更多的语言特征和上下文信息,从而提高识别准确性;更大的训练集也能带来更好的性能,更多的数据…...
【R】数据相关性的可视化
一千零一技|相关性分析及其可视化:copy&paste,搞定 .libPaths(c("/bioinfo/home/software/miniconda3/envs/R4.0/lib/R/library")) #data("mtcars") library("PerformanceAnalytics") # pdf("test.pdf") #…...
Spring Security 6.x 系列【68】 授权篇之基于注解 缓存的访问控制方案
有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 3.1.0 本系列Spring Security 版本 6.1.0 源码地址:https://gitee.com/pearl-organization/study-spring-security-demo 文章目录 1. 前言2. 改造思路3. 实现3.1 基础工程3.2 数据库存储用户3.3 自定义3.4 测…...
QML(11)——qml界面之间通信方式详解
目录 一、属性绑定1、直接绑定 property01: property02实例代码 2、条件绑定 Qt.binding实例代码 二、信号传递1、on<Property>Changed实例代码 2、on<Signal>实例代码 3、条件信号传递 connect实例代码 4、Connections 一、属性绑定 属性绑定具有持续性 1、直接…...
图像检索算法 计算机竞赛
文章目录 1 前言2 图像检索介绍(1) 无监督图像检索(2) 有监督图像检索 3 图像检索步骤4 应用实例5 最后 1 前言 🔥 优质竞赛项目系列,今天要分享的是 图像检索算法 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐ÿ…...
科学清理Windows系统垃圾,让你的电脑性能快如火箭
文章目录 1. 使用磁盘清理工具2. 清理临时文件2.1 清理用户临时文件夹2.2 清理系统临时文件夹2.3 清理系统临时文件 3.卸载不需要的程序4. 删除不必要的下载文件5. 清理回收站6. 压缩磁盘7. 删除旧的系统还原点8. 禁用休眠功能9. 定期进行磁盘碎片整理10. 禁用不必要的启动项11…...
docker图形胡界面管理工具--Portainer可视化面板安装
1.安装运行Portainer docker run -d -p 8088:9000 \ > --restartalways -v /var/run/docker.sock:/var/run/docker.sock --privilegedtrue portainer/portainer--restartalways:Docker启动后容器自动启动 -p:端口映射 -v:路径映射2.通过…...
环形链表的约瑟夫问题
前言: 据说著名犹太历史学家Josephus有过如下故事: 在罗马人占领乔塔帕特后,39个犹太人和Josephus及他的朋友躲进一个洞里,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个…...
python requests.get发送Http请求响应结果乱码、Postman请求结果正常
最近在写爬虫程序,自己复制网页http请求的url、头部,使用python requests和postman分别请求,结果使用postman发送http get请求,可以得到正常的json数据,但是使用python的requests发送则接受到乱码,response…...
Dialog动画相关
最近需求一个问题,想要在dialog消失时增加动画,之前如上一个文章中遇到的,但是最后改了实现方式,要求在特定的地方缩放,原来的dialog高度是wrap_content的,这样是无法实现的,因此首先需要将dial…...
【java学习—八】==操作符与equals方法(2)
文章目录 1. 操作符2. equals方法String对象的创建 1. 操作符 (1)基本类型比较值 : 只要两个变量的值相等,即为 true. int a5; if(a6){…} (2)引用类型比较引用 ( 是否指向同一个对象 ): 只有指向同一个对象时&#…...
Linux系统编程_进程间通信第1天:IPC、无名管道pipe和命名管道mkfifo(半双工)、消息队列msgget(全双工)
1. 进程间通信概述(427.1) 2. 管道通信原理(428.2) 进程间的五种通信方式介绍 https://blog.csdn.net/wh_sjc/article/details/70283843 进程间通信(IPC,InterProcess Communication)ÿ…...
figma+windows系统
...
STM32F4基本定时器使用和原理详解
STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...
五年级数学知识边界总结思考-下册
目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...
【Go】3、Go语言进阶与依赖管理
前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课,做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程,它的核心机制是 Goroutine 协程、Channel 通道,并基于CSP(Communicating Sequential Processes࿰…...
Yolov8 目标检测蒸馏学习记录
yolov8系列模型蒸馏基本流程,代码下载:这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中,**知识蒸馏(Knowledge Distillation)**被广泛应用,作为提升模型…...
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...
从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践
作者:吴岐诗,杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言:融合数据湖与数仓的创新之路 在数字金融时代,数据已成为金融机构的核心竞争力。杭银消费金…...
k8s从入门到放弃之HPA控制器
k8s从入门到放弃之HPA控制器 Kubernetes中的Horizontal Pod Autoscaler (HPA)控制器是一种用于自动扩展部署、副本集或复制控制器中Pod数量的机制。它可以根据观察到的CPU利用率(或其他自定义指标)来调整这些对象的规模,从而帮助应用程序在负…...
HTTPS证书一年多少钱?
HTTPS证书作为保障网站数据传输安全的重要工具,成为众多网站运营者的必备选择。然而,面对市场上种类繁多的HTTPS证书,其一年费用究竟是多少,又受哪些因素影响呢? 首先,HTTPS证书通常在PinTrust这样的专业平…...
深度解析:etcd 在 Milvus 向量数据库中的关键作用
目录 🚀 深度解析:etcd 在 Milvus 向量数据库中的关键作用 💡 什么是 etcd? 🧠 Milvus 架构简介 📦 etcd 在 Milvus 中的核心作用 🔧 实际工作流程示意 ⚠️ 如果 etcd 出现问题会怎样&am…...
SQL注入篇-sqlmap的配置和使用
在之前的皮卡丘靶场第五期SQL注入的内容中我们谈到了sqlmap,但是由于很多朋友看不了解命令行格式,所以是纯手动获取数据库信息的 接下来我们就用sqlmap来进行皮卡丘靶场的sql注入学习,链接:https://wwhc.lanzoue.com/ifJY32ybh6vc…...
