【送书活动】大模型赛道如何实现华丽的弯道超车
文章目录
- 导读
- 前言
- AI/ML 模型训练任务对数据平台的需求
- 01 具备对海量小文件的频繁数据访问的 I/O 效率
- 02 提高 GPU 利用率,降低成本并提高投资回报率
- 03 支持各种存储系统的原生接口
- 04 支持单云、混合云和多云部署
- 核心密码
- 01 通过数据抽象化统一数据孤岛
- 02 通过分布式缓存实现数据本地性
- 03 优化整个工作流的数据共享
- 04 通过并行执行数据预加载、缓存和训练来编排数据工作流
- 赠书活动
导读
导读:Alluxio作为一款强大的分布式统一大数据虚拟文件系统,已经在众多领域展现出了其卓越的应用价值,并且为AI/ML训练赋能提供了一个全新的解决方案。
前言
在人工智能(AI)和机器学习(ML)领域,数据驱动的决策和模型训练已成为现代应用和研究的核心。伴随大模型技术迅猛发展,模型训练所需数据的规模不断扩大,数据的处理、存储和传输都面临着巨大的挑战,传统的存储和处理方式已经无法满足实时性和性能需求。同时,不同计算框架之间的数据孤岛问题也制约了数据的有效利用。如何在激烈竞争的大模型赛道脱颖而出,实现华丽的弯道超车,成为了众多参赛选手投入巨大人力、物力不断探索的方向。
AI/ML 模型训练任务对数据平台的需求
而这其中,模型训练成为重中之重。当我们进行模型训练时,需要高效的数据平台架构快速生成分析结果,而模型训练在很大程度上依赖于大型数据集。执行所有模型训练的第一步都是将训练数据从存储输送到计算引擎的集群,而数据工作流的效率会大大影响模型训练的效率。在现实场景中,AI/ML 模型训练任务对数据平台常常有以下几个需求:
01 具备对海量小文件的频繁数据访问的 I/O 效率
AI/ML 工作流不仅包含模型训练和推理,还包括前期的数据加载和预处理步骤,尤其是前期数据处理对整个工作流都有很大影响。与传统的数据分析应用相比,AI/ML 工作负载在数据加载和预处理阶段往往对海量小文件有较频繁的 I/O 请求。因此,数据平台需要提供更高的 I/O 效率,从而更好地为工作流提速。
02 提高 GPU 利用率,降低成本并提高投资回报率
机器学习模型训练是计算密集型的,需要消耗大量的 GPU 资源,从而快速准确地处理数据。由于 GPU 价格昂贵,因此优化 GPU 的利用率十分重要。这种情况下,I/O 就成为了瓶颈——工作负载受制于 GPU 的数据供给速度,而不是GPU 执行训练计算的速度。数据平台需要达到高吞吐量和低延迟,让 GPU 集群完全饱和,从而降低成本。
03 支持各种存储系统的原生接口
随着数据量的不断增长,企业很难只使用单一存储系统。不同业务部门会使用各类存储,包括本地分布式存储系统(HDFS和Ceph)和云存储(AWS S3,Azure Blob Store,Google 云存储等)。为了实现高效的模型训练,必须能够访问存储于不同环境中的所有训练数据,用户数据访问的接口最好是原生的。
04 支持单云、混合云和多云部署
除了支持不同的存储系统外,数据平台还需要支持不同的部署模式。随着数据量的增长,云存储成为普遍选择,它可扩展性高,成本低且易于使用。企业希望不受限制地实现单云、混合云和多云部署,实现灵活和开放的模型训练。另外,计算与存储分离的趋势也越来越明显,这会造成远程访问存储系统,这种情况下数据需要通过网络传输,带来性能上的挑战。数据平台需要满足在跨异构环境访问数据时也能达到高性能的要求。
综上,AI/ML 工作负载要求能在各种类型的异构环境中以低成本快速访问大量数据。企业需要不断优化升级数据平台,确保模型训练的工作负载在能够有效地访问数据,保持高吞吐量和高 GPU 利用率 。

核心密码
Alluxio作为一款强大的分布式统一大数据虚拟文件系统,已经在众多领域展现出了其卓越的应用价值,并且为AI/ML训练赋能提供了一个全新的解决方案,其核心密码有四个方面组成:
01 通过数据抽象化统一数据孤岛
Alluxio作为数据抽象层,可以做到数据无缝访问而不拷贝和移动数据,无论是在本地还是在云上的数据都留在原地。通过Alluxio,数据被抽象化从而呈现统一的视图,大大降低数据收集阶段的复杂性。
由于Alluxio已经实现与存储系统的集成,机器学习框架只需与Alluxio交互即可从其连接的任何存储中访问数据。因此,我们可以利用来自任何数据源的数据进行训练,提高模型训练质量。在无需将数据手动移动到某一集中的数据源的情况下,包括Spark、Presto、PyTorch和TensorFlow在内所有的计算框架都可以访问数据,不必担心数据的存放位置。
02 通过分布式缓存实现数据本地性
Alluxio的分布式缓存,让数据均匀地分布在集群中,而不是将整个数据集复制到每台机器上,如图1所示。当训练数据集的大小远大于单个节点的存储容量时,分布式缓存尤其有用,而当数据位于远端存储时,分布式缓存会把数据缓存在本地,有利于数据访问。此外,由于在访问数据时不产生网络I/O,机器学习训练速度更快、更高效。

如上图所示,对象存储中存有全部训练数据,两个文件(/path1/file1和/path2/file2)代表数据集。我们不在每台训练节点上存储所有文件块,而是将文件块分布式地存储在多台机器上。为了防止数据丢失和提高读取并发性,每个块可以同时存储在多个服务器上。
03 优化整个工作流的数据共享
在模型训练工作中,无论是在单个作业还是不同作业之间,数据读取和写入都有很大程度的重叠。Alluxio可以让计算框架访问之前已经缓存的数据,供下一步的工作负载进行读取和写入,如图2所示。比如在数据准备阶段使用Spark进行ETL数据处理,那么数据共享可以确保输出数据被缓存,供后续阶段使用。通过数据共享,整个数据工作流都可以获得更好的端到端性能。

04 通过并行执行数据预加载、缓存和训练来编排数据工作流
Alluxio通过实现预加载和按需缓存来缩短模型训练的时间。如图3所示,通过数据缓存从数据源加载数据可以与实际训练任务并行执行。因此,训练在访问数据时将得益于高数据吞吐量,不必等待数据全部缓存完毕才开始训练。

虽然一开始会出现I/O延迟,但随着越来越多的数据被加载到缓存中,I/O等待时间会减少。在本方案中,所有环节,包括训练数据集从对象存储加载到训练集群、数据缓存、按需加载用于训练的数据以及训练作业本身,都可以并行地、相互交错地执行,从而极大地加速了整个训练进程。

了解更多Alluxio与AI/ML模型训练传统方案的对比分析,具体性能测试情况,以及来自广泛行业的应用案例,欢迎阅读《分布式统一大数据虚拟文件系统——Alluxio原理、技术与实践》。

赠书活动
- 🎁本次送书1~5本【取决于阅读量,阅读量越多,送的越多】👈
- ⌛️活动时间:截止到2023-9月 28号
- ✳️参与方式:关注博主+三连(点赞、收藏、评论)
转载自:https://blog.csdn.net/u014727709/article/details/132914354
欢迎start,欢迎评论,欢迎指正
相关文章:
【送书活动】大模型赛道如何实现华丽的弯道超车
文章目录 导读前言AI/ML 模型训练任务对数据平台的需求01 具备对海量小文件的频繁数据访问的 I/O 效率02 提高 GPU 利用率,降低成本并提高投资回报率03 支持各种存储系统的原生接口04 支持单云、混合云和多云部署 核心密码01 通过数据抽象化统一数据孤岛02 通过分布…...
opencv dnn模块 示例(16) 目标检测 object_detection 之 yolov4
博客【opencv dnn模块 示例(3) 目标检测 object_detection (2) YOLO object detection】 测试了yolov3 及之前系列的模型,有在博客【opencv dnn模块 示例(15) opencv4.2版本dnn支持cuda加速(vs2015异常解决)】 说明了如何使用dnn模块进行cuda…...
Python提取JSON数据中的键值对并保存为.csv文件
本文介绍基于Python,读取JSON文件数据,并将JSON文件中指定的键值对数据转换为.csv格式文件的方法。 在之前的文章Python提取JSON文件中的指定数据并保存在CSV或Excel表格文件内(https://blog.csdn.net/zhebushibiaoshifu/article/details/132…...
使用IDEA开发Servlet
一、新建工程 二、填写新工程的基本信息 javaee8的项目可以运行在tomcat9 三、配置tomcat 1、编辑server信息 “On frame deactivation”的意思是idea窗口发生切换时。 2、编辑部署信息 war exploded方式,这种方式是以文件夹方式部署的,支持热加载。 …...
腾讯mini项目-【指标监控服务重构】2023-07-21
今日已办 当在Docker容器中运行程序时,可能会遇到使用os.Getpid()函数时出现异常的情况。这是因为Docker容器中的进程隔离机制与宿主机器不同,容器内部的进程可能无法访问宿主机器的进程信息。 要解决这个问题,可以尝试: 使用do…...
Spring MVC里的DispatchServlet(结合Spring官网翻译)
Spring MVC里的DispatchServlet 前言1.Spring Web MVC1.1 DispatcherServlet(中央调度器)1.1.1 Context Hierarchy(上下文层次结构)1.1.2 Special Bean Types(特定的bean类型)1.1.3 Web MVC Config1.1.4 Se…...
数据分享|R语言武汉流动人口趋势预测:灰色模型GM(1,1)、ARIMA时间序列、logistic逻辑回归模型...
全文链接:http://tecdat.cn/?p32496 人口流动与迁移,作为人类产生以来就存在的一种社会现象,伴随着人类文明的不断进步从未间断(点击文末“阅读原文”获取完整代码数据)。 相关视频 人力资源是社会文明进步、人民富裕…...
解决 Axios 跨域问题,轻松实现接口调用
跨域是指访问另外一个域的资源,由于浏览器的同源策略,默认情况下使用 XMLHttpRequest 和 Fetch 请求时是不允许跨域的。跨域的根本原因是浏览器的同源策略,这是由浏览器对 JavaScript 施加的安全限制。 Axios 跨域常见报错 跨域请求被阻止 (…...
Layui快速入门之第十节 表单
目录 一:基本用法 二:输入框 普通输入框 输入框点缀 前置和后置 前缀和后缀 动态点缀 密码显隐 内容清除 自定义动态点缀 点缀事件 三:复选框 默认风格 标签风格 开关风格 复选框事件 四:单选框 普通单选框 自…...
Linux之yum/git的使用
目录 一、yum 1、关于yum 2、yum的操作 ①、yum list ②、yum install ③、yum remove 二、git 1、Linux中连接gitee 2、git的操作 ①git add [文件] ②git commit -m "提交日志" ③git push 3、可能出现的问题 ①配置用户名、邮箱 ②出现提交冲突 ③…...
使用ExcelJS快速处理Node.js爬虫数据
什么是ExcelJS ExcelJS是一个用于处理Excel文件的JavaScript库。它可以让你使用JavaScript创建、读取和修改Excel文件。 以下是ExcelJS的一些主要特点: 支持xlsx、xlsm、xlsb、xls格式的Excel文件。可以创建和修改工作表、单元格、行和列。可以设置单元格样式、字…...
轻量级的Python IDE —— Thonny
现在的开发工具太多了,而且每个开发工具都致力于做成最好用最智能的工具,所以功能越堆越多,越怼越智能。安装这些开发工具比较烧脑,经常需要经过许多配置步骤。作为一个 Python 开发者来说,好多人光是这些配置都要弄半…...
java设计模式之观察者模式
. 基本概念 观察者(Observer)模式中包含两种对象,分别是目标对象和观察者对象。在目标对象和观察者对象间存在着一种一对多的对应关系,当这个目标对象的状态发生变化时,所有依赖于它的观察者对象都会得到通知并执行它…...
掌动智能分享:性能压力测试的重要性与优势
在当今数字化时代,应用程序的性能对于用户体验和业务成功至关重要。为了保证应用程序的高性能和稳定性,性能压力测试成为了不可或缺的环节。在这个领域,掌动智能作为一家专业的性能压力测试公司,正以其卓越的技术与服务࿰…...
C# ppt文件转换为pdf文件
使用第三方插件 Office 实现转换 1.Application方式转换 /// <summary>/// Microsoft.Office.Interop.PowerPoint/// 使用第三方软件 office/// </summary>/// <param name"pptPath">需要转换的ppt文件路径</param>/// <param name"…...
使用Pyarmor保护Python脚本不被反向工程
Python可读性强,使用广泛。虽然这种可读性有利于协作,但也增加了未授权访问和滥用的风险。如果未采取适当的保护,竞争对手或恶意攻击者可以复制您的算法和专有逻辑,这将对您软件的完整性和用户的信任产生负面影响。 实施可靠的安…...
STM32单片机——串口通信(轮询+中断)
STM32单片机——串口通信(轮询中断) 串口通信相关概念HAL库解析及CubeMX工程配置与程序设计常用函数介绍CubeMX工程配置HAL库程序设计(轮询中断)轮询数据收发中断收发数据 固件库程序设计及实现固件库配置流程结构体配置及初始化程…...
Python if语句的嵌套应用
视频版教程 Python3零基础7天入门实战视频教程 有时候业务上有多维度复杂条件判断,我们需要用到if语句的嵌套来实现。 举例:我们在一些游戏网站活动充值的时候,冲100送 20 冲200送50 但是vip用户的话,冲100送 30 冲200送70 代码…...
C++中带默认值的函数参数
C中带默认值的函数参数 如果一直将 Pi 声明为常量,没有给用户提供修改它的机会。然而,用户可能希望其精度更高或更低。如何编写一个函数,在用户没有提供的情况下,将 Pi 设置为默认值呢? 为解决这种问题,一…...
记录一次部署Hugo主题lotusdocs到Github Pages实践
引言 随着开源项目的越来越复杂,项目文档的重要性日渐突出。一个好的项目要有一个清晰明了的文档来帮助大家使用。最近一直有在找寻一个简洁明了的文档主题来放置项目的各种相关文档。最终找到这次的主角:Lotus Docs 基于Hugo的主题。Lotus Docs的样子&…...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...
Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信
文章目录 Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket(服务端和客户端都要)2. 绑定本地地址和端口&#x…...
Proxmox Mail Gateway安装指南:从零开始配置高效邮件过滤系统
💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「storms…...
图解JavaScript原型:原型链及其分析 | JavaScript图解
忽略该图的细节(如内存地址值没有用二进制) 以下是对该图进一步的理解和总结 1. JS 对象概念的辨析 对象是什么:保存在堆中一块区域,同时在栈中有一块区域保存其在堆中的地址(也就是我们通常说的该变量指向谁&…...
【HarmonyOS 5】鸿蒙中Stage模型与FA模型详解
一、前言 在HarmonyOS 5的应用开发模型中,featureAbility是旧版FA模型(Feature Ability)的用法,Stage模型已采用全新的应用架构,推荐使用组件化的上下文获取方式,而非依赖featureAbility。 FA大概是API7之…...
STM32标准库-ADC数模转换器
文章目录 一、ADC1.1简介1. 2逐次逼近型ADC1.3ADC框图1.4ADC基本结构1.4.1 信号 “上车点”:输入模块(GPIO、温度、V_REFINT)1.4.2 信号 “调度站”:多路开关1.4.3 信号 “加工厂”:ADC 转换器(规则组 注入…...
Linux入门(十五)安装java安装tomcat安装dotnet安装mysql
安装java yum install java-17-openjdk-devel查找安装地址 update-alternatives --config java设置环境变量 vi /etc/profile #在文档后面追加 JAVA_HOME"通过查找安装地址命令显示的路径" #注意一定要加$PATH不然路径就只剩下新加的路径了,系统很多命…...
使用VMware克隆功能快速搭建集群
自己搭建的虚拟机,后续不管是学习java还是大数据,都需要集群,java需要分布式的微服务,大数据Hadoop的计算集群,如果从头开始搭建虚拟机会比较费时费力,这里分享一下如何使用克隆功能快速搭建一个集群 先把…...
Java求职者面试:微服务技术与源码原理深度解析
Java求职者面试:微服务技术与源码原理深度解析 第一轮:基础概念问题 1. 请解释什么是微服务架构,并说明其优势和挑战。 微服务架构是一种将单体应用拆分为多个小型、独立的服务的软件开发方法。每个服务都运行在自己的进程中,并…...
【Redis】Redis 的持久化策略
目录 一、RDB 定期备份 1.2 触发方式 1.2.1 手动触发 1.2.2.1 自动触发 RDB 持久化机制的场景 1.2.2.2 检查是否触发 1.2.2.3 线上运维配置 1.3 检索工具 1.4 RDB 备份实现原理 1.5 禁用 RDB 快照 1.6 RDB 优缺点分析 二、AOF 实时备份 2.1 配置文件解析 2.2 开启…...
