【数据湖加速篇】 —— 如何利用缓存加速服务来提升数据湖上机器学习训练速度

简介: JindoFS提供了一个计算侧的分布式缓存系统,可以有效利用计算集群上的本地存储资源(磁盘或者内存)缓存OSS上的热数据,从而减少对OSS上数据的反复拉取,消耗网络带宽。

背景介绍

近些年,机器学习领域快速发展,广泛应用于各行各业。对于机器学习领域的从业人员来说,充满了大量的机遇和挑战。Tensorflow、PyTorch等深度学习框架的出现,使开发者能够轻松地构建和部署机器学习应用。随着近些年云计算技术的不断成熟,越来越多的人接受将他们的开发、生产服务搬到云上平台,因为云环境在计算成本、规模扩展上比传统平台有显著的优势。云上平台为了达到弹性、节约成本,通常采用计算存储分离的解决方案。使用对象存储构建数据湖,可以降低成本、存储海量数据。在机器学习这个场景下,尤其适合将训练数据存储在数据湖上。

将训练数据存储在数据湖上具有以下优势:

1.不需要将数据提前同步到训练节点。传统方式,我们需要将数据提前导入到计算节点的本地磁盘。而如果将数据存储在对象存储上,我们可以直接读取数据进行训练,减少准备工作。

2.可以存储更大的训练数据,不再受限于计算节点本地磁盘大小。对于深度学习,拥有更多的数据,往往能取得更好的训练效果。

3.计算资源可以弹性扩缩容,节约成本。机器学习通常使用使用更多核数的CPU或高端GPU,较为昂贵,对象存储的成本就相对较低。将训练数据存储在数据湖上,可以与计算资源解耦。计算资源可以按需付费,随时释放,达到节省成本的目的。

然而,这种方式同时存在着一些问题和挑战:

1.远端拉取数据的延迟和带宽无法随着计算资源线性扩展。硬件计算能力在不断发展,利用GPU进行计算可以取得更快的训练速度。使用云上弹性计算ECS、容器服务可以快速调度起大规模的计算资源。访问对象存储需要走网络,得益于网络技术的发展,我们访问对象存储有一个高速网络,即便如此,对象存储的网络延时和带宽无法随着集群规模线性扩展,可能会成为瓶颈,限制了训练速度。在计算存储分离架构下,如何高效地访问到这些数据,成为了一个巨大的挑战。

2.需要更加便捷的通用的数据访问方式。深度学习框架如TensorFlow对于GCS、HDFS支持较为友好,而对于诸多第三方对象存储的支持上较为滞后。而POSIX接口是一种更自然友好的方式,使用类似于本地磁盘一样的方式访问数据,大大简化了开发者对存储系统的适配工作。

为了解决数据湖上机器学习训练常规方案存在的上述问题,JindoFS 针对这种场景提供了缓存加速优化方案。

基于JindoFS缓存加速的训练架构方案

JindoFS提供了一个计算侧的分布式缓存系统,可以有效利用计算集群上的本地存储资源(磁盘或者内存)缓存OSS上的热数据,从而减少对OSS上数据的反复拉取,消耗网络带宽。

6.png

内存缓存

对于深度学习,我们可以选择计算能力更强的GPU机型,来获取更快的训练速度。此时需要高速的内存吞吐,才能让GPU充分跑满。此时我们可以使用JindoFS基于内存搭建分布式高速缓存。当整个集群的所有内存加起来足以支撑整个数据集时(除去任务本身所需内存量),我们就可以利用内存缓存以及本地高速网络,来提供高的数据吞吐,加快计算速度。

磁盘缓存

对于一些机器学习场景,训练数据的规模超过了内存所能承载的大小,以及训练所需的CPU/GPU能力要求没有那么高,而要求数据访问有较高的吞吐。此时计算的瓶颈会受限于网络带宽压力。因此我们可以搭建使用本地SSD作为缓存介质的JindoFS分布式缓存服务,利用本地存储资源缓存热数据,来达到提高训练速度的效果。

FUSE接口

JindoFS包含了FUSE客户端,提供了简便的、熟悉的数据访问方式。通过FUSE程序将JindoFS集群实例映射到本地文件系统,就可以像访问本地磁盘文件一样,享受到JindoFS带来的加速效果。

实战:搭建Kubernetes + JindoFS + Tensorflow训练集群

1、创建kubernetes集群

我们前往阿里云-容器服务,创建一个Kubernetes集群。

7.png

2、安装JindoFS服务

2.1 前往容器服务->应用目录,进入“JindoFS”安装配置页面。

8.png

2.2 配置参数

完整的配置模板可以参考容器服务-应用目录-jindofs安装说明。
配置OSS Bucket和AK,参考文档使用JFS Scheme的部署方式。我们需要修改以下配置项:

jfs.namespaces: test
jfs.namespaces.test.mode :  cache
jfs.namespaces.test.oss.uri :  oss://xxx-sh-test.oss-cn-shanghai-internal.aliyuncs.com/xxx/k8s_c1
jfs.namespaces.test.oss.access.key :  xx
jfs.namespaces.test.oss.access.secret :  xx

通过这些配置项,我们创建了一个名为test的命名空间,指向了chengli-sh-test这个OSS bucket的xxx/k8s_c1目录。后续我们通过JindoFS操作test命名空间的时候,就等同于操作该OSS目录。

2.3 安装服务

8.png

1.验证安装成功

# kubectl get pods
NAME                               READY   STATUS      RESTARTS   AGE
jindofs-fuse-267vq                 1/1     Running     0          143m
jindofs-fuse-8qwdv                 1/1     Running     0          143m
jindofs-fuse-v6q7r                 1/1     Running     0          143m
jindofs-master-0                   1/1     Running     0          143m
jindofs-worker-mncqd               1/1     Running     0          143m
jindofs-worker-pk7j4               1/1     Running     0          143m
jindofs-worker-r2k99               1/1     Running     0          143m

2.在宿主机上访问/mnt/jfs/目录,即等同于访问JindoFS的文件

ls /mnt/jfs/test/
15885689452274647042-0  17820745254765068290-0  entrypoint.sh

3.安装kubeflow(arena)

**Kubeflow 是开源的基于Kubernetes云原生AI平台,用于开发、编排、部署和运行可扩展的便携式机器学习工作负载。Kubeflow支持两种TensorFlow框架分布式训练,分别是参数服务器模式和AllReduce模式。基于阿里云容器服务团队开发的Arena,用户可以提交这两种类型的分布式训练框架。
我们参照github repo上的使用文档进行安装。
**

4. 启动TF作业

arena submit mpi \
--name job-jindofs\--gpus=8 \--workers=4 \--working-dir=/perseus-demo/tensorflow-demo/ \--data-dir /mnt/jfs/test:/data/imagenet \-e DATA_DIR=/data/imagenet -e num_batch=1000 \-e datasets_num_private_threads=8  \--image=registry.cn-hangzhou.aliyuncs.com/tensorflow-samples/perseus-benchmark-dawnbench-v2:centos7-cuda10.0-1.2.2-1.14-py36 \./launch-example.sh 4 8

本文中,我们提交了一个ResNet-50模型作业,使用的是大小144GB的ImageNet数据集。数据以TFRecord格式存储,每个TFRecord大小约130MB。模型作业和ImageNet数据集都可以在网上轻松找到。这些参数中,/mnt/jfs/是通过JindoFS FUSE挂载到宿主机的一个目录,test是一个namespace,对应一个oss bucket。我们使用--data-dir将这个目录映射到容器内的/data/imagenet目录,这样作业就可以读取到OSS的数据了,对于读取过的数据,会自动缓存到JindoFS集群本地。

总结

通过JindoFS的缓存加速服务,只需要读取一遍数据,大部分的热数据将缓存到本地内存或磁盘,深度学习的训练速度可以得到显著提高。对于大部分训练,我们还可以使用预加载的方式先将数据加载到缓存中,来加快下一次训练的速度。

 

 

原文链接
本文为阿里云原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/515038.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OnlyOffice 二次开发定制化部署

文章目录一、与前准备1. 功能点总览2. 上传中文字体3. 上传镜像包4. 创建目录5. 字体挂载6. 加载镜像二、与前准备2.1. 创建容器2.2. 浏览器验证2.3. 在线编辑一、与前准备 1. 功能点总览 功能兼容性说明并发20限制去除√并发数999中文字体√41种常用字体中文字号√文件下载大…

何为“边缘计算”?

来源 | 无敌码农责编 | 寇雪芹头图 | 下载于视觉中国在云原生除了K8S、微服务,还有...?中和大家聊了下关于云原生的话题,在云原生的概念中比较明确的一个特点就是云原生是基于云计算的。在这种模式下用户的计算请求会被发送到云端服务进行处理&#xff…

用尽每一寸GPU,阿里云cGPU容器技术白皮书重磅发布!

简介: 云原生已经成为业内云服务的一个趋势。在云原生上支持异构计算有助于提升CPU的利用率。一文分析业内主流GPU共享方案,并告诉你阿里云cGPU牛在哪里!阿里云异构计算推出的cGPU(container GPU)容器技术,…

钉钉轻松顶住信息洪流的原因,竟然是它

简介: 在9月18日云栖大会上,阿里云智能高级技术专家木洛就为我们详细介绍了,表格存储Tablestore是如何助力钉钉消息存储架构的升级,帮助钉钉顶住持续增长的流量。 今年的疫情来势汹汹,新冠病毒作为2020最具代表性的黑…

说到 SASE,新的安全范式有哪些

来源 | 好奇瞅瞅责编 | 寇雪芹头图 | 下载于视觉中国前言本系列目录:深入理解SASE(一):什么是云化深入理解SASE(二):网络云化及演进方向深入理解SASE(三):什么…

从零入门 Serverless | SAE 场景下,应用流量的负载均衡及路由策略配置实践

简介: 本节课程包含三部分内容:单应用的负载均衡配置、多应用的路由策略配置以及自建微服务网关。 作者 | 落语 阿里云云原生技术团队 本文整理自《Serverless 技术公开课》,“Serverless”公众号后台回复“入门”,获取 Serverle…

聚焦2020云栖大会 边缘计算专场畅谈技术应用创新

简介: 一年一度科技圈盛事—云栖大会如期上演,本届大会以“数智未来,全速重构”为主题,与业界同仁、合作伙伴共同打造了一场数字时代的云上相聚。于9月18日下午举办的边缘计算技术应用创新专场中,阿里云携手甘肃省公路…

springboot word aspose 转换PDF 在线预览

文章目录1. 依赖2. 工具类3. 实现类4. controller5. application.yml6. license.xml7. 目录结构8. 测试验证1. 依赖 <dependencies><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.1…

【数据湖加速篇】 —— 数据湖结构化数据优化与查询加速方案

简介&#xff1a; 近几年&#xff0c;数据湖架构的概念逐渐兴起&#xff0c;很多企业都在尝试构建数据湖。相比较大数据平台&#xff0c;数据湖在数据治理方面提出了更高的要求。对于数据湖场景所提出的新需求&#xff0c;“传统”的大数据工具在很多方面都面临着新的挑战。Jin…

Kubernetes 也有局限性吗?

作者 | Draveness来源 | 真没什么逻辑头图 | 下载于视觉中国2014 年发布的 Kubernetes 在今天俨然已成为容器编排领域的事实标准&#xff0c;相信谈到 Kubernetes 的开发者都会一再复述上述现象。如下图所示&#xff0c;今天的大多数个人或者团队都会选择 Kubernetes 管理容器&…

Kubernetes 新玩法:在 yaml 中编程

简介&#xff1a; 如何做性能测试&#xff1f;要么是通过编码的方式完成&#xff0c;写一堆脚本&#xff0c;用完即弃&#xff1b;要么是基于平台&#xff0c;在平台定义的流程中进行。对于后者&#xff0c;通常由于目标场景的复杂性&#xff0c;如部署特定的 workload、观测特…

对话猿辅导:阿里云远程办公零信任落地创新安全

简介&#xff1a; 大型实战场景验证&#xff0c;灵活应对复杂环境。 2020&#xff0c;一场突如其来的新冠疫情&#xff0c;引发了史上最大规模的远程办公。疫情让安全问题暴露得更加突出&#xff0c;与疫情的对抗也是阿里云安全的战场。 9月18日&#xff0c;2020云栖大会技术…

阿里云发布边缘计算视频上云解决方案 为海量视图处理提供城市级云基础设施

简介&#xff1a; 2020云栖大会在云上成功召开&#xff0c;此次大会汇聚行业领袖&#xff0c;共同见证数智未来的重构进程。在9月18日的产品发布大厅&#xff0c;阿里云正式发布边缘计算视频上云解决方案&#xff0c;旨在依托城市级云计算基础设施&#xff0c;实现海量视图数据…

数据湖元数据服务的实现和挑战

简介&#xff1a; 数据湖元数据服务为大数据而生&#xff0c;为互通生态而生&#xff0c;期望后续继续完善其服务能力和支撑更多的大数据引擎&#xff0c;通过开放的服务能力、存储能力、统一的权限及元数据管理能力&#xff0c;为客户节省管理/人力/存储等各项成本&#xff0c…

美国燃油“动脉”被黑客切断,网络安全走向哪里?专访山石网科|拟合

从无序中寻找踪迹&#xff0c;从眼前事探索未来。 > 2021 年正值黄金十年新开端&#xff0c;CSDN 以中立技术社区专业、客观的角度&#xff0c;深度探讨中国前沿 IT 技术演进&#xff0c;推出年度重磅企划栏目——「拟合」&#xff0c;通过对话企业技术高管大咖&#xff0c;…

云时代的智能运维平台,助力企业创新迭代

简介&#xff1a; 智能的运维平台&#xff0c;帮助企业业务平稳、智能、高效地运行。 每一起严重事故背后&#xff0c;必然有29次轻微事故和300起未遂先兆以及1000起事故隐患。—— 海恩法则(Heinrich‘s Law) 随着云计算时代的到来&#xff0c;大量企业将自己的业务逐步迁移…

数据湖架构,为什么需要“湖加速”?

简介&#xff1a; 湖加速即为数据湖加速&#xff0c;是指在数据湖架构中&#xff0c;为了统一支持各种计算&#xff0c;对数据湖存储提供适配支持&#xff0c;进行优化和缓存加速的中间层技术。那么为什么需要湖加速&#xff1f;数据湖如何实现“加速”&#xff1f;本文将从三个…

“阿里日”102 对新人举办集体婚礼,张勇证婚:“又热,又爱”!

整理 | 王晓曼出品 | 程序人生 &#xff08;ID&#xff1a;coder _life&#xff09;2021年5月10日&#xff0c;是第十七个“阿里日”&#xff0c;同时也是第十六次阿里巴巴举办员工集体婚礼。据悉&#xff0c;今年共有1541对新人报名集体婚礼&#xff0c;其中&#xff0c;双职工…

阿里巴巴电商搜索推荐实时数仓演进之路

简介&#xff1a; 自建实时数仓到底难在哪里&#xff1f;实时数仓应该怎么建&#xff1f;阿里巴巴搜索团队告诉您答案 作者&#xff1a;张照亮&#xff08;士恒&#xff09;阿里巴巴搜索事业部高级技术专家 1. 业务背景 阿里巴巴电商搜索推荐实时数据仓库承载了阿里巴巴集团…

多数据源一站式入湖

简介&#xff1a; 通过一站式入湖&#xff0c;将不同数据源的数据统一归并到以OSS对象存储为基础架构的集中式数据湖存储中&#xff0c;解决了企业面临的数据孤岛问题&#xff0c;为统一的数据分析打好了基础. 背景 数据湖作为一个集中化的数据存储仓库&#xff0c;支持的数据…