“烧钱”的大模型,如何迈过存储这道坎?
几乎每一个行业都在讨论大模型,每一个行业巨头都在训练大模型,人工智能已然进入了大模型主导的时代。
想要占领大模型应用的高地,数据和算力可以说是不可或缺的基石。和算力相关的讨论已经有很多,以至于英伟达的市值在2023年翻了两番。同样不应小觑的还有数据,除了数据量的爆炸性增长,数据的读取、写入、传输等基础性能,开始遇到越来越多的新挑战。
01 “榨干”算力必须迈过的一道坎
在许多人的认知里,训练大模型是一门烧钱的生意。坊间传闻,GPT-4的训练成本高达10亿美元,想要让大模型释放出应有的“魔法”,“涌现”出对答如流的能力,需要一只“独角兽”的前期投入。
再具体一些的话,大模型训练的成本构成中,硬件投资包括算力、运力、存力,其中算力相关硬件投资占比80%。毕竟一颗80GB的A100芯片在国外的定价就高达1.5万美元左右,一个千亿级参数的大模型,往往需要上万颗A100的算力。可在现实的训练过程中,GPU的平均利用率却不足50%,制约因素包括大模型参数需要频繁调优、训练中断后恢复周期长、数据加载速度慢等等。
不客气的说,算力资源闲置的每一分钟都是在燃烧经费,倘若可以进一步提高算力资源的利用率,等于间接降低了大模型的训练成本。要提到算力利用率,必须要迈过的一道坎就是数据读写性能的挑战。
大模型在训练过程中,需要先读取一块数据,在数据读取完成后进行训练,训练过程中会读取下一块数据。如果训练结束时下一块数据没有读取完成,就会造成一定的等待时间。再加上网络波动、算力故障导致的训练中断,即Checkpoint时刻,重启训练会退回到前一个节点,同样会产生算力空置的等待时间。
不那么乐观的是,目前的训练数据通常以图片、文档等小文件的形式存在,意味着在训练过程中需要频繁地读取和写入数据,并且需要支持快速地随机访问。何况大模型训练的原始数据集动辄几十个TB,当前文件系统的小文件加载速度不足100MB/s,无形中限制了整个系统的运转效率。
根据第一性原理,大模型训练时算力利用率低的诱因是海量的小文件,传统存储系统无法高效地处理这些数据,导致加载速度缓慢。大模型训练的效率要达到极致,减少不必要的浪费,必须在数据上下功夫,准确地说,必须要在数据存储性能上进行创新。
而华为在高性能NAS存储上深耕多年,其OceanStor Dorado全闪存NAS拥有业界领先性能,尤其在海量小文件场景,性能做到了领先业界30%。
在openEuler开发者大会2023上,华为还携手openEuler发布了NFS+协议,矛头直指客户端访问OceanStor Dorado NAS的性能,试图通过引入外置高性能并行文件存储系统,缩短大模型训练中的等待时间,尽可能把算力的价值“榨”出来。
02 华为NFS+协议带来的“屠龙术”
揭开华为NFS+协议的“面纱”前,似乎有必要回顾下NFS协议的历史。作为Sun公司在1984年开发的分布式文件系统协议,NFS已经存在了近40年,广泛应用于金融、EDA仿真、话单、票据影像等行业。
只是在时间的推移下,“老将”NFS逐渐暴露出了一些短板。比如传统NFS单个挂载点仅指定一个服务端IP地址,在网口故障或者链路故障场景下,可能出现挂载点无法访问的情况;一端故障时IP无法感知时,仅依靠应用层手动挂载文件系统,双活链路无法自动切换;单个挂载点性能受限于单个物理链路性能,重要业务存在性能瓶颈。
大约在两年前,华为开始了NFS+协议的研发,着力解决传统NFS的不足,最终交出了一份“高可靠高可用”的答卷:
一是可靠性。打个比方的话,传统NFS的客户端和服务端之间仅有一条路,NFS+协议允许单个NFS挂载点使用多个IP进行访问,等于在客户端和服务端之间修了多条路,巧妙解决了传统NFS被诟病的“可靠性”问题。
二是多链路聚合。客户端和服务端之间仅有一条路时,一旦出现事故就会导致交通拥堵;而NFS+协议在选路算法的加持下,实现了单个挂载点在多条链路上均衡下发IO,确保服务端和客户端的数据传输畅通无阻。
三是缓存加速。大模型训练时,需要将元数据缓存到计算节点。传统NFS相对保守,缓存过期的时间比较短。而NFS+协议改善了缓存大小和失效机制,可以让元数据更多、更长时间保存在主机侧,以满足大模型训练的高时延需求。
四是数据视图同步。正如前面所提到的,大模型训练需要快速的随机访问,NFS+协议采用了数据视图同步的方式,大模型训练需要读取某个节点的数据时,直接与对应节点高效地放置和访问数据,找到最优的访问链路。
做一个总结的话,NFS+协议采用了高性能并行文件存储系统的设计,针对海量小文件场景进行了特殊优化,比如多链路聚合、缓存加速、数据视图同步等,均在提升海量小文件的读写性能,最终在大模型训练过程中实现“读写快、少等待”,减少算力的空置时间。
一组Client测试数据印证了NFS+协议的路线正确:相较于传统的文件存储,训练样本小IO随机读性能提升了4倍以上,CheckPoint大文件切片+多路径传输提升了4-6倍的带宽能力,足以满足大模型训练的苛刻要求。
03 数据存储进入到“大模型时代”
某种程度上说,大模型训练催生的数据存储性能要求,不过是文件存储系统加速演变的一个侧面。
直到今天,文件存储的需求仍在不断更新,文件系统的创新也在持续发生,就像大模型训练需求所折射出的演进方向。
要知道,英伟达的一个训练节点,每秒就可以处理2万张图片,每个节点需要8万IOPS,大模型典型配置有是千亿参数千卡,单位时间内对海量小文件的读写频率要求极高。
这恐怕也是华为和openEuler联合发布NFS+协议的原因,市场对于文件系统的创新需求骤然加快,势必会引发头部科技企业围绕数据存储的“军备竞赛”,华为无疑是这场竞赛中冲在最前面的玩家之一。
但对文件存储系统的市场格局稍作了解的话,华为自研NFS+协议,还隐藏着另一重深意。
一方面,Lustre、GFPS、BeeGFS等并行系统的MDS方案,将元数据和文件数据访问分开,仍存在性能和可靠性的瓶颈;而NFS+协议的元数据不再聚焦于某个性能节点,而是分配到集群的所有节点里面,可以在主机侧实现多连接,消除了大模型语境下高频处理小文件的底层瓶颈。
另一方面,站在大多数用户的角度上,NFS+协议可以更好的兼容已有的使用习惯,原先建立在传统NFS上的运维机制和知识体系不作废,文件系统的切换过程更平缓,不用修改操作系统数据面,即可让NAS存储访问性能提升6倍、可靠性提升3倍,以极低的成本拥抱大模型训推浪潮。
无可否认的是,大模型正在从前台的“火热”,转向整个产业链条的协同驱动,数据存储正是其中的关键一环。
在这样的趋势下,行业注意力将从“炼模”一步步转向更高效、更快速的“炼模”,海量小文件的采集和加载性能、算力资源的利用率等指标,将被越来越多的企业所关注,势必会掀起一场化繁为简的文件存储革命。
相关文章:

“烧钱”的大模型,如何迈过存储这道坎?
几乎每一个行业都在讨论大模型,每一个行业巨头都在训练大模型,人工智能已然进入了大模型主导的时代。 想要占领大模型应用的高地,数据和算力可以说是不可或缺的基石。和算力相关的讨论已经有很多,以至于英伟达的市值在2023年翻了…...

UNIX网络编程卷一 学习笔记 第二十九章 数据链路访问
目前大多操作系统都为程序提供访问数据链路层的功能,此功能可提供以下能力: 1.能监视由数据链路层接收的分组,使得tcpdump之类的程序能运行,而无需专门的硬件设备来监视分组。如果结合使用网络接口进入混杂模式(promis…...

WebGIS的一些学习笔记
一、简述计算机网络的Internet 概念、网络类型分类、基本特征和功用是什么 计算机网络的Internet 概念 计算机网络是地理上分散的多台独立自主的计算机遵循约定的通讯协议,通过软、硬件互连以实现交互通信、资源共享、信息交换、协同工作以及在线处理等功能的系统…...

java Spring Boot将不同配置拆分入不同文件管理
关于java多环境开发 最后还有一个小点 我们一般会将不同的配置 放在不同的配置文件中 好处肯定就在于 想换的时候非常方便 那么 我们直接看代码 我们将项目中的 application.yml 更改代码如下 spring:profiles:active: dev这里 意思是 我们选择了dev 环境 然后创建一个文件 …...

Docker(三) 创建Docker镜像
一、在Docker中拉取最基本的Ubuntu系统镜像 搜索Ubuntu镜像 Explore Dockers Container Image Repository | Docker Hub 下载镜像 docker pull ubuntu:22.04 二、在镜像中添加自己的内容 使用ubuntu镜像创建容器 docker run -it ubuntu:20.04 /bin/bash 在容器中创建了一个文…...

Linux操作系统--shell编程(正则表达式)
1..正则表达式概述 正则表达式使用单个字符串来描述、匹配一系列符合某个语法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。在 Linux 中,grep,sed,awk 等文本处理工具都支持通过正则表达式进行模式匹配。 2.常规的匹配操作 3.…...

k8s的service mesh功能有那些
Kubernetes(K8s)的服务网格(Service Mesh)是一种用于管理微服务架构中服务通信、安全性、可观察性等方面的工具集合。服务网格通过将网络和安全功能从应用程序代码中分离出来,帮助简化了微服务的部署和管理。以下是一些…...

【数据库技术】NineData数据复制,加速实时数仓构建
8 月 30 日,由 NineData 和 SelectDB 共同举办的主题为“实时数据驱动,引领企业智能化数据管理”的线上联合发布会,圆满成功举办!双方聚焦于实时数据仓库技术和数据开发能力,展示如何通过强大的生态开发兼容性…...

Kotlin入门1. 语法基础
Kotlin入门1. 语法基础 一、简介二、在Idea创建一个示例项目三、基本语法1. 第一个程序2. 基本数据类型(1) 数字(2) 类型转换(3) 数学运算位运算 (4)可空类型 3. 函数4. 字符串(1) 字符串拼接(2) 字符串查找(3) 字符串替换(4) 字符串分割 5. null 安全的…...

MVCC简介、工作流程、优缺点
目录 简介 相关概念 工作流程 MVCC优缺点 简介 MVCC(Multi-Version Concurrency Control)即多版本并发控制,是通过维护数据的历史版本,从而解决并发访问情况下的读一致性问题 相关概念 读锁: 也叫共享锁、S锁。若…...

pandas由入门到精通-pandas的数据结构
pandas数据分析-pandas的数据结构 pandas 数据结构Series1. 创建Series数组2. 性质3. 索引4. 运算DataFrame1. 创建Df数组2. 性质3.索引4. 对列进行增删改Index Objects本文介绍pandas中一些常用的属性方法的概述,给读者提供快速学习的架构和思路。表格中提供的一些参数方法没…...

jenkins+ssh+Putty构建windows的IIS服务发布
使用JenkinssshPutty发布windows IIS服务 下面是使用Jenkins、SSH和PuTTY实现Windows IIS服务发布的步骤: 在构建服务器上安装Windows SSH服务、PuTTY和7-Zip软件。在部署服务器上也安装Windows SSH服务和7-Zip软件。在构建服务器上使用批处理命令执行编译&#x…...

服务器和普通电脑有何区别?43.248.189.x
简单来讲,服务器和电脑的功能是一样的,我们也可以把服务器称之为电脑(PC机),只是服务器对稳定性与安全性以及处理器数据能力有更高要求,比如我们每天浏览一个网站,发现这个网站每天24小时都能访…...

Zookeeper的使用
一、Zookeeper简介 分布式协调框架,小型的树形结构数据共享储存系统。 zookeeper的应用场景 集群管理 注册中心 配置中心 发布者将数据发布到ZooKeeper一系列节点上面,订阅者进行数据订阅,当数据有变化时,可及时得到数据的变…...

【实用 Python 库】使用 XPath 与 lxml 模块在 Python 中高效解析 XML 与 HTML
在今天的信息时代,数据无处不在,从网络爬虫到数据挖掘,从文本处理到数据分析,我们时常需要从结构化文档中提取有用的信息。XPath 是一门强大的查询语言,它可以在 XML 与 HTML 等文档中定位特定的元素与数据。而在 Pyth…...

数据库的基本概念
数据库 数据库由表集合组成,它是以一定的组织方式存储的相互有关的数据集合。 表:记录:行,字段(属性):列,以行列的形式就组成了表(数据存储在表中)。 关系数…...

无涯教程-Android - 环境设置
您可以从Oracle的Java网站下载最新版本的Java JDK-Java SE下载,您将在下载的文件中找到有关安装JDK的说明,按照给定的说明安装和配置安装程序。最后,将PATH和JAVA_HOME环境变量设置为引用包含 java 和 javac 的目录,通常分别是java_install_dir/bin和java_install_d…...

将 ChatGPT 与 ReactJS 集成以实现更智能的对话界面
在本博客中,我们将探讨如何使用 Kommunicate 平台将 ChatGPT 与 ReactJS 集成,从而更轻松地在网站上部署和管理聊天机器人。 随着技术世界的不断发展,聊天机器人已成为许多企业不可或缺的一部分,提供高效、个性化的客户交互。在众多可用的人工智能聊天机器人解决方案中,C…...

关于xml中返回string类型代码中用list接收的问题,扫描
1.结论,xml中返回为string的话,在list中只会取出来第一个元素 //根据value查询GetMapping("getTest")public List<HashMap> getTest() {List<HashMap> list dictService.getTest();return list;} <select id"getTest" resultType"jav…...

【前端demo】CSS border-radius可视化 原生实现
文章目录 效果原理代码 前端demo系列目录:https://blog.csdn.net/karshey/article/details/132585901 效果 参考: Fancy Border Radius Generator (9elements.github.io) https://border-radius.com/ CSS border-radius 新玩法(含可视化生成工具) - …...

Qt Creator使用Clang Format方法
Qt Creator使用Clang Format 习惯性的想格式化代码,发现Qt Creator默认居然是没有代码格式化的,只有一个缩进。 Qt Creater中有个插件:beautifier,在"帮助->关于"插件中,开启“Beautifier”即可…...

智慧矿山2.0:煤矿智能化综合管理AI大数据监管平台建设方案设计
一、行业背景 能源与煤矿是我国国民经济的重要物质生产部门和支柱产业之一,同时也是一个安全事故多发的高危行业,施工阶段的现场管理对工程成本、进度、质量及安全等至关重要。煤矿智能化既是未来趋势,更是产业发展需求,建设智慧…...

Linux——(第一章)Linux的入门
VMwear workstations下载及安装 Ubuntu server 18.04安装 VScode下载与安装 使用VS Code连接远程服务器 MobaXterm的下载安装及远程连接 Filezila的下载、安装与使用(向服务器传输文件) 目录 1.概述 2.Linux和Windows的区别 3.VM的安装与使用 1.概述 …...

十六、策略模式
一、什么是策略模式 策略(Strategy)模式的定义:该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于对象行为模式,它通过对算法…...

Python装饰器
什么是python装饰器? 顾名思义,从字面意思就可以理解,它是用来"装饰"Python的工具,使得代码更具有Python简洁的风格。换句话说,它是一种函数的函数,因为装饰器传入的参数就是一个函数࿰…...

【Spring】使用自定义注解方式实现AOP鉴权
AOP,是一种面向切面编程,可以通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。 在软件开发中,鉴权(Authentication)是一项非常重要的安全措施,用于验证用户身份和权限。在应用程序中&…...

Go几种读取配置文件的方式
比较有名的方案有 使用viper管理配置[1] 支持多种配置文件格式,包括 JSON,TOML,YAML,HECL,envfile,甚至还包括Java properties 支持为配置项设置默认值 可以通过命令行参数覆盖指定的配置项 支持参数别名 viper[2]按照这个优先级(从高到低&am…...

每日一题(反转链表)
每日一题(反转链表) 206. 反转链表 - 力扣(LeetCode) 思路: 可以定义一个新的newhead结构体指针。再定义cur指针和next指针互相配合,将原链表中的节点从头到尾依次头插到newhead链表中,同时更…...

某人事系统架构搭建设计记录
首发博客地址 https://blog.zysicyj.top/ 先大致列一下基础情况 架构必须是微服务 场景上涉及大量查询操作,分析操作 存在临时大量写入的场景 并发并不高 对高可用要求较高,不能挂掉 对安全要求高 要能过等保测试等三方测试 使用人数并不多,十…...

uniapp 实现切换tab锚点定位到指定位置
1.主要使用uniapp scroll-view 组件的scroll-into-view属性实现功能 2.代码如下 <scroll-view:scroll-into-view"intoView"><u-tabsclass"tabs-list"change"tabChange":list"tabList"></u-tabs><view id"1&…...