操屁眼的视频在线免费看,日本在线综合一区二区,久久在线观看免费视频,欧美日韩精品久久综

新聞資訊

    本文是AI框架分析專欄的第五篇,總體目錄參見:

    AI框架的演進趨勢和的構想:

    金雪鋒:AI框架的演進趨勢和的構想

    數據處理其實在AI的訓練和推理中占了很大的比重,但是業界在這一塊的分析比較少,本文期望通過實踐給大家一些參考。

    AI框架中的數據處理

    在構建深度學習模型時,數據處理是我們最先面臨的挑戰。任務開始之前,由于數據量受限,或者為了得到更好的結果,通常需要進行數據增強操作,來獲得能使網絡受益的數據輸入。典型的訓練數據處理流程如下圖所示:

    海量遇到處理數據問題的方法_海量數據處理遇到的問題_海量遇到處理數據問題怎么解決

    加載:指從各種異構存儲中將訓練數據加載到內存中,加載時涉及數據的訪問、解析等處理;

    Shuffle:訓練一般是多個epoch,通過shuffle打亂數據集不同epoch的數據排序,防止訓練過擬合。如果數據集支持隨機訪問,則只需按不同順序隨機選擇數據就可以非常有效地進行混洗shuffle。如果數據集不支持隨機訪問(或僅部分隨機訪問像多個文件對象),那么一個子集的數據可以加載到一個特殊的混洗緩沖區shuffle buffer中。

    map:完成訓練數據的處理,包括圖像類數據增強、Text類分詞等處理。其中,數據增強是一種創造有著不同方向的“新”數據的方法,一是從有限數據中生成“更多數據”,二是防止過擬合。

    batch:訓練時一般都是使用mini-batch的方式,即一個批次訓練少量數據;batch算子負責構造一個批次的數據發送給訓練;

    repeat:可以通過repeat的方式增加訓練的總數據量;一次repeat就是加載一遍整個訓練集。

    模型在進行推理時,同樣會涉及到數據處理,典型的過程如下圖所示:

    **

    **

    推理過程的數據處理,將一張圖片進行解碼、縮放、中心截圖、歸一化、通道變換等操作后,送入模型中進行推理并得到結果。與訓練相比,推理時的數據轉換基本一致,不同的是推理時一般加載單樣本進行處理,而非數據集。

    本文將重點分析AI框架在數據處理時面臨的挑戰以及的解決思路。

    難點與挑戰2.1 數據處理的高效性

    當前各AI框架的數據處理主要利用CPU運算,訓練則利用GPU/AI芯片,兩者是并行的。理想情況下,應該在每輪迭代開始前,就準備好完成增強之后的數據,保持訓練過程持續地進行。然而在實際的訓練中,很多時候數據處理成為了阻礙性能提升的瓶頸:或是因為從存儲中讀取數據的速度不足(I/O bound),或是因為數據增強操作效率過低(CPU bound)。

    根據黃氏定律,GPU/AI芯片的算力每一年會提升一倍,相比于即將失效的摩爾定律,AI芯片的算力提升速度會遠大于CPU。模型迭代計算效率的不斷提升,對數據處理也提出了更高的要求:數據處理過程必須足夠高效,才能夠避免GPU/AI芯片因為等待訓練數據而空閑。

    2.2 數據處理的靈活性

    數據處理的靈活性挑戰主要體現在以下兩個方面:

    目前已知常用的開源數據集有幾百種,每種由不同的組織/機構來產生,有各自的格式與組織方式。根據深度學習任務的不同,每種類型的輸入也有自身的特點。以圖像為例,其包含類型、長、寬、大小等屬性信息,每張訓練圖像被標記成某一個類別,這些圖像及其對應類別的列表數據被用來進行分類等訓練;以音頻為例,通過訓練可以直接將語音轉換為文字,進一步作為智能AI的輸入,完成語義理解及指令性操作。

    在數據集加載時,如何支持種類繁多的圖像、文本、音頻、視頻格式,屏蔽IO差異并將其映射到內存結構中進行下一步處理,是AI框架重點需要解決的問題。

    例如CV類場景,圖像作為網絡的輸入,需要保證一定的一致性(如:大小、通道數、歸一化等),也需要有一定的泛化能力(如:鏡像、旋轉、混合、顏色變換等),才能使訓練得到的模型具有更好的精度。研究已經證明,采用不同的數據處理邏輯,訓練得到的模型精度會有明顯的不同。

    以和ssd為例,數據處理過程對比如下:

    海量數據處理遇到的問題_海量遇到處理數據問題的方法_海量遇到處理數據問題怎么解決

    其中既涉及到經典的數據處理邏輯,又包含了用戶自定義的處理過程。AutoML和動態shape等場景,也對數據處理的靈活性提出了更高要求。所以,提供更多、更靈活的數據處理機制,也是框架需要重點考慮的。

    海量遇到處理數據問題怎么解決_海量數據處理遇到的問題_海量遇到處理數據問題的方法

    2.3 端云統一

    網絡訓練生成的模型文件中,記錄了訓練時的計算圖及權重信息,但是數據處理過程往往沒有統一存儲到模型中,這就導致AI工程師在使用模型進行推理時,需要重新編寫數據處理代碼,十分不便。

    在端側場景下,CPU和內存資源往往比較少,在提供數據處理的能力時,要求API盡可能簡單、輕便,以最少的資源占用獲得最快的執行效率。同時,需要AI框架提供的庫盡可能的小。所以,使用云化場景提供的數據處理機制(啟動慢、資源占用大)就不是特別適用。如何在不同的場景下提供最合適的數據處理方法是AI框架面臨的挑戰。

    典型的云側場景與端側場景資源對比如下:

    資源

    云側

    端側

    CPU

    100+核

    4核-8核

    內存

    250G-750G

    3G-8G

    Device

    GPU/

    CPU/

    設計思考3.1 設計目標與思路

    的設計中,充分考慮了數據處理的高效性、靈活性以及在不同場景下的適配性。整個數據處理子系統分為以下模塊:

    海量數據處理遇到的問題_海量遇到處理數據問題怎么解決_海量遇到處理數據問題的方法

    API:數據處理過程在中以圖的形式表示,稱為“數據圖”。對外提供Python API來定義數據圖,內部實現圖優化和圖執行。

    整個數據加載和預處理的流程實現為多步并行流水線(data ),包括:

    Adaptor:將上層語言(如Python)構建的數據圖,轉換為下層可執行的C++數據圖( tree)

    :數據圖優化器

    Runtime:運行優化后 tree的執行引擎

    數據集算子(dataset ): tree中的某個節點,對應數據處理流水線中的一步具體操作,比如從文件夾加載訓練數據的算子,做各種數據增強的Map算子,Repeat算子等。

    數據增強算子(data ):也可稱為tensor算子,是對某個tensor變換的,比如Decode,Resize,Crop,Pad等,通常是被dataset 中的Map算子調用。

    數據增強后的結果,通過隊列和前向反向計算系統相連。下面將介紹這套子系統如何達到極致的數據處理性能。

    3.2 極致的處理性能

    海量數據處理遇到的問題_海量遇到處理數據問題的方法_海量遇到處理數據問題怎么解決

    海量遇到處理數據問題的方法_海量數據處理遇到的問題_海量遇到處理數據問題怎么解決

    相比于業界其他框架,采用了多段并行流水線(multi-stage )的方式來構建數據處理。這種架構一方面可以更加細粒度地規劃CPU等計算資源的使用,另一方面天然支持各段使用異構硬件進行流水處理,從而提高數據處理過程的吞吐量。如上圖所示,每個數據集算子(inline除外)都包含一個輸出:由一組阻塞隊列和計數器組成的保序緩沖隊列。每當一個數據集算子完成一塊緩存數據的處理,這個算子會將這塊緩存推送到自身的輸出。下游的數據集算子會從上游的輸出里取出緩存進行后續處理。這種機制的優勢包括:

    數據集加載、map、batch等操作以任務調度機制來驅動,每個操作的任務互相獨立,上下文通過來實現;每個操作均可以實現細粒度的多線程/多進程并行加速。數據框架為用戶提供調整算子線程數/多進程處理的接口,可以靈活控制各個節點的處理速度,進而實現整個數據處理性能最優;支持用戶對其大小進行設置,在一定程度上可以有效的控制內存的使用率,適用于不同網絡對于數據處理速度的要求。

    在這種數據處理機制下,對輸出數據進行保序處理是保證訓練精度的關鍵。保序意味數據處理流水線運行時,同樣順序的原始數據輸入,需要保證數據處理完成后,得到同樣順序的數據輸出。采用輪詢算法來保證多個線程數據處理的有序性:

    在上面的數據處理示例中,保序操作發生在下游map操作(4并發)的取出操作(單線程執行)中,其以輪詢的方式取出上游隊列中的數據。內部有兩個計數器expect\\_記錄已經有多少個從queues\_中取了數據,pop\_from\_記錄了哪個內部阻塞隊列將要進行下一次取出。expect\\_以個數取余,而pop\_from\_以個數取余。在expect\\_再次為0時,說明所有的local\_queues\_已經都處理上一批任務,然后繼續下一批任務分配及處理,進而實現了上游至下游map操作的多并發保序處理。

    數據會不斷地進行數據處理,并把處理后的數據發送到device側的緩存;當一個step執行結束后,會直接從device的緩存中讀取下一個step的數據。

    海量數據處理遇到的問題_海量遇到處理數據問題的方法_海量遇到處理數據問題怎么解決

    數據處理:負責將數據集處理成網絡需要的輸入,并傳遞給發送隊列中,保證數據處理的高效取可;

    發送隊列Queue:維護數據列隊,保證數據處理與網絡計算過程互不影響,實現橋梁的作用;

    網絡計算:從發送隊列中獲取數據,用于迭代訓練。

    以上三者各司其職,相互獨立,構筑整個訓練過程中。這樣,只要數據隊列不為空,模型訓練就不會因為等待訓練數據而產生瓶頸。

    當數據集的size較大時,無法全部加載到memory cache,此時訓練中的部分數據需要從磁盤讀取,可能會遇到I/O瓶頸,增大每個epoch的cache命中率就顯得尤為關鍵。傳統的緩存管理策略采用LRU策略,沒有考慮深度學習數據的讀取特點:在不同的epoch之間數據是重復讀取的,而在同一個epoch中隨機讀取。每條數據的讀取概率都是相同的,因此哪個數據被緩存并不是最重要的,已經cache的數據在被使用之前不被換出更加重要。針對這個特點,我們使用了一個簡單高效的緩存算法:數據一旦被緩存,就不會從cache中被換出。

    在數據圖優化的過程中,會根據流水線結構自動生成緩存算子,既可以緩存原始數據集,也可以緩存數據增強處理后的結果。

    3.3 靈活的定制能力

    整個數據處理中,用戶往往需要特定的處理邏輯,這些處理邏輯有其特殊性,無法固化到框架中。因此,框架需要具備開放的能力,讓用戶能夠訂制不同的數據處理邏輯。提供了靈活的數據集加載方式、豐富的數據處理算子、自動數據增強、數據動態Shape、數據處理等機制等供開發人員在各種場景使用。

    針對數據集種類繁多、格式與組織各異的難題,提供了三種不同的數據集加載方式:

    1)如果用戶使用常用數據集,那么可以使用內置的API接口直接進行加載。實現了包括、、、、、等數據集的C++ IO Reader加載,在保證性能的同時,實現了數據集的開箱即用。

    2)用戶將數據集轉換為數據格式,即,然后通過的API進行加載??梢詫⒉煌臄祿袷綒w一化,有聚合存儲、高效讀取、快速編解碼、靈活控制分區大小等多種優勢。

    3)如果用戶已經有自己數據集的Python讀取類,那么可以使用的 API調用該類實現數據集加載。這種方式可以快速集成已有代碼,改動最小,但因為是Python IO Reader,需要額外關注數據加載性能。

    海量數據處理遇到的問題_海量遇到處理數據問題的方法_海量遇到處理數據問題怎么解決

    內置了豐富的數據處理算子。這些算子可以分為C層以及Python層,C層算子能提供較高的執行性能;Python層算子可以很方便集成第三方包完成數據處理的功能,但是性能較低,好處是易開發易使用。支持用戶擴展自定義的數據處理算子,用戶可以開發C層算子代碼,編譯后以插件的形式注冊到的數據處理中進行調用。

    提供了基于特定策略自動對圖像進行數據增強處理的機制:通過基于概率或者回調參數的數據增強策略,可以實現算子自動選擇執行,達到訓練精度提升的目的。

    例如對 數據集,自動數據增強最終搜索出的方案包含 25 個子策略組合,每個子策略包含兩種變換,針對每幅圖像都隨機的挑選一個子策略組合,然后以一定的概率來決定是否執行子策略中的每種變換。

    海量數據處理遇到的問題_海量遇到處理數據問題怎么解決_海量遇到處理數據問題的方法

    這些策略包括:

    y - 多批概率算子,隨機選擇其中一批執行

    海量遇到處理數據問題的方法_海量遇到處理數據問題怎么解決_海量數據處理遇到的問題

    - 多個算子選擇其中一個執行

    海量遇到處理數據問題怎么解決_海量遇到處理數據問題的方法_海量數據處理遇到的問題

    海量遇到處理數據問題的方法_海量數據處理遇到的問題_海量遇到處理數據問題怎么解決

    -基于某個概率執行這批算子

    **

    海量遇到處理數據問題的方法_海量數據處理遇到的問題_海量遇到處理數據問題怎么解決

    **

    通過自動數據增強操作,在數據集上可以提升1%左右的訓練精度。

    通過 per\_batch\_map支持用戶自定義控制輸出不同Shape的訓練數據,滿足網絡需要基于不同場景調整數據Shape的訴求。

    海量遇到處理數據問題怎么解決_海量遇到處理數據問題的方法_海量數據處理遇到的問題

    用戶自定義數據Shape生成邏輯udf,如:第n個step生成shape為(x,y,z,...)的數據;通過batch(…, per\_batch\_map=udf)將第一步定義的邏輯生效,最終得到不同Shape訓練數據。

    通過機制實現根據訓練結果動態調整數據增強的邏輯,為數據增強過程提供更靈活的操作。

    海量數據處理遇到的問題_海量遇到處理數據問題怎么解決_海量遇到處理數據問題的方法

    支持用戶基于數據處理提供的(包含epoch開始、step開始、step結束、epoch結束等)實現自己的數據增強邏輯UDF,并將其添加至map操作中,以實現更靈活的數據增強操作。

    3.4 端云統一架構

    MindIR是基于圖表示的函數式IR,其最核心的目的是服務于自動微分變換。自動微分采用的是基于函數式編程框架的變換方法,因此IR采用了接近于ANF函數式的語義。

    推理數據圖典型的場景為:數據集樣本大小縮放、中間截圖、歸一化、通道變換。

    海量遇到處理數據問題的方法_海量數據處理遇到的問題_海量遇到處理數據問題怎么解決

    我們將推理數據圖以子圖的方式保存至生成的模型文件(MindIR)中,那么在推理時,可以通過統一的接口加載模型中數據處理流程,自動進行數據處理得到模型需要的輸入數據,簡化用戶的操作,提升易用性。

    海量遇到處理數據問題的方法_海量遇到處理數據問題怎么解決_海量數據處理遇到的問題

    云側訓練時,可以被使用的資源往往比較充裕,數據處理在運行過程中是會占用比較多系統資源(CPU和內存),以為例,訓練過程中CPU占用20%,內存占用30-50G,這顯然在端側是不可被接收的,并且數據處理在初始化時啟動會慢些,這也不適用于端側需要快速啟動、多次訓練/推理的前提條件。故:基于現有數據處理算子,提供一套更輕量化、更適用于端側的API,解決云化場景數據處理不適用于端側的問題。

    海量遇到處理數據問題怎么解決_海量數據處理遇到的問題_海量遇到處理數據問題的方法

    基于調整架構,支持數據處理單算子獨立使用(Eager Mode),支持各種場景推理,提供給AI開發人員更大的靈活性;同時,將輕量化,實現基于Pull Base的輕量化,減少資源占用并且處理速度快。

    通過上述兩種方法,保證了統一的數據處理架構支撐多種不同的應用場景。

    未來計劃

    在未來,將繼續完善數據處理的易用性,提供更豐富的算子和內置數據集。與此同時,探索大規模數據處理的加速技術,包括:

    當前各數據增強算子使用的處理線程數目由用戶手工配置,對用戶的調優經驗要求極高。通過自適應判斷瓶頸,由框架給各個數據增強算子合理分配CPU資源,可以在訓練過程中動態優化數據處理性能,免去用戶繁瑣的調優過程。

    當前的數據處理操作在CPU執行,一旦出現瓶頸,帶來AI芯片/GPU等待空閑,用戶無法充分利用所有硬件的計算能力。期望構建用戶無感知的異構硬件資源調度能力:通過監測硬件資源使用,完善Ascend/GPU上的數據處理算子,采用代價模型自適應地將數據處理任務調度至合適的資源,實現異構硬件的充分利用。

    當前如GPT-3等網絡的訓練需要使用超大規模數據集,這些數據難以在本地存儲,直接從OBS讀取會受網絡IO限制而影響性能。與此同時,在AutoML場景下,用戶經常在集群中運行同一類模型的多個作業(只是超參設置不同),每個作業獨立進行數據加載和處理效率極低。期望構建分布式緩存能力,加速這些場景下的數據處理。

    ETDCtrl.exe應用程序錯誤“OX00000000"指令引用的“OX00000000"內存。該內存不能為“read".怎么解決?

    【1】對電腦沒有影響或【偶爾】出現,不用管它,【重啟電腦】后可能會自動消失。

    【2】盜版系統或Ghost版本系統,系統文件錯誤或丟失,也會出現該問題,及時安裝官方發行的補丁,{檢查電腦年、月、日是否正確}。建議:安裝【正版】系統。

    【3】檢查驅動是否出現問題,重新安裝驅動或及時更新驅動。

    【4】病毒引起的:升級殺毒軟件或下載專殺工具,清理惡意插件,對電腦全盤殺毒。

    【5】硬件引起的:

    read命令詳解_指令不能為read不顯示桌面_電腦指令不能為read

    (1)可能是內存條出現的小問題,關機斷電,把內存條拆下清理干凈重新安裝。必要時更換內存條。(硬件上一般不會出現該問題)

    【6】軟件引起的:

    (1)安裝的軟件與系統或其它軟件發生沖突,盜版或帶病毒的軟件,請慎重下載軟件,最好使用正版?!具@里主要說的是檢查開機啟動項,把沒必要啟動的啟動項禁止開機啟動】

    (2)如果你的電腦中安裝了兩款或兩款以上的同類軟件,比如:兩款殺毒軟件、兩款優化系統軟件等,請卸載一款,以免發生沖突,以保持電腦穩定性。

    read命令詳解_電腦指令不能為read_指令不能為read不顯示桌面

    (3)有些系統補丁下載安裝了錯誤補丁,可能與您當前的系統或其它軟件發生沖突,也會出現該問題。卸載該補丁,找到適合您電腦補丁,重新下載重新安裝。

    (4)當安裝或打開運行播放器、游戲、QQ等第三方軟件,出現該問題時。可能是您下載的軟件存在著危險,系統本身為了保護系統不受影響,也會出現該內存不能為“read”或“wrtten”。一般的解決辦法就是卸載該軟件重新安裝。如果不能解決,需要更換同類型其它版本的軟件,或找到發生沖突的軟件卸載它,問題才能解決。

    可以試試下面的方法:看看能不能解決。

    ◆開始→運行→輸入cmd→回車,在命令提示符下輸入下面命令

    read命令詳解_指令不能為read不顯示桌面_電腦指令不能為read

    for %1 in (%windir%\\*.dll) do .exe /s %1回車。

    完成后,在輸入下面的

    for %i in (%windir%\\*.ocx) do .exe /s %i 回車。

    如果怕輸入錯誤,可以復制這兩條指令,然后在命令提示符后擊鼠標右鍵,打“粘貼”,回車,耐心等待,直到屏幕滾動停止為止。(重啟電腦)。

    ●在檢查運行regedit進入注冊表, 在\\\Windows\\\ 下,應該只有一個正常的鍵值{-7E19-11d0-97EE-}, 將其他的刪除?!救绻€有一個(默認)值不用管它,一般它為空?!勘匾獣r【還原】或重新安裝系統。

網站首頁   |    關于我們   |    公司新聞   |    產品方案   |    用戶案例   |    售后服務   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權所有