Hoe Amazon Search de ML-inferentiekosten met 85% verlaagde met AWS Inferentia

De productzoekmachine van Amazon indexeert miljarden producten, bedient honderden miljoenen klanten wereldwijd en is een van de meest gebruikte diensten ter wereld. Het Amazon Search-team ontwikkelt machine learning-technologie (ML) die de Amazon.com zoekmachine en helpt klanten moeiteloos te zoeken. Om een โ€‹โ€‹geweldige klantervaring te bieden en te werken op de enorme schaal die vereist is door de Amazon.com zoekmachine, is dit team altijd op zoek naar manieren om meer kosteneffectieve systemen te bouwen met realtime latentie- en doorvoervereisten. Het team onderzoekt voortdurend hardware en compilers die zijn geoptimaliseerd voor deep learning om modeltraining en inferentie te versnellen, terwijl de operationele kosten over de hele linie worden verlaagd.

In dit bericht beschrijven we hoe Amazon Search gebruikt AWS Inferentie, een high-performance accelerator die speciaal is ontwikkeld door AWS om workloads voor deep learning-inferentie te versnellen. Het team voert ML-inferentie met lage latentie uit met op Transformer gebaseerde NLP-modellen op AWS Inferentia-gebaseerde Amazon Elastic Compute-cloud (Amazon EC2) Inf1-instanties en bespaart tot 85% op infrastructuurkosten met behoud van sterke doorvoer- en latentieprestaties.

Deep learning voor voorspelling van duplicaat- en query-intentie

Zoeken op de Amazon Marketplace is een multitask, multimodaal probleem, waarbij verschillende invoer moet worden verwerkt, zoals ASIN's (Amazon Standard Identification Number, een 10-cijferig alfanumeriek nummer dat producten op unieke wijze identificeert), productafbeeldingen, tekstuele beschrijvingen en zoekopdrachten. Om een โ€‹โ€‹gebruikerservaring op maat te creรซren, worden voorspellingen van veel modellen gebruikt voor verschillende aspecten van zoeken. Dit is een uitdaging omdat het zoeksysteem duizenden modellen heeft met tienduizenden transacties per seconde (TPS) bij piekbelasting. We richten ons op twee componenten van die ervaring:

  • Door de klant waargenomen dubbele voorspellingen โ€“ Om de meest relevante lijst met producten weer te geven die overeenkomen met de zoekopdracht van een gebruiker, is het belangrijk om producten te identificeren waar klanten moeilijk onderscheid tussen kunnen maken
  • Voorspelling van query-intentie โ€“ Om de zoekpagina en productlay-out aan te passen aan wat de klant zoekt, is het belangrijk om de intentie en het type van de zoekopdracht van de gebruiker te voorspellen (bijvoorbeeld een mediagerelateerde zoekopdracht, helpquery en andere soorten zoekopdrachten)

Beide voorspellingen worden gedaan met behulp van Transformer-modelarchitecturen, namelijk op BERT gebaseerde modellen. In feite delen beide hetzelfde op BERT gebaseerde model als basis, en elk stapelt een classificatie-/regressiekop bovenop deze ruggengraat.

Dubbele voorspelling bevat verschillende tekstuele kenmerken voor een paar geรซvalueerde producten als invoer (zoals producttype, titel, beschrijving, enzovoort) en wordt periodiek berekend voor grote datasets. Dit model is van begin tot eind getraind in een multi-task mode. Amazon SageMaker Processing-taken worden gebruikt om deze batchworkloads periodiek uit te voeren om hun lancering te automatiseren en alleen te betalen voor de verwerkingstijd die wordt gebruikt. Voor deze batch-workload use case was de vereiste voor inferentiedoorvoer 8,800 totale TPS.

Intentievoorspelling neemt de tekstuele vraag van de gebruiker als invoer en is in realtime nodig om het dagelijkse verkeer dynamisch te bedienen en de gebruikerservaring op de Amazon Marketplace te verbeteren. Het model is getraind op een classificatiedoelstelling met meerdere klassen. Dit model wordt vervolgens ingezet op Amazon Elastic Container-service (Amazon ECS), waarmee snel automatisch schalen en eenvoudige implementatie definitie en beheer. Omdat dit een realtime use-case is, moest de latentie van de P99 minder dan 10 milliseconden zijn om een โ€‹โ€‹heerlijke gebruikerservaring te garanderen.

AWS Inferentia en de AWS Neuron SDK

EC2 Inf1-instanties worden mogelijk gemaakt door AWS Inferentia, de eerste ML-accelerator die door AWS is gebouwd om deep learning-inferentie-workloads te versnellen. Inf1-instanties leveren tot 2.3 keer hogere doorvoer en tot 70% lagere kosten per gevolgtrekking dan vergelijkbare op GPU gebaseerde EC2-instanties. U kunt uw modellen blijven trainen met uw framework naar keuze (PyTorch, TensorFlow, MXNet) en ze vervolgens eenvoudig implementeren op AWS Inferentia om te profiteren van de ingebouwde prestatie-optimalisaties. U kunt een breed scala aan modeltypen implementeren met behulp van Inf1-instanties, van beeldherkenning, objectdetectie, natuurlijke taalverwerking (NLP) en moderne aanbevelingsmodellen.

AWS-neuron is een software development kit (SDK) die bestaat uit een compiler, runtime en profileringstools die de ML-inferentieprestaties van de EC2 Inf1-instanties optimaliseren. Neuron is standaard geรฏntegreerd met populaire ML-frameworks zoals TensorFlow en PyTorch. Daarom kunt u deep learning-modellen op AWS Inferentia implementeren met dezelfde bekende API's die worden geleverd door uw framework naar keuze, en profiteren van de prestatieverbetering en de laagste kosten per gevolgtrekking in de cloud.

Sinds de lancering is de Neuron SDK doorgegaan met het uitbreiden van het aantal modellen dat het ondersteunt, terwijl het de prestaties bleef verbeteren en de kosten voor gevolgtrekkingen verlaagde. Dit omvat NLP-modellen (BERT's), beeldclassificatiemodellen (ResNet, VGG) en objectdetectiemodellen (OpenPose en SSD).

Implementeer op Inf1-instanties voor lage latentie, hoge doorvoer en kostenbesparingen

Het Amazon Search-team wilde kosten besparen en tegelijkertijd voldoen aan hun hoge doorvoervereisten voor het voorspellen van duplicatie en de lage latentievereiste voor het voorspellen van de intentie van zoekopdrachten. Ze kozen ervoor om op AWS Inferentia-gebaseerde Inf1-instanties te implementeren en voldeden niet alleen aan de hoge prestatie-eisen, maar bespaarden ook tot 85% op inferentiekosten.

Door de klant waargenomen dubbele voorspellingen

Voorafgaand aan het gebruik van Inf1, een speciale Amazon EMR cluster werd uitgevoerd met op CPU gebaseerde instanties. Zonder afhankelijk te zijn van hardwareversnelling, was een groot aantal instances nodig om te voldoen aan de hoge doorvoervereiste van in totaal 8,800 transacties per seconde. Het team schakelde over op inf1.6xlarge instances, elk met 4 AWS Inferentia-versnellers en 16 NeuronCores (4 cores per AWS Inferentia-chip). Ze volgden het op Transformer gebaseerde model voor een enkele NeuronCore en laadden รฉรฉn modus per NeuronCore om de doorvoer te maximaliseren. Door gebruik te maken van de 16 beschikbare NeuronCores, verlaagden ze de inferentiekosten met 85% (op basis van de huidige openbare Amazon EC2 on-demand prijzen).

Voorspelling van query-intentie

Gezien de P99-latentievereiste van 10 milliseconden of minder, laadde het team het model naar elke beschikbare NeuronCore op inf1.6xlarge instances. U kunt dit eenvoudig doen met PyTorch Neuron met behulp van de fakkel.neuron.DataParallel API. Met de Inf1-implementatie was de latentie van het model 3 milliseconden, was de end-to-end latentie ongeveer 10 milliseconden en bereikte de maximale doorvoer bij piekbelasting 16,000 TPS.

Aan de slag met voorbeeldcompilatie en implementatiecode

Het volgende is een voorbeeldcode om u te helpen aan de slag te gaan met Inf1-instanties en de prestatie- en kostenvoordelen te realiseren, zoals het Amazon Search-team. We laten zien hoe u inferentie kunt compileren en uitvoeren met een PyTorch-model, met behulp van PyTorch-neuron.

Eerst wordt het model gecompileerd met torch.neuron.trace():

m = torch.jit.load(f="./cpu_model.pt", map_location=torch.device('cpu'))
m.eval()
model_neuron = torch.neuron.trace(
    m,
    inputs,
    compiler_workdir="work_" + str(cores) + "_" + str(batch_size),
    compiler_args=[
        '--fp32-cast=all', '--neuroncore-pipeline-cores=' + str(cores)
    ])
model_neuron.save("m5_batch" + str(batch_size) + "_cores" + str(cores) +
                  "_with_extra_op_and_fp32cast.pt")

Voor de volledige lijst van mogelijke argumenten voor de trace methode, zie: PyTorch-Neuron traceren Python API. Zoals je kunt zien, compiler argumenten kan worden doorgegeven aan de torch.neuron API direct. Alle FP32-operators zijn gecast naar: BF16 with --fp32-cast=all, die de hoogste prestaties levert met behoud van dynamisch bereik. Er zijn meer castingopties beschikbaar waarmee u de prestaties kunt regelen om een โ€‹โ€‹nauwkeurige afweging te maken. De modellen die voor beide use-cases werden gebruikt, zijn samengesteld voor een enkele NeuronCore (geen pijplijnen).

Vervolgens laden we het model op Inferentia met torch.jit.load, en gebruik het voor voorspelling. De Neuron-looptijd laadt het model automatisch in NeuronCores.

cm_cpd_preprocessing_jit = torch.jit.load(f=CM_CPD_PROC,
                                          map_location=torch.device('cpu'))
cm_cpd_preprocessing_jit.eval()
m5_model = torch.jit.load(f=CM_CPD_M5)
m5_model.eval()

input = get_input()
with torch.no_grad():
    batch_cm_cpd = cm_cpd_preprocessing_jit(input)
    input_ids, attention_mask, position_ids, valid_length, token_type_ids = (
        batch_cm_cpd['input_ids'].type(torch.IntTensor),
        batch_cm_cpd['attention_mask'].type(torch.HalfTensor),
        batch_cm_cpd['position_ids'].type(torch.IntTensor),
        batch_cm_cpd['valid_length'].type(torch.IntTensor),
        batch_cm_cpd['token_type_ids'].type(torch.IntTensor))
    model_res = m5_model(input_ids, attention_mask, position_ids, valid_length,
                         token_type_ids)

Conclusie

Het Amazon Search-team was in staat om hun inferentiekosten met 85% te verlagen met behulp van op AWS Inferentia gebaseerde Inf1-instanties, onder druk verkeer en veeleisende prestatie-eisen. AWS Inferentia en de Neuron SDK boden het team de flexibiliteit om het implementatieproces los van de training te optimaliseren en een ondiepe leercurve voort te brengen via goed afgeronde tools en bekende framework-API's.

U kunt prestatie- en kostenvoordelen ontgrendelen door aan de slag te gaan met de voorbeeldcode in dit bericht. Bekijk ook de end-to-end tutorials om ML-modellen op Inferentia uit te voeren met PyTorch en TensorFlow.


Over de auteurs

Hoe Amazon Search de kosten voor ML-inferentie met 85% verlaagde met AWS Inferentia PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Joao Moura is een AI/ML Specialist Solutions Architect bij Amazon Web Services. Hij is vooral gericht op NLP-gebruiksscenario's en helpt klanten bij het optimaliseren van training en implementatie van deep learning-modellen. Hij is ook een actief voorstander van ML-gespecialiseerde hardware en low-code ML-oplossingen.

Hoe Amazon Search de kosten voor ML-inferentie met 85% verlaagde met AWS Inferentia PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Weiqi Zhang is Software Engineering Manager bij Search M5, waar hij werkt aan het produceren van grootschalige modellen voor machine learning-toepassingen van Amazon. Zijn interesses zijn onder meer het ophalen van informatie en machine learning-infrastructuur.

Hoe Amazon Search de kosten voor ML-inferentie met 85% verlaagde met AWS Inferentia PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Jason Carson is een Software Engineer voor het ontwikkelen van machine learning-pijplijnen om het aantal gestolen zoekvertoningen als gevolg van door klanten waargenomen duplicaten te helpen verminderen. Hij werkt voornamelijk met Apache Spark, AWS en PyTorch om gegevens voor ML-modellen te helpen implementeren en invoeren/verwerken. In zijn vrije tijd houdt hij van lezen en hardlopen.

Hoe Amazon Search de kosten voor ML-inferentie met 85% verlaagde met AWS Inferentia PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Shaohui Xi is een SDE bij het Search Query Understanding Infra team. Hij leidt de inspanningen voor het bouwen van grootschalige deep learning online inferentiediensten met lage latentie en hoge beschikbaarheid. Buiten zijn werk houdt hij van skiรซn en lekker eten ontdekken.

Hoe Amazon Search de kosten voor ML-inferentie met 85% verlaagde met AWS Inferentia PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Zhuoqi Zhang is een Software Development Engineer bij het Search Query Understanding Infra-team. Hij werkt aan het bouwen van frameworks voor modelserving om de latentie en doorvoer voor deep learning online inferentieservices te verbeteren. Buiten het werk houdt hij van basketballen, snowboarden en autorijden.

Hoe Amazon Search de kosten voor ML-inferentie met 85% verlaagde met AWS Inferentia PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Haowei Zon is een software engineer in het Search Query Understanding Infra team. Ze werkt aan het ontwerpen van API's en infrastructuur ter ondersteuning van deep learning online inferentiediensten. Haar interesses omvatten service API-ontwerp, infrastructuurconfiguratie en onderhoud. Naast haar werk houdt ze van hardlopen, wandelen en reizen.

Hoe Amazon Search de kosten voor ML-inferentie met 85% verlaagde met AWS Inferentia PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Jaspreet Singh is een Applied Scientist in het M5-team, waar hij werkt aan grootschalige funderingsmodellen om de winkelervaring van de klant te verbeteren. Zijn onderzoeksinteresses omvatten multi-task leren, informatie ophalen en representatie leren.

Hoe Amazon Search de kosten voor ML-inferentie met 85% verlaagde met AWS Inferentia PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Shruti Koparkar is Senior Product Marketing Manager bij AWS. Ze helpt klanten bij het verkennen, evalueren en adopteren van EC2 versnelde computerinfrastructuur voor hun machine learning-behoeften.

Tijdstempel:

Meer van AWS-machine learning