自然語言處理(NLP)是人工智能最具挑戰性的任務之一,因為它需要理解上下文、語音和重音才能將人類的言語轉化為文本。 構建這個AI工作流程首先要培訓一個能夠理解和處理口語到文本的模型。
BERT是這項任務的最佳模型之一。 不要從頭開始構建像BERT這樣最先進的模型,你可以 微調預訓練的BERT模型 對于您的特定用例,并將其用于工作 NVIDIA Triton Inference Serve。 有兩個基于BERT的模型可用:
具有12層、12個注意頭和1.1億個參數的BERT-Base
擁有24層、16個注意頭和3.4億個參數的BERT-Large
這些模型中的許多參數是稀疏的。 因此,大量的參數降低了推理的吞吐量。 在這篇文章中,您使用BERT推理作為示例來演示如何利用 傳感器RT容器 from 英偉達NGC 并獲得一個性能提升的推理與您的人工智能模型。
本崗位使用以下資源:
The 傳感器流量容器 用于GPU加速訓練
一個系統最多有8個NVIDIA GPU,例如 DGX-1
其他NVIDIA GPU可以使用,但訓練時間隨GPU的數量和類型而變化。
基于GPU的實例可用于所有主要的云服務提供商。
NVIDIA Docke
The 最新的CUDA司機
從NGC那里得到資產
在開始BERT優化過程之前,您必須從其中獲得一些資產 NGC:
一個微調的BERT-大模型
在TensorFlow中,使用微調模型運行推理的模型腳本
微調BERT-大型模型
如果你遵循我們以前的帖子, 啟動人工智能培訓與NGC預先訓練模型在現場和在云 您將看到,我們正在使用相同的微調模型進行優化。
如果你沒有機會微調你自己的模型,做一個目錄并下載預先訓練的模型文件。 你有幾個下載選項。
備選案文1 :使用以下命令從命令行下載。 在終端,使用 wget 下載微調模型:
mkdir bert_model && cd bert_model wget https://api.ngc.nvidia.com/v2/models/nvidia/bert_tf_v1_1_large_fp16_384/versions/2/files/ bert_config.json wget https://api.ngc.nvidia.com/v2/models/nvidia/bert_tf_v1_1_large_fp16_384/versions/2/files/model.ckpt-5474.data-00000-of-00001 wget https://api.ngc.nvidia.com/v2/models/nvidia/bert_tf_v1_1_large_fp16_384/versions/2/files/model.ckpt-5474.index wget https://api.ngc.nvidia.com/v2/models/nvidia/bert_tf_v1_1_large_fp16_384/versions/2/files/model.ckpt-5474.meta wget https://api.ngc.nvidia.com/v2/models/nvidia/bert_tf_v1_1_large_fp16_384/versions/2/files/vocab.txt
備選案文2 *從國家災害管理委員會網站下載。
在瀏覽器中,導航到 模型回購頁面.
在右上角,選擇 .
壓縮文件下載完成后,解壓文件。
參考微調模型保存為的目錄 $model_di 。 它可以是您從上一篇文章中保存的模型,也可以是您剛剛下載的模型。
在此目錄下,導出:
export MODEL_DIR=$PWD cd ..
使用微調模型運行推理的模型腳本
使用以下腳本查看TensorFlow格式的BERT推理的性能。 要下載模型腳本:
在瀏覽器中,導航到 模特腳本頁面.
在右上方,選擇 .
或者,模型腳本可以使用來自GitHub上的NVIDIA深度學習示例的git下載:
mkdir bert_tf && cd bert_tf git clone https://github.com/NVIDIA/DeepLearningExamples.git
您正在從BERT目錄中進行TensorFlow推理。 無論您是使用NGC網頁下載還是使用GitHub下載,請參閱此目錄 $bert_di.
導出此目錄如下:
export BERT_DIR=$PWD'/DeepLearningExamples/TensorFlow/LanguageModeling/BERT/' cd ..
在克隆TensorRT GitHub回購之前,運行以下命令:
mkdir bert_trt && cd bert_trt
要獲得將BERT TensorFlow模型轉換并運行到TensorRT所需的腳本,請 下載TensorRT組件 。 確保目錄位置正確:
$model_di—BERT模型檢查點文件的位置。
$bert_di—Location of the BERT TF scripts.
傳感器流量性能評估
在本節中,您將構建、運行和評估BERT在傳感器流中的性能。
設置并運行Docker容器
通過運行以下命令構建Docker容器:
docker build $BERT_DIR -t bert
啟動BERT容器,有兩個安裝的卷:
一卷為BERT模型腳本代碼回購,安裝到 工作空間/艾伯特.
一卷為微調模型,您要么微調自己或下載從NGC,安裝到 /微調-model-bert.
docker run --gpus all -it / -v $BERT_DIR:/workspace/bert / -v $MODEL_DIR:/微調-model-bert / bert
準備數據集
您正在使用SQUAD數據集評估BERT模型。 有關更多信息,請參見 SQU AD1.1:斯坦福問答數據集.
export BERT_PREP_WORKING_DIR="/workspace/bert/data" python3 /workspace/bert/data/ 伯特準備 --action download --dataset squad
如果行導入 出版物MedTextFormatting 給出任何錯誤 bertPrep.py 腳本,注釋這一行,因為您不需要本例中的PubMed數據集。
此腳本下載兩個文件夾 $BERT_PREP_WORKING_DIR/下載/平方: v2.0/ and v1.1/ 。 為本崗位,使用 v1.1/.
使用TensorFlow模型運行評估
在容器內,導航到包含模型腳本的BERT工作區:
cd /workspace/bert/
您可以使用TensorFlow中的微調模型運行推理 腳本/run_squad.sh的的。 有關更多信息,請參見 啟動人工智能培訓與NGC預先訓練模型在現場和在云.
這個腳本有兩個修改。 首先,將其設置為只預測模式:
do_train=假的
--do_predict=True
當你手動編輯的時候 do_train=假的 in run_squad.sh ,您傳遞的與培訓相關的參數 run_squad.sh 在這種情況下是不相關的。
二,從第27行開始注釋出下面的塊:
#if [ "$bert_model" = "large" ] ; then # export BERT_DIR=data/download/google_pretrained_weights/uncased_L-24_H-1024_A-16 #else # export BERT_DIR=data/download/google_pretrained_weights/uncased_L-12_H-768_A-12 #fi
因為你可以得到 vocab.txt and bert_config.json 從安裝的目錄 /微調-model-bert 你不需要這個代碼塊。
現在,出口集裝箱內的BERT_DIR:
export BERT_DIR=/finetuned-model-bert
進行修改后,發出以下命令:
bash scripts/run_squad.sh 1 5e-6 fp16 true 1 384 128 large 1.1 /finetuned-model-bert/model.ckpt<-num>
放正確的檢查點號碼 <-num> 可用:
INFO:tensorflow:Throughput Average (sentences/sec) = 106.56
我們觀察到,在一個NVIDIA T4GPU驅動的系統上,在傳感器流中直接運行推理的推理速度為每秒106.56句。 性能可能取決于GPU的數量和GPU的體系結構。
這是很好的表現,但它能更好嗎? 通過使用腳本進行調查 /workspace/bert/trt 將TF模型轉換為TensorRT7.1,然后在TensorRTBERT模型引擎上進行推理。 對于這個過程,切換到Tensor RT回購,并構建一個Docker映像以啟動。
發出以下命令:
exit
傳感器RT性能評估
在下面的部分中,您將構建、運行和評估BERT在傳感器流中的性能。 在繼續之前,確保您已經下載并設置了 張索爾特Github回購.
設置一個Docker容器
在此步驟中,您將從Dockerfile構建并啟動用于Tensor RT的Docker映像。
在主機上,導航到TensorRT目錄:
cd TensorRT
劇本 碼頭/build.sh 構建TensorRT碼頭容器:
./docker/build.sh --file docker/ubuntu.Dockerfile --tag tensorrt-ubuntu --os 18.04 --cuda 11.0
容器構建后,必須通過執行該容器來啟動它 包包/包包 劇本。 然而,在啟動容器之前,請修改 包包/包包 要添加 -v$MODEL_DIR:/微調模型-伯特 and -v$BERT_DIR/data/download/squad/v1.1:/data/squad in docker_args 分別傳遞您的微調模型和團隊數據集。
The docker_args 在排隊 49 應該像下面的代碼:
docker_args="$extra_args -v $MODEL_DIR:/finetuned-model-bert -v $BERT_DIR/data/download/squad/v1.1:/data/squad -v $arg_trtrelease:/tensorrt -v $arg_trtsource:/workspace/TensorRT -it $arg_imagename:latest"
現在在本地構建并啟動Docker映像:
./docker/launch.sh --tag tensorrt-ubuntu --gpus all --release $TRT_RELEASE --source $TRT_SOURCE
當您處于容器中時,必須構建TensorRT插件:
cd $TRT_SOURCE export LD_LIBRARY_PATH=`pwd`/build/out:$LD_LIBRARY_PATH:/tensorrt/lib mkdir -p build && cd build cmake .. -DTRT_LIB_DIR=$TRT_RELEASE/lib -DTRT_OUT_DIR=`pwd`/out make -j$(nproc) pip3 install /tensorrt/python/tensorrt-7.1*-cp36-none-linux_x86_64.whl
現在您已經準備好構建BERT傳感器RT引擎了。
搭建TensorRT引擎
制作目錄存儲TensorRT引擎:
mkdir -p /workspace/TensorRT/engines
可選的,探索 /workspace/TensorRTdemo/BERT/scripts/download_model.sh 看看你如何使用它 ngc注冊模式下載版本 命令從NGC下載模型。
快跑 builder.py 腳本,注意以下值:
到傳感器流模型的路徑 /finetuned-model-bert/model.ckpt-/li>
要構建的引擎的輸出路徑
批尺寸1
序列長度384
精密fp16
檢查站路徑 /finetuned-model-bert
cd /workspace/TensorRT/demo/BERT python3 builder.py -m /finetuned-model-bert/model.ckpt-5474 -o /workspace/TensorRT/engines/bert_large_384.engine -b 1 -s 384 --fp16 -c /finetuned-model-bert/
確保提供正確的檢查點模型。 腳本需要~1-2分鐘來構建TensorRT引擎。
運行TensorRT推理
現在運行內置的TensorRT推理引擎,從2K樣本 SQADV1.1評估數據集 。 要運行并獲得吞吐量編號,請從行號替換代碼 222 收件人行號 228 in 推斷.py 如下面的代碼塊所示。
注意壓痕。 如果提示符在容器中安裝vim時請求密碼,請使用密碼nvidia。
if squad_examples: eval_time_l = [] all_predictions = collections.OrderedDict() for example_index, example in enumerate(squad_examples): print("Processing example {} of {}".format(example_index+1, len(squad_examples)), end="/r") features = question_features(example.doc_tokens, example.question_text) eval_time_elapsed, prediction, nbest_json = inference(features, example.doc_tokens) eval_time_l.append(1.0/eval_time_elapsed) all_predictions[example.id] = prediction if example_index+1 == 2000: break print("Throughput Average (sentences/sec) = ",np.mean(eval_time_l))
現在運行推斷:
CUDA_VISIBLE_DEVICES=0 python3 inference.py -e /workspace/TensorRT/engines/bert_large_384.engine -b 1 -s 384 -sq /data/squad/dev-v1.1.json -v /finetuned-model-bert/vocab.txt Throughput Average (sentences/sec) = 136.59
我們觀察到,在一個NVIDIAT4GPU驅動的系統上,使用TensorRT7.1運行推理的推理速度為每秒136.59句。 性能可能取決于GPU的數量和GPU的體系結構,其中存儲數據和其他因素。 然而,由于使用TensorRT進行模型優化,您將始終觀察到性能提升。
據顯示,TensorRTBERT引擎的平均吞吐量為136.59句/秒,而BERT模型在TensorFlow中給出的平均吞吐量為106.56句/秒。 這是28%的吞吐量提升。
總結,一覽即刻的,立即的
拉一下 從NGC檢測RT容器 為了方便和快速地在所有主要框架中調整您的模型,創建新的低延遲推理應用程序,并向客戶提供最佳服務質量(QoS。
關于作者
關于Abhishek Sawarka
Abhishek Sawarkar負責開發和展示NVIDIA Jarvis框架上以深度學習為重點的內容。 他的背景是計算機視覺和機器學習,但目前他正在研究整個Jarvis多模態管道,包括ASR、NLP、TTS和CV。 他是卡內基梅隆大學的應屆畢業生,擁有電氣和計算機工程碩士學位。
關于詹姆斯·索恩
詹姆斯是NVIDIA的深度學習技術營銷工程師,專注于多模態會話AI框架Jarvis。 詹姆斯獲得了西北大學機器人學碩士學位,他專注于計算機視覺和機器學習的人體運動建模。
審核編輯 黃昊宇
-
傳感器
+關注
關注
2567文章
53038瀏覽量
767927 -
AI
+關注
關注
88文章
35217瀏覽量
280396
發布評論請先 登錄
信而泰×DeepSeek:AI推理引擎驅動網絡智能診斷邁向 “自愈”時代
如何在魔搭社區使用TensorRT-LLM加速優化Qwen3系列模型推理部署
英偉達GTC2025亮點:Oracle與NVIDIA合作助力企業加速代理式AI推理

英偉達GTC25亮點:NVIDIA Blackwell Ultra 開啟 AI 推理新時代
英偉達GTC25亮點:NVIDIA Dynamo開源庫加速并擴展AI推理模型
Oracle 與 NVIDIA 合作助力企業加速代理式 AI 推理

賴耶科技通過NVIDIA AI Enterprise平臺打造超級AI工廠
NVIDIA助力Amdocs打造生成式AI智能體
日本企業借助NVIDIA產品加速AI創新
FPGA和ASIC在大模型推理加速中的應用

NVIDIA助力麗蟾科技打造AI訓練與推理加速解決方案

評論