国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
1、訓(xùn)練數(shù)據(jù)管道的結(jié)構(gòu)
2、Tensorflow tf.data API
3、使用多進(jìn)程并行化數(shù)據(jù)管道
首頁 科技週邊 人工智慧 使用Ray創(chuàng)建高效的深度學(xué)習(xí)資料管道

使用Ray創(chuàng)建高效的深度學(xué)習(xí)資料管道

Nov 02, 2023 pm 08:17 PM
深度學(xué)習(xí) ray

深度學(xué)習(xí)模型訓(xùn)練所需的GPU功能強(qiáng)大,但價(jià)格昂貴。為了充分利用GPU,開發(fā)人員需要一個(gè)高效的數(shù)據(jù)傳輸通道,以便在GPU準(zhǔn)備好計(jì)算下一個(gè)訓(xùn)練步驟時(shí),能夠迅速將數(shù)據(jù)傳輸?shù)紾PU。使用Ray能夠顯著提高數(shù)據(jù)傳輸通道的效率

1、訓(xùn)練數(shù)據(jù)管道的結(jié)構(gòu)

首先,我們來看一下模型訓(xùn)練的偽代碼

for step in range(num_steps):sample, target = next(dataset) # 步驟1train_step(sample, target) # 步驟2

在步驟1中,獲取下一個(gè)小批量的樣本和標(biāo)簽。在步驟2中,它們被傳遞給train_step函數(shù),該函數(shù)會將它們復(fù)制到GPU上,執(zhí)行前向傳遞和反向傳遞以計(jì)算損失和梯度,并更新優(yōu)化器的權(quán)重。

請?jiān)敿?xì)了解步驟1。當(dāng)數(shù)據(jù)集太大無法放入內(nèi)存時(shí),步驟1將從磁盤或網(wǎng)絡(luò)中獲取下一個(gè)小批量數(shù)據(jù)。此外,步驟1還包括一定量的預(yù)處理。輸入數(shù)據(jù)必須被轉(zhuǎn)換為數(shù)字張量或張量集合,然后再饋送給模型。在某些情況下,還會在傳遞給模型之前對張量進(jìn)行其他轉(zhuǎn)換,如歸一化、繞軸旋轉(zhuǎn)、隨機(jī)打亂等

如果工作流程是嚴(yán)格按順序執(zhí)行的,即先執(zhí)行步驟1,然后再執(zhí)行步驟2,那么模型將始終需要等待下一批數(shù)據(jù)的輸入、輸出和預(yù)處理操作。GPU將無法得到有效利用,它將在加載下一個(gè)小批量數(shù)據(jù)時(shí)處于空閑狀態(tài)。

為了解決這個(gè)問題,可以將數(shù)據(jù)管道視為生產(chǎn)者——消費(fèi)者的問題。數(shù)據(jù)管道生成小批量數(shù)據(jù)并寫入有界緩沖區(qū)。模型/GPU從緩沖區(qū)中消費(fèi)小批量數(shù)據(jù),執(zhí)行前向/反向計(jì)算并更新模型權(quán)重。如果數(shù)據(jù)管道能夠以模型/GPU消費(fèi)的速度快速生成小批量數(shù)據(jù),那么訓(xùn)練過程將會非常高效。

使用Ray創(chuàng)建高效的深度學(xué)習(xí)資料管道圖片

2、Tensorflow tf.data API

Tensorflow tf.data API提供了一組豐富的功能,可用于高效創(chuàng)建數(shù)據(jù)管道,使用后臺線程獲取小批量數(shù)據(jù),使模型無需等待。僅僅預(yù)先獲取數(shù)據(jù)還不夠,如果生成小批量數(shù)據(jù)的速度比GPU消費(fèi)數(shù)據(jù)的速度慢,那么就需要使用并行化來加快數(shù)據(jù)的讀取和轉(zhuǎn)換。為此,Tensorflow提供了交錯(cuò)功能以利用多個(gè)線程并行讀取數(shù)據(jù),以及并行映射功能使用多個(gè)線程對小批量數(shù)據(jù)進(jìn)行轉(zhuǎn)換。

由于這些API是基于多線程的,所以可能會受到Python全局解釋器鎖(GIL)的限制。Python的GIL限制了一次只能運(yùn)行單個(gè)線程的字節(jié)碼。如果在管道中使用純TensorFlow代碼,通常不會受到這種限制,因?yàn)門ensorFlow核心執(zhí)行引擎在GIL的范圍之外工作。但是,如果使用的第三方庫沒有解除GIL限制或者使用Python進(jìn)行大量計(jì)算,那么依賴多線程來并行化管道就不可行

3、使用多進(jìn)程并行化數(shù)據(jù)管道

考慮以下生成器函數(shù),該函數(shù)模擬加載和執(zhí)行一些計(jì)算以生成小批量數(shù)據(jù)樣本和標(biāo)簽。

def data_generator():for _ in range(10):# 模擬獲取# 從磁盤/網(wǎng)絡(luò)time.sleep(0.5)# 模擬計(jì)算for _ in range(10000):passyield (np.random.random((4, 1000000, 3)).astype(np.float32), np.random.random((4, 1)).astype(np.float32))

接下來,在虛擬的訓(xùn)練管道中使用該生成器,并測量生成小批量數(shù)據(jù)所花費(fèi)的平均時(shí)間。

generator_dataset = tf.data.Dataset.from_generator(data_generator,output_types=(tf.float64, tf.float64),output_shapes=((4, 1000000, 3), (4, 1))).prefetch(tf.data.experimental.AUTOTUNE)st = time.perf_counter()times = []for _ in generator_dataset:en = time.perf_counter()times.append(en - st)# 模擬訓(xùn)練步驟time.sleep(0.1)st = time.perf_counter()print(np.mean(times))

據(jù)觀察,平均耗時(shí)約為0.57秒(在配備Intel Core i7處理器的Mac筆記本電腦上測量)。如果這是一個(gè)真實(shí)的訓(xùn)練循環(huán),GPU的利用率將相當(dāng)?shù)?,它只需花費(fèi)0.1秒進(jìn)行計(jì)算,然后閑置0.57秒等待下一個(gè)批次數(shù)據(jù)。

為了加快數(shù)據(jù)加載速度,可以使用多進(jìn)程生成器。

from multiprocessing import Queue, cpu_count, Processdef mp_data_generator():def producer(q):for _ in range(10):# 模擬獲取# 從磁盤/網(wǎng)絡(luò)time.sleep(0.5)# 模擬計(jì)算for _ in range(10000000):passq.put((np.random.random((4, 1000000, 3)).astype(np.float32),np.random.random((4, 1)).astype(np.float32)))q.put("DONE")queue = Queue(cpu_count()*2)num_parallel_processes = cpu_count()producers = []for _ in range(num_parallel_processes):p = Process(target=producer, args=(queue,))p.start()producers.append(p)done_counts = 0while done_counts <p>現(xiàn)在,如果測量等待下一個(gè)小批次數(shù)據(jù)所花費(fèi)的時(shí)間,得到的平均時(shí)間為0.08秒。速度提高了近7倍,但理想情況下,希望這個(gè)時(shí)間接近0。</p><p>如果進(jìn)行分析,可以發(fā)現(xiàn)相當(dāng)多的時(shí)間都花在了準(zhǔn)備數(shù)據(jù)的反序列化上。在多進(jìn)程生成器中,生產(chǎn)者進(jìn)程會返回大型NumPy數(shù)組,這些數(shù)組需要進(jìn)行準(zhǔn)備,然后在主進(jìn)程中進(jìn)行反序列化。那么在進(jìn)程間傳遞大型數(shù)組時(shí),如何提高效率呢?</p><h2>4、使用Ray并行化數(shù)據(jù)管道</h2><p>這就是Ray發(fā)揮作用的地方。Ray是一個(gè)用于在Python中運(yùn)行分布式計(jì)算的框架。它帶有一個(gè)共享內(nèi)存對象存儲區(qū),可在不同進(jìn)程間高效地傳輸對象。特別的是,在不進(jìn)行任何序列化和反序列化的情況下,對象存儲區(qū)中的Numpy數(shù)組可在同一節(jié)點(diǎn)上的worker之間共享。Ray還可以輕松實(shí)現(xiàn)數(shù)據(jù)加載在多臺機(jī)器上的擴(kuò)展,并使用Apache Arrow高效地序列化和反序列化大型數(shù)組。</p><p>Ray帶有一個(gè)實(shí)用函數(shù)from_iterators,可以創(chuàng)建并行迭代器,開發(fā)者可以用它包裝data_generator生成器函數(shù)。</p><pre class="brush:php;toolbar:false">import raydef ray_generator():num_parallel_processes = cpu_count()return ray.util.iter.from_iterators([data_generator]*num_parallel_processes).gather_async()

使用ray_generator,測量等待下一個(gè)小批量數(shù)據(jù)所花費(fèi)的時(shí)間為0.02秒,比使用多進(jìn)程處理的速度提高了4倍。

以上是使用Ray創(chuàng)建高效的深度學(xué)習(xí)資料管道的詳細(xì)內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

常用的AI激活函數(shù)解析:Sigmoid、Tanh、ReLU和Softmax的深度學(xué)習(xí)實(shí)踐 常用的AI激活函數(shù)解析:Sigmoid、Tanh、ReLU和Softmax的深度學(xué)習(xí)實(shí)踐 Dec 28, 2023 pm 11:35 PM

激活函數(shù)在深度學(xué)習(xí)中扮演著至關(guān)重要的角色,它們能夠?yàn)樯窠?jīng)網(wǎng)路引入非線性特性,使得網(wǎng)路能夠更好地學(xué)習(xí)並模擬複雜的輸入輸出關(guān)係。正確選擇和使用激活函數(shù)對於神經(jīng)網(wǎng)路的性能和訓(xùn)練效果有著重要的影響本文將介紹四種常用的激活函數(shù):Sigmoid、Tanh、ReLU和Softmax,從簡介、使用場景、優(yōu)點(diǎn)、缺點(diǎn)和優(yōu)化方案五個(gè)維度進(jìn)行探討,為您提供關(guān)於激活函數(shù)的全面理解。 1.Sigmoid函數(shù)SIgmoid函數(shù)公式簡介:Sigmoid函數(shù)是常用的非線性函數(shù),可以將任何實(shí)數(shù)映射到0到1之間。它通常用於將不歸一

潛藏空間嵌入:解釋與示範(fàn) 潛藏空間嵌入:解釋與示範(fàn) Jan 22, 2024 pm 05:30 PM

潛在空間嵌入(LatentSpaceEmbedding)是將高維度資料對應(yīng)到低維度空間的過程。在機(jī)器學(xué)習(xí)和深度學(xué)習(xí)領(lǐng)域中,潛在空間嵌入通常是透過神經(jīng)網(wǎng)路模型將高維輸入資料映射為一組低維向量表示,這組向量通常被稱為「潛在向量」或「潛在編碼」。潛在空間嵌入的目的是捕捉資料中的重要特徵,並將其表示為更簡潔和可理解的形式。透過潛在空間嵌入,我們可以在低維空間中對資料進(jìn)行視覺化、分類、聚類等操作,從而更好地理解和利用資料。潛在空間嵌入在許多領(lǐng)域中都有廣泛的應(yīng)用,如影像生成、特徵提取、降維等。潛在空間嵌入的主要

Python中使用BERT進(jìn)行情感分析的方法及步驟 Python中使用BERT進(jìn)行情感分析的方法及步驟 Jan 22, 2024 pm 04:24 PM

BERT是由Google在2018年提出的一種預(yù)先訓(xùn)練的深度學(xué)習(xí)語言模式。全稱為BidirectionalEncoderRepresentationsfromTransformers,它基於Transformer架構(gòu),具有雙向編碼的特性。相較於傳統(tǒng)的單向編碼模型,BERT在處理文字時(shí)能夠同時(shí)考慮上下文的訊息,因此在自然語言處理任務(wù)中表現(xiàn)出色。它的雙向性使得BERT能夠更好地理解句子中的語義關(guān)係,從而提高了模型的表達(dá)能力。透過預(yù)訓(xùn)練和微調(diào)的方法,BERT可以用於各種自然語言處理任務(wù),如情緒分析、命名

超越ORB-SLAM3! SL-SLAM:低光、嚴(yán)重抖動和弱紋理場景全搞定 超越ORB-SLAM3! SL-SLAM:低光、嚴(yán)重抖動和弱紋理場景全搞定 May 30, 2024 am 09:35 AM

寫在前面今天我們探討下深度學(xué)習(xí)技術(shù)如何改善在複雜環(huán)境中基於視覺的SLAM(同時(shí)定位與地圖建構(gòu))表現(xiàn)。透過將深度特徵提取和深度匹配方法相結(jié)合,這裡介紹了一種多功能的混合視覺SLAM系統(tǒng),旨在提高在諸如低光條件、動態(tài)光照、弱紋理區(qū)域和嚴(yán)重抖動等挑戰(zhàn)性場景中的適應(yīng)性。我們的系統(tǒng)支援多種模式,包括拓展單目、立體、單目-慣性以及立體-慣性配置。除此之外,也分析如何將視覺SLAM與深度學(xué)習(xí)方法結(jié)合,以啟發(fā)其他研究。透過在公共資料集和自採樣資料上的廣泛實(shí)驗(yàn),展示了SL-SLAM在定位精度和追蹤魯棒性方面優(yōu)

一文搞懂:AI、機(jī)器學(xué)習(xí)與深度學(xué)習(xí)的連結(jié)與區(qū)別 一文搞懂:AI、機(jī)器學(xué)習(xí)與深度學(xué)習(xí)的連結(jié)與區(qū)別 Mar 02, 2024 am 11:19 AM

在當(dāng)今科技日新月異的浪潮中,人工智慧(ArtificialIntelligence,AI)、機(jī)器學(xué)習(xí)(MachineLearning,ML)與深度學(xué)習(xí)(DeepLearning,DL)如同璀璨星辰,引領(lǐng)著資訊科技的新浪潮。這三個(gè)詞彙經(jīng)常出現(xiàn)在各種前沿討論和實(shí)際應(yīng)用中,但對於許多初涉此領(lǐng)域的探索者來說,它們的具體含義及相互之間的內(nèi)在聯(lián)繫可能仍籠罩著一層神秘面紗。那讓我們先來看看這張圖??梢钥闯觯疃葘W(xué)習(xí)、機(jī)器學(xué)習(xí)和人工智慧之間存在著緊密的關(guān)聯(lián)和遞進(jìn)關(guān)係。深度學(xué)習(xí)是機(jī)器學(xué)習(xí)的一個(gè)特定領(lǐng)域,而機(jī)器學(xué)習(xí)

超強(qiáng)!深度學(xué)習(xí)Top10演算法! 超強(qiáng)!深度學(xué)習(xí)Top10演算法! Mar 15, 2024 pm 03:46 PM

自2006年深度學(xué)習(xí)概念被提出以來,20年快過去了,深度學(xué)習(xí)作為人工智慧領(lǐng)域的一場革命,已經(jīng)催生了許多具有影響力的演算法。那麼,你所認(rèn)為深度學(xué)習(xí)的top10演算法有哪些呢?以下是我心目中深度學(xué)習(xí)的頂尖演算法,它們在創(chuàng)新、應(yīng)用價(jià)值和影響力方面都佔(zhàn)有重要地位。 1.深度神經(jīng)網(wǎng)路(DNN)背景:深度神經(jīng)網(wǎng)路(DNN)也叫多層感知機(jī),是最普遍的深度學(xué)習(xí)演算法,發(fā)明之初由於算力瓶頸而飽受質(zhì)疑,直到近些年算力、數(shù)據(jù)的爆發(fā)才迎來突破。 DNN是一種神經(jīng)網(wǎng)路模型,它包含多個(gè)隱藏層。在該模型中,每一層將輸入傳遞給下一層,並

從基礎(chǔ)到實(shí)踐,回顧Elasticsearch 向量檢索發(fā)展史 從基礎(chǔ)到實(shí)踐,回顧Elasticsearch 向量檢索發(fā)展史 Oct 23, 2023 pm 05:17 PM

1.引言向量檢索已成為現(xiàn)代搜尋和推薦系統(tǒng)的核心組件。透過將複雜的物件(例如文字、圖像或聲音)轉(zhuǎn)換為數(shù)值向量,並在多維空間中進(jìn)行相似性搜索,它能夠?qū)崿F(xiàn)高效的查詢匹配和推薦。從基礎(chǔ)到實(shí)踐,回顧Elasticsearch向量檢索發(fā)展史_elasticsearchElasticsearch作為一款流行的開源搜尋引擎,在向量檢索方面的發(fā)展也一直備受關(guān)注。本文將回顧Elasticsearch向量檢索的發(fā)展歷史,重點(diǎn)介紹各階段的特性與進(jìn)展。以史為鑑,方便大家建立起Elasticsearch向量檢索的全量

TensorFlow深度學(xué)習(xí)架構(gòu)模型推理Pipeline進(jìn)行人像摳圖推理 TensorFlow深度學(xué)習(xí)架構(gòu)模型推理Pipeline進(jìn)行人像摳圖推理 Mar 26, 2024 pm 01:00 PM

概述為了讓ModelScope的使用者能夠快速、方便的使用平臺提供的各類模型,提供了一套功能完備的Pythonlibrary,其中包含了ModelScope官方模型的實(shí)現(xiàn),以及使用這些模型進(jìn)行推理,finetune等任務(wù)所需的資料預(yù)處理,後處理,效果評估等功能相關(guān)的程式碼,同時(shí)也提供了簡單易用的API,以及豐富的使用範(fàn)例。透過呼叫l(wèi)ibrary,使用者可以只寫短短的幾行程式碼,就可以完成模型的推理、訓(xùn)練和評估等任務(wù),也可以在此基礎(chǔ)上快速進(jìn)行二次開發(fā),實(shí)現(xiàn)自己的創(chuàng)新想法。目前l(fā)ibrary提供的演算法模型,

See all articles