0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于NVIDIA GPU加速機(jī)器學(xué)習(xí)模型推理

星星科技指導(dǎo)員 ? 來(lái)源:NVIDIA ? 作者:NVIDIA ? 2022-04-22 09:53 ? 次閱讀

谷歌云與 NVIDIA 合作,宣布 Dataflow 將 GPU 帶入大數(shù)據(jù)處理領(lǐng)域,開啟新的可能性。使用數(shù)據(jù)流 GPU ,用戶現(xiàn)在可以在機(jī)器學(xué)習(xí)推理工作流中利用 NVIDIA GPU 的強(qiáng)大功能。下面我們將向您展示如何使用 BERT 獲得這些性能優(yōu)勢(shì)。

Google Cloud 的 Dataflow 是一個(gè)托管服務(wù),用于執(zhí)行各種各樣的數(shù)據(jù)處理模式,包括流式處理和批處理分析。它最近添加了 GPU 支持 現(xiàn)在可以加速機(jī)器學(xué)習(xí)推理工作流,這些工作流運(yùn)行在數(shù)據(jù)流管道上。

請(qǐng)查看 谷歌云發(fā)布 了解更多令人興奮的新功能。在這篇文章中,我們將展示 NVIDIA GPU 加速的性能優(yōu)勢(shì)和 TCO 改進(jìn),方法是部署一個(gè)來(lái)自 Transformers ( BERT )模型的雙向編碼器表示,該模型對(duì)數(shù)據(jù)流上的“問(wèn)答”任務(wù)進(jìn)行了微調(diào)。我們將用 CPU 演示數(shù)據(jù)流中的 TensorFlow 推理,如何在 GPU 上運(yùn)行相同的代碼,并顯著提高性能,展示通過(guò) NVIDIA TensorRT 轉(zhuǎn)換模型后的最佳性能,以及通過(guò) TensorRT 的 python API 和數(shù)據(jù)流進(jìn)行部署。查看 NVIDIA 示例代碼 立即嘗試。

pYYBAGJiCrOAZRn4AAGCS9X7AsQ462.png

圖 1 .數(shù)據(jù)流架構(gòu)和 GPU 運(yùn)行時(shí)。

有幾個(gè)步驟,我們將在這個(gè)職位上觸及。我們首先在本地機(jī)器上創(chuàng)建一個(gè)環(huán)境來(lái)運(yùn)行所有這些數(shù)據(jù)流作業(yè)。

創(chuàng)造環(huán)境

建議為 Python 創(chuàng)建一個(gè)虛擬環(huán)境,我們?cè)谶@里使用 virtualenv :

virtualenv -p  

使用 Dataflow 時(shí),需要將開發(fā)環(huán)境中的 Python 版本與 Dataflow 運(yùn)行時(shí) Python 版本對(duì)齊。更具體地說(shuō),在運(yùn)行數(shù)據(jù)流管道時(shí),應(yīng)該使用相同的 Python 版本和阿帕奇光束SDK 版本,以避免意外錯(cuò)誤。

現(xiàn)在,我們激活虛擬環(huán)境。

source /bin/activate

在激活虛擬環(huán)境之前需要注意的最重要的一點(diǎn)是確保您沒有在另一個(gè)虛擬環(huán)境中操作,因?yàn)檫@通常會(huì)導(dǎo)致問(wèn)題。

激活虛擬環(huán)境后,我們就可以安裝所需的軟件包了。即使我們的作業(yè)在 Dataflow 上運(yùn)行,我們?nèi)匀恍枰恍┍镜匕?,這樣當(dāng)我們?cè)诒镜剡\(yùn)行代碼時(shí) Python 就不會(huì)抱怨了。

pip install apache-beam[gcp]
pip install TensorFlow==2.3.1

您可以嘗試使用 TensorFlow 的不同版本,但這里的關(guān)鍵是將這里的版本與您將在數(shù)據(jù)流環(huán)境中使用的版本保持一致。 apachebeam 及其 Google 云組件也是必需的。

獲得微調(diào)的 BERT 模型

NVIDIA NGC 有大量的資源,從 GPU – 優(yōu)化的 containers 到微調(diào)的 models 。我們探索了幾個(gè) NGC 資源。

我們將使用的第一個(gè)資源是 BERT 大型模型,它針對(duì) SquadV2 問(wèn)答任務(wù)進(jìn)行了微調(diào),包含 3 。 4 億個(gè)參數(shù)。以下命令將下載 BERT model 。

wget --content-disposition 
https://api.ngc.nvidia.com/v2/models/nvidia/bert_tf_savedmodel_large_qa_squad2_amp_384/versions/19.03.0/zip -O bert_tf_savedmodel_large_qa_squad2_amp_384_19.03.0.zip

對(duì)于我們剛剛下載的 BERT 模型,在訓(xùn)練過(guò)程中使用了自動(dòng)混合精度( AMP ),序列長(zhǎng)度為 384 。

我們還需要一個(gè)詞匯表文件,我們可以從 BERT 檢查點(diǎn)獲得它,該檢查點(diǎn)可以通過(guò)以下命令從 NGC 獲得:

wget --content-disposition 
https://api.ngc.nvidia.com/v2/models/nvidia/bert_tf_ckpt_large_qa_squad2_amp_128/versions/19.03.1/zip -O bert_tf_ckpt_large_qa_squad2_amp_128_19.03.1.zip

在獲得這些資源之后,我們只需要解壓縮它們并將它們定位到我們的工作文件夾中。我們將使用自定義 docker 容器,這些模型將包含在我們的圖像中。

自定義 Dockerfile

我們將使用從 GPU 優(yōu)化的 NGC TensorFlow 容器派生的自定義 Dockerfile 。 NGC TensorFlow ( TF )容器是使用 NVIDIA GPU 加速 TF 模型的最佳選擇。

然后我們?cè)偬砑訋讉€(gè)步驟來(lái)復(fù)制這些模型和我們擁有的文件。您可以此處找到 Dockerfile ,下面是 Dockerfile 的快照。

FROM nvcr.io/nvidia/tensorflow:20.11-tf2-py3
RUN pip install --no-cache-dir apache-beam[gcp]==2.26.0 ipython pytest pandas && \
    mkdir -p /workspace/tf_beam
COPY --from=apache/beam_python3.6_sdk:2.26.0 /opt/apache/beam /opt/apache/beam
ADD. /workspace/tf_beam
WORKDIR /workspace/tf_beam
ENTRYPOINT [ "/opt/apache/beam/boot"]

接下來(lái)的步驟是構(gòu)建 docker 文件并將其推送到 Google 容器注冊(cè)中心( GCR )。您可以使用以下命令執(zhí)行此操作?;蛘?,您可以在此處使用我們創(chuàng)建的腳本。如果您使用的是我們回購(gòu)的腳本,那么只需執(zhí)行bash build_and_push.sh

project_id=""
docker build . -t "gcr.io/${project_id}/tf-dataflow-${USER}:latest"
docker push "gcr.io/${project_id}/tf-dataflow-${USER}:latest"

正在運(yùn)行作業(yè)

如果您已經(jīng)驗(yàn)證了您的 Google 帳戶,只需調(diào)用 run_gpu.sh 和 run_gpu.sh 腳本即可運(yùn)行我們提供的 Python 文件 here 。

數(shù)據(jù)流中的 CPU TensorFlow 引用( TF- CPU )

repo 中的 bert_squad2_qa_cpu.py 文件用于根據(jù)描述文本文檔回答問(wèn)題。批量大小是 16 ,這意味著我們將在每個(gè)推理電話回答 16 個(gè)問(wèn)題,有 16000 個(gè)問(wèn)題( 1000 批問(wèn)題)。請(qǐng)注意, BERT 可以針對(duì)給定特定用例的其他任務(wù)進(jìn)行微調(diào)。

在 Dataflow 上運(yùn)行作業(yè)時(shí),默認(rèn)情況下,它會(huì)根據(jù)實(shí)時(shí) CPU 使用情況自動(dòng)縮放。如果要禁用此功能,需要將 autoscaling_algorithm 設(shè)置為 NONE 。這將允許您選擇在整個(gè)工作周期中使用多少工人?;蛘?,可以通過(guò)設(shè)置 max_num_workers parameter ,讓 Dataflow 自動(dòng)縮放作業(yè)并限制要使用的最大工作線程數(shù)。

我們建議設(shè)置作業(yè)名稱,而不是使用自動(dòng)生成的名稱,以便通過(guò)設(shè)置 job_name 參數(shù)更好地跟蹤作業(yè)。此作業(yè)名稱將是運(yùn)行作業(yè)的計(jì)算實(shí)例的前綴。

用 GPU 加速( TF- GPU )

要在 GPU 支持下執(zhí)行相同的數(shù)據(jù)流 TensorFlow 推斷作業(yè),我們需要設(shè)置以下參數(shù)。有關(guān)更多信息,請(qǐng)參閱數(shù)據(jù)流 GPU 文檔。

--experiment "worker_accelerator=type:nvidia-tesla-t4;count:1;install-nvidia-driver"

前面的參數(shù)使我們能夠?qū)⒁粋€(gè) CUDAT4 張量核連接到 Dataflow worker VM ,它也可以作為運(yùn)行作業(yè)的 Compute VM 實(shí)例看到。數(shù)據(jù)流將自動(dòng)安裝所需的支持 NVIDIA 11 的 NVIDIA 驅(qū)動(dòng)程序。

bert_squad2_qa_gpu.py文件與bert_squad2_qa_cpu.py文件幾乎相同。這意味著只需很少甚至不做任何更改,就可以使用 NVIDIA GPU s 運(yùn)行作業(yè)。在我們的示例中,我們有幾個(gè)額外的 GPU 設(shè)置,比如用下面的代碼設(shè)置內(nèi)存增長(zhǎng)。

physical_devices = tf.config.list_physical_devices('GPU')
tf.config.experimental.set_memory_growth(physical_devices[0], True)

NVIDIA 優(yōu)化庫(kù)的推理

NVIDIA TensorRT 優(yōu)化了推理的深度學(xué)習(xí)模型,并提供了低延遲和高吞吐量(對(duì)于更多的 information )。在這里,我們使用 NVIDIA TensorRT 優(yōu)化到 BERT 模型,并用它來(lái)回答 GPU 在光速下的數(shù)據(jù)流管道上的問(wèn)題。用戶可以按照 TensorRT 演示 BERT github 存儲(chǔ)庫(kù) 進(jìn)行操作。

我們還使用了 Polygraphy, ,它是 TensorRT 的高級(jí) python API 來(lái)加載 TensorRT 引擎文件并運(yùn)行推斷。在數(shù)據(jù)流代碼中, TensorRT 模型被封裝為一個(gè)共享實(shí)用程序類,允許來(lái)自數(shù)據(jù)流工作進(jìn)程的所有線程使用它。

比較 CPU 和 GPU 運(yùn)行

在表 10 中,我們提供了用于示例運(yùn)行的總運(yùn)行時(shí)間和資源。數(shù)據(jù)流作業(yè)的最終成本是總 v CPU 時(shí)間、總內(nèi)存時(shí)間和總硬盤使用量的線性組合。對(duì)于 GPU 情況,還有一個(gè) GPU 組件。

請(qǐng)注意,上表是基于一次運(yùn)行編譯的,確切的數(shù)字或許略有波動(dòng),但根據(jù)我們的實(shí)驗(yàn),比率變化不大。

當(dāng)使用 NVIDIA GPU( TF- GPU )加速我們的模型時(shí),與使用 CPU ( TF- CPU )相比,包括成本和運(yùn)行時(shí)在內(nèi)的總節(jié)省是 10 倍以上。這意味著,當(dāng)我們使用 NVIDIA GPU 來(lái)推斷此任務(wù)時(shí),與僅使用 CPU 運(yùn)行模型相比,我們可以獲得更快的運(yùn)行時(shí)間和更低的成本。

使用 NVIDIA 優(yōu)化的推理庫(kù)(如 TensorRT ),用戶可以在數(shù)據(jù)流中的 GPU 上運(yùn)行更復(fù)雜和更大的模型。 TensorRT 進(jìn)一步加速同一作業(yè),比使用 TF- GPU 運(yùn)行快 3 。 6 倍,從而節(jié)省 4 。 2 倍的成本。與 TensorRT 和 TF- CPU 相比,我們的執(zhí)行時(shí)間減少了 17 倍,提供的賬單減少了 38 倍。

概括

在本文中,我們比較了 TF- CPU 、 TF- GPU 和 TensorRT 在 Google 云數(shù)據(jù)流上運(yùn)行的問(wèn)答任務(wù)的推理性能。數(shù)據(jù)流用戶可以通過(guò)利用 GPU 工人和 NVIDIA 優(yōu)化庫(kù)獲得巨大的好處。

用 NVIDIA GPU s 和 NVIDIA 軟件加速深度學(xué)習(xí)模型推理非常簡(jiǎn)單。通過(guò)添加或更改兩行,我們可以使用 TF- GPU 或 TensorRT 運(yùn)行模型。我們?cè)谶@里和這里提供了腳本和源文件供參考。

關(guān)于作者

Ethem Can NVIDIA 的數(shù)據(jù)科學(xué)家。他在解決客戶問(wèn)題的機(jī)器學(xué)習(xí)應(yīng)用程序方面擁有超過(guò) 12 年的研發(fā)經(jīng)驗(yàn)。在 NVIDIA 之前,他是主要的機(jī)器學(xué)習(xí)開發(fā)人員。埃森完成了他的博士學(xué)位。在麻州大學(xué)計(jì)算機(jī)科學(xué)系, Amherst

Dong Meng 是 NVIDIA 的解決方案架構(gòu)工程師。董先生在大數(shù)據(jù)平臺(tái)和加速器性能優(yōu)化方面經(jīng)驗(yàn)豐富。他與公共云服務(wù)提供商合作,為機(jī)器學(xué)習(xí)培訓(xùn)/推理和數(shù)據(jù)分析部署基于云的 GPU 加速解決方案。

Rajan Arora 是 NVIDIA 的解決方案架構(gòu)師經(jīng)理,專門從事面向消費(fèi)互聯(lián)網(wǎng)行業(yè)的機(jī)器學(xué)習(xí)和數(shù)據(jù)科學(xué)應(yīng)用。 Rajan 在 NVIDIA 工作了 4 年多,致力于開發(fā)系統(tǒng)基礎(chǔ)設(shè)施和廣泛的深度學(xué)習(xí)應(yīng)用程序。他有博士學(xué)位。亞特蘭大喬治亞理工學(xué)院電子和計(jì)算機(jī)工程專業(yè)。

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • NVIDIA
    +關(guān)注

    關(guān)注

    14

    文章

    4990

    瀏覽量

    103120
  • gpu
    gpu
    +關(guān)注

    關(guān)注

    28

    文章

    4742

    瀏覽量

    128973
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于NVIDIA GPU加速服務(wù) 為AI、機(jī)器學(xué)習(xí)和AI工作負(fù)載提速

    2019年8月26日 ——NVIDIA和VMware今日宣布將為VMware Cloud on AWS推出基于NVIDIA GPU加速服務(wù),為AI、
    發(fā)表于 08-30 09:36 ?1302次閱讀

    《CST Studio Suite 2024 GPU加速計(jì)算指南》

    許可證模型加速令牌或SIMULIA統(tǒng)一許可證模型的SimUnit令牌或積分授權(quán)。 4. GPU計(jì)算的啟用 - 交互式模擬:通過(guò)加速對(duì)話框
    發(fā)表于 12-16 14:25

    NVIDIA 在首個(gè)AI推理基準(zhǔn)測(cè)試中大放異彩

    NVIDIA GPU訓(xùn)練和評(píng)估其識(shí)別模型并對(duì)其1750億條Pin貼文執(zhí)行實(shí)時(shí)推理。Snap使用NVIDIA T4
    發(fā)表于 11-08 19:44

    Nvidia GPU風(fēng)扇和電源顯示ERR怎么解決

    問(wèn)題最近在Ubuntu上使用Nvidia GPU訓(xùn)練模型的時(shí)候,如果機(jī)器鎖屏一段時(shí)間再打開的時(shí)候鼠標(biāo)非??D,或者說(shuō)顯示界面非??D,使用nvidi
    發(fā)表于 12-30 06:44

    在Ubuntu上使用Nvidia GPU訓(xùn)練模型

    問(wèn)題最近在Ubuntu上使用Nvidia GPU訓(xùn)練模型的時(shí)候,沒有問(wèn)題,過(guò)一會(huì)再訓(xùn)練出現(xiàn)非常卡頓,使用nvidia-smi查看發(fā)現(xiàn),顯示GPU
    發(fā)表于 01-03 08:24

    壓縮模型會(huì)加速推理嗎?

    位壓縮和“無(wú)”配置下都運(yùn)行了 115 毫秒,盡管精度有所下降。我認(rèn)為將 float 網(wǎng)絡(luò)參數(shù)壓縮為 uint8_t 不僅可以節(jié)省內(nèi)存,還可以加快推理速度。那么,壓縮模型是否應(yīng)該加速推理
    發(fā)表于 01-29 06:24

    NVIDIA GPU加速AI推理洞察,推動(dòng)跨行業(yè)創(chuàng)新

    這些AI模型被運(yùn)行在裝載了V100Tensor Core GPU的NVIDIADGX系統(tǒng)上的數(shù)據(jù)中心服務(wù)器上,以及裝載了JetsonAGX Xavier模塊的邊緣計(jì)算網(wǎng)絡(luò)中。該硬件運(yùn)行NVIDIA
    的頭像 發(fā)表于 07-02 15:00 ?1983次閱讀

    Microsoft使用NVIDIA Triton加速AI Transformer模型應(yīng)用

    Microsoft 的目標(biāo)是,通過(guò)結(jié)合使用 Azure 與 NVIDIA GPU 和 Triton 推理軟件,率先將一系列強(qiáng)大的 AI Transformer 模型投入生產(chǎn)用途。
    的頭像 發(fā)表于 04-02 13:04 ?1769次閱讀

    NVIDIA TSPP和Triton推理服務(wù)器加速模型推理

    NVIDIA 時(shí)間序列預(yù)測(cè)平臺(tái)提供從訓(xùn)練到時(shí)間序列模型的推斷的端到端 GPU 加速。平臺(tái)中包含的參考示例經(jīng)過(guò)優(yōu)化和認(rèn)證,可在 NVIDIA
    的頭像 發(fā)表于 04-10 17:44 ?2270次閱讀
    用<b class='flag-5'>NVIDIA</b> TSPP和Triton<b class='flag-5'>推理</b>服務(wù)器<b class='flag-5'>加速</b><b class='flag-5'>模型</b><b class='flag-5'>推理</b>

    如何對(duì)推理加速器進(jìn)行基準(zhǔn)測(cè)試

      客戶對(duì)基準(zhǔn)推理學(xué)習(xí)曲線的最后階段是開發(fā)自己的模型,使用通常來(lái)自 Nvidia 或數(shù)據(jù)中心的訓(xùn)練硬件/軟件,然后在可能的目標(biāo)推理加速器上對(duì)
    的頭像 發(fā)表于 06-06 16:02 ?1332次閱讀

    騰訊云與NVIDIA仍持續(xù)為AI推理加速進(jìn)行合作

    Kit 不僅大大提升了 GPU 集群上多機(jī)多卡分布式訓(xùn)練的效率,對(duì)于 GPU 上的模型推理也通過(guò)集成 NVIDIA TensorRT 帶來(lái)
    的頭像 發(fā)表于 08-31 09:24 ?1553次閱讀

    螞蟻鏈AIoT團(tuán)隊(duì)與NVIDIA合作加速AI推理

    螞蟻鏈 AIoT 團(tuán)隊(duì)與 NVIDIA 合作,將量化感知訓(xùn)練(QAT)技術(shù)應(yīng)用于深度學(xué)習(xí)模型性能優(yōu)化中,并通過(guò) NVIDIA TensorRT 高性能
    的頭像 發(fā)表于 09-09 09:53 ?1169次閱讀

    NVIDIA GPU加速潞晨科技Colossal-AI大模型開發(fā)進(jìn)程

    通過(guò) NVIDIA GPU 加速平臺(tái),Colossal-AI 實(shí)現(xiàn)了通過(guò)高效多維并行、異構(gòu)內(nèi)存管理、大規(guī)模優(yōu)化庫(kù)、自適應(yīng)任務(wù)調(diào)度等方式,更高效快速部署 AI 大模型訓(xùn)練與
    的頭像 發(fā)表于 10-19 09:39 ?1466次閱讀

    利用NVIDIA組件提升GPU推理的吞吐

    本實(shí)踐中,唯品會(huì) AI 平臺(tái)與 NVIDIA 團(tuán)隊(duì)合作,結(jié)合 NVIDIA TensorRT 和 NVIDIA Merlin HierarchicalKV(HKV)將推理的稠密網(wǎng)絡(luò)和熱
    的頭像 發(fā)表于 04-20 09:39 ?734次閱讀

    NVIDIA加速微軟最新的Phi-3 Mini開源語(yǔ)言模型

    NVIDIA 宣布使用 NVIDIA TensorRT-LLM 加速微軟最新的 Phi-3 Mini 開源語(yǔ)言模型。TensorRT-LLM 是一個(gè)開源庫(kù),用于優(yōu)化從 PC 到云端的
    的頭像 發(fā)表于 04-28 10:36 ?577次閱讀