# 設定 AutoML 以對自然語言處理模型進行定型 (預覽)

適用於Python SDK azure-ai-ml 第 2 版 (預覽)

重要

此功能目前為公開預覽狀態。 此預覽版本是在沒有服務等級協定的情況下提供,不建議用於生產工作負載。 可能不支援特定功能,或可能已經限制功能。 如需詳細資訊,請參閱 Microsoft Azure 預覽版增補使用條款

在本文中,您將了解如何在 Azure Machine Learning 中使用自動化 ML 對自然語言處理 (NLP) 模型進行定型。 您可以透過 Azure Machine Learning Python SDK 第 2 版 (預覽) 或 Azure Machine Learning CLI 第 2 版,使用自動化 ML 來建立 NLP 模型。

自動化 ML 支援 NLP,可讓 ML 專業人員和資料科學家攜帶自己的文字資料,並針對如多重類別文字分類、多標籤文字分類和具名實體辨識 (NER) 等工作建置自訂模型。

您可以與 Azure Machine Learning 資料標記功能緊密整合,以將文字資料標籤或攜帶現有的標籤資料。 自動化 ML 可供您選擇在多 GPU 計算叢集上使用分散式定型,以加速模型定型。 藉由利用 Azure ML 的 MLOps 功能,即可大規模運作所產生的模型。

先決條件

適用於:Azure CLI ml 延伸模組第 2 版 (目前)

  • Azure 訂用帳戶。 如果您沒有 Azure 訂用帳戶,請立即註冊以試用免費或付費版本的 Azure Machine Learning

  • 使用 GPU 定型計算的 Azure Machine Learning 工作區。 若要建立工作區,請參閱建立 Azure Machine Learning 工作區。 如需 Azure 所提供 GPU 執行個體的詳細資料,請參閱 GPU 最佳化虛擬機器大小

    警告

    對於數個 NLP 使用案例,例如非英文資料集和較長範圍文件,需要支援多語系模型以及使用較長最大序列長度的模型。 因此,這些案例可能需要較高的 GPU 記憶體,模型定型才能成功,例如 NC_v3 系列或 ND 系列。

  • 已安裝 Azure Machine Learning CLI 第 2 版。 如需更新及安裝最新版本的指引,請參閱安裝和設定 CLI (第 2 版)

  • 本文假設您大致上已熟悉如何設定自動化機器學習實驗。 請遵循操作說明,以查看主要的自動化機器學習實驗設計模式。

選取 NLP 工作

判斷您想要完成的 NLP 工作。 目前,自動化 ML 支援下列深度神經網路 NLP 工作。

Task AutoML 作業語法 描述
多類別文字分類 CLI 第 2 版:text_classification
SDK 第 2 版 (預覽):text_classification()
有多個可能的類別,而且每個範例都可以分類為完全相同的一個類別。 工作是預測每個樣本的正確類別。

例如,將電影腳本分類為「喜劇」或「浪漫」。
多標籤文字分類 CLI 第 2 版:text_classification_multilabel
SDK 第 2 版 (預覽):text_classification_multilabel()
有多個可能的類別,而且每個範例都可以指派任何數目的類別。 工作是預測每個範例的所有類別

例如,將電影腳本分類為「喜劇」或「浪漫」,或是「喜劇」和「浪漫」。
具名實體辨識 (NER) CLI 第 2 版:text_ner
SDK 第 2 版 (預覽):text_ner()
循序權杖有多個可能的標記。 工作是預測每個序列所有權杖的標記。

例如,從非結構化文字 (例如合約或財務文件) 擷取網域特定實體

準備資料

針對自動化 ML 中的 NLP 實驗,您可以針對多類別和多標籤分類工作,以 .csv 格式帶入您的資料。 對於 NER 工作,支援兩個資料行的 .txt 檔案,其中使用空格做為分隔符號且遵守 CoNLL 格式。 下列各節提供每個工作所接受資料格式的其他詳細資料。

多類別

針對多類別分類,資料集可以包含數個文字資料行,而只包含一個標籤資料行。 下列範例只有一個文字資料行。

text,labels
"I love watching Chicago Bulls games.","NBA"
"Tom Brady is a great player.","NFL"
"There is a game between Yankees and Orioles tonight","MLB"
"Stephen Curry made the most number of 3-Pointers","NBA"

多標籤

針對多重標籤分類,資料集資料行會與多類別相同,不過,標籤資料行中的資料有特殊格式需求。 下表提供兩個接受的格式和範例。

標籤資料行格式選項 多標籤 一個標籤 沒有任何標籤
純文字 "label1, label2, label3" "label1" ""
使用引號的 Python 清單 "['label1','label2','label3']" "['label1']" "[]"

重要

會使用不同的剖析器來讀取這些格式的標籤。 如果您使用純文字格式,請僅在標籤中使用字母、數字和 '_'。 所有其他字元都會辨識為標籤的分隔符號。

例如,如果您的標籤是 "cs.AI",則會顯示為 "cs""AI"。 而使用 Python 清單格式時,標籤會是 "['cs.AI']",其會顯示為 "cs.AI"

純文字格式的多標籤範例資料。

text,labels
"I love watching Chicago Bulls games.","basketball"
"The four most popular leagues are NFL, MLB, NBA and NHL","football,baseball,basketball,hockey"
"I like drinking beer.",""

使用引號格式 Python 清單中的多標籤資料範例。

text,labels
"I love watching Chicago Bulls games.","['basketball']"
"The four most popular leagues are NFL, MLB, NBA and NHL","['football','baseball','basketball','hockey']"
"I like drinking beer.","[]"

具名實體辨識 (NER)

不同於多類別或多標籤是採用 .csv 格式資料集,具名實體辨識需要 CoNLL 格式。 檔案必須只包含兩個資料行,且在每個資料列中,都會以單一空格來分隔標記和標籤。

例如,

Hudson B-loc
Square I-loc
is O
a O
famous O
place O
in O
New B-loc
York I-loc
City I-loc

Stephen B-per
Curry I-per
got O
three O
championship O
rings O

資料驗證

在定型之前,自動化 ML 會對輸入資料套用資料驗證檢查,以確保可以正確處理資料。 如果上述任何檢查失敗,執行就會失敗,並顯示相關的錯誤訊息。 以下是針對每個工作傳遞資料驗證檢查的需求。

注意

某些資料驗證檢查適用於定型和驗證集,而其他資料驗證則僅適用於定型集。 如果測試資料集無法通過資料驗證,即表示自動化 ML 無法加以擷取,而且可能會發生模型推斷失敗或模型效能下降。

Task 資料驗證檢查
所有工作 至少需要 50 個定型範例
多類別和多標籤 定型資料和驗證資料必須具有
- 一組相同的資料行
- 資料行順序從左至右相同
- 相同名稱資料行的資料類型相同
- 至少兩個唯一標籤
- 每個資料集內的唯一資料行名稱 (例如,定型集不能有多個名為 Age 的資料行)
僅限多類別
僅限多標籤 - 標籤資料行格式必須採用接受的格式
- 至少一個範例應有 0 或 2 個以上的標籤,否則應該是 multiclass 工作
- 所有標籤都應該採用 strint 格式,且不重疊。 您不應該同時擁有 1 標籤和 '1' 標籤
僅限 NER - 檔案開頭不應該為空行
- 每一行都必須是空行或遵循 {token} {label} 格式,其中權杖與標籤之間只有一個空格,且標籤之後沒有空白字元
- 所有標籤的開頭都必須為 I-B- 或僅為 O。 區分大小寫
- 兩個樣本之間僅一個空行
- 檔案結尾僅一個空行

設定實驗

自動化 ML 的 NLP 功能是透過工作特定 automl 類型作業進行觸發,這是提交自動化 ML 實驗以進行分類、迴歸和預測工作的相同工作流程。 您可以如同在這些實驗中的方式來設定參數,例如 experiment_namecompute_name 資料輸入。

但是,仍有一些主要差異:

  • 您可以忽略 primary_metric,因為其僅供報告用途。 目前,自動化 ML 針對 NLP 每個執行僅定型一個模型,而且沒有任何模式選擇。
  • 只有多類別和多標籤文字分類工作才需要 label_column_name 參數。
  • 如果您資料集中大部分的範例包含超過 128 個字,則會視為長範圍。 根據預設,自動化ML會考慮所有樣本長範圍文字。 若要停用此功能,請在 enable_long_range_text=FalseAutoMLConfig 加入 參數。
    • 如果您啟用長範圍文字,則需要使用較高記憶體的 GPU,例如 NCv3 系列或 ND 系列。
    • enable_long_range_text 參數僅適用於多類別分類工作。

適用於:Azure CLI ml 延伸模組第 2 版 (目前)

針對 CLI 第 2 版自動化 ML 作業,您可以在 YAML 檔案中設定實驗,如下所示。

語言設定

在 NLP 功能中,自動化 ML 支援 104 種語言,並利用語言特定和多語系預先定型的文字 DNN 模型,例如 BERT 系列模型。 目前,語言選擇預設為英文。

下表摘要說明根據工作類型和語言套用的模型。 請參閱支援的語言及其程式碼的完整清單。

工作類型 dataset_language 的語法 文字模式演算法
多標籤文字分類 "eng"
"deu"
"mul"
英文 BERT 不區分大小寫
德文 BERT
多語系 BERT

針對所有其他語言,自動化 ML 會套用多語系 BERT
多類別文字分類 "eng"
"deu"
"mul"
英文 BERT 區分大小寫
多語系 BERT

針對所有其他語言,自動化 ML 會套用多語系 BERT
具名實體辨識 (NER) "eng"
"deu"
"mul"
英文 BERT 區分大小寫
德文 BERT
多語系 BERT

針對所有其他語言,自動化 ML 會套用多語系 BERT

適用於:Azure CLI ml 延伸模組第 2 版 (目前)

您可以在設定 YAML 檔案的特徵化區段中指定資料集語言。 自動化 ML 實驗定型的特徵化程序中也會使用 BERT,深入了解自動化 ML 中的 BERT 整合和特徵化

featurization:
   dataset_language: "eng"

分散式定型

您也可以在 Azure ML 計算叢集上使用分散式定型來執行 NLP 實驗。

適用於:Azure CLI ml 延伸模組第 2 版 (目前)

提交 AutoML 作業

適用於:Azure CLI ml 延伸模組第 2 版 (目前)

若要提交 AutoML 作業,您可以使用 .yml 檔案的路徑、工作區名稱、資源群組和訂用帳戶識別碼來執行下列 CLI 第 2 版命令。


az ml job create --file ./hello-automl-job-basic.yml --workspace-name [YOUR_AZURE_WORKSPACE] --resource-group [YOUR_AZURE_RESOURCE_GROUP] --subscription [YOUR_AZURE_SUBSCRIPTION]

程式碼範例

請參閱下列每個 NLP 工作的 YAML 檔案範例。

後續步驟