Er zijn veel recente ontwikkelingen geweest in het NLP-domein. Vooraf getrainde modellen en volledig beheerde NLP-services hebben de toegang tot en acceptatie van NLP gedemocratiseerd. Amazon begrijpt het is een volledig beheerde service die NLP-taken kan uitvoeren, zoals herkenning van aangepaste entiteiten, onderwerpmodellering, sentimentanalyse en meer om inzichten uit gegevens te extraheren zonder voorafgaande ML-ervaring.
Vorig jaar kondigde AWS een vennootschap Met Gezicht knuffelen om modellen voor natuurlijke taalverwerking (NLP) sneller in productie te brengen. Hugging Face is een open-source AI-community, gericht op NLP. Hun op Python gebaseerde bibliotheek (transformers) biedt tools om eenvoudig populaire, ultramoderne Transformer-architecturen zoals BERT, RoBERTa en GPT te gebruiken. U kunt deze modellen toepassen op verschillende NLP-taken, zoals tekstclassificatie, informatie-extractie en het beantwoorden van vragen anderen.
Amazon Sage Maker is een volledig beheerde service die ontwikkelaars en datawetenschappers de mogelijkheid biedt om snel machine learning (ML)-modellen te bouwen, trainen en implementeren. SageMaker haalt het zware werk uit elke stap van het ML-proces, waardoor het gemakkelijker wordt om hoogwaardige modellen te ontwikkelen. De SageMaker Python SDK biedt open-source API's en containers voor het trainen en implementeren van modellen op SageMaker, met behulp van verschillende ML- en deep learning-frameworks.
Dankzij de integratie van Hugging Face met SageMaker kunt u Hugging Face-modellen op schaal bouwen op basis van uw eigen domeinspecifieke gebruiksscenario's.
In dit bericht laten we u een voorbeeld zien van het bouwen en implementeren van een aangepaste Hugging Face-tekstsamenvatting op SageMaker. We gebruiken hiervoor Pegasus [1], het eerste op Transformer gebaseerde model dat specifiek vooraf is getraind op een doelstelling die is afgestemd op abstracte tekstsamenvattingen. BERT is vooraf getraind in het maskeren van willekeurige woorden in een zin; Daarentegen worden tijdens de vooropleiding van Pegasus zinnen gemaskeerd uit een invoerdocument. Het model genereert vervolgens de ontbrekende zinnen als een enkele uitvoerreeks waarbij alle ontmaskerde zinnen als context worden gebruikt, waardoor een samenvatting van het document ontstaat.
Dankzij de flexibiliteit van de HuggingFace-bibliotheek, kun je de code die in dit bericht wordt weergegeven eenvoudig aanpassen voor andere soorten transformatormodellen, zoals t5, BART en meer.
Laad uw eigen dataset om een โโHugging Face-model te verfijnen
Om een โโaangepaste dataset uit een CSV-bestand te laden, gebruiken we de load_dataset
methode uit het Transformers-pakket. We kunnen tokenisatie toepassen op de geladen dataset met behulp van de datasets.Dataset.map
functie. De map
functie herhaalt de geladen dataset en past de tokenize-functie toe op elk voorbeeld. De tokenized dataset kan vervolgens worden doorgegeven aan de trainer voor het verfijnen van het model. Zie de volgende code:
Bouw uw trainingsscript voor de Hugging Face SageMaker-schatter
Zoals uitgelegd in het bericht AWS en Hugging Face werken samen om de acceptatie van Natural Language Processing-modellen te vereenvoudigen en te versnellen, is het trainen van een Hugging Face-model op SageMaker nog nooit zo eenvoudig geweest. We kunnen dit doen met behulp van de Hugging Face-schatter van de SageMaker-SDK.
Het volgende codefragment verfijnt Pegasus op onze dataset. Je kunt er ook veel vinden voorbeeld notitieboekjes die u begeleiden bij het verfijnen van verschillende soorten modellen, die rechtstreeks beschikbaar zijn in de GitHub-repository van Transformers. Om gedistribueerde training mogelijk te maken, kunnen we de Bibliotheek voor gegevensparallellisme in SageMaker, dat is ingebouwd in de HuggingFace Trainer API. Om gegevensparallellisme mogelijk te maken, moeten we de distribution
parameter in onze Hugging Face-schatter.
De maximale trainingsbatchgrootte die u kunt configureren, is afhankelijk van de modelgrootte en het GPU-geheugen van de gebruikte instantie. Als SageMaker gedistribueerde training is ingeschakeld, is de totale batchgrootte de som van elke batch die is verdeeld over elk apparaat/GPU. Als we een ml.g4dn.16xlarge met gedistribueerde training gebruiken in plaats van een ml.g4dn.xlarge-instantie, hebben we acht keer (8 GPU's) zoveel geheugen als een ml.g4dn.xlarge-instantie (1 GPU). De batchgrootte per apparaat blijft hetzelfde, maar acht apparaten trainen parallel.
Zoals gebruikelijk bij SageMaker, creรซren we een train.py
script om te gebruiken met de scriptmodus en geef hyperparameters door voor training. Het volgende codefragment voor Pegasus laadt het model en traint het met behulp van de Transformers Trainer
klasse:
De volledige code is beschikbaar op GitHub.
Implementeer het getrainde Hugging Face-model in SageMaker
Onze vrienden bij Hugging Face hebben de conclusie over SageMaker for Transformers-modellen eenvoudiger dan ooit gemaakt dankzij de SageMaker Toolkit voor knuffelgezichtsinferentie. U kunt het eerder getrainde model direct implementeren door eenvoudig de omgevingsvariabele in te stellen "HF_TASK":"summarization"
(voor instructies, zie Pegasus-modellen), kiezen Implementeren, en dan kiezen Amazon Sage Maker, zonder dat u een inferentiescript hoeft te schrijven.
Als u echter een specifieke manier nodig heeft om voorspellingen te genereren of na te werken, bijvoorbeeld het genereren van verschillende samenvattingssuggesties op basis van een lijst met verschillende tekstgeneratieparameters, kan het schrijven van uw eigen inferentiescript nuttig en relatief eenvoudig zijn:
Zoals getoond in de voorgaande code, heeft een dergelijk inferentiescript voor HuggingFace op SageMaker alleen de volgende sjabloonfuncties nodig:
- model_fn () โ Leest de inhoud van wat er is opgeslagen aan het einde van de trainingstaak binnen
SM_MODEL_DIR
, of uit een bestaande map met modelgewichten die is opgeslagen als een tar.gz-bestand in Amazon eenvoudige opslagservice (Amazon S3). Het wordt gebruikt om het getrainde model en de bijbehorende tokenizer te laden. - input_fn () โ Formatteert de gegevens die zijn ontvangen van een verzoek aan het eindpunt.
- predict_fn () โ Roept de uitvoer van . op
model_fn()
(het model en de tokenizer) om gevolgtrekkingen uit te voeren op de uitvoer vaninput_fn()
(de opgemaakte gegevens).
Optioneel kunt u een output_fn()
functie voor inferentieopmaak, met behulp van de uitvoer van predict_fn()
, die we niet hebben aangetoond in dit bericht.
We kunnen dan het getrainde Hugging Face-model met het bijbehorende inferentiescript in SageMaker implementeren met behulp van de Knuffelend gezicht SageMaker-model klasse:
Test het geรฏmplementeerde model
Voor deze demo hebben we het model getraind op de E-commerce kledingrecensies voor dames, dataset, die recensies bevat van kledingartikelen (die we beschouwen als de invoertekst) en de bijbehorende titels (die we beschouwen als samenvattingen). Nadat we artikelen met ontbrekende titels hebben verwijderd, bevat de dataset 19,675 recensies. Het finetunen van het Pegasus-model op een trainingsset met 70% van die artikelen gedurende vijf tijdperken duurde ongeveer 3.5 uur op een ml.p3.16xgrote instantie.
We kunnen het model vervolgens inzetten en testen met enkele voorbeeldgegevens uit de testset. Het volgende is een voorbeeldrecensie waarin een trui wordt beschreven:
Dankzij ons aangepaste inferentiescript dat wordt gehost in een SageMaker-eindpunt, kunnen we voor deze beoordeling verschillende samenvattingen genereren met verschillende tekstgeneratieparameters. We kunnen het eindpunt bijvoorbeeld vragen om een โโreeks zeer korte tot matig lange samenvattingen te genereren die verschillende lengtestraffen specificeren (hoe kleiner de lengtestraf, hoe korter de gegenereerde samenvatting). Hieronder volgen enkele voorbeelden van parameterinvoer en de daaropvolgende door de machine gegenereerde samenvattingen:
Welke samenvatting heeft jouw voorkeur? De eerste gegenereerde titel bevat alle belangrijke feiten over de recensie, met een kwart van het aantal woorden. De laatste daarentegen gebruikt slechts drie woorden (minder dan 1/10e van de lengte van de oorspronkelijke recensie) om zich te concentreren op het belangrijkste kenmerk van de trui.
Conclusie
U kunt een tekstsamenvatting verfijnen op uw aangepaste dataset en deze implementeren in productie op SageMaker met dit eenvoudige voorbeeld dat beschikbaar is op GitHub. Extra voorbeeld notitieboekjes om Hugging Face-modellen te trainen en in te zetten op SageMaker zijn ook beschikbaar.
Zoals altijd verwelkomt AWS feedback. Dien uw opmerkingen of vragen in.
Referenties
[1] PEGASUS: Pre-training met geรซxtraheerde gap-zinnen voor abstracte samenvatting
Over de auteurs
Victor Malesevi is een Machine Learning Engineer bij AWS Professional Services, gepassioneerd door natuurlijke taalverwerking en MLOps. Hij werkt samen met klanten om uitdagende deep learning-modellen te ontwikkelen en in productie te nemen op AWS. In zijn vrije tijd drinkt hij graag een glas rode wijn en wat kaas met vrienden.
Aamna Najmi is een datawetenschapper bij AWS Professional Services. Ze heeft een passie voor het helpen van klanten bij het innoveren met Big Data en Artificial Intelligence-technologieรซn om zakelijke waarde en inzichten uit data te halen. In haar vrije tijd houdt ze van tuinieren en reizen naar nieuwe plaatsen.
- AI
- ai kunst
- ai kunst generator
- je hebt een robot
- Amazon Sage Maker
- kunstmatige intelligentie
- certificering van kunstmatige intelligentie
- kunstmatige intelligentie in het bankwezen
- kunstmatige intelligentie robot
- kunstmatige intelligentie robots
- kunstmatige intelligentiesoftware
- AWS-machine learning
- blockchain
- blockchain conferentie ai
- vindingrijk
- conversatie kunstmatige intelligentie
- crypto conferentie ai
- van dall
- diepgaand leren
- google ai
- machine learning
- Plato
- plato ai
- Plato gegevensintelligentie
- Plato-spel
- PlatoData
- platogamen
- schaal ai
- syntaxis
- zephyrnet