日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時間:2024/8/23 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【数据湖加速篇】 —— 如何利用缓存加速服务来提升数据湖上机器学习训练速度 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

簡介:?JindoFS提供了一個計算側(cè)的分布式緩存系統(tǒng),可以有效利用計算集群上的本地存儲資源(磁盤或者內(nèi)存)緩存OSS上的熱數(shù)據(jù),從而減少對OSS上數(shù)據(jù)的反復(fù)拉取,消耗網(wǎng)絡(luò)帶寬。

背景介紹

近些年,機器學習領(lǐng)域快速發(fā)展,廣泛應(yīng)用于各行各業(yè)。對于機器學習領(lǐng)域的從業(yè)人員來說,充滿了大量的機遇和挑戰(zhàn)。Tensorflow、PyTorch等深度學習框架的出現(xiàn),使開發(fā)者能夠輕松地構(gòu)建和部署機器學習應(yīng)用。隨著近些年云計算技術(shù)的不斷成熟,越來越多的人接受將他們的開發(fā)、生產(chǎn)服務(wù)搬到云上平臺,因為云環(huán)境在計算成本、規(guī)模擴展上比傳統(tǒng)平臺有顯著的優(yōu)勢。云上平臺為了達到彈性、節(jié)約成本,通常采用計算存儲分離的解決方案。使用對象存儲構(gòu)建數(shù)據(jù)湖,可以降低成本、存儲海量數(shù)據(jù)。在機器學習這個場景下,尤其適合將訓練數(shù)據(jù)存儲在數(shù)據(jù)湖上。

將訓練數(shù)據(jù)存儲在數(shù)據(jù)湖上具有以下優(yōu)勢:

1.不需要將數(shù)據(jù)提前同步到訓練節(jié)點。傳統(tǒng)方式,我們需要將數(shù)據(jù)提前導(dǎo)入到計算節(jié)點的本地磁盤。而如果將數(shù)據(jù)存儲在對象存儲上,我們可以直接讀取數(shù)據(jù)進行訓練,減少準備工作。

2.可以存儲更大的訓練數(shù)據(jù),不再受限于計算節(jié)點本地磁盤大小。對于深度學習,擁有更多的數(shù)據(jù),往往能取得更好的訓練效果。

3.計算資源可以彈性擴縮容,節(jié)約成本。機器學習通常使用使用更多核數(shù)的CPU或高端GPU,較為昂貴,對象存儲的成本就相對較低。將訓練數(shù)據(jù)存儲在數(shù)據(jù)湖上,可以與計算資源解耦。計算資源可以按需付費,隨時釋放,達到節(jié)省成本的目的。

然而,這種方式同時存在著一些問題和挑戰(zhàn):

1.遠端拉取數(shù)據(jù)的延遲和帶寬無法隨著計算資源線性擴展。硬件計算能力在不斷發(fā)展,利用GPU進行計算可以取得更快的訓練速度。使用云上彈性計算ECS、容器服務(wù)可以快速調(diào)度起大規(guī)模的計算資源。訪問對象存儲需要走網(wǎng)絡(luò),得益于網(wǎng)絡(luò)技術(shù)的發(fā)展,我們訪問對象存儲有一個高速網(wǎng)絡(luò),即便如此,對象存儲的網(wǎng)絡(luò)延時和帶寬無法隨著集群規(guī)模線性擴展,可能會成為瓶頸,限制了訓練速度。在計算存儲分離架構(gòu)下,如何高效地訪問到這些數(shù)據(jù),成為了一個巨大的挑戰(zhàn)。

2.需要更加便捷的通用的數(shù)據(jù)訪問方式。深度學習框架如TensorFlow對于GCS、HDFS支持較為友好,而對于諸多第三方對象存儲的支持上較為滯后。而POSIX接口是一種更自然友好的方式,使用類似于本地磁盤一樣的方式訪問數(shù)據(jù),大大簡化了開發(fā)者對存儲系統(tǒng)的適配工作。

為了解決數(shù)據(jù)湖上機器學習訓練常規(guī)方案存在的上述問題,JindoFS 針對這種場景提供了緩存加速優(yōu)化方案。

基于JindoFS緩存加速的訓練架構(gòu)方案

JindoFS提供了一個計算側(cè)的分布式緩存系統(tǒng),可以有效利用計算集群上的本地存儲資源(磁盤或者內(nèi)存)緩存OSS上的熱數(shù)據(jù),從而減少對OSS上數(shù)據(jù)的反復(fù)拉取,消耗網(wǎng)絡(luò)帶寬。

內(nèi)存緩存

對于深度學習,我們可以選擇計算能力更強的GPU機型,來獲取更快的訓練速度。此時需要高速的內(nèi)存吞吐,才能讓GPU充分跑滿。此時我們可以使用JindoFS基于內(nèi)存搭建分布式高速緩存。當整個集群的所有內(nèi)存加起來足以支撐整個數(shù)據(jù)集時(除去任務(wù)本身所需內(nèi)存量),我們就可以利用內(nèi)存緩存以及本地高速網(wǎng)絡(luò),來提供高的數(shù)據(jù)吞吐,加快計算速度。

磁盤緩存

對于一些機器學習場景,訓練數(shù)據(jù)的規(guī)模超過了內(nèi)存所能承載的大小,以及訓練所需的CPU/GPU能力要求沒有那么高,而要求數(shù)據(jù)訪問有較高的吞吐。此時計算的瓶頸會受限于網(wǎng)絡(luò)帶寬壓力。因此我們可以搭建使用本地SSD作為緩存介質(zhì)的JindoFS分布式緩存服務(wù),利用本地存儲資源緩存熱數(shù)據(jù),來達到提高訓練速度的效果。

FUSE接口

JindoFS包含了FUSE客戶端,提供了簡便的、熟悉的數(shù)據(jù)訪問方式。通過FUSE程序?qū)indoFS集群實例映射到本地文件系統(tǒng),就可以像訪問本地磁盤文件一樣,享受到JindoFS帶來的加速效果。

實戰(zhàn):搭建Kubernetes + JindoFS + Tensorflow訓練集群

1、創(chuàng)建kubernetes集群

我們前往阿里云-容器服務(wù),創(chuàng)建一個Kubernetes集群。

2、安裝JindoFS服務(wù)

2.1 前往容器服務(wù)->應(yīng)用目錄,進入“JindoFS”安裝配置頁面。

2.2 配置參數(shù)

完整的配置模板可以參考容器服務(wù)-應(yīng)用目錄-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

通過這些配置項,我們創(chuàng)建了一個名為test的命名空間,指向了chengli-sh-test這個OSS bucket的xxx/k8s_c1目錄。后續(xù)我們通過JindoFS操作test命名空間的時候,就等同于操作該OSS目錄。

2.3 安裝服務(wù)

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平臺,用于開發(fā)、編排、部署和運行可擴展的便攜式機器學習工作負載。Kubeflow支持兩種TensorFlow框架分布式訓練,分別是參數(shù)服務(wù)器模式和AllReduce模式。基于阿里云容器服務(wù)團隊開發(fā)的Arena,用戶可以提交這兩種類型的分布式訓練框架。
我們參照github repo上的使用文檔進行安裝。
**

4. 啟動TF作業(yè)

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模型作業(yè),使用的是大小144GB的ImageNet數(shù)據(jù)集。數(shù)據(jù)以TFRecord格式存儲,每個TFRecord大小約130MB。模型作業(yè)和ImageNet數(shù)據(jù)集都可以在網(wǎng)上輕松找到。這些參數(shù)中,/mnt/jfs/是通過JindoFS FUSE掛載到宿主機的一個目錄,test是一個namespace,對應(yīng)一個oss bucket。我們使用--data-dir將這個目錄映射到容器內(nèi)的/data/imagenet目錄,這樣作業(yè)就可以讀取到OSS的數(shù)據(jù)了,對于讀取過的數(shù)據(jù),會自動緩存到JindoFS集群本地。

總結(jié)

通過JindoFS的緩存加速服務(wù),只需要讀取一遍數(shù)據(jù),大部分的熱數(shù)據(jù)將緩存到本地內(nèi)存或磁盤,深度學習的訓練速度可以得到顯著提高。對于大部分訓練,我們還可以使用預(yù)加載的方式先將數(shù)據(jù)加載到緩存中,來加快下一次訓練的速度。

?

?

原文鏈接
本文為阿里云原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。

總結(jié)

以上是生活随笔為你收集整理的【数据湖加速篇】 —— 如何利用缓存加速服务来提升数据湖上机器学习训练速度的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。