這個Dataiku platform日常人工智能簡化了深度學習。用例影響深遠,從圖像分類到對象檢測和自然語言處理( NLP )。 Dataiku 可幫助您對代碼和代碼環境進行標記、模型培訓、可解釋性、模型部署以及集中管理。
本文深入探討了用于圖像分類和對象檢測的高級 Dataiku 和 NVIDIA 集成。它還涵蓋了實時推理的深度學習模型部署以及如何使用開源RAPIDS和 cuML 庫,用于客戶支持 Tweet 主題建模用例。 NVIDIA 提供硬件 (NVIDIA A10 Tensor Core GPUs,在這種情況下)和各種 OSS(CUDA,RAPIDS) 完成工作
請注意,本文中的所有 NVIDIA AI 軟件都可以通過NVIDIA AI Enterprise,一個用于生產人工智能的安全端到端軟件套件,由 NVIDIA 提供企業支持
用于圖像分類和物體檢測的深度學習
本節介紹使用 Dataiku 和 NVIDIA GPU 訓練和評估用于圖像分類或對象檢測的深度學習模型的步驟
無代碼方法
從 Dataiku 11.3 開始,您可以使用可視化的無代碼工具來實現圖像分類或對象檢測工作流程的核心領域。您可以使用本地 web 應用程序標記圖像、繪制邊界框和查看/管理注釋。圖像標記是訓練性能模型的關鍵:→ 很好的模型。
使用 Dataiku 的圖像標記工具,您可以將所有貓標記為“貓”,或者更精細地標記,以適應獨特的外表或個性特征
Dataiku 使您能夠訓練圖像分類和對象檢測模型,特別是使用遷移學習來微調基于自定義圖像/標簽/邊界框的預訓練模型。數據增強重新著色、旋轉和裁剪訓練圖像是增加訓練集大小并將模型暴露在各種情況下的常用方法。
EfficientNet (圖像分類)和 Faster R-CNN (對象檢測)神經網絡可以在模型再訓練用戶界面中與預先訓練的權重一起使用,開箱即用。
在將模型訓練為自定義圖像標簽和邊界框之后,可以使用疊加的熱圖模型焦點來解釋模型的預測。
一旦您對模型的性能感到滿意,就將經過訓練的模型作為容器化推理服務部署到 Kubernetes 集群中。這是由 Dataiku API Deployer 工具管理的。
計算發生在哪里?
Dataiku 可以將深度學習模型訓練、解釋和推理背后的所有計算推送給 NVIDIA PyTorch (圖 4 )。您甚至可以通過 GPU 利用多個 GPU 進行分布式培訓DistributedDataParallel模塊和 TensorFlowMirroredStrategy.
圖 4 。使用 Dataiku 接口激活 NVIDIA GPU 進行深度學習模型訓練
通過Dataiku Elastic AI集成。首先,將您的 Dataiku 實例連接到具有 NVIDIA GPU 資源(通過 EKS 、 GKE 、 AKS 、 OpenShift 管理)的 Kubernetes 集群。然后 Dataiku 將創建 Docker 鏡像并在后臺部署容器
深度學習訓練和推理作業可以在 Kubernetes 集群上運行,也可以在任意 Python 代碼或 Apache Spark 作業上運行。
對模型訓練腳本進行編碼
如果你想在 Python 中自定義你自己的深度學習模型,可以嘗試在 MLflow 實驗跟蹤器中封裝一個 train 函數。圖 6 顯示了一個基于 Python 的流程。請參閱中的機器學習教程Dataiku Developer Guide例如。這種方法提供了自定義代碼的完全靈活性,以及一些開箱即用的實驗跟蹤、模型分析可視化,以及 Dataiku 中經過可視化訓練的模型的點擊式模型部署
自定義 Python 深度學習模型可以通過容器化執行來利用 NVIDIA GPU ,就像 Dataiku 中經過視覺訓練的深度學習模型一樣(圖 7 )。
圖 7 。 Dataiku 中的任何 Python 工作負載都可以推送到具有 NVIDIA GPU 資源的 Kubernetes 集群
用于實時推理的模型部署
一旦模型經過訓練,就到了部署它進行實時推理的時候了。如果您使用 Dataiku 的視覺圖像分類、對象檢測或帶有 MLflow 的自定義編碼模型,然后作為 Dataiku 模型導入,只需單擊幾下即可在經過訓練的模型上創建容器化推理 API 服務。
首先,將 Dataiku API Deployer 工具連接到 Kubernetes 集群,以托管這些推理 API 服務,同樣在集群節點中提供 NVIDIA GPU 。然后在負載均衡器后面部署容器化服務的 1-N 個副本。從這里開始,邊緣設備可以向 API 服務發送請求,并接收來自模型的預測。圖 8 顯示了整個體系結構。
create API service in the API Designer > push the API service to the Deployer > push the API Service to a K8S cluster with NVIDIA GPU resources. From there, edge devices can submit requests to the API service with data, images, and receive predictions back.” width=”1262″ height=”589″> 圖 8 。從在 Dataiku 中訓練的模型到托管在具有 NVIDIA GPU 的 Kubernetes 集群上的 API 服務的工作流,用于推理
教程:在 Dataiku 中使用帶有 RAPIDS 的 BERT 模型加速主題建模
為了更深入地了解,本節將介紹如何在 Dataiku 中設置 Python 環境,以便將 BERTopic 與 RAPIDS 中的 GPU 加速 cuML 庫一起使用。它還強調了使用 cuML 獲得的性能增益
此示例使用Kaggle Customer Support on Twitter dataset以及主題建模的關鍵客戶投訴主題。
步驟 1 。準備數據集
首先,通過刪除標點符號、停止詞和詞尾詞來規范推文文本。還要將數據集過濾為客戶在推特上用英語發布的投訴。所有這些都可以使用 Dataiku 可視化配方來完成。
使用拆分配方從初始用戶推文中過濾公司的回復。接下來,使用 Dataiku 的Text Preparation plugin檢測用戶推文中語言分布的配方。
使用過濾配方過濾掉所有非英語和空白的推文。一定要使用文本準備方法來過濾停止詞、標點符號、 URL 、表情符號等。將文本轉換為小寫。
最后,使用分割配方來分割用于訓練和測試的數據(簡單的 80% / 20% 隨機分割)。
步驟 2 。使用 BERTopic 和 RAPIDS 庫設置 Python 環境
運行 Python 進程需要一個具有 NVIDIA GPU 的彈性計算環境BERTopic package(及其所需的包裝),以及 RAPIDS 容器圖像。此示例使用 Amazon EKS 集群(實例類型: g4dnNVIDIA A10 Tensor Core GPUs) ,RAPIDS Release Stable 22.12和 BERTopic ( 0.12.0 )。
首先,在 Dataiku 中啟動一個 EKS 集群。設置集群后,您可以在“管理”下的“集群”選項卡中檢查其狀態和配置。
BER 主題
使用 Dataiku 的托管虛擬代碼環境,使用 BERTopic 及其所需的包創建 Dataiku 代碼環境。
RAPIDS
使用 Docker Hub 中的 RAPIDS 映像構建一個容器環境。在 Dataiku 中,為您的代碼環境使用 Dataiku 基本映像,或者從 DockerHub 或NGC。然后,將您的 Dataiku 代碼環境附加到它。請注意, NVIDIA 已經在 PyPi 上發布了 RAPIDS ,所以您現在可以只使用默認的 Dataiku 基本映像。
步驟 3 。使用默認 UMAP 運行 BERTopic
接下來,使用 BERTopic 從 Twitter 投訴中找出前五個話題。要在 GPU 上加速 UMAP 進程,請使用 cuML UMAP 。默認 UMAP 如下所示:
# -------------------------------------------------------------------------------- NOTEBOOK-CELL: CODE # -*- coding: utf-8 -*- import dataiku import pandas as pd, numpy as np from dataiku import pandasutils as pdu from bertopic import BERTopic # -------------------------------------------------------------------------------- NOTEBOOK-CELL: CODE # Read the train dataset in the dataframe and the variable sample_size which defines the number of records to be used sample_size = dataiku.get_custom_variables()["sample_size"] train_data = dataiku.Dataset("train_cleaned") train_data_df = train_data.get_dataframe(sampling='head',limit=sample_size) # -------------------------------------------------------------------------------- NOTEBOOK-CELL: CODE # Create Bertopic object and run fit transform topic_model = BERTopic(calculate_probabilities=True,nr_topics=4) topics, probs = topic_model.fit_transform(train_data_df["Review Description_cleaned"]) all_topics_rapids_df = topic_model.get_topic_info() # -------------------------------------------------------------------------------- NOTEBOOK-CELL: CODE #Write the List of Topics output as a DSS Dataset Topic_Model_df = all_topics_rapids_df Topic_Model_w_Rapids = dataiku.Dataset("Topic_Model") Topic_Model_w_Rapids.write_with_schema(Topic_Model_df) RAPIDS cuML UMAP: # -*- coding: utf-8 -*- import dataiku import pandas as pd, numpy as np from dataiku import pandasutils as pdu from bertopic import BERTopic from cuml.manifold import UMAP from cuml.cluster.hdbscan.prediction import approximate_predict # -------------------------------------------------------------------------------- NOTEBOOK-CELL: CODE # Read the train dataset in the dataframe and the variable sample_size which defines the number of records to be used sample_size = dataiku.get_custom_variables()["sample_size"] train_data = dataiku.Dataset("train_cleaned") train_data_df = train_data.get_dataframe(sampling='head',limit=sample_size) # -------------------------------------------------------------------------------- NOTEBOOK-CELL: CODE # Create a cuML UMAP Obejct and pass it in the Bertopic object and run fit transform umap_model = UMAP(n_components=5, n_neighbors=15, min_dist=0.0) cu_topic_model = BERTopic(calculate_probabilities=True,umap_model=umap_model,nr_topics=4) cu_topics, cu_probs = cu_topic_model.fit_transform(train_data_df["Review Description_cleaned"]) all_topics_rapids_df = cu_topic_model.get_topic_info() # -------------------------------------------------------------------------------- NOTEBOOK-CELL: CODE # Write the List of Topics output as a DSS Dataset Topic_Model_w_Rapids_df = all_topics_rapids_df Topic_Model_w_Rapids = dataiku.Dataset("Topic_Model_w_Rapids") Topic_Model_w_Rapids.write_with_schema(Topic_Model_w_Rapids_df)
UMAP 對整個計算時間有很大貢獻。在帶有 cuML RAPIDS 的 NVIDIA GPU 上運行 UMAP 可實現 4 倍的性能提升。可以通過在 GPU 上運行更多的算法來實現額外的改進,例如使用 cuML HDBSCAN 。
不帶 RAPIDS 的主題建模過程 | 運行時 |
不帶 RAPIDS | 12 分 21 秒 |
帶 RAPIDS | 2 分 59 秒 |
表 1 。使用 RAPIDS AI 進行配置可實現 4 倍的性能提升
步驟 4 。投訴聚類儀表板
最后,您可以在 Dataiku 中的輸出數據集(帶有干凈的 Tweet 文本和主題)上構建各種看起來很酷的圖表,并將其推送到儀表板上進行執行團隊審查(圖 13 )。
圖 13 。 Dataiku 儀表板在一個中心位置顯示各種指標
把它們放在一起
如果您希望將深度學習用于圖像分類、對象檢測或 NLP 用例, Dataiku 可以幫助您標記、模型訓練、可解釋性、模型部署以及集中管理代碼和代碼環境。與最新的 NVIDIA 數據科學庫和計算硬件的緊密集成構成了一個完整的堆棧。
-
NVIDIA
+關注
關注
14文章
4994瀏覽量
103156 -
人工智能
+關注
關注
1791文章
47350瀏覽量
238750
發布評論請先 登錄
相關推薦
評論