Verbeter de prestaties van generatieve taalmodellen met zelfconsistentie op Amazon Bedrock | Amazon-webservices

Verbeter de prestaties van generatieve taalmodellen met zelfconsistentie op Amazon Bedrock | Amazon-webservices

Generatieve taalmodellen zijn opmerkelijk vaardig gebleken in het oplossen van logische en analytische taken op het gebied van natuurlijke taalverwerking (NLP). Verder is het gebruik van snelle techniek kunnen hun prestaties aanzienlijk verbeteren. Bijvoorbeeld, keten van gedachten Het is bekend dat (CoT) de capaciteit van een model voor complexe meerstapsproblemen verbetert. Om bovendien de nauwkeurigheid te vergroten bij taken waarbij redeneren een rol speelt, a zelfconsistentie Er is een suggestieve aanpak voorgesteld, die hebzuchtig vervangt door stochastische decodering tijdens het genereren van talen.

Amazonebodem is een volledig beheerde service die via รฉรฉn enkele API een keuze biedt uit goed presterende basismodellen van toonaangevende AI-bedrijven en Amazon, samen met een breed scala aan mogelijkheden om te bouwen generatieve AI applicaties met beveiliging, privacy en verantwoorde AI. Met de batch gevolgtrekking API, kun je Amazon Bedrock gebruiken om inferentie met basismodellen in batches uit te voeren en efficiรซnter antwoorden te krijgen. Dit bericht laat zien hoe u zelfconsistentieprompts kunt implementeren via batch-inferentie op Amazon Bedrock om de modelprestaties op rekenkundige en meerkeuzeredeneringstaken te verbeteren.

Overzicht van de oplossing

Het stimuleren van zelfconsistentie van taalmodellen is afhankelijk van het genereren van meerdere antwoorden die worden samengevoegd tot een definitief antwoord. In tegenstelling tot benaderingen van รฉรฉn generatie, zoals CoT, creรซert de procedure voor het nemen van monsters en het marginaliseren van zelfconsistentie een reeks modelaanvullingen die tot een meer consistente oplossing leiden. Het genereren van verschillende antwoorden voor een bepaalde prompt is mogelijk dankzij het gebruik van een stochastische, in plaats van hebzuchtige, decoderingsstrategie.

De volgende afbeelding laat zien hoe zelfconsistentie verschilt van hebzuchtige CoT in die zin dat het een diverse reeks redeneerpaden genereert en deze samenvoegt om tot het uiteindelijke antwoord te komen.

Verschillen tussen zelfconsistentie en CoT-prompts.

Decodeerstrategieรซn voor het genereren van tekst

Tekst gegenereerd door alleen-decoder-taalmodellen ontvouwt zich woord voor woord, waarbij het daaropvolgende token wordt voorspeld op basis van de voorgaande context. Voor een bepaalde prompt berekent het model een waarschijnlijkheidsverdeling die de waarschijnlijkheid aangeeft dat elk token als volgende in de reeks verschijnt. Bij het decoderen worden deze waarschijnlijkheidsverdelingen in daadwerkelijke tekst vertaald. Het genereren van tekst wordt gemedieerd door een reeks gevolgtrekkingsparameters dat zijn vaak hyperparameters van de decoderingsmethode zelf. Een voorbeeld is de temperatuur-, dat de waarschijnlijkheidsverdeling van het volgende token moduleert en de willekeur van de uitvoer van het model beรฏnvloedt.

Hebzuchtige decodering is een deterministische decoderingsstrategie die bij elke stap het token met de hoogste waarschijnlijkheid selecteert. Hoewel eenvoudig en efficiรซnt, dreigt de aanpak in repetitieve patronen te vervallen, omdat zij de bredere waarschijnlijkheidsruimte negeert. Het instellen van de temperatuurparameter op 0 op het inferentietijdstip komt in wezen neer op het implementeren van hebzuchtige decodering.

monsterneming introduceert stochasticiteit in het decoderingsproces door willekeurig elk volgend token te selecteren op basis van de voorspelde waarschijnlijkheidsverdeling. Deze willekeur resulteert in een grotere outputvariabiliteit. Stochastische decodering blijkt bedrevener in het vastleggen van de diversiteit van potentiรซle outputs en levert vaak fantasierijkere reacties op. Hogere temperatuurwaarden introduceren meer fluctuaties en vergroten de creativiteit van de respons van het model.

Prompting-technieken: CoT en zelfconsistentie

Het redeneervermogen van taalmodellen kan worden vergroot via prompt engineering. In het bijzonder is aangetoond dat CoT dit doet redenering uitlokken bij complexe NLP-taken. Een manier om een nul-schot CoT gaat via snelle aanvulling met de instructie om โ€˜stap voor stap na te denkenโ€™. Een andere is om het model bloot te stellen aan voorbeelden van tussenliggende redeneerstappen paar-shot prompts mode. Beide scenario's maken doorgaans gebruik van hebzuchtige decodering. CoT leidt tot aanzienlijke prestatieverbeteringen vergeleken met eenvoudige instructievragen over rekenkundige, gezond verstand- en symbolische redeneringstaken.

Zelfconsistentie wordt gevraagd is gebaseerd op de veronderstelling dat het introduceren van diversiteit in het redeneerproces nuttig kan zijn om modellen te helpen bij het vinden van het juiste antwoord. De techniek maakt gebruik van stochastische decodering om dit doel in drie stappen te bereiken:

  1. Stimuleer het taalmodel met CoT-voorbeelden om redenering uit te lokken.
  2. Vervang hebzuchtige decodering door een steekproefstrategie om een โ€‹โ€‹diverse reeks redeneerpaden te genereren.
  3. Voeg de resultaten samen om het meest consistente antwoord in de antwoordset te vinden.

Er is aangetoond dat zelfconsistentie beter presteert dan CoT-prompts op populaire rekenkundige en gezond verstand-redeneerbenchmarks. Een beperking van de aanpak zijn de grotere rekenkosten.

Dit bericht laat zien hoe het aanmoedigen van zelfconsistentie de prestaties van generatieve taalmodellen verbetert op twee NLP-redeneringstaken: het oplossen van rekenkundige problemen en het beantwoorden van meerkeuzedomeinspecifieke vragen. We demonstreren de aanpak met behulp van batch-inferentie op Amazon Bedrock:

  • We hebben toegang tot de Amazon Bedrock Python SDK in JupyterLab op een Amazon Sage Maker notebook exemplaar.
  • Voor rekenkundig redeneren vragen we Cohere-commando op de GSM8K-dataset van wiskundeproblemen op de basisschool.
  • Voor meerkeuzeredenen vragen we AI21 Labs Jurassic-2 midden op een klein voorbeeld van vragen van het AWS Certified Solutions Architect โ€“ Associate-examen.

Voorwaarden

Deze walkthrough gaat uit van de volgende vereisten:

Beheer modeltoegang op Amazon Bedrock

De geschatte kosten voor het uitvoeren van de code die in dit bericht wordt weergegeven, bedragen $ 100, ervan uitgaande dat u รฉรฉn keer een zelfconsistentieprompt uitvoert met 30 redeneerpaden met รฉรฉn waarde voor de op temperatuur gebaseerde bemonstering.

Dataset om het rekenkundig redeneervermogen te onderzoeken

GSM8K is een dataset van door mensen samengestelde wiskundeproblemen op de basisschool met een hoge taaldiversiteit. Voor elk probleem zijn 2 tot 8 stappen nodig om het op te lossen, en het vereist het uitvoeren van een reeks elementaire berekeningen met elementaire rekenkundige bewerkingen. Deze gegevens worden vaak gebruikt om de meerstaps rekenkundige redeneermogelijkheden van generatieve taalmodellen te benchmarken. De GSM8K treinstel omvat 7,473 records. Het volgende is een voorbeeld:

{"question": "Natalia sold clips to 48 of her friends in April, and then she sold half as many clips in May. How many clips did Natalia sell altogether in April and May?", "answer": "Natalia sold 48/2 = <<48/2=24>>24 clips in May.nNatalia sold 48+24 = <<48+24=72>>72 clips altogether in April and May.n#### 72"}

Ingesteld om batch-inferentie uit te voeren met Amazon Bedrock

Met batch-inferentie kunt u meerdere inferentieaanroepen asynchroon naar Amazon Bedrock uitvoeren en de prestaties van modelinferentie op grote datasets verbeteren. De service is op het moment van schrijven in preview en alleen beschikbaar via de API. Verwijzen naar Voer batch-inferentie uit om toegang te krijgen tot batch-inferentie-API's via aangepaste SDK's.

Nadat u het Python-SDK in een SageMaker-notebookinstantie kunt u deze installeren door de volgende code uit te voeren in een Jupyter-notebookcel:

# Install preview SDK packages
!pip install -q $(ls ./bedrock-python-sdk-reinvent/botocore-*.whl | head -1)
!pip install -q $(ls ./bedrock-python-sdk-reinvent/boto3-*.whl | head -1)

Formatteer en upload invoergegevens naar Amazon S3

Invoergegevens voor batch-inferentie moeten worden voorbereid in JSONL-indeling met recordId en modelInput sleutels. Dit laatste moet overeenkomen met het lichaamsveld van het model dat op Amazon Bedrock moet worden aangeroepen. In het bijzonder sommige ondersteunde gevolgtrekkingsparameters voor Cohere Command zijn temperature voor willekeur, max_tokens voor uitvoerlengte, en num_generations om meerdere reacties te genereren, die allemaal samen met de prompt as modelInput:

data = [
    {
        "recordId": "1",
        "modelInput": {
            "prompt": prompt,
            "temperature": temperature,
            "max_tokens": max_tokens,
            "num_generations": n,
        },
    },
    ...,
]

Bekijk Inferentieparameters voor funderingsmodellen voor meer details, inclusief andere modelaanbieders.

Onze experimenten met rekenkundig redeneren worden uitgevoerd in de weinig-shot-setting zonder Cohere Command aan te passen of te verfijnen. We gebruiken dezelfde set van acht voorbeelden uit de gedachteketen (Tabel 20) en zelfconsistentie (Tabel 17) papieren. Prompts worden gemaakt door de voorbeelden samen te voegen met elke vraag uit het GSM8K-treinstel.

We gaan zitten max_tokens naar 512 en num_generations tot 5, het maximum toegestaan โ€‹โ€‹door Cohere Command. Voor hebzuchtige decodering stellen we in temperature tot 0 en voor zelfconsistentie voeren we drie experimenten uit bij temperaturen 0.5, 0.7 en 1. Elke instelling levert verschillende invoergegevens op volgens de respectieve temperatuurwaarden. Gegevens worden geformatteerd als JSONL en opgeslagen in Amazon S3.

# Set up S3 client
session = boto3.Session()
s3 = session.client("s3")

# Create S3 bucket with unique name to store input/output data
suffix = str(uuid.uuid4())[:8]
bucket = f"bedrock-self-consistency-{suffix}"
s3.create_bucket(
    Bucket=bucket, CreateBucketConfiguration={"LocationConstraint": session.region_name}
)

# Process data and output to new lines as JSONL
input_key = f"gsm8k/T{temperature}/input.jsonl"
s3_data = ""
for row in data:
    s3_data += json.dumps(row) + "n"
s3.put_object(Body=s3_data, Bucket=bucket, Key=input_key)

Creรซer en voer batch-inferentietaken uit in Amazon Bedrock

Voor het maken van batchgewijze banen is een Amazon Bedrock-client vereist. We specificeren de S3-invoer- en uitvoerpaden en geven elke aanroeptaak โ€‹โ€‹een unieke naam:

# Create Bedrock client							    
bedrock = boto3.client("bedrock")

# Input and output config						     
input_config = {"s3InputDataConfig": {"s3Uri": f"s3://{bucket}/{input_key}"}}
output_config = {"s3OutputDataConfig": {"s3Uri": f"s3://{bucket}/{output_key}"}}

# Create a unique job name
suffix = str(uuid.uuid4())[:8] 
job_name = f"command-batch-T{temperature}-{suffix}"

Banen zijn aangemaakt door de IAM-rol, het model-ID, de taaknaam en de invoer/uitvoer-configuratie als parameters door te geven aan de Amazon Bedrock API:

response = bedrock.create_model_invocation_job(
    roleArn=f"arn:aws:iam::{account_id}:role/BedrockBatchInferenceRole",
    modelId="cohere.command-text-v14",
    jobName=job_name,
    inputDataConfig=input_config,
    outputDataConfig=output_config,
)
job_arn = response["jobArn"]

Listing, Grensverkeer en stoppen batch-inferentietaken worden ondersteund door hun respectievelijke API-aanroepen. Bij het creรซren verschijnen banen eerst als Submitted, dan als InProgress, en tot slot als Stopped, Failedof Completed.

# Get job details
job_details = bedrock.get_model_invocation_job(jobIdentifier=job_arn)

Als de taken succesvol zijn voltooid, kan de gegenereerde inhoud worden opgehaald uit Amazon S3 met behulp van de unieke uitvoerlocatie.

# Get the output file key
s3_prefix = f"s3://{bucket}/"
output_path = job_details["outputDataConfig"]["s3OutputDataConfig"]["s3Uri"].replace(
    s3_prefix, ""
)
output_folder = job_details["jobArn"].split("/")[1]
output_file = (
    f'{job_details["inputDataConfig"]["s3InputDataConfig"]["s3Uri"].split("/")[-1]}.out'
)
result_key = f"{output_path}{output_folder}/{output_file}"

# Get output data
obj = s3.get_object(Bucket=bucket, Key=result_key)
content = obj["Body"].read().decode("utf-8").strip().split("n")

# Show answer to the first question
print(json.loads(content[0])["modelOutput"]["generations"][0]["text"])

[Out]: 'Natalia sold 48 * 1/2 = 24 clips less in May. This means she sold 48 + 24 = 72 clips in April and May. The answer is 72.'

Zelfconsistentie verbetert de modelnauwkeurigheid bij rekenkundige taken

De zelfconsistentie van Cohere Command presteert beter dan een hebzuchtige CoT-basislijn in termen van nauwkeurigheid op de GSM8K-dataset. Voor zelfconsistentie bemonsteren we 30 onafhankelijke redeneerpaden bij drie verschillende temperaturen topP en topK ingesteld op hun standaard waarden. De uiteindelijke oplossingen worden samengevoegd door via meerderheidsstemming de meest consistente gebeurtenis te kiezen. Bij een gelijke stand kiezen we willekeurig รฉรฉn van de meerderheidsreacties. We berekenen nauwkeurigheids- en standaardafwijkingswaarden over een gemiddelde van 100 runs.

De volgende afbeelding toont de nauwkeurigheid van de GSM8K-dataset van Cohere Command, gevraagd met hebzuchtige CoT (blauw) en zelfconsistentie bij temperatuurwaarden 0.5 (geel), 0.7 (groen) en 1.0 (oranje) als een functie van het aantal bemonsterde redeneer paden.

Nauwkeurigheid van Cohere Command met behulp van zelfconsistentie versus CoT-prompts.

De voorgaande figuur laat zien dat zelfconsistentie de rekenkundige nauwkeurigheid verbetert ten opzichte van hebzuchtige CoT wanneer het aantal bemonsterde paden slechts drie bedraagt. De prestaties nemen consistent toe met verdere redeneerpaden, wat het belang bevestigt van het introduceren van diversiteit in het genereren van gedachten. Cohere Command lost de GSM8K-vragenset op met een nauwkeurigheid van 51.7% wanneer daarom wordt gevraagd met CoT versus 68% met 30 zelfconsistente redeneerpaden bij T = 1.0. Alle drie de onderzochte temperatuurwaarden leveren vergelijkbare resultaten op, waarbij lagere temperaturen relatief beter presteren op minder bemonsterde paden.

Praktische overwegingen over efficiรซntie en kosten

Zelfconsistentie wordt beperkt door de langere responstijd en de hogere kosten die gepaard gaan met het genereren van meerdere outputs per prompt. Ter praktische illustratie: batch-inferentie voor hebzuchtige generatie met Cohere Command op 7,473 GSM8K-records eindigde in minder dan 20 minuten. De taak kostte 5.5 miljoen tokens als invoer en genereerde 630,000 uitvoertokens. Bij huidige Amazon Bedrock-inferentieprijzen, de totale gemaakte kosten bedroegen ongeveer $ 9.50.

Voor zelfconsistentie met Cohere Command gebruiken we de gevolgtrekkingsparameter num_generations om meerdere voltooiingen per prompt te maken. Op het moment van schrijven staat Amazon Bedrock maximaal vijf generaties en drie gelijktijdige generaties toe Submitted batch-inferentietaken. De banen gaan door naar de InProgress status opeenvolgend, daarom vereist het bemonsteren van meer dan vijf paden meerdere aanroepen.

De volgende afbeelding toont de looptijden voor Cohere Command op de GSM8K-dataset. De totale looptijd wordt weergegeven op de x-as en de looptijd per bemonsterd redeneerpad op de y-as. Hebzuchtige generatie verloopt in de kortste tijd, maar brengt hogere tijdskosten met zich mee per bemonsterd pad.

Runtimes voor Cohere Command

Greedy Generation is in minder dan 20 minuten voltooid voor de volledige GSM8K-set en bemonstert een uniek redeneerpad. Zelfconsistentie met vijf monsters vergt ongeveer 50% meer tijd om te voltooien en kost ongeveer $ 14.50, maar levert in die tijd vijf paden (meer dan 500%) op. De totale looptijd en kosten nemen stapsgewijs toe met elke extra vijf bemonsterde paden. Uit een kosten-batenanalyse blijkt dat 1 ร  2 batch-inferentietaken met 5 ร  10 bemonsterde paden de aanbevolen setting zijn voor de praktische implementatie van zelfconsistentie. Hierdoor worden verbeterde modelprestaties bereikt terwijl de kosten en latentie op afstand worden gehouden.

Zelfconsistentie verbetert de modelprestaties die verder gaan dan rekenkundig redeneren

Een cruciale vraag om de geschiktheid van het stimuleren van zelfconsistentie te bewijzen, is of de methode succes heeft bij andere NLP-taken en taalmodellen. Als uitbreiding op een Amazon-gerelateerde use case voeren we een kleine analyse uit op voorbeeldvragen uit de AWS Solutions Architect Associate-certificering. Dit is een meerkeuze-examen over AWS-technologie en -services waarvoor domeinkennis en het vermogen om te redeneren en te beslissen tussen verschillende opties vereist zijn.

We bereiden een dataset voor van SAA-CO01 en SAA-CO03 voorbeeld examenvragen. Van de 20 beschikbare vragen gebruiken we de eerste 4 als voorbeelden en vragen we het model de overige 16 te beantwoorden. Deze keer voeren we gevolgtrekkingen uit met het AI21 Labs Jurassic-2 Mid-model en genereren we maximaal 10 redeneerpaden op temperatuur 0.7. De resultaten laten zien dat zelfconsistentie de prestaties verbetert: hoewel de hebzuchtige CoT elf juiste antwoorden oplevert, slaagt zelfconsistentie er nog twee.

De volgende tabel toont de nauwkeurigheidsresultaten voor 5 en 10 bemonsterde paden, gemiddeld over 100 runs.

. Hebzuchtige decodering T = 0.7
# bemonsterde paden: 5 68.6 74.1 0.7 ยฑ
# bemonsterde paden: 10 68.6 78.9 ยฑ 0.3

In de volgende tabel presenteren we twee examenvragen die onjuist worden beantwoord door de hebzuchtige CoT terwijl zelfconsistentie slaagt, waarbij in elk geval de juiste (groene) of onjuiste (rode) redeneringssporen worden benadrukt die ertoe hebben geleid dat het model correcte of onjuiste antwoorden produceerde. Hoewel niet elk door zelfconsistentie gegenereerd bemonsterd pad correct is, convergeert de meerderheid naar het ware antwoord naarmate het aantal bemonsterde paden toeneemt. We zien dat vijf tot tien paden doorgaans voldoende zijn om de hebzuchtige resultaten te verbeteren, met afnemende rendementen in termen van efficiรซntie voorbij deze waarden.

Vraag

Met een webapplicatie kunnen klanten bestellingen uploaden naar een S3-bucket. De resulterende Amazon S3-gebeurtenissen activeren een Lambda-functie die een bericht invoegt in een SQS-wachtrij. Eรฉn enkele EC2-instantie leest berichten uit de wachtrij, verwerkt ze en slaat ze op in een DynamoDB-tabel, gepartitioneerd op unieke order-ID. Volgende maand wordt verwacht dat het verkeer met een factor 10 zal toenemen en een Solutions Architect beoordeelt de architectuur op mogelijke schaalproblemen.

Welk onderdeel zal waarschijnlijk het meest waarschijnlijk opnieuw ontworpen moeten worden om te kunnen schalen om het nieuwe verkeer te kunnen accommoderen?

A. Lambda-functie
B. SQS-wachtrij
C. EC2-instantie
D. DynamoDB-tabel

Een applicatie die op AWS draait, gebruikt een Amazon Aurora Multi-AZ DB-clusterimplementatie voor zijn database. Bij het evalueren van prestatiestatistieken ontdekte een oplossingsarchitect dat het lezen van de database een hoge I/O veroorzaakt en latentie toevoegt aan de schrijfverzoeken voor de database.

Wat moet de oplossingsarchitect doen om de leesaanvragen te scheiden van de schrijfaanvragen?

A. Schakel doorleescaching in op de Aurora-database.
B. Werk de applicatie bij zodat deze kan worden gelezen vanuit het stand-by-exemplaar van Multi-AZ.
C. Maak een Aurora-replica en pas de applicatie aan om de juiste eindpunten te gebruiken.
D. Maak een tweede Aurora-database en koppel deze als leesreplica aan de primaire database.

Goed antwoord C โ€“ Eรฉn enkele EC2-instantie kan niet worden geschaald en is een single point of fail in de architectuur. Een veel betere oplossing zou zijn om EC2-instanties in een Auto Scaling-groep over twee beschikbaarheidszones berichten uit de wachtrij te laten lezen. De andere antwoorden zijn allemaal beheerde services die kunnen worden geconfigureerd om te schalen of automatisch te schalen. C โ€“ Aurora Replica's bieden een manier om leesverkeer te ontlasten. Aurora Replica's delen dezelfde onderliggende opslag als de hoofddatabase, dus de vertragingstijd is over het algemeen erg laag. Aurora Replica's hebben hun eigen eindpunten, dus de applicatie moet worden geconfigureerd om leesverkeer naar de nieuwe eindpunten te leiden.
Hebzuchtige decodering Het rechtstreeks schalen van de EC2-instantie is mogelijk niet mogelijk, omdat het mogelijk niet mogelijk is om de grootte van de instantie te wijzigen. Het schalen van de Lambda-functie is mogelijk niet voldoende, omdat Lambda-functies een geheugenlimiet van 6 GB hebben. Het schalen van de SQS-wachtrij is mogelijk niet voldoende, omdat SQS een limiet van 10,000 berichten heeft. DynamoDB-tabellen kunnen worden geschaald door meer capaciteitseenheden in te richten. Het juiste antwoord is D. De applicatie aanpassen om te lezen van het Multi-AZ standby-exemplaar (optie B) is de beste aanpak. Het stand-by-exemplaar wordt asynchroon gerepliceerd vanaf het primaire exemplaar, zodat leesbewerkingen de schrijfbewerkingen niet verstoren. Doorleescaching inschakelen (optie A) of het maken van een Aurora-replica (optie C) zal het I/O-conflictprobleem niet oplossen. Het creรซren van een tweede Aurora-database en deze koppelen als een leesreplica (optie D) zal het I/O-conflictprobleem ook niet oplossen. Het juiste antwoord is B.
Bemonsterd pad #1 Het schalen van de EC2-instantie tot tien keer de huidige omvang is mogelijk niet haalbaar, zowel vanuit kosten- als prestatieperspectief. Er zou een groter exemplaar nodig zijn, wat duur kan zijn. Een meer kosteneffectieve aanpak zou kunnen zijn om een โ€‹โ€‹zwerm kleinere instanties (bijvoorbeeld Auto Scaling Group) te gebruiken om de belasting te delen. In dit geval zou de EC2-instantie waarschijnlijk opnieuw moeten worden ontworpen. Het juiste antwoord is C. Het aanpassen van de applicatie om de juiste eindpunten te gebruiken is geen praktische oplossing, omdat hiervoor wijzigingen in de applicatiecode nodig zijn. Het juiste antwoord is C: maak een Aurora-replica en pas de applicatie aan om de juiste eindpunten te gebruiken.
Bemonsterd pad #2 Het schalen van een enkele EC2-instantie is moeilijker en problematischer dan het schalen van de andere servicecomponenten. Amazon SQS, Lambda en DynamoDB kunnen allemaal automatisch schalen om de toegenomen belasting het hoofd te bieden. Het juiste antwoord is C.

(C) Maak een Aurora-replica en pas de applicatie aan om de juiste eindpunten te gebruiken.

Door een Aurora Replica te configureren, kunt u leesverkeer scheiden van schrijfverkeer. De Aurora Replica's gebruiken verschillende eindpunt-URL's, zodat u leesverkeer naar de replica kunt leiden in plaats van naar de primaire database. De replica kan leesaanvragen parallel verwerken met schrijfaanvragen naar de primaire database, waardoor I/O en latentie worden verminderd.

Opruimen

Voor het uitvoeren van batch-inferentie in Amazon Bedrock zijn kosten verbonden volgens de Amazon Bedrock-prijzen. Wanneer u de walkthrough voltooit, verwijdert u uw SageMaker-notebookinstantie en verwijdert u alle gegevens uit uw S3-buckets om toekomstige kosten te voorkomen.

Overwegingen

Hoewel de gedemonstreerde oplossing verbeterde prestaties van taalmodellen laat zien wanneer er om zelfconsistentie wordt gevraagd, is het belangrijk op te merken dat de walkthrough niet gereed is voor productie. Voordat u het in productie gaat nemen, moet u dit proof-of-concept aanpassen aan uw eigen implementatie, waarbij u rekening houdt met de volgende vereisten:

  • Toegangsbeperking tot API's en databases om ongeoorloofd gebruik te voorkomen.
  • Naleving van best practices op het gebied van AWS-beveiliging met betrekking tot IAM-roltoegang en beveiligingsgroepen.
  • Validatie en opschoning van gebruikersinvoer om snelle injectie-aanvallen te voorkomen.
  • Bewaking en registratie van geactiveerde processen om testen en auditing mogelijk te maken.

Conclusie

Dit bericht laat zien dat het aanmoedigen van zelfconsistentie de prestaties van generatieve taalmodellen verbetert bij complexe NLP-taken waarvoor rekenkundige en logische meerkeuzevaardigheden vereist zijn. Zelfconsistentie maakt gebruik van op temperatuur gebaseerde stochastische decodering om verschillende redeneerpaden te genereren. Dit vergroot het vermogen van het model om diverse en nuttige gedachten op te wekken om tot correcte antwoorden te komen.

Met batchinferentie van Amazon Bedrock wordt het taalmodel Cohere Command gevraagd om zelfconsistente antwoorden te genereren op een reeks rekenkundige problemen. De nauwkeurigheid verbetert van 51.7% met hebzuchtige decodering tot 68% met zelfconsistentiebemonstering van 30 redeneerpaden bij T=1.0. Het bemonsteren van vijf paden verbetert de nauwkeurigheid al met 7.5 procentpunten. De aanpak is overdraagbaar naar andere taalmodellen en redeneertaken, zoals blijkt uit de resultaten van het AI21 Labs Jurassic-2 Mid-model op een AWS-certificeringsexamen. Bij een kleine vragenset vergroot zelfconsistentie met vijf bemonsterde paden de nauwkeurigheid met 5 procentpunten ten opzichte van hebzuchtige CoT.

We moedigen u aan om zelfconsistentievragen te implementeren voor betere prestaties in uw eigen toepassingen met generatieve taalmodellen. Leer meer over Cohere-commando en AI21 Labs Jura modellen beschikbaar op Amazon Bedrock. Voor meer informatie over batch-inferentie raadpleegt u Voer batch-inferentie uit.

Danksagung

De auteur bedankt technische reviewers Amin Tajgardoon en Patrick McSweeney voor nuttige feedback.


Over de auteur

Verbeter de prestaties van generatieve taalmodellen met zelfconsistentie op Amazon Bedrock | Amazon Web Services PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Lucia Santamarรญa is een Sr. Applied Scientist aan de ML University van Amazon, waar ze zich richt op het verhogen van het niveau van ML-competentie in het hele bedrijf door middel van praktijkgericht onderwijs. Lucรญa heeft een doctoraat in astrofysica en is gepassioneerd door het democratiseren van de toegang tot technische kennis en hulpmiddelen.

Tijdstempel:

Meer van AWS-machine learning