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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于NVIDIA GPU加速機器學習模型推理

星星科技指導員 ? 來源:NVIDIA ? 作者:NVIDIA ? 2022-04-22 09:53 ? 次閱讀

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

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

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

pYYBAGJiCrOAZRn4AAGCS9X7AsQ462.png

圖 1 .數(shù)據(jù)流架構和 GPU 運行時。

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

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

建議為 Python 創(chuàng)建一個虛擬環(huán)境,我們在這里使用 virtualenv :

virtualenv -p  

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

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

source /bin/activate

在激活虛擬環(huán)境之前需要注意的最重要的一點是確保您沒有在另一個虛擬環(huán)境中操作,因為這通常會導致問題。

激活虛擬環(huán)境后,我們就可以安裝所需的軟件包了。即使我們的作業(yè)在 Dataflow 上運行,我們仍然需要一些本地包,這樣當我們在本地運行代碼時 Python 就不會抱怨了。

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

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

獲得微調的 BERT 模型

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

我們將使用的第一個資源是 BERT 大型模型,它針對 SquadV2 問答任務進行了微調,包含 3 。 4 億個參數(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

對于我們剛剛下載的 BERT 模型,在訓練過程中使用了自動混合精度( AMP ),序列長度為 384 。

我們還需要一個詞匯表文件,我們可以從 BERT 檢查點獲得它,該檢查點可以通過以下命令從 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 模型的最佳選擇。

然后我們再添加幾個步驟來復制這些模型和我們擁有的文件。您可以此處找到 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"]

接下來的步驟是構建 docker 文件并將其推送到 Google 容器注冊中心( GCR )。您可以使用以下命令執(zhí)行此操作。或者,您可以在此處使用我們創(chuàng)建的腳本。如果您使用的是我們回購的腳本,那么只需執(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è)

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

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

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

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

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

用 GPU 加速( TF- GPU )

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

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

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

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

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

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

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

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

比較 CPU 和 GPU 運行

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

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

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

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

概括

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

用 NVIDIA GPU s 和 NVIDIA 軟件加速深度學習模型推理非常簡單。通過添加或更改兩行,我們可以使用 TF- GPU 或 TensorRT 運行模型。我們在這里和這里提供了腳本和源文件供參考。

關于作者

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

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

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

審核編輯:郭婷

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

    關注

    14

    文章

    4793

    瀏覽量

    102433
  • gpu
    gpu
    +關注

    關注

    27

    文章

    4591

    瀏覽量

    128164
收藏 人收藏

    評論

    相關推薦

    基于NVIDIA GPU加速服務 為AI、機器學習和AI工作負載提速

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

    NVIDIA 在首個AI推理基準測試中大放異彩

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

    Nvidia GPU風扇和電源顯示ERR怎么解決

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

    在Ubuntu上使用Nvidia GPU訓練模型

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

    壓縮模型加速推理嗎?

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

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

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

    Microsoft使用NVIDIA Triton加速AI Transformer模型應用

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

    NVIDIA TSPP和Triton推理服務器加速模型推理

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

    如何對推理加速器進行基準測試

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

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

    Kit 不僅大大提升了 GPU 集群上多機多卡分布式訓練的效率,對于 GPU 上的模型推理也通過集成 NVIDIA TensorRT 帶來
    的頭像 發(fā)表于 08-31 09:24 ?1449次閱讀

    螞蟻鏈AIoT團隊與NVIDIA合作加速AI推理

    螞蟻鏈 AIoT 團隊與 NVIDIA 合作,將量化感知訓練(QAT)技術應用于深度學習模型性能優(yōu)化中,并通過 NVIDIA TensorRT 高性能
    的頭像 發(fā)表于 09-09 09:53 ?1056次閱讀

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

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

    Oracle 云基礎設施提供新的 NVIDIA GPU 加速計算實例

    生成式 AI 和大語言模型(LLM)不斷推動突破性創(chuàng)新,訓練和推理對算力的需求也隨之急劇上升。 這些現(xiàn)代生成式 AI 應用需要全棧加速計算,首先要有能夠快速、準確處理大量工作負載的先進基礎設施
    的頭像 發(fā)表于 09-25 20:40 ?470次閱讀
    Oracle 云基礎設施提供新的 <b class='flag-5'>NVIDIA</b> <b class='flag-5'>GPU</b> <b class='flag-5'>加速</b>計算實例

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

    本實踐中,唯品會 AI 平臺與 NVIDIA 團隊合作,結合 NVIDIA TensorRT 和 NVIDIA Merlin HierarchicalKV(HKV)將推理的稠密網(wǎng)絡和熱
    的頭像 發(fā)表于 04-20 09:39 ?508次閱讀

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

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