Konfigurowanie rozwiązania AutoML do trenowania modelu przetwarzania języka naturalnego przy użyciu języka Python (wersja zapoznawcza)
DOTYCZY:Zestaw SDK języka Python w wersji 1
Ważne
Ta funkcja jest obecnie w publicznej wersji zapoznawczej. Ta wersja zapoznawcza jest udostępniana bez umowy dotyczącej poziomu usług i nie zalecamy jej obsługi obciążeń produkcyjnych. Niektóre funkcje mogą być nieobsługiwane lub ograniczone.
Aby uzyskać więcej informacji, zobacz Uzupełniające warunki korzystania z wersji zapoznawczych platformy Microsoft Azure.
W tym artykule dowiesz się, jak trenować modele przetwarzania języka naturalnego (NLP) za pomocą zautomatyzowanego uczenia maszynowego w zestawie SDK języka Python usługi Azure Machine Learning.
Zautomatyzowane uczenie maszynowe obsługuje funkcję NLP, która umożliwia specjalistom uczenia maszynowego i analitykom danych wprowadzanie własnych danych tekstowych i tworzenie niestandardowych modeli na potrzeby zadań, takich jak klasyfikacja tekstu wieloklasowa, klasyfikacja tekstu z wieloma etykietami i rozpoznawanie jednostek nazwanych (NER).
Możesz bezproblemowo zintegrować z funkcją etykietowania danych usługi Azure Machine Learning , aby oznaczyć dane tekstowe lub przenieść istniejące oznaczone dane. Zautomatyzowane uczenie maszynowe zapewnia możliwość korzystania z trenowania rozproszonego w klastrach obliczeniowych z wieloma procesorami GPU w celu szybszego trenowania modelu. Wynikowy model można zoperacjonalizować na dużą skalę, wykorzystując możliwości metodyki MLOps usługi Azure Machine Learning.
Wymagania wstępne
Subskrypcja platformy Azure. Jeśli nie masz subskrypcji platformy Azure, utwórz konto, aby wypróbować bezpłatną lub płatną wersję usługi Azure Machine Learning dzisiaj.
Obszar roboczy usługi Azure Machine Learning z obliczeniami treningowymi procesora GPU. Aby utworzyć obszar roboczy, zobacz Tworzenie zasobów obszaru roboczego. Aby uzyskać więcej informacji na temat wystąpień procesora GPU udostępnianych przez platformę Azure, zobacz Zoptymalizowane pod kątem procesora GPU rozmiary maszyn wirtualnych .
Ostrzeżenie
Obsługa modeli wielojęzycznych i używania modeli z dłuższą maksymalną długością sekwencji jest niezbędna w przypadku kilku przypadków użycia NLP, takich jak zestawy danych innych niż angielskie i dokumenty z dłuższym zakresem. W rezultacie te scenariusze mogą wymagać większej ilości pamięci procesora GPU na potrzeby trenowania modelu, na przykład serii NC_v3 lub serii ND.
Zainstalowany zestaw SDK języka Python usługi Azure Machine Learning.
Aby zainstalować zestaw SDK, możesz wykonać jedną z następujących czynności:
Utwórz wystąpienie obliczeniowe, które automatycznie instaluje zestaw SDK i jest wstępnie skonfigurowane dla przepływów pracy uczenia maszynowego. Aby uzyskać więcej informacji, zobacz Tworzenie wystąpienia obliczeniowego usługi Azure Machine Learning i zarządzanie nim .
automl
Zainstaluj pakiet samodzielnie, który zawiera domyślną instalację zestawu SDK.
Ważne
Polecenia języka Python w tym artykule wymagają najnowszej
azureml-train-automl
wersji pakietu.- Zainstaluj najnowszy
azureml-train-automl
pakiet w środowisku lokalnym. - Aby uzyskać szczegółowe informacje na temat najnowszego
azureml-train-automl
pakietu, zobacz informacje o wersji.
W tym artykule założono, że znajomość konfigurowania eksperymentu zautomatyzowanego uczenia maszynowego. Postępuj zgodnie z samouczkiem lub instrukcjami, aby zobaczyć główne wzorce projektowania eksperymentów zautomatyzowanego uczenia maszynowego.
Wybieranie zadania NLP
Określ, jakie zadanie NLP chcesz wykonać. Obecnie zautomatyzowane uczenie maszynowe obsługuje następujące zadania głębokiej sieci neuronowej NLP.
Zadanie | Składnia autoMLConfig | Opis |
---|---|---|
Klasyfikacja tekstu wieloklasowego | task = 'text-classification' |
Istnieje wiele możliwych klas, a każda próbka może być sklasyfikowana jako dokładnie jedna klasa. Zadanie polega na przewidywaniu poprawnej klasy dla każdej próbki. Na przykład klasyfikowanie skryptu filmowego jako "Komedia" lub "Romantyczna". |
Klasyfikacja tekstu z wieloma etykietami | task = 'text-classification-multilabel' |
Istnieje wiele możliwych klas, a każda próbka może mieć przypisaną dowolną liczbę klas. Zadanie polega na przewidywaniu wszystkich klas dla każdej próbki Na przykład klasyfikowanie skryptu filmowego jako "Komedia" lub "Romantyczna" lub "Komedia i romantyczna". |
Rozpoznawanie nazwanych jednostek (NER) | task = 'text-ner' |
Istnieje wiele możliwych tagów tokenów w sekwencjach. Zadaniem jest przewidywanie tagów dla wszystkich tokenów dla każdej sekwencji. Na przykład wyodrębnianie jednostek specyficznych dla domeny z tekstu nieustrukturyzowanego, takiego jak kontrakty lub dokumenty finansowe |
Przygotowywanie danych
W przypadku eksperymentów NLP w zautomatyzowanym uczeniu maszynowym można przenieść zestaw danych usługi Azure Machine Learning z formatem .csv
dla zadań klasyfikacji wieloklasowej i wielu etykiet. W przypadku zadań NER obsługiwane są pliki dwukolumnowe .txt
, które używają spacji jako separatora i są zgodne z formatem CoNLL. Poniższe sekcje zawierają dodatkowe szczegóły dotyczące formatu danych akceptowanego dla każdego zadania.
Wieloklasowa klasa
W przypadku klasyfikacji wieloklasowej zestaw danych może zawierać kilka kolumn tekstowych i dokładnie jedną kolumnę etykiety. W poniższym przykładzie jest tylko jedna kolumna tekstowa.
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"
Wiele etykiet
W przypadku klasyfikacji z wieloma etykietami kolumny zestawu danych będą takie same jak w przypadku wielu klas, jednak istnieją specjalne wymagania dotyczące formatu danych w kolumnie etykiety. Dwa zaakceptowane formaty i przykłady znajdują się w poniższej tabeli.
Opcje formatowania kolumn etykiet | Wiele etykiet | Jedna etykieta | Brak etykiet |
---|---|---|---|
Zwykły tekst | "label1, label2, label3" |
"label1" |
"" |
Lista języka Python z cudzysłowami | "['label1','label2','label3']" |
"['label1']" |
"[]" |
Ważne
Różne analizatory służą do odczytywania etykiet dla tych formatów. Jeśli używasz formatu zwykłego tekstu, użyj tylko alfabetycznej, numerycznej i '_'
w etykietach. Wszystkie inne znaki są rozpoznawane jako separator etykiet.
Jeśli na przykład etykieta to "cs.AI"
, jest ona odczytywana jako "cs"
i "AI"
. Podczas gdy w formacie listy języka Python etykieta to "['cs.AI']"
, która jest odczytywana jako "cs.AI"
.
Przykładowe dane dla wielu etykiet w formacie zwykłego tekstu.
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.",""
Przykładowe dane dla wielu etykiet na liście języka Python z formatem cudzysłowów.
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.","[]"
Rozpoznawanie nazwanych jednostek (NER)
W przeciwieństwie do wieloklasowej lub wieloetkowej, która przyjmuje .csv
format zestawów danych, rozpoznawanie jednostek nazwanych wymaga formatu CoNLL. Plik musi zawierać dokładnie dwie kolumny, a w każdym wierszu token i etykietę są oddzielone pojedynczą spacją.
Na przykład
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
Walidacja danych
Przed rozpoczęciem trenowania zautomatyzowane uczenie maszynowe stosuje sprawdzanie poprawności danych wejściowych, aby upewnić się, że dane można wstępnie przetworzyć. Jeśli którykolwiek z tych testów zakończy się niepowodzeniem, przebieg zakończy się niepowodzeniem z odpowiednim komunikatem o błędzie. Poniżej przedstawiono wymagania dotyczące przekazywania kontroli poprawności danych dla każdego zadania.
Uwaga
Niektóre testy sprawdzania poprawności danych mają zastosowanie zarówno do trenowania, jak i zestawu walidacji, natomiast inne mają zastosowanie tylko do zestawu treningowego. Jeśli testowy zestaw danych nie może przejść weryfikacji danych, oznacza to, że zautomatyzowane uczenie maszynowe nie może go przechwycić i istnieje możliwość niepowodzenia wnioskowania modelu lub spadku wydajności modelu.
Zadanie | Sprawdzanie poprawności danych |
---|---|
Wszystkie zadania | - Należy podać zarówno zestawy treningowe, jak i weryfikacyjne - Wymagane są co najmniej 50 próbek treningowych |
Wieloklasowa i wieloklasowa etykieta | Dane szkoleniowe i dane weryfikacji muszą mieć — Ten sam zestaw kolumn - Ta sama kolejność kolumn od lewej do prawej — ten sam typ danych dla kolumn o tej samej nazwie - Co najmniej dwie unikatowe etykiety - Unikatowe nazwy kolumn w każdym zestawie danych (na przykład zestaw treningowy nie może mieć wielu kolumn o nazwie Age) |
Tylko wieloklasowa | Brak |
Tylko wiele etykiet | - Format kolumny etykiety musi być w akceptowanym formacie - Co najmniej jedna próbka powinna mieć etykiety 0 lub 2+, w przeciwnym razie powinno to być multiclass zadanie— Wszystkie etykiety powinny być w str formacie lub int bez nakładania się. Etykieta i etykieta nie powinna być widoczna 1 '1' |
Tylko NER | - Plik nie powinien zaczynać się od pustego wiersza — Każdy wiersz musi być pustym wierszem lub zgodnym z formatem {token} {label} , gdzie znajduje się dokładnie jedno miejsce między tokenem a etykietą i bez odstępu po etykiecie- Wszystkie etykiety muszą zaczynać się od I- , B- lub być dokładnie O . Uwzględnianie wielkości liter- Dokładnie jeden pusty wiersz między dwoma próbkami - Dokładnie jeden pusty wiersz na końcu pliku |
Konfigurowanie eksperymentu
Funkcja NLP zautomatyzowanego uczenia maszynowego jest wyzwalana za pośrednictwem AutoMLConfig
programu , który jest tym samym przepływem pracy do przesyłania zautomatyzowanych eksperymentów uczenia maszynowego na potrzeby zadań klasyfikacji, regresji i prognozowania. Większość parametrów należy ustawić tak, jak w przypadku tych eksperymentów, takich jak task
, compute_target
i dane wejściowe.
Istnieją jednak kluczowe różnice:
- Można zignorować
primary_metric
parametr , ponieważ służy tylko do raportowania. Obecnie zautomatyzowane uczenie maszynowe trenuje tylko jeden model na przebieg dla nlp i nie ma wyboru modelu. - Parametr
label_column_name
jest wymagany tylko w przypadku zadań klasyfikacji tekstu wieloklasowej i wieloklasowej. - Jeśli większość próbek w zestawie danych zawiera więcej niż 128 słów, jest uważana za długi zakres. W tym scenariuszu można włączyć opcję tekstu o długim zakresie z parametrem
enable_long_range_text=True
w plikuAutoMLConfig
. Pozwala to zwiększyć wydajność modelu, ale wymaga dłuższych czasów trenowania.
automl_settings = {
"verbosity": logging.INFO,
"enable_long_range_text": True, # # You only need to set this parameter if you want to enable the long-range text setting
}
automl_config = AutoMLConfig(
task="text-classification",
debug_log="automl_errors.log",
compute_target=compute_target,
training_data=train_dataset,
validation_data=val_dataset,
label_column_name=target_column_name,
**automl_settings
)
Ustawienia języka
W ramach funkcji NLP zautomatyzowane uczenie maszynowe obsługuje 104 języki, wykorzystując specyficzne dla języka i wielojęzyczne wstępnie wytrenowane modele sieci DNN tekstu, takie jak rodzina modeli BERT. Obecnie wybór języka jest domyślnie używany w języku angielskim.
W poniższej tabeli podsumowano, jaki model jest stosowany na podstawie typu i języka zadań. Zobacz pełną listę obsługiwanych języków i ich kodów.
Typ zadania | Składnia dla dataset_language |
Algorytm modelu tekstu |
---|---|---|
Klasyfikacja tekstu z wieloma etykietami | 'eng' 'deu' 'mul' |
Angielski BERT bez liter Niemiecki BERT Wielojęzyczny BERT W przypadku wszystkich innych języków zautomatyzowane uczenie maszynowe stosuje wielojęzyczne BERT |
Klasyfikacja tekstu wieloklasowego | 'eng' 'deu' 'mul' |
Angielski przypadek BERT Wielojęzyczny BERT W przypadku wszystkich innych języków zautomatyzowane uczenie maszynowe stosuje wielojęzyczne BERT |
Rozpoznawanie nazwanych jednostek (NER) | 'eng' 'deu' 'mul' |
Angielski przypadek BERT Niemiecki BERT Wielojęzyczny BERT W przypadku wszystkich innych języków zautomatyzowane uczenie maszynowe stosuje wielojęzyczne BERT |
Język zestawu danych można określić w pliku FeaturizationConfig
. BERT jest również używany w procesie cechowania zautomatyzowanego trenowania eksperymentów uczenia maszynowego, dowiedz się więcej o integracji i cechowaniu BERT w zautomatyzowanym uczeniu maszynowym.
from azureml.automl.core.featurization import FeaturizationConfig
featurization_config = FeaturizationConfig(dataset_language='{your language code}')
automl_config = AutomlConfig("featurization": featurization_config)
Trenowanie rozproszone
Eksperymenty NLP można również uruchamiać przy użyciu trenowania rozproszonego w klastrze obliczeniowym usługi Azure Machine Learning. Jest to obsługiwane automatycznie przez zautomatyzowane uczenie maszynowe, gdy parametry max_concurrent_iterations = number_of_vms
i enable_distributed_dnn_training = True
są udostępniane w AutoMLConfig
trakcie konfigurowania eksperymentu.
max_concurrent_iterations = number_of_vms
enable_distributed_dnn_training = True
Umożliwia to zaplanowanie rozproszonego trenowania modeli NLP i automatyczne skalowanie do każdego procesora GPU na maszynie wirtualnej lub klastrze maszyn wirtualnych. Maksymalna dozwolona liczba maszyn wirtualnych wynosi 32. Trenowanie jest zaplanowane z liczbą maszyn wirtualnych, które są w uprawnieniach dwóch.
Przykładowe notesy
Zobacz przykładowe notesy, aby uzyskać szczegółowe przykłady kodu dla każdego zadania NLP.
- Klasyfikacja tekstu wieloklasowego
- Klasyfikacja tekstu z wieloma etykietami
- Rozpoznawanie nazwanych jednostek