成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

基于數(shù)據(jù)流客戶(hù)端優(yōu)化模型訓(xùn)練

譯文 精選
開(kāi)發(fā) 前端
作為數(shù)據(jù)科學(xué)家,我們通常都希望盡快開(kāi)始訓(xùn)練模型。這不僅僅是因?yàn)槿祟?lèi)具有天性急躁的特征。例如,我們可能希望測(cè)試某人的項(xiàng)目中的一個(gè)非常小的更改,并且我們希望避免為了測(cè)試這樣的小修改而進(jìn)行冗長(zhǎng)的設(shè)置工作。

譯者 | 朱先忠

審校 | 孫淑娟

作為數(shù)據(jù)科學(xué)家,我們通常都希望盡快開(kāi)始訓(xùn)練模型。這不僅僅是因?yàn)槿祟?lèi)具有天性急躁的特征。例如,我們可能希望測(cè)試某人的項(xiàng)目中的一個(gè)非常小的更改,并且我們希望避免為了測(cè)試這樣的小修改而進(jìn)行冗長(zhǎng)的設(shè)置工作。

這種情況在處理計(jì)算機(jī)視覺(jué)和大型圖像數(shù)據(jù)集時(shí)尤其明顯。當(dāng)你在訓(xùn)練你的模型之前必須提取一個(gè)龐大的數(shù)據(jù)集(使用DVC版本)時(shí),你有過(guò)煩惱嗎?或者,您可能需要拉動(dòng)整個(gè)數(shù)據(jù)集來(lái)檢查/修改單個(gè)圖像或其中的一些圖像?如果這聽(tīng)起來(lái)很熟悉;那么,接下來(lái)我將向您展示如何使用DagsHub公司開(kāi)發(fā)的新數(shù)據(jù)流客戶(hù)端解決這些潛在的瓶頸問(wèn)題。

【譯者注】DAGsHub是DAGsHub團(tuán)隊(duì)開(kāi)發(fā)的用于數(shù)據(jù)科學(xué)家和機(jī)器學(xué)習(xí)工程師的數(shù)據(jù)版本控制和協(xié)作的開(kāi)源免費(fèi)Web平臺(tái)(DAGsHub是DVC,Github是Git)。其中,DVC代表數(shù)據(jù)版本控制(Data Version Control),本質(zhì)上與Git相似,但它是專(zhuān)門(mén)為數(shù)據(jù)而設(shè)計(jì)的。

什么是數(shù)據(jù)流客戶(hù)端?

DagsHub的開(kāi)源流媒體客戶(hù)端被稱(chēng)為直接數(shù)據(jù)訪問(wèn)(DDA:Direct Data Access)。本質(zhì)上,DDA允許從任何DagsHub存儲(chǔ)庫(kù)流入/流出數(shù)據(jù)。換句話說(shuō),我們的Python代碼將表現(xiàn)為所有文件都存在于本地;但實(shí)際上,客戶(hù)端將根據(jù)請(qǐng)求動(dòng)態(tài)下載它們。此外,我們還可以將數(shù)據(jù)上傳到DagsHub上托管的任何項(xiàng)目。但最重要的是,使用流媒體客戶(hù)端不需要對(duì)代碼庫(kù)進(jìn)行大量更改。一行或兩行額外的代碼通常足以充分享受新客戶(hù)機(jī)的好處。

簡(jiǎn)而言之,DDA提供以下功能:

  • 能夠從任何DagsHub存儲(chǔ)庫(kù)批量傳輸數(shù)據(jù)
  • 將新數(shù)據(jù)附加到現(xiàn)有數(shù)據(jù)集而不首先拉動(dòng)整個(gè)數(shù)據(jù)集
  • 智能緩存:文件在流式傳輸后仍然可用
  • 節(jié)省時(shí)間、資源和內(nèi)存

在對(duì)新客戶(hù)端進(jìn)行了高層次的概括了解之后,讓我們更深入地了解一下它的實(shí)際工作方式。從幕后實(shí)現(xiàn)技術(shù)來(lái)分析,DDA中存在兩個(gè)主要的實(shí)現(xiàn)技術(shù)。

第一個(gè)實(shí)現(xiàn)是使用了Python鉤子機(jī)制,從而能夠檢測(cè)對(duì)Python內(nèi)置文件操作(如打開(kāi)、寫(xiě)入等)的任何調(diào)用,并修改它們,以便在本地找不到文件時(shí)從DagsHub存儲(chǔ)庫(kù)檢索文件。這種方法的最大優(yōu)點(diǎn)是大多數(shù)流行的Python庫(kù)都會(huì)自動(dòng)使用這種方法。

雖然這聽(tīng)起來(lái)很好,但我們應(yīng)該意識(shí)到這種方法中存在的一些局限性:

  • 該方法不適用于依賴(lài)C/C++編寫(xiě)的I/O例程的框架,例如OpenCV。
  • 某些DVC命令(如dvc repro和dvc run)在deps中運(yùn)行DCV跟蹤文件的階段將不起作用。

第二個(gè)實(shí)現(xiàn)稱(chēng)為掛載的文件系統(tǒng)(Mounted Filesystem),它基于FUSE(USErspace中的文件系統(tǒng):??https://en.wikipedia.org/wiki/Filesystem_in_Userspace?ref=hackernoon.com??)。在底層實(shí)現(xiàn)上,客戶(hù)端創(chuàng)建了一個(gè)反映DagsHub存儲(chǔ)庫(kù)的虛擬安裝文件系統(tǒng)。該文件系統(tǒng)的行為類(lèi)似于本地文件系統(tǒng)的一部分,例如我們可以看到目錄中的所有文件,并且可以查看它們。

現(xiàn)在的迫切問(wèn)題是:該使用哪種實(shí)現(xiàn)方案呢?DagsHub的數(shù)據(jù)流客戶(hù)端有關(guān)文檔建議,如果您在Windows或Mac上工作,并且沒(méi)有任何依賴(lài)C的框架/庫(kù),那么建議您使用Python鉤子方法;否則,請(qǐng)使用掛載的文件系統(tǒng)。請(qǐng)參閱??文檔??來(lái)全面比較這兩種方法各自的優(yōu)劣。

流媒體客戶(hù)端使用場(chǎng)景

我們已經(jīng)知道流媒體客戶(hù)端是什么以及它是如何工作的。現(xiàn)在,讓我們介紹一下流媒體客戶(hù)端的一些具體使用場(chǎng)景,從而展示我們?cè)撊绾卧诠ぷ髁鞒讨惺褂盟?/p>

首先,我們可以通過(guò)使用流媒體客戶(hù)端來(lái)減少開(kāi)始訓(xùn)練所需的時(shí)間。假設(shè)我們正在處理一個(gè)圖像分類(lèi)問(wèn)題;那么,借助于流式客戶(hù)端,我們不必在實(shí)際開(kāi)始訓(xùn)練模型之前下載整個(gè)數(shù)據(jù)集,因?yàn)镻ython會(huì)“假裝”文件已經(jīng)可用,并立即開(kāi)始訓(xùn)練模型。數(shù)據(jù)加載器經(jīng)常被優(yōu)化,從而實(shí)現(xiàn)在當(dāng)前批次正在用于訓(xùn)練時(shí)提前加載下一個(gè)批次。在后臺(tái),流媒體客戶(hù)端只需按要求批量下載圖像進(jìn)行訓(xùn)練,并將其緩存以供以后使用。通過(guò)這種方法,我們可以節(jié)省大量時(shí)間和資源。后者可以通過(guò)例如虛擬機(jī)的運(yùn)行時(shí)來(lái)進(jìn)行衡量。

其次,我們只能在整個(gè)數(shù)據(jù)集的子集上訓(xùn)練模型。想象一下,擁有一個(gè)包含數(shù)千個(gè)類(lèi)的圖像的數(shù)據(jù)集,但對(duì)于您的特定實(shí)驗(yàn),您只需要使用幾個(gè)選定類(lèi)別進(jìn)行訓(xùn)練。借助于流式客戶(hù)端,Python代碼將僅加載實(shí)際請(qǐng)求的數(shù)據(jù)來(lái)實(shí)現(xiàn)訓(xùn)練任務(wù)。

最后,我們還可以使用流媒體客戶(hù)端將數(shù)據(jù)上傳到DVC版本的存儲(chǔ)庫(kù)。在一個(gè)特別令人沮喪的應(yīng)用場(chǎng)景中,我們的數(shù)據(jù)集中可能存在數(shù)以萬(wàn)計(jì)的圖像,我們希望再添加10張我們收集的圖像。通常,我們必須提取所有數(shù)據(jù),添加新圖像,并再次對(duì)整個(gè)修改后的數(shù)據(jù)集進(jìn)行版本調(diào)整。這種情況下,借助于DDA(直接數(shù)據(jù)訪問(wèn)),我們可以直接添加10個(gè)新圖像,而無(wú)需下載整個(gè)數(shù)據(jù)集。

一個(gè)實(shí)際的例子

我希望上面提到的場(chǎng)景能讓您對(duì)使用流媒體客戶(hù)端感到興奮!為了使用流媒體客戶(hù)端的優(yōu)勢(shì),我們需要將我們的項(xiàng)目存儲(chǔ)在DagsHub上,并使用DVC對(duì)數(shù)據(jù)進(jìn)行版本化。

本教程的目標(biāo)是展示如何快速地使用流媒體客戶(hù)端啟動(dòng)和運(yùn)行項(xiàng)目。這就是為什么我們復(fù)制(Fork)了一個(gè)已經(jīng)存在的項(xiàng)目,我們將展示如何在云端快速啟動(dòng)神經(jīng)網(wǎng)絡(luò)的訓(xùn)練。為此,我們將使用GoogleColab云平臺(tái),當(dāng)然您也可以使用類(lèi)似于AWS等其他的云平臺(tái)。

我們復(fù)制的項(xiàng)目是CheXNet的TensorFlow實(shí)現(xiàn),它是一個(gè)121層的CNN(卷積神經(jīng)網(wǎng)絡(luò)),用于從胸部X光片檢測(cè)肺炎。最初的實(shí)現(xiàn)是在ChestX-ray14數(shù)據(jù)集(可在Kaggle上獲得:??https://www.kaggle.com/datasets/paultimothymooney/chest-xray-pneumonia?ref=hackernoon.com??)上訓(xùn)練的,該數(shù)據(jù)集是目前最大的公開(kāi)可用的胸部X射線數(shù)據(jù)集,擁有超過(guò)100000張圖像。該數(shù)據(jù)集超過(guò)45GB,分為14個(gè)不同的目錄,每個(gè)目錄專(zhuān)門(mén)針對(duì)不同的疾病。為了減少這個(gè)實(shí)驗(yàn)的訓(xùn)練時(shí)間,我們使用了數(shù)據(jù)集的二次采樣版本,它只有1GB。

在開(kāi)始之前,值得一提的是,使用DDA并不總是有益的。在開(kāi)始這個(gè)項(xiàng)目之前,我試著在??我的超級(jí)馬里奧游戲??分類(lèi)器中使用DDA。就在此游戲?qū)?yīng)的場(chǎng)景中,我遇到了一個(gè)邊緣情況,在神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過(guò)程中通過(guò)單個(gè)批次比按需下載批次更快。這使得第一個(gè)時(shí)期的訓(xùn)練比預(yù)先下載整個(gè)數(shù)據(jù)集然后正常運(yùn)行訓(xùn)練步驟要長(zhǎng)得多。因此,用于訓(xùn)練的圖像必須足夠大(就其分辨率/大小而言),以便單個(gè)批次的訓(xùn)練步驟比下載下一個(gè)批次的時(shí)間更長(zhǎng)。

如果您接下來(lái)繼續(xù)閱讀本文的話,建議您下載并使用我在Google Colab中使用的??筆記本文件??。

設(shè)置項(xiàng)目

為了方便試驗(yàn),我將項(xiàng)目復(fù)制到我自己的帳戶(hù)下,以便使用MLflow的實(shí)驗(yàn)跟蹤等功能。您也可以直接克隆代碼倉(cāng)庫(kù)來(lái)訓(xùn)練模型,而無(wú)需創(chuàng)建另外的復(fù)制。

打開(kāi)筆記本項(xiàng)目后,我們需要使用如下命令安裝一些依賴(lài)庫(kù):

!pip install dagshub omegaconf mlflow

接下來(lái),我們導(dǎo)入所需的庫(kù):

import datetime
import os
from IPython.display import display, Image

這些導(dǎo)入列表相當(dāng)簡(jiǎn)短,因?yàn)榇蠖鄶?shù)庫(kù)(例如,用于訓(xùn)練神經(jīng)網(wǎng)絡(luò)的Keras框架)都已經(jīng)加載在各個(gè)腳本中了。然后,我們定義一些包含值的常量,例如存儲(chǔ)庫(kù)的所有者、要克隆的存儲(chǔ)庫(kù)的名稱(chēng)以及要使用的分支等。

# 要使用的存儲(chǔ)庫(kù)
REPO_OWNER= "eryk.lewinson"
REPO_NAME= "CheXNet"
REPO_BRANCH= "streaming"

定義了所需的常量后,我們可以使用方便的init功能來(lái)初始化DagsHub存儲(chǔ)庫(kù)。然后,我們可以輕松地使用MLFlow記錄實(shí)驗(yàn),獲取訪問(wèn)令牌等。我們運(yùn)行以下代碼段以便在Colab中設(shè)置項(xiàng)目:

import dagshub
dagshub.init(repo_name=REPO_NAME, repo_owner=REPO_OWNER)

運(yùn)行該段代碼后,將提示我們?cè)跒g覽器中進(jìn)行身份驗(yàn)證。然后,我們可以使用git clone命令克隆存儲(chǔ)庫(kù):

!git clone https://{USER_NAME}:{dagshub.auth.get_token()}@dagshub.com/{REPO_OWNER}/{REPO_NAME}.git

下一步,我們將目錄更改為CheXNet目錄:

%cd /content/{REPO_NAME}

然后,我們將分支更改為包含可與流式客戶(hù)端一起使用的代碼庫(kù)的分支:

!git checkout {REPO_BRANCH}

正如我們之前提到的,主分支使用完整的45GB數(shù)據(jù)集,而流分支在子采樣數(shù)據(jù)集上訓(xùn)練神經(jīng)網(wǎng)絡(luò)。

至此,我們已經(jīng)完成了設(shè)置,并準(zhǔn)備好使用流媒體客戶(hù)端。

檢查數(shù)據(jù)集

首先,讓我們來(lái)看看我們的數(shù)據(jù)集。克隆代碼庫(kù)后,我們可以看到數(shù)據(jù)是用DVC進(jìn)行版本控制的,因?yàn)槲覀兛梢钥吹较鄳?yīng)的跟蹤文件。然而,我們實(shí)際上無(wú)法從Colab檢查它。至少現(xiàn)在還沒(méi)有:

我們的示例項(xiàng)目的目錄結(jié)構(gòu)

接下來(lái),讓我們使用流媒體客戶(hù)端來(lái)完成任務(wù)。在本教程中,我們使用DDA的Python鉤子技術(shù)來(lái)實(shí)現(xiàn)。因此,我們需要運(yùn)行以下兩行代碼:

from dagshub.streaming import install_hooks
install_hooks()

此時(shí),我們可以使用代碼檢查圖像,即使文件夾在目錄樹(shù)中不可見(jiàn)。由于我們知道包含圖像的目錄的結(jié)構(gòu);所以,我們可以使用具有相對(duì)路徑的以下代碼段來(lái)打印請(qǐng)求目錄中的所有圖像:

os.listdir("data_labeling/data/images_001/images")

如您所見(jiàn),這是常規(guī)的Python代碼,流式客戶(hù)端在后臺(tái)為我們處理一切。執(zhí)行代碼段將打印以下列表:

['00000417_005.png',
'00000583_047.png',
'00000683_002.png',
'00000796_001.png',
'00001088_024.png',
'00000013_006.png',
'00000547_009.png',
'00000640_000.png',
'00000732_004.png',
]

我們還可以使用以下代碼段顯示圖像:

display(Image(filename="data_labeling/data/images_001/images/00000417_005.png"))

胸部X射線數(shù)據(jù)集的示例圖像

正如我們之前提到的,流媒體客戶(hù)端根據(jù)請(qǐng)求下載數(shù)據(jù)并緩存數(shù)據(jù)以供以后使用。因此,我們顯示的圖像實(shí)際上是下載的,我們可以在目錄樹(shù)中看到它:

下載第一張圖像后的目錄

現(xiàn)在,我們可以采取下一步行動(dòng):開(kāi)始訓(xùn)練神經(jīng)網(wǎng)絡(luò)了!

訓(xùn)練神經(jīng)網(wǎng)絡(luò)

正如我們已經(jīng)提到的,我們不必花費(fèi)時(shí)間修改用于訓(xùn)練神經(jīng)網(wǎng)絡(luò)的代碼。我們只需要將已經(jīng)熟悉的兩行代碼添加到train.py腳本中。你可能會(huì)問(wèn):當(dāng)我們之前已經(jīng)執(zhí)行過(guò)那一部分代碼,為什么還要再次執(zhí)行?這是因?yàn)楫?dāng)我們從Colab調(diào)用腳本時(shí),腳本在單獨(dú)的Python上下文中運(yùn)行。因此,流設(shè)置不再應(yīng)用于那一部分代碼了。

為了使代碼庫(kù)更加通用,我們可以將以下條件語(yǔ)句與install_hooks設(shè)置結(jié)合使用:

if "STREAM" in sys.argv:
from dagshub.streaming.filesystem import install_hooks
install_hooks()

sys.argv本質(zhì)上是一個(gè)包含命令行參數(shù)的數(shù)組,即調(diào)用腳本時(shí)傳遞的值。為了說(shuō)明問(wèn)題,我們可以使用以下代碼段運(yùn)行訓(xùn)練腳本:

%run modeling/src/train.py STREAM

如果想在不使用流客戶(hù)端的情況下運(yùn)行腳本,我們只需刪除STREAM參數(shù)。

一旦運(yùn)行該命令,我們將看到目錄樹(shù)將開(kāi)始填充為特定批處理請(qǐng)求的圖像。就這樣!通過(guò)只添加兩行代碼,我們可以利用流媒體客戶(hù)端開(kāi)始按需下載版本化的數(shù)據(jù)。

此外,您可能希望使用MLflow跟蹤您的實(shí)驗(yàn)。你要使用DagsHub的設(shè)置來(lái)執(zhí)行此操作,而且還需要修改src/const.yaml文件中的MLFLOW_TRACKING_URL常量。

總結(jié)

在本文中,我們演示了如何使用DagsHub的流媒體客戶(hù)端按需下載數(shù)據(jù)集。這樣一來(lái),我們幾乎可以立即開(kāi)始訓(xùn)練我們的模型,而無(wú)需首先將所有版本化的數(shù)據(jù)拉到我們的機(jī)器上,無(wú)論是在本地還是在云端。正如您所看到的,流媒體客戶(hù)端確實(shí)適合應(yīng)用于計(jì)算機(jī)視覺(jué)等領(lǐng)域的任務(wù),但是它也可以在解決其他問(wèn)題時(shí)派上用場(chǎng)。

你可以在鏈接??https://github.com/erykml/medium_articles/blob/master/Misc/dda_streaming_client.ipynb?ref=hackernoon.com處???找到本文中使用的筆記本文件。該項(xiàng)目的代碼庫(kù)可下載的地址是??https://dagshub.com/eryk.lewinson/CheXNet?ref=hackernoon.com??。

譯者介紹

朱先忠,51CTO社區(qū)編輯,51CTO專(zhuān)家博客、講師,濰坊一所高校計(jì)算機(jī)教師,自由編程界老兵一枚。

原文標(biāo)題:??Optimize Model Training with a Data Streaming Client??,作者:Eryk Lewinson

責(zé)任編輯:華軒 來(lái)源: 51CTO
相關(guān)推薦

2024-01-17 19:05:44

mget優(yōu)化數(shù)據(jù)庫(kù)

2011-05-24 16:47:20

數(shù)據(jù)存儲(chǔ)

2011-08-15 14:09:59

JavaHBase

2009-06-12 19:18:08

REST客戶(hù)端框架JavaScript

2011-04-22 10:34:09

SimpleFrame

2009-03-18 14:44:34

LinuxqTwitterTwitter

2012-07-30 08:31:08

Storm數(shù)據(jù)流

2021-09-22 15:46:29

虛擬桌面瘦客戶(hù)端胖客戶(hù)端

2011-08-17 10:10:59

2011-03-24 13:00:31

配置nagios客戶(hù)端

2011-03-02 14:36:24

Filezilla客戶(hù)端

2010-12-21 11:03:15

獲取客戶(hù)端證書(shū)

2025-01-07 08:10:00

CefSharpWinformWindows

2011-10-26 13:17:05

2010-05-31 10:11:32

瘦客戶(hù)端

2022-04-15 10:52:50

模型技術(shù)實(shí)踐

2011-03-21 14:53:36

Nagios監(jiān)控Linux

2011-04-06 14:24:20

Nagios監(jiān)控Linux

2013-05-09 09:33:59

2009-03-04 10:27:50

客戶(hù)端組件桌面虛擬化Xendesktop
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 精品国产成人 | 精品久久久久久久久久久久 | 国产日韩一区二区三免费高清 | 亚州国产 | 亚洲在线一区二区三区 | 免费中文字幕 | 亚洲 欧美 日韩 在线 | 久久91精品国产一区二区三区 | 国产91精品在线 | xxxcom在线观看 | 在线精品一区 | 国产女人叫床高潮大片免费 | 精品久草 | 免费一区二区三区 | 精品久久香蕉国产线看观看亚洲 | 人人亚洲| 午夜激情免费视频 | 国产欧美在线视频 | 精品国产乱码一区二区三区a | 国产一区二区精品在线 | 国产精品免费一区二区三区四区 | 精品国产一区二区三区四区在线 | 日本字幕在线观看 | 日韩字幕一区 | 一色一黄视频 | 男女羞羞在线观看 | 国产精品一码二码三码在线 | 国产资源视频 | 日韩一级电影免费观看 | 一级毛片免费看 | 午夜在线精品 | 成人免费xxxxx在线视频 | 日韩成人在线播放 | 国色天香综合网 | 欧美成人激情 | 欧美国产日韩精品 | 91久久精品一区二区二区 | v片网站 | 国产亚洲欧美在线视频 | 91久久久久久久久久久久久 | 午夜影晥 |