国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

昇騰CANN DVPP硬件加速訓(xùn)練數(shù)據(jù)預(yù)處理,友好解決Host CPU預(yù)處理瓶

這篇具有很好參考價值的文章主要介紹了昇騰CANN DVPP硬件加速訓(xùn)練數(shù)據(jù)預(yù)處理,友好解決Host CPU預(yù)處理瓶。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

本文分享自華為云社區(qū)《昇騰CANN 7.0 黑科技:DVPP硬件加速訓(xùn)練數(shù)據(jù)預(yù)處理,友好解決Host CPU預(yù)處理瓶頸》,作者: 昇騰CANN 。

隨著人工智能的快速發(fā)展,越來越多的應(yīng)用場景需要使用機器學(xué)習(xí)和深度學(xué)習(xí)模型。AI網(wǎng)絡(luò)模型的訓(xùn)練一般分成兩個關(guān)鍵部分,一個是訓(xùn)練數(shù)據(jù)預(yù)處理,一個是模型訓(xùn)練,如何提升兩者的處理性能成為提升模型訓(xùn)練性能的關(guān)鍵。一般情況下,數(shù)據(jù)加載預(yù)處理由host CPU處理,而模型訓(xùn)練計算是在NPU或GPU上處理的,兩者一般并行執(zhí)行,因此訓(xùn)練一次迭代的時間通常是兩個處理時間的最大值。

在NPU/GPU上進行模型訓(xùn)練計算,為了充分使用計算資源,一般采用批量數(shù)據(jù)處理方式,因此一般情況下為提升整體吞吐率,batch值會設(shè)置的比較大,常見的batch數(shù)為256/512,這樣一來,對數(shù)據(jù)預(yù)處理處理速度要求就會比較高。對于AI框架來說,常見的應(yīng)對方式是采用多個CPU進程并發(fā)處理,比如PyTorch框架的torchvision就支持多進程并發(fā),使用多個CPU進程來進行數(shù)據(jù)預(yù)處理,以滿足與NPU/GPU的計算流水并行處理。

然而,隨著NPU算力和性能的倍速提升,host CPU數(shù)據(jù)預(yù)處理過程逐漸成為性能瓶頸。模型端到端訓(xùn)練時間會因為數(shù)據(jù)預(yù)處理的瓶頸而拉長,這種情況下,如何解決性能瓶頸,提升端到端模型執(zhí)行性能呢?

?
下面來看一個torchvision的預(yù)處理過程:
 # Data loading code
    traindir = os.path.join(args.data, 'train')
normalize = transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
    train_dataset = datasets.ImageFolder(
        traindir,
        transforms.Compose([
            transforms.RandomResizedCrop(224),
            transforms.RandomHorizontalFlip(),
            transforms.ToTensor(),
            normalize,
        ]))
大家是不是對這些接口功能很熟悉?實際上,NPU上的DVPP也能進行類似處理,諸如圖片解碼、圖片縮放、翻轉(zhuǎn)處理等。DVPP是NPU上專門用于數(shù)據(jù)預(yù)處理的模塊,跟NN計算是完全獨立的。那么,如何讓DVPP接管torchvision的預(yù)處理邏輯呢?很簡單,兩行代碼輕松搞定:
import torchvision_npu  # 導(dǎo)入torchvision_npu包
    # Data loading code
    traindir = os.path.join(args.data, 'train')
    normalize = transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
    torchvision_npu.set_image_backend('npu')  # 設(shè)置圖像處理后端為npu
    train_dataset = datasets.ImageFolder(
        traindir,
        transforms.Compose([
            transforms.RandomResizedCrop(224),
            transforms.RandomHorizontalFlip(),
            transforms.ToTensor(),
            normalize,
        ]))
是不是很方便?AI算法工程師不需要修改torchvision的處理流程,不需要了解DVPP接口實現(xiàn),也不需要去寫C/C++代碼,而這些全都是torchvision_npu的功勞。torchvision_npu中重新實現(xiàn)了functional.py,在每個預(yù)處理接口中,判斷如果是npu類型的數(shù)據(jù),則走npu的處理邏輯:
if img.device.type == 'npu': _assert_image_npu(img) return F_npu.resize(img, size=size, interpolation=interpolation.value)
functional_npu.py內(nèi)部調(diào)用npu的resize算子進行處理,接著通過AscendCL接口,調(diào)用DVPP硬件處理:
return torch.ops.torchvision.npu_resize(img, size=sizes, mode=mode)
return torch.ops.torchvision.npu_resize(img, size=sizes, mode=mode)

下面來看下替換之后的性能如何。以ImageNet中最常見的分辨率375*500的jpeg圖片為例,CPU上執(zhí)行預(yù)處理操作需要6.801ms:

使用DVPP不但能加速數(shù)據(jù)預(yù)處理,還能異步執(zhí)行host下發(fā)任務(wù)和device任務(wù),整個流程只需要2.25ms,單張圖片處理節(jié)省了60%+的時間。

在ResNet50訓(xùn)練過程中,512batch數(shù)據(jù)處理只需要1.152 s,預(yù)處理多進程處理場景下性能優(yōu)勢更加明顯。

基于Atlas 800T A2 訓(xùn)練服務(wù)器,ResNet50使用DVPP加速數(shù)據(jù)預(yù)處理,單P只需要6個預(yù)處理進程即可把NPU的算力跑滿;而使用CPU預(yù)處理,則需要12個預(yù)處理進程才能達到相應(yīng)的效果,大大減少了對host CPU的性能依賴。

典型網(wǎng)絡(luò)場景,基于Atlas 800T A2 訓(xùn)練服務(wù)器,在CPU預(yù)處理成為性能瓶頸的情況下,使用DVPP預(yù)處理加速即可獲得整網(wǎng)訓(xùn)練速度顯著提升,其中ShuffleNetV2整網(wǎng)性能提升25%,MobileNetV1提升38%。

預(yù)處理使用獨立的硬件加速器DVPP加速,可以有效降低對Host CPU的依賴,避免CPU性能受限導(dǎo)致NPU性能無法發(fā)揮。同時使用NPU上獨立的DVPP硬件加速器進行預(yù)處理,可以與NN并行處理互不影響,數(shù)據(jù)在device內(nèi)可以自閉環(huán)。DVPP預(yù)處理加速是在訓(xùn)練場景下的第一次使能,補齊了NPU訓(xùn)練預(yù)處理性能短板。

昇騰CANN內(nèi)置的預(yù)處理算子是比較豐富的,后續(xù)在繼續(xù)豐富torchvision預(yù)處理算子庫的同時,也會進一步提升預(yù)處理算子的下發(fā)和執(zhí)行流程,讓流水處理的更好,減少數(shù)據(jù)處理的時間,持續(xù)提升昇騰CANN的產(chǎn)品競爭力,滿足更廣泛的業(yè)務(wù)場景訴求。

點擊關(guān)注,第一時間了解華為云新鮮技術(shù)~

?文章來源地址http://www.zghlxwxcb.cn/news/detail-750184.html

到了這里,關(guān)于昇騰CANN DVPP硬件加速訓(xùn)練數(shù)據(jù)預(yù)處理,友好解決Host CPU預(yù)處理瓶的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • YOLOv7教程系列:一、基于自定義數(shù)據(jù)集訓(xùn)練專屬于自己的目標檢測模型(保姆級教程,含數(shù)據(jù)集預(yù)處理),包含對train.py/test.py/detect.py/export.py詳細說明

    YOLOv7作為YOLO系列的又一大巔峰之作,下面將介紹利用自己的數(shù)據(jù)集訓(xùn)練YOLOv7模型。 github代碼鏈接:https://github.com/WongKinYiu/yolov7 目前版本為v0.1 運行環(huán)境如下: ubuntu20.04 cuda11.0 cudnn8.0.4 python3.8 torch1.12.0 torchvision0.11.0 在data目錄下新建Annotations, images, ImageSets, labels 四個文件夾 i

    2024年01月22日
    瀏覽(32)
  • 數(shù)據(jù)采集與預(yù)處理01: 項目1 數(shù)據(jù)采集與預(yù)處理準備

    數(shù)據(jù)采集與預(yù)處理01: 項目1 數(shù)據(jù)采集與預(yù)處理準備

    數(shù)據(jù)采集:足夠的數(shù)據(jù)量是企業(yè)大數(shù)據(jù)戰(zhàn)略建設(shè)的基礎(chǔ),因此數(shù)據(jù)采集成為大數(shù)據(jù)分析的前站。數(shù)據(jù)采集是大數(shù)據(jù)價值挖掘中重要的一環(huán),其后的分析挖掘都建立在數(shù)據(jù)采集的基礎(chǔ)上。大數(shù)據(jù)技術(shù)的意義確實不在于掌握規(guī)模龐大的數(shù)據(jù)信息,而在于對這些數(shù)據(jù)進行智能處理,

    2024年01月25日
    瀏覽(27)
  • 大數(shù)據(jù)采集技術(shù)與預(yù)處理學(xué)習(xí)一:大數(shù)據(jù)概念、數(shù)據(jù)預(yù)處理、網(wǎng)絡(luò)數(shù)據(jù)采集

    大數(shù)據(jù)采集技術(shù)與預(yù)處理學(xué)習(xí)一:大數(shù)據(jù)概念、數(shù)據(jù)預(yù)處理、網(wǎng)絡(luò)數(shù)據(jù)采集

    目錄 大數(shù)據(jù)概念: 1.數(shù)據(jù)采集過程中會采集哪些類型的數(shù)據(jù)? 2.非結(jié)構(gòu)化數(shù)據(jù)采集的特點是什么? 3.請闡述傳統(tǒng)的數(shù)據(jù)采集與大數(shù)據(jù)采集的區(qū)別? ???????????????4.大數(shù)據(jù)采集的數(shù)據(jù)源有哪些?針對不同的數(shù)據(jù)源,我們可以采用哪些不同的方法和工具? 數(shù)據(jù)

    2024年01月25日
    瀏覽(30)
  • 數(shù)據(jù)預(yù)處理matlab matlab數(shù)據(jù)的獲取、預(yù)處理、統(tǒng)計、可視化、降維

    1.1 從Excel中獲取 使用readtable() 例1: 使用 spreadsheetImportOptions(Name,Value) 初步確定導(dǎo)入信息, 再用 opts.Name=Value 的格式添加。 例2: 先初始化 spreadsheetImportOptions 對象, 再用 opts.Name=Value 的格式逐個添加。 例3: 將導(dǎo)入信息存到變量里, 再使用 spreadsheetImportOptions(Name,Value)

    2024年02月15日
    瀏覽(55)
  • 數(shù)據(jù)預(yù)處理之數(shù)據(jù)規(guī)約

    數(shù)據(jù)預(yù)處理之數(shù)據(jù)規(guī)約

    目錄 一、前言 二、PCA的主要參數(shù): 三、數(shù)據(jù)歸約任務(wù)1 四、數(shù)據(jù)規(guī)約任務(wù)2 PCA(Principal Component Analysis),即主成分分析方法,是一種使用最廣泛的數(shù)據(jù)降維算法。PCA的主要思想是將n維特征映射到k維上,這k維是全新的正交特征也被稱為主成分,是在原有n維特征的基礎(chǔ)上重新構(gòu)

    2024年02月12日
    瀏覽(29)
  • 數(shù)據(jù)分析--數(shù)據(jù)預(yù)處理

    本文主要是個人的學(xué)習(xí)筆記總結(jié),數(shù)據(jù)預(yù)處理的基本思路和方法,包括一些方法的使用示例和參數(shù)解釋,具體的數(shù)據(jù)預(yù)處理案例case詳見其他文章。如有錯誤之處還請指正! 目錄 數(shù)據(jù)的質(zhì)量評定 數(shù)據(jù)處理步驟 缺失值的處理 標記缺失值 刪除 缺失值 填充 缺失值 重復(fù)值處理 異

    2024年02月04日
    瀏覽(28)
  • 數(shù)據(jù)挖掘(2)數(shù)據(jù)預(yù)處理

    數(shù)據(jù)挖掘(2)數(shù)據(jù)預(yù)處理

    數(shù)據(jù)預(yù)處理的重要性 雜亂性:如命名規(guī)則。 重復(fù)性:同一客觀事再 不完整性: 噪聲數(shù)據(jù):數(shù)據(jù)中存在錯誤或異常的現(xiàn)象。 數(shù)據(jù)預(yù)處理的常見方法 數(shù)據(jù)清洗:去掉數(shù)據(jù)中的噪聲,糾正不一致。 數(shù)據(jù)集成:將多個數(shù)據(jù)源合成一致的數(shù)據(jù)存儲 數(shù)據(jù)變換(轉(zhuǎn)換):對數(shù)據(jù)的格式

    2024年02月07日
    瀏覽(24)
  • 頭歌:數(shù)據(jù)預(yù)處理之數(shù)據(jù)清洗

    本關(guān)任務(wù):完成泰坦尼克號遇難數(shù)據(jù)的清洗。 ? 案例背景 泰坦尼克號遭遇的災(zāi)難震驚世界,如何避免災(zāi)難甚至預(yù)測災(zāi)難呢? 要實現(xiàn)首先要做好泰坦尼克號的損失數(shù)據(jù)統(tǒng)計,才能為數(shù)據(jù)分析打下基礎(chǔ)。 編程要求 根據(jù)提示,你需要完成: 缺失值填充 離群點檢測

    2024年02月11日
    瀏覽(36)
  • 數(shù)據(jù)清洗和預(yù)處理

    預(yù)計更新 一、 爬蟲技術(shù)概述 1.1 什么是爬蟲技術(shù) 1.2 爬蟲技術(shù)的應(yīng)用領(lǐng)域 1.3 爬蟲技術(shù)的工作原理 二、 網(wǎng)絡(luò)協(xié)議和HTTP協(xié)議 2.1 網(wǎng)絡(luò)協(xié)議概述 2.2 HTTP協(xié)議介紹 2.3 HTTP請求和響應(yīng) 三、 Python基礎(chǔ) 3.1 Python語言概述 3.2 Python的基本數(shù)據(jù)類型 3.3 Python的流程控制語句 3.4 Python的函數(shù)和模

    2024年02月07日
    瀏覽(24)
  • python數(shù)據(jù)預(yù)處理

    python數(shù)據(jù)預(yù)處理

    輸出結(jié)果如下: 觀察可知,【銷量】存在一個缺失值,本例將缺失值所在行進行刪除處理 輸出結(jié)果如下: 輸出結(jié)果如下: 觀察可知,箱線圖上下邊緣存在異常值,本例通過四分位法對異常值進行處理,即:超出上邊緣的異常值讓其落在上邊緣,低于下邊緣的異常值讓其落在

    2024年02月13日
    瀏覽(30)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包