目前,人工智能應用程序的構建和部署方式正在發生根本性轉變。人工智能應用越來越復雜,并應用于更廣泛的用例。這需要端到端的人工智能生命周期管理,從數據準備到模型開發和培訓,再到人工智能應用程序的部署和管理。這種方法可以降低前期成本,提高可擴展性,并降低客戶使用 AI 應用程序的風險。
雖然云原生的應用程序開發方法對開發人員很有吸引力,但機器學習( ML )項目是出了名的時間密集型和成本密集型項目,因為它們需要一個擁有多種技能的團隊來構建和維護。
這篇文章解釋了如何使用 NVIDIA TAO Toolkit 加速視覺 AI 模型開發,并將其部署到 NVIDIA Triton Inference Server 中進行推理,所有這些都在 Azure 機器學習( Azure ML )平臺上。
NVIDIA Triton 推理服務器是一款開源推理服務軟件,幫助標準化模型部署和執行,并在生產中提供快速和可擴展的 AI 。
Azure ML 是一種用于加速和管理機器學習項目生命周期的云服務,使開發人員能夠自動化人工智能工作流,從數據準備、模型培訓到模型部署。開發人員可以使用 Azure ML 輕松地大規模培訓、部署和管理 AI 模型。
觀看下面的視頻,了解如何使用 NVIDIA TAO 工具包微調您的模型,并在 Azure ML 上使用 NVIDIA Triton 推理服務器部署它們進行推理的完整演練。
視頻 1 。在 Azure 機器學習上使用 NVIDIA TAO 工具包創建和部署自定義 AI 模型
整個工作流程包括三個主要步驟:
- 安裝 NGC Azure ML 快速啟動工具包
- 訓練和優化預訓練的對象檢測模型
- 使用 NVIDIA Triton 推理服務器在 Azure ML 上部署優化模型

本節介紹安裝 NGC 快速啟動工具包所需的步驟,該工具包配置 Azure ML 資源并上載必要的容器和模型以供培訓。所需的配置文件在 NVIDIA NGC Catalog 上的 AzureML Quick Launch – TAO 資源上提供。
使用以下代碼創建 conda 環境以安裝 Azure ML 快速啟動工具包,以避免與計算機中的現有庫發生任何可能的沖突:
conda create -n azureml-ngc-tools python=3.8
conda activate azureml-ngc-tools
使用以下代碼安裝 Azure ML 快速啟動工具包:
pip install azureml-ngc-tools
從 AzureML Quick Launch: TAO 下載資源:
wget --content-disposition https://api.ngc.nvidia.com/v2/resources/nvidia/tao_detectnet_aml/versions/version1/zip -O azureml_quick_launch_tao_1.zip
文件內容
azure_config.json
文件包含與需要更新的用戶憑據、 Azure 工作區和 GPU 計算資源有關的詳細信息。使用 Azure 訂閱 ID 、資源組和工作區名稱編輯azureml_user
部分。接下來,用 GPU 集群詳細信息編輯aml_compute
部分。- 推薦的虛擬機: NCsv3 、 NDv2 或 NC A100 v4 或 ND A100 v4 系列
- 操作系統: Ubuntu 20.04
- 要了解有關 Azure VM 的更多信息,請參閱 Virtual Machine series 。要了解如何啟動 Azure VM 實例,請參閱 Azure documentation 。
ngc_config.json
文件包含 NGC 目錄中的內容,例如 Docker 容器和 Jupyter 筆記本,您可以將其上載到 Azure 機器學習資源中。
- 打包了幾個腳本,將用于模型部署。
- 使用以下代碼運行工具包:
azureml-ngc-tools --login azure_config.json --app ngc_config.json
這將將所有資源上載到 Azure ML 數據存儲。上傳后,會為 Jupyter 會話生成一個 URL ,使您能夠從本地 web 瀏覽器與會話交互。您可以驗證所有資源都已上載到 Azure ML 門戶中。上面的視頻中提供了檢查 Azure ML 門戶中資源的步驟。
使用 NVIDIA TAO 工具包訓練和優化對象檢測模型
本節介紹在 Azure ML 平臺上使用 NVIDIA TAO 工具包培訓模型的步驟。
在開始培訓過程之前,您需要運行名為CopyData.ipynb
的輔助筆記本。筆記本電腦由azureml-ngc-tools
自動生成。這會將筆記本從數據存儲區復制到計算集群。

CopyData.ipynb
用于將筆記本從數據存儲復制到計算集群的 Jupyter 筆記本將創建一個名為tao
的新文件夾,其中包含提供的所有附加數據。此文件夾包含 Jupyter 筆記本以及培訓所需的配置文件。導航到文件夾tao/detectnet_V2
下的TAO_detectnet_v2.ipynb
筆記本。DetectNet_v2
是可用于培訓的眾多計算機視覺筆記本之一。

TAO DetectNet_v2
用于訓練模型的 Jupyter 筆記本加載筆記本后,只需執行顯示的每個單元格。有關此網絡或如何配置超參數的更多信息,請參閱 TAO Toolkit documentation 。筆記本中包含的一些主要步驟包括:
- 設置環境變量
- 下載和轉換培訓數據
- 從 NGC 目錄下載模型
- 培訓模型
- 修剪模型以刪除不需要的圖層并減小模型大小
- 重新修剪模型以恢復丟失的精度
- 量化感知訓練( QAT ),將模型的精度更改為 INT8 ,在不犧牲精度的情況下減小模型大小
- 導出模型以進行推斷
在計算集群上生成模型后,您需要將模型上載到 Azure ML 工作區。要上傳,請運行UploadData.ipnyb
筆記本將模型復制到數據存儲。此模型將用于部署。
使用 NVIDIA Triton 推理服務器部署模型
接下來,使用 NVIDIA Triton 推理服務器部署導出的模型。使用 NVIDIA TAO 工具包在上一步驟中訓練的模型,并將其存儲在數據存儲中。直接從數據存儲中提取模型。
上傳模型后,將 NVIDIA Triton 容器推送到 Azure 容器注冊表( ACR ),創建推斷終點,并使用一些示例圖像對其進行測試。
注冊模型進行推斷
接下來的步驟需要上傳模型進行推斷。從數據存儲中上載經過訓練的模型。導航到 Azure Machine Learning Studio 以加載本地模型。
1.登錄后,使用azureml-ngc-tool
腳本轉到 Azure ML 工作區(之前創建的)。從左側菜單中選擇“型號”,然后單擊“注冊”和“從數據存儲”

2.選擇“ Triton ”模型類型以上載模型。

3.瀏覽并選擇路徑:tao/detectnet _v2/model _repository

4.將模型命名為“ DetectNet ”,并將版本設置為“ 1 ”

5.模型成功上傳后,您應該能夠看到目錄
structure.

生成 NVIDIA Triton 映像并將其上載到 Azure 容器注冊表
接下來,使用必要的依賴項構建 NVIDIA Triton 容器,并將圖像上載到 Azure 容器注冊表( ACR )。
1.在本地計算機上,運行以下腳本以創建具有必要依賴項的 NVIDIA Triton 容器:
bash scripts/build_container.sh
2.通過執行以下操作驗證圖像是否已在本地創建:
docker image ls
如果成功,您應該看到名為nvcr.io/nvidia/tao/triton-apps
的回購。
3.使用以下腳本將 Docker 圖像推送到 ACR :
bash scripts/push_container_to_ACR.sh <registryname>
registryname
參數是提供的 Azure ML 工作區默認容器注冊表的名稱。導航到工作區基本屬性儀表板,在 Azure 門戶中找到它。該腳本將 Docker 圖像推送到 ACR ,并將其標記為${registryname}.azurecr.io/tao:latest
。

腳本完成后,導航到 ACR 以查看tao
存儲庫中的容器。
創建 Azure ML 端點和部署
在本地計算機上,運行以下腳本以創建 Azure ML Endpoint ,然后進行部署:
bash scripts/create_endpoint _and_deployment.sh <registryname>
該腳本將使用endpoint_aml.yml
文件中提供的端點名稱創建 Azure ML 端點。然后,它使用deployment_aml.yml
文件在 Azure 上部署 NVIDIA Triton 服務。
在此文件中,您可以指定 VM 大小。在本例中,使用Standard_NC6s_v3
VM 。scripts/auxiliary_files
中提供了這些文件。
腳本執行完成后,您應該能夠在 Azure 門戶上看到部署信息、 REST 端點和身份驗證密鑰。通過單擊端點并導航到部署日志選項卡,可以找到部署信息。

驗證終結點
您可以使用 REST 端點 URL 和在 Azure 門戶的“端點”選項卡下找到的主鍵來驗證端點。若要從用戶本地計算機查詢 Azure ML 端點,請運行以下腳本:
bash scripts/infer.sh <REST API endpoint> <Primary key> <input image> <output path>
該腳本在第一步中從 AzureML Quick Launch : TAO 獲取的 zip 文件中提供。
接下來,從 NVIDIA Triton 部署端點提供 REST 端點 URL 。使用<input_image>
選項提供的測試圖像查詢端點。帶有邊界框的輸出圖像存儲在<output path>
中。
總結
這篇文章展示了使用 NVIDIA TAO 工具包微調模型以及使用 NVIDIA Triton 推理服務器部署經過訓練的對象檢測模型的端到端工作流,所有這些都在 Azure 機器學習上。這些工具消除了人工智能框架的復雜性,使您能夠在生產中構建和部署人工智能應用程序,而無需人工智能專業知識。
?
?