這個Dataiku platform日常人工智能簡化了深度學(xué)習(xí)。用例影響深遠(yuǎn),從圖像分類到對象檢測和自然語言處理( NLP )。 Dataiku 可幫助您對代碼和代碼環(huán)境進行標(biāo)記、模型培訓(xùn)、可解釋性、模型部署以及集中管理。
本文深入探討了用于圖像分類和對象檢測的高級 Dataiku 和 NVIDIA 集成。它還涵蓋了實時推理的深度學(xué)習(xí)模型部署以及如何使用開源RAPIDS和 cuML 庫,用于客戶支持 Tweet 主題建模用例。 NVIDIA 提供硬件 (NVIDIA A10 Tensor Core GPUs,在這種情況下)和各種 OSS(CUDA,RAPIDS) 完成工作
請注意,本文中的所有 NVIDIA AI 軟件都可以通過NVIDIA AI Enterprise,一個用于生產(chǎn)人工智能的安全端到端軟件套件,由 NVIDIA 提供企業(yè)支持
用于圖像分類和物體檢測的深度學(xué)習(xí)
本節(jié)介紹使用 Dataiku 和 NVIDIA GPU 訓(xùn)練和評估用于圖像分類或?qū)ο髾z測的深度學(xué)習(xí)模型的步驟
無代碼方法
從 Dataiku 11.3 開始,您可以使用可視化的無代碼工具來實現(xiàn)圖像分類或?qū)ο髾z測工作流程的核心領(lǐng)域。您可以使用本地 web 應(yīng)用程序標(biāo)記圖像、繪制邊界框和查看/管理注釋。圖像標(biāo)記是訓(xùn)練性能模型的關(guān)鍵:→ 很好的模型。
使用 Dataiku 的圖像標(biāo)記工具,您可以將所有貓標(biāo)記為“貓”,或者更精細(xì)地標(biāo)記,以適應(yīng)獨特的外表或個性特征
Dataiku 使您能夠訓(xùn)練圖像分類和對象檢測模型,特別是使用遷移學(xué)習(xí)來微調(diào)基于自定義圖像/標(biāo)簽/邊界框的預(yù)訓(xùn)練模型。數(shù)據(jù)增強重新著色、旋轉(zhuǎn)和裁剪訓(xùn)練圖像是增加訓(xùn)練集大小并將模型暴露在各種情況下的常用方法。
EfficientNet (圖像分類)和 Faster R-CNN (對象檢測)神經(jīng)網(wǎng)絡(luò)可以在模型再訓(xùn)練用戶界面中與預(yù)先訓(xùn)練的權(quán)重一起使用,開箱即用。
在將模型訓(xùn)練為自定義圖像標(biāo)簽和邊界框之后,可以使用疊加的熱圖模型焦點來解釋模型的預(yù)測。
一旦您對模型的性能感到滿意,就將經(jīng)過訓(xùn)練的模型作為容器化推理服務(wù)部署到 Kubernetes 集群中。這是由 Dataiku API Deployer 工具管理的。
計算發(fā)生在哪里?
Dataiku 可以將深度學(xué)習(xí)模型訓(xùn)練、解釋和推理背后的所有計算推送給 NVIDIA PyTorch (圖 4 )。您甚至可以通過 GPU 利用多個 GPU 進行分布式培訓(xùn)DistributedDataParallel模塊和 TensorFlowMirroredStrategy.
圖 4 。使用 Dataiku 接口激活 NVIDIA GPU 進行深度學(xué)習(xí)模型訓(xùn)練
通過Dataiku Elastic AI集成。首先,將您的 Dataiku 實例連接到具有 NVIDIA GPU 資源(通過 EKS 、 GKE 、 AKS 、 OpenShift 管理)的 Kubernetes 集群。然后 Dataiku 將創(chuàng)建 Docker 鏡像并在后臺部署容器
深度學(xué)習(xí)訓(xùn)練和推理作業(yè)可以在 Kubernetes 集群上運行,也可以在任意 Python 代碼或 Apache Spark 作業(yè)上運行。
對模型訓(xùn)練腳本進行編碼
如果你想在 Python 中自定義你自己的深度學(xué)習(xí)模型,可以嘗試在 MLflow 實驗跟蹤器中封裝一個 train 函數(shù)。圖 6 顯示了一個基于 Python 的流程。請參閱中的機器學(xué)習(xí)教程Dataiku Developer Guide例如。這種方法提供了自定義代碼的完全靈活性,以及一些開箱即用的實驗跟蹤、模型分析可視化,以及 Dataiku 中經(jīng)過可視化訓(xùn)練的模型的點擊式模型部署
自定義 Python 深度學(xué)習(xí)模型可以通過容器化執(zhí)行來利用 NVIDIA GPU ,就像 Dataiku 中經(jīng)過視覺訓(xùn)練的深度學(xué)習(xí)模型一樣(圖 7 )。
圖 7 。 Dataiku 中的任何 Python 工作負(fù)載都可以推送到具有 NVIDIA GPU 資源的 Kubernetes 集群
用于實時推理的模型部署
一旦模型經(jīng)過訓(xùn)練,就到了部署它進行實時推理的時候了。如果您使用 Dataiku 的視覺圖像分類、對象檢測或帶有 MLflow 的自定義編碼模型,然后作為 Dataiku 模型導(dǎo)入,只需單擊幾下即可在經(jīng)過訓(xùn)練的模型上創(chuàng)建容器化推理 API 服務(wù)。
首先,將 Dataiku API Deployer 工具連接到 Kubernetes 集群,以托管這些推理 API 服務(wù),同樣在集群節(jié)點中提供 NVIDIA GPU 。然后在負(fù)載均衡器后面部署容器化服務(wù)的 1-N 個副本。從這里開始,邊緣設(shè)備可以向 API 服務(wù)發(fā)送請求,并接收來自模型的預(yù)測。圖 8 顯示了整個體系結(jié)構(gòu)。
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 中訓(xùn)練的模型到托管在具有 NVIDIA GPU 的 Kubernetes 集群上的 API 服務(wù)的工作流,用于推理
教程:在 Dataiku 中使用帶有 RAPIDS 的 BERT 模型加速主題建模
為了更深入地了解,本節(jié)將介紹如何在 Dataiku 中設(shè)置 Python 環(huán)境,以便將 BERTopic 與 RAPIDS 中的 GPU 加速 cuML 庫一起使用。它還強調(diào)了使用 cuML 獲得的性能增益
此示例使用Kaggle Customer Support on Twitter dataset以及主題建模的關(guān)鍵客戶投訴主題。
步驟 1 。準(zhǔn)備數(shù)據(jù)集
首先,通過刪除標(biāo)點符號、停止詞和詞尾詞來規(guī)范推文文本。還要將數(shù)據(jù)集過濾為客戶在推特上用英語發(fā)布的投訴。所有這些都可以使用 Dataiku 可視化配方來完成。
使用拆分配方從初始用戶推文中過濾公司的回復(fù)。接下來,使用 Dataiku 的Text Preparation plugin檢測用戶推文中語言分布的配方。
使用過濾配方過濾掉所有非英語和空白的推文。一定要使用文本準(zhǔn)備方法來過濾停止詞、標(biāo)點符號、 URL 、表情符號等。將文本轉(zhuǎn)換為小寫。
最后,使用分割配方來分割用于訓(xùn)練和測試的數(shù)據(jù)(簡單的 80% / 20% 隨機分割)。
步驟 2 。使用 BERTopic 和 RAPIDS 庫設(shè)置 Python 環(huán)境
運行 Python 進程需要一個具有 NVIDIA GPU 的彈性計算環(huán)境BERTopic package(及其所需的包裝),以及 RAPIDS 容器圖像。此示例使用 Amazon EKS 集群(實例類型: g4dnNVIDIA A10 Tensor Core GPUs) ,RAPIDS Release Stable 22.12和 BERTopic ( 0.12.0 )。
首先,在 Dataiku 中啟動一個 EKS 集群。設(shè)置集群后,您可以在“管理”下的“集群”選項卡中檢查其狀態(tài)和配置。
BER 主題
使用 Dataiku 的托管虛擬代碼環(huán)境,使用 BERTopic 及其所需的包創(chuàng)建 Dataiku 代碼環(huán)境。
RAPIDS
使用 Docker Hub 中的 RAPIDS 映像構(gòu)建一個容器環(huán)境。在 Dataiku 中,為您的代碼環(huán)境使用 Dataiku 基本映像,或者從 DockerHub 或NGC。然后,將您的 Dataiku 代碼環(huán)境附加到它。請注意, NVIDIA 已經(jīng)在 PyPi 上發(fā)布了 RAPIDS ,所以您現(xiàn)在可以只使用默認(rèn)的 Dataiku 基本映像。
步驟 3 。使用默認(rèn) UMAP 運行 BERTopic
接下來,使用 BERTopic 從 Twitter 投訴中找出前五個話題。要在 GPU 上加速 UMAP 進程,請使用 cuML UMAP 。默認(rèn) 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 可實現(xiàn) 4 倍的性能提升。可以通過在 GPU 上運行更多的算法來實現(xiàn)額外的改進,例如使用 cuML HDBSCAN 。
不帶 RAPIDS 的主題建模過程 | 運行時 |
不帶 RAPIDS | 12 分 21 秒 |
帶 RAPIDS | 2 分 59 秒 |
表 1 。使用 RAPIDS AI 進行配置可實現(xiàn) 4 倍的性能提升
步驟 4 。投訴聚類儀表板
最后,您可以在 Dataiku 中的輸出數(shù)據(jù)集(帶有干凈的 Tweet 文本和主題)上構(gòu)建各種看起來很酷的圖表,并將其推送到儀表板上進行執(zhí)行團隊審查(圖 13 )。
圖 13 。 Dataiku 儀表板在一個中心位置顯示各種指標(biāo)
把它們放在一起
如果您希望將深度學(xué)習(xí)用于圖像分類、對象檢測或 NLP 用例, Dataiku 可以幫助您標(biāo)記、模型訓(xùn)練、可解釋性、模型部署以及集中管理代碼和代碼環(huán)境。與最新的 NVIDIA 數(shù)據(jù)科學(xué)庫和計算硬件的緊密集成構(gòu)成了一個完整的堆棧。
-
NVIDIA
+關(guān)注
關(guān)注
14文章
4940瀏覽量
102817 -
人工智能
+關(guān)注
關(guān)注
1791文章
46859瀏覽量
237584
發(fā)布評論請先 登錄
相關(guān)推薦
評論