内容介绍
一、对象存储是AI业务创新数据基石
二、AI场景下对象存储实践方案
三、国内主售地域默认吞吐提升至100Gbps
四、OSS常用工具介绍
本次介绍AI场景下对象存储相关使用。介绍分为两部分,先介绍典型数据流程,接下来介绍相关工具使用和实践。
首先介绍OSS。
一、对象存储是AI业务创新数据基石
OSS是目前在整个云上存储成本最低,弹性最强存储服务,对象存储除AI,云上存储或云上数据湖都是用对象存储来作为他们云上数据数据技术,在ADC大家更多用NAS时或者是hdfs。
在云上,OSSfs是绕不过去的存储系统。近几年AI发展使得大部分客户在AI领域都使用多种存储系统,包括NAS以及OSS等系统来进行组合,这么做主要是因为OSS是它以前拥有低存储成本,但是客户在使用当中会有高性能要求,它通常会将它大量数据存储在非常存储,它需要某一部分数据,它在根据它迁移业务,将它迁移到其它存储系统,比如NAS,AI训练在其它存储系统方面来运行。
但随着近几年AI技术发展,对数据需求增长,AI运行出数据规模呈指数型增长,再进行数据搬迁,能效比就并不相配。近一两年,接触到客户显现出趋势,越来越多会倾向于直接在对象存储存储和使用数据,尽量减少在不同系统之间搬迁,对象存储是希望将它作为以后在云上AI训练或者推理服务数据基石。
二、AI场景下对象存储实践方案
介绍在整个AI场景整个数据流中对象存储如何发挥自身作用。数据获取阶段,大部分客户使用对象存储,比如像其他存储服务或者是别系统,rpc上传不方便。对象存储它接口是HTTP,它能很方便通过手机或者微博端将数据上传到对象存储来,并且对象存储还提供跨类型数据复制能力,在海外或是在北京,数据可以很容易将它复制到香港,或者是复制到上海等等,GPU集群集中某区域来方便使用。
在数据预处理,很多客户更倾向于采用大数据处理一套流程来处理AI数据,也考虑到客户老系统使用情况,像很多客户,他可能比如SDK是从以前IDC迁移上,他可能更倾向于使用HDFS这种接口,在对象存储也提供两种结构,一种是对象存储API,另外是跟H点开始兼容API,客户在使用大数据程序进行数据预处理时,会进行选择。
如ClickHouse系统,它天然能够直接使对象存储在云上,并使用OSS SDK。像以前老版本,还有Spark老版本,其HDFS接入性更好,可使用sdk做到平滑牵引。在数据处理方面,客户处理完会将处理完数据写回对象存储,用于后面训练进行使用。
在训练阶段,推荐两种使用方式给,一种是OSS sdk,像用很多PyTorch,就用python OSS Pythonsdk,在使用OSS python sdk时,其是基于语言开发,效率不高,客户需要更多CPU核心数才能够将它数据下载能力给他打。另外后面会推出OSS connector for AI and ml,是一种PyTorch库。它作用跟OSS sdk主要区别是主要有两个,主要都是为提高性能。他将在训练阶段,数据下载速度提升,在训练阶段,有些视频下载时,在OSS sdk,整个文件通过单流HTTP下载下来,但connector可以将文件切成多个部分,比如100兆文件,它可以通过编排将每个其中10兆来提高下载速度。
如果在以前PyTorch客户必须要自己来做视频。第二它在 io做优化,在OSS connector基于操作系统不同,它会基于aio实现异步,它对客户端资源开销会更好。在训练阶段倾向于客户使用OSS connector for AI and ml,作为新开发程序,在8月中旬会有正式推出,到时欢迎大家来进行使用,目前已经开发完毕。在训练阶段,CHECKPOINT通常还是会写入NFS力量,因为CHECKPOINT时间越久,训练集训gpu闲置时间会更长,它对写吞吐要求特别高。
目前,大部分客户还是会将他多轮训练操作CHECKPOINT写入NFS,最终结果是会返回到OSS作为整体数据部分。后面是验证和微调阶段,如果是只是对模型进行验证和微调,可以选择connector或者是ossfs。ossfs主要特点它能够将oss模拟层一哥盘,在机器可以通过接口来访问数据,缺点:它qts会有放大,它不太适合大规模在训练阶段使用,比如平时在外面看到很多会讲 AI训练对qps要求高,它逻辑是训练图片要通过结合,原数据操作特别多,通常倾向形成结论,在训练阶段,它qps要求会特别大,但OSSFS它模拟接口,它qps最后都会反映到对象存储方面,像connector对qps进行优化,比如open与close操作对对象存储都是没有这种接口,connector也不会做这种操作,它整体来qps会比各种Fs系统会低很多,性能会更好。
最后是模型进行进行推理,不涉及到多文件加载和操作。给大家推荐两个工具,OSS fs,OSSSDK以及ossutil也可以在推理阶段来进行使用。它都主要需要要尽快将模型加载到阶梯来,要求具备大下载带宽。OSS提供能力主要分为三个部门,第一是数据获取和数据预处理阶段,主要是便捷上传以及兼容,对大数据处理数据湖程序进行处理,让客户更好对接。
在训练阶段主要要求弹性能力。OSS横向扩展能力很强,100兆视频文件下载,可以给它切成10个请求,要求后端请求要有很高横向扩展能力。推理和微调阶段,要求加载速度会快,同时也支持file-like接口,便于客户进行小规模文件使用。
三、国内主售地域默认吞吐提升至100Gbps
随着数据量增加,训练对带宽需求越来越大,但对延迟需求,在大数据量情况下,对延迟需求并不高,在国内oss主要优化手段是提升整体吞吐。像在国内主要区域,北京,上海,杭州和深圳。在低维度账号级贷款流控都是默认100g,随便在这几个大区去开个账号,很高并发都能够达到100GB吞吐。在训练以及包括以前对延迟不敏感分析业务,效果是明显。
四、OSS常用工具介绍
主要是介绍整个流程几种工具,从工具挑选两种用于后面大家做实验实操。
大致介绍各个工具特点。首先是OSSutil,它是命令行工具,通常是用来做数据牵引,实验可能会想到将它下载到本地来进行使用,OSS,它没有文件夹这种概念,它都是对象,oss文件夹是模拟出来。OSSutil它可以将模拟出来文件数据整个给sink或者是copy到本地,或者数据桶,让做实验时进行数据下载更方便。
另外一种ossutil用法,真实存在客户会运用ossutil来下载模型,将模型下载到本地后,再通过其它系统从本地加载系统,典型是stable diffusion variable ui,默认加载就只能从本地加载。如果要在stable diffusion variable ui做实验,除非自己去改它源码,其中最好最方便方式通过ossutil将模型或者数据下载到本地来做实验。
Ossfs它特点能够提供文件接口,比如产品化组件,它提供完整整条链路从模型开发到训练,到最后微调整个链路,它就会集成这种Fs结构,当然它用不是OSS,这边上它是类似另外系统,它是原理是类似,让客户在训练时写程序和他在推理时是体验是一模一样,对象存储作为本地磁盘来使用,怎么实验,到时训练时就怎么用,包括推理之后就怎么用,体验会一致。
第三个是oss-python sdk。在PyTorch框架用非常多,做AI领域中大型客户,追求性能,通常不会使用OSSfs,会使用oss-python sdk但是需要强大开发能量,它需要客户自己进行封装,包括文件切片封装,才能达到好性能。
第四个python sdk提供更好用接口,并且加强数据下载性能。OSS connector for AI and ml 不用挂载,是库。它优势在于能挂载。它是直接可以在作 sdk使用,在云上使用时感觉会更云原生,在微调和线上训练阶段,性能也会更好。
最后两个工具分别是oss-gosdk以及 oss-go sdkv2。这两个工具主要区别是使用上区别,性能上差别不大。机器学习特殊领域,比如基因检测数据文件通常都会特别大,客户通常不是很解OSS sdk特性。接口特性不了解,就会拿sdk来进行直接上传下载。在v 2版本相比sdkv1版本,对客户生物数据进行大量下载时,性能会更好,原因是因为它做并发下载工作。在v2它会自动将5个g描述DNA序列文件,将它拆分成50兆左右大小,并发通过高并发数据方案,将数据下载达到更好性能。
1、ossfs
重点介绍可能后续实验当中会用到工具。
使用方式主要有三种,第一种默认模式,它默认模式是在原理是,客户去下载,它会将下载数据默认临时缓存在本地,关闭时清理。默认模式是落盘,数据要先写到本地磁盘。
第二种缓存模式,跟刚才默认模式相同,但是在关闭时没有清理,将数据留在磁盘,等待下次做重复访问时,它会从磁盘来一次,这两个模式,它都是受本地磁盘性能影响,在阿里云盘性能是有限,跟盘类型有关,比如P20和pl1性能是不一样,通常性能差可150兆左右,性能就跟盘能力直接相关。
第三个模式自动模式,为避免性能受磁盘影响自动模式,它不落盘,它会直接将下载数据来缓存到内存,关闭时再从内存将它释放掉,避免磁盘影响,在连续下载大文件,直读模式效果很好。
对OSSFS模型加载性能方面也做优化,分别对5.6gCKPT和8.5GSafeTensor模型做加载测试。相比于1.9.1不支持直读和1.9.3支持直读这种模式,性能能够提高3~4倍左右性能。
2、 Python SDK
客户可以自己来通过并发化装sdk来提高它性能。一组简单测试数据表明在10个并发时和1个并发时, SDK性能平均带宽是有实力提升,峰值带宽有6倍,对于客户开发以及维护能力有一定要求。
3、Python connector
Python connector将需要客户自己做操作,将它封装,跟S3类似。今年,8月中旬也会有OSS connector,它主要部分提高速度,避免数据挂载。这里有OSS是常见工具相关资料, OSS作为主要工具是开源,可以在github看代码,或是自己有特殊修改或者是有更好意见也可以提供。以上本次课程全部内容。