AutoML instellen om een verwerkingsmodel voor natuurlijke taal te trainen met Python (preview)
VAN TOEPASSING OP:Python SDK azureml v1
Belangrijk
Deze functie is momenteel beschikbaar als openbare preview-versie. Deze preview-versie wordt geleverd zonder serviceovereenkomst en wordt niet aanbevolen voor productieworkloads. Misschien worden bepaalde functies niet ondersteund of zijn de mogelijkheden ervan beperkt.
Zie Supplemental Terms of Use for Microsoft Azure Previews (Aanvullende gebruiksvoorwaarden voor Microsoft Azure-previews) voor meer informatie.
In dit artikel leert u hoe u NLP-modellen (Natural Language Processing) traint met geautomatiseerde ML in de Azure Machine Learning Python SDK.
Geautomatiseerde ML ondersteunt NLP, waarmee ML-professionals en gegevenswetenschappers hun eigen tekstgegevens kunnen gebruiken en aangepaste modellen kunnen bouwen voor taken zoals tekstclassificatie met meerdere klassen, tekstclassificatie met meerdere labels en herkenning van benoemde entiteiten (NER).
U kunt naadloos integreren met de azure Machine Learning-functie voor het labelen van uw tekstgegevens of het overbrengen van uw bestaande gelabelde gegevens. Geautomatiseerde ML biedt de optie om gedistribueerde training te gebruiken op rekenclusters met meerdere GPU's voor snellere modeltraining. Het resulterende model kan op schaal worden uitgevoerd door gebruik te maken van de MLOps-mogelijkheden van Azure Machine Learning.
Vereisten
Azure-abonnement. Als u geen Azure-abonnement hebt, meldt u zich aan om vandaag nog de gratis of betaalde versie van Azure Machine Learning te proberen.
Een Azure Machine Learning-werkruimte met rekenkracht voor GPU-training. Zie Werkruimteresources maken om de werkruimte te maken. Zie Voor GPU geoptimaliseerde grootten van virtuele machines voor meer informatie over GPU-exemplaren die worden geleverd door Azure.
Waarschuwing
Ondersteuning voor meertalige modellen en het gebruik van modellen met een langere maximale reekslengte is nodig voor verschillende NLP-gebruiksvoorbeelden, zoals niet-Engelse gegevenssets en documenten met een langer bereik. Als gevolg hiervan hebben deze scenario's mogelijk meer GPU-geheugen nodig om modeltraining te laten slagen, zoals de NC_v3-serie of de ND-serie.
De Azure Machine Learning Python SDK is geïnstalleerd.
Als u de SDK wilt installeren, kunt u
Maak een rekenproces, waarmee automatisch de SDK wordt geïnstalleerd en vooraf is geconfigureerd voor ML-werkstromen. Zie Een Azure Machine Learning-rekenproces maken en beheren voor meer informatie.
Installeer het
automl
pakket zelf, dat de standaardinstallatie van de SDK bevat.
Belangrijk
Voor de Python-opdrachten in dit artikel is de nieuwste
azureml-train-automl
pakketversie vereist.- Installeer het nieuwste
azureml-train-automl
pakket in uw lokale omgeving. - Zie de opmerkingen bij de release voor meer informatie over het nieuwste
azureml-train-automl
pakket.
In dit artikel wordt ervan uitgegaan dat u bekend bent met het instellen van een geautomatiseerd machine learning-experiment. Volg de zelfstudie of instructies om de belangrijkste ontwerppatronen voor geautomatiseerde machine learning-experimenten te bekijken.
Selecteer uw NLP-taak
Bepaal welke NLP-taak u wilt uitvoeren. Op dit moment ondersteunt geautomatiseerde ML de volgende NLP-taken van het diepe neurale netwerk.
Taak | AutoMLConfig-syntaxis | Description |
---|---|---|
Tekstclassificatie met meerdere klassen | task = 'text-classification' |
Er zijn meerdere mogelijke klassen en elke steekproef kan worden geclassificeerd als precies één klasse. De taak bestaat uit het voorspellen van de juiste klasse voor elk voorbeeld. Bijvoorbeeld het classificeren van een filmscript als 'Komedie' of 'Romantisch'. |
Tekstclassificatie met meerdere labels | task = 'text-classification-multilabel' |
Er zijn meerdere mogelijke klassen en aan elk voorbeeld kan een willekeurig aantal klassen worden toegewezen. De taak bestaat uit het voorspellen van alle klassen voor elke steekproef U kunt bijvoorbeeld een filmscript classificeren als 'Komedie', 'Romantisch' of 'Komedie en romantisch'. |
NER (Herkenning van benoemde entiteiten) | task = 'text-ner' |
Er zijn meerdere mogelijke tags voor tokens in reeksen. De taak bestaat uit het voorspellen van de tags voor alle tokens voor elke reeks. Bijvoorbeeld het extraheren van domeinspecifieke entiteiten uit ongestructureerde tekst, zoals contracten of financiële documenten |
Gegevens voorbereiden
Voor NLP-experimenten in geautomatiseerde ML kunt u een Azure Machine Learning-gegevensset met .csv
indeling gebruiken voor classificatietaken met meerdere klassen en meerdere labels. Voor NER-taken worden bestanden met twee kolommen .txt
ondersteund die een spatie gebruiken als scheidingsteken en voldoen aan de CoNLL-indeling. De volgende secties bevatten aanvullende informatie over de gegevensindeling die voor elke taak wordt geaccepteerd.
Meerdere klassen
Voor classificatie met meerdere klassen kan de gegevensset meerdere tekstkolommen en precies één labelkolom bevatten. Het volgende voorbeeld bevat slechts één tekstkolom.
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"
Meerdere labels
Voor classificatie met meerdere labels zijn de kolommen van de gegevensset hetzelfde als die met meerdere klassen, maar er zijn speciale indelingsvereisten voor gegevens in de labelkolom. De twee geaccepteerde indelingen en voorbeelden staan in de volgende tabel.
Opties voor labelkolomopmaak | Meerdere labels | Eén label | Geen labels |
---|---|---|---|
Tekst zonder opmaak | "label1, label2, label3" |
"label1" |
"" |
Python-lijst met aanhalingstekens | "['label1','label2','label3']" |
"['label1']" |
"[]" |
Belangrijk
Er worden verschillende parsers gebruikt om labels voor deze indelingen te lezen. Als u de indeling tekst zonder opmaak gebruikt, gebruikt u alleen alfabetisch, numeriek en '_'
in uw labels. Alle andere tekens worden herkend als het scheidingsteken van labels.
Als uw label bijvoorbeeld is, wordt "cs.AI"
het gelezen als "cs"
en "AI"
. Bij de Python-lijstindeling zou het label zijn "['cs.AI']"
, wat wordt gelezen als "cs.AI"
.
Voorbeeldgegevens voor multilabels in tekst zonder opmaak.
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.",""
Voorbeeldgegevens voor meerdere labels in Python-lijst met aanhalingstekens.
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.","[]"
Herkenning van benoemde entiteiten (NER)
In tegenstelling tot multiklassen of meerdere labels, waarvoor .csv
indelingsgegevenssets nodig zijn, vereist de herkenning van benoemde entiteiten de CoNLL-indeling. Het bestand moet precies twee kolommen bevatten en in elke rij worden het token en het label gescheiden door één spatie.
Bijvoorbeeld:
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
Gegevensvalidatie
Vóór de training past geautomatiseerde ML gegevensvalidatiecontroles toe op de invoergegevens om ervoor te zorgen dat de gegevens correct kunnen worden verwerkt. Als een van deze controles mislukt, mislukt de uitvoering met het relevante foutbericht. Hier volgen de vereisten voor het doorstaan van gegevensvalidatiecontroles voor elke taak.
Notitie
Sommige gegevensvalidatiecontroles zijn van toepassing op zowel de training als de validatieset, terwijl andere alleen van toepassing zijn op de trainingsset. Als de testgegevensset de gegevensvalidatie niet kan doorstaan, betekent dit dat geautomatiseerde ML deze niet kan vastleggen en dat er een fout met modeldeductie kan optreden of dat de modelprestaties afnemen.
Taak | Controle van gegevensvalidatie |
---|---|
Alle taken | - Zowel trainings- als validatiesets moeten worden verstrekt - Ten minste 50 trainingsvoorbeelden zijn vereist |
Meerdere klassen en meerdere labels | De trainingsgegevens en validatiegegevens moeten - Dezelfde set kolommen - Dezelfde volgorde van kolommen van links naar rechts - Hetzelfde gegevenstype voor kolommen met dezelfde naam - Ten minste twee unieke labels - Unieke kolomnamen in elke gegevensset (de trainingsset kan bijvoorbeeld niet meerdere kolommen bevatten met de naam Leeftijd) |
Alleen meerdere klassen | Geen |
Alleen meerdere labels | - De indeling van de labelkolom moet de geaccepteerde indeling hebben - Ten minste één voorbeeld moet 0 of 2+ labels hebben, anders moet het een multiclass taak zijn- Alle labels moeten de notatie of int de str notatie hebben, zonder overlapping. U mag niet zowel het label 1 als het label hebben '1' |
Alleen NER | - Het bestand mag niet beginnen met een lege regel - Elke regel moet een lege regel zijn, of de notatie {token} {label} volgen, waarbij er precies één spatie is tussen het token en het label en geen witruimte na het label- Alle labels moeten beginnen met I- , B- of precies O zijn. Hoofdlettergevoelig- Precies één lege lijn tussen twee steekproeven - Precies één lege regel aan het einde van het bestand |
Experiment configureren
De NLP-mogelijkheid van Geautomatiseerde ML wordt geactiveerd via AutoMLConfig
. Dit is dezelfde werkstroom voor het indienen van geautomatiseerde ML-experimenten voor classificatie-, regressie- en prognosetaken. U stelt de meeste parameters in zoals voor deze experimenten, zoals task
, compute_target
en gegevensinvoer.
Er zijn echter belangrijke verschillen:
- U kunt negeren
primary_metric
, omdat dit alleen voor rapportagedoeleinden is. Op dit moment traint geautomatiseerde ML slechts één model per uitvoering voor NLP en is er geen modelselectie. - De
label_column_name
parameter is alleen vereist voor tekstclassificatietaken met meerdere klassen en meerdere labels. - Als het merendeel van de voorbeelden in uw gegevensset meer dan 128 woorden bevat, wordt dit beschouwd als een groot bereik. Voor dit scenario kunt u de optie tekst met lange afstand inschakelen met de
enable_long_range_text=True
parameter in uwAutoMLConfig
. Dit helpt de modelprestaties te verbeteren, maar vereist langere trainingstijden.- Als u tekst met een groot bereik inschakelt, is een GPU met meer geheugen vereist, zoals NCv3-serie of ND-serie .
- De
enable_long_range_text
parameter is alleen beschikbaar voor classificatietaken met meerdere klassen.
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
)
Taalinstellingen
Als onderdeel van de NLP-functionaliteit ondersteunt geautomatiseerde ML 104 talen die gebruikmaken van taalspecifieke en meertalige vooraf getrainde tekst-DNN-modellen, zoals de BERT-serie van modellen. Op dit moment is de taalselectie standaard ingesteld op Engels.
In de volgende tabel ziet u een overzicht van het model dat wordt toegepast op basis van taaktype en taal. Bekijk de volledige lijst met ondersteunde talen en de bijbehorende codes.
Taaktype | Syntaxis voor dataset_language |
Algoritme voor tekstmodel |
---|---|---|
Tekstclassificatie met meerdere labels | 'eng' 'deu' 'mul' |
Engels BERT ongekapt Duits BERT Meertalige BERT Voor alle andere talen past geautomatiseerde ML meertalige BERT toe |
Tekstclassificatie met meerdere klassen | 'eng' 'deu' 'mul' |
Engels BERT cased Meertalige BERT Voor alle andere talen past geautomatiseerde ML meertalige BERT toe |
Herkenning van benoemde entiteiten (NER) | 'eng' 'deu' 'mul' |
Engels BERT cased Duits BERT Meertalige BERT Voor alle andere talen past geautomatiseerde ML meertalige BERT toe |
U kunt de taal van uw gegevensset opgeven in uw FeaturizationConfig
. BERT wordt ook gebruikt in het featurization-proces van geautomatiseerde ML-experimenttraining, meer informatie over BERT-integratie en -featurization in geautomatiseerde ML.
from azureml.automl.core.featurization import FeaturizationConfig
featurization_config = FeaturizationConfig(dataset_language='{your language code}')
automl_config = AutomlConfig("featurization": featurization_config)
Gedistribueerde training
U kunt uw NLP-experimenten ook uitvoeren met gedistribueerde training op een Azure Machine Learning-rekencluster. Dit wordt automatisch verwerkt door geautomatiseerde ML wanneer de parameters max_concurrent_iterations = number_of_vms
en enable_distributed_dnn_training = True
worden opgegeven in uw AutoMLConfig
tijdens het instellen van het experiment.
max_concurrent_iterations = number_of_vms
enable_distributed_dnn_training = True
Hiermee plant u gedistribueerde training van de NLP-modellen en wordt automatisch geschaald naar elke GPU op uw virtuele machine of cluster van virtuele machines. Het maximum aantal toegestane virtuele machines is 32. De training wordt gepland met het aantal virtuele machines met twee bevoegdheden.
Voorbeeldnotebooks
Zie de voorbeeldnotitieblokken voor gedetailleerde codevoorbeelden voor elke NLP-taak.
- Tekstclassificatie met meerdere klassen
- Tekstclassificatie met meerdere labels
- Herkenning van benoemde entiteit
Volgende stappen
- Meer informatie over hoe en waar u een model implementeert.
- Problemen met geautomatiseerde ML-experimenten oplossen.