Trots det till synes ostoppbara införandet av LLM i olika branscher är de en komponent i ett bredare teknologiekosystem som driver den nya AI-vågen. Många användningsfall för konversation av AI kräver LLM:er som Llama 2, Flan T5 och Bloom för att svara på användarfrågor. Dessa modeller förlitar sig på parametrisk kunskap för att svara på frågor. Modellen lär sig denna kunskap under träning och kodar in den i modellparametrarna. För att uppdatera denna kunskap måste vi omskola LLM, vilket tar mycket tid och pengar.
Lyckligtvis kan vi också använda källkunskap för att informera våra LLM:er. Källkunskap är information som matas in i LLM genom en inmatningsprompt. Ett populärt sätt att tillhandahålla källkunskap är Retrieval Augmented Generation (RAG). Med hjälp av RAG hämtar vi relevant information från en extern datakälla och matar in den informationen i LLM.
I det här blogginlägget kommer vi att utforska hur man distribuerar LLMs som Llama-2 med Amazon Sagemaker JumpStart och håller våra LLMs uppdaterade med relevant information genom Retrieval Augmented Generation (RAG) med hjälp av Pinecone vektordatabasen för att förhindra AI Hallucination .
Retrieval Augmented Generation (RAG) i Amazon SageMaker
Pinecone kommer att hantera hämtningskomponenten i RAG, men du behöver ytterligare två viktiga komponenter: någonstans för att köra LLM-inferensen och någonstans för att köra inbäddningsmodellen.
Amazon SageMaker Studio en integrerad utvecklingsmiljö (IDE) som tillhandahåller ett enda webbaserat visuellt gränssnitt där du kan komma åt specialbyggda verktyg för att utföra all utveckling av maskininlärning (ML). Det tillhandahåller SageMaker JumpStart som är ett modellnav där användare kan hitta, förhandsgranska och starta en viss modell i sitt eget SageMaker-konto. Den tillhandahåller förutbildade, allmänt tillgängliga och proprietära modeller för ett brett spektrum av problemtyper, inklusive grundmodeller.
Amazon SageMaker Studio tillhandahåller den idealiska miljön för att utveckla RAG-aktiverade LLM-pipelines. Använd först AWS-konsolen, gå till Amazon SageMaker och skapa en SageMaker Studio-domän och öppna en Jupyter Studio-anteckningsbok.
Förutsättningar
Slutför följande förutsättningssteg:
- Konfigurera Amazon SageMaker Studio.
- Ombord på en Amazon SageMaker-domän.
- Registrera dig för en gratis-tier Pinecone Vector Database.
- Förutsättningsbibliotek: SageMaker Python SDK, Pinecone Client
Lösningsgenomgång
Med SageMaker Studio notebook behöver vi först installera förutsättningsbibliotek:
Utplacera en LLM
I det här inlägget diskuterar vi två tillvägagångssätt för att distribuera en LLM. Den första är genom HuggingFaceModel
objekt. Du kan använda detta när du distribuerar LLM:er (och bäddar in modeller) direkt från Hugging Face-modellhubben.
Till exempel kan du skapa en distribuerbar konfiguration för google/flan-t5-xl modell som visas i följande skärmdump:
När du distribuerar modeller direkt från Hugging Face, initiera my_model_configuration
med följande:
- An
env
config talar om för oss vilken modell vi vill använda och för vilken uppgift. - Vårt SageMaker-utförande
role
ger oss behörighet att distribuera vår modell. - An
image_uri
är en bildkonfiguration specifikt för att distribuera LLM från Hugging Face.
Alternativt har SageMaker en uppsättning modeller direkt kompatibla med en enklare JumpStartModel
objekt. Många populära LLMs som Llama 2 stöds av denna modell, som kan initieras som visas i följande skärmdump:
För båda versionerna av my_model
, distribuera dem som visas i följande skärmdump:
Med vår initierade LLM-slutpunkt kan du börja fråga. Formatet på våra frågor kan variera (särskilt mellan konversations- och icke-konversations-LLM), men processen är i allmänhet densamma. För modellen Hugging Face, gör följande:
Du hittar lösningen i GitHub repository.
Det genererade svaret vi får här är inte så vettigt - det är en hallucination.
Tillhandahåller ytterligare sammanhang till LLM
Llama 2 försöker svara på vår fråga enbart baserat på intern parametrisk kunskap. Det är uppenbart att modellparametrarna inte lagrar kunskap om vilka instanser vi kan med hanterad punktträning i SageMaker.
För att svara rätt på denna fråga måste vi använda källkunskap. Det vill säga, vi ger ytterligare information till LLM via prompten. Låt oss lägga till den informationen direkt som ytterligare sammanhang för modellen.
Vi ser nu det korrekta svaret på frågan; det var enkelt! Det är dock osannolikt att en användare infogar sammanhang i sina meddelanden, de skulle redan veta svaret på sin fråga.
Istället för att manuellt infoga ett enda sammanhang, identifiera relevant information automatiskt från en mer omfattande databas med information. För det behöver du Retrieval Augmented Generation.
Retrieval Augmented Generation
Med Retrieval Augmented Generation kan du koda en databas med information till ett vektorutrymme där närheten mellan vektorer representerar deras relevans/semantiska likhet. Med detta vektorutrymme som kunskapsbas kan du konvertera en ny användarfråga, koda den till samma vektorutrymme och hämta de mest relevanta posterna som tidigare indexerats.
Efter att ha hämtat dessa relevanta poster, välj några av dem och inkludera dem i LLM-prompten som ytterligare sammanhang, vilket ger LLM mycket relevant källkunskap. Detta är en process i två steg där:
- Indexering fyller vektorindexet med information från en datamängd.
- Hämtning sker under en förfrågan och det är där vi hämtar relevant information från vektorindexet.
Båda stegen kräver en inbäddningsmodell för att översätta vår mänskligt läsbara klartext till semantiskt vektorutrymme. Använd den mycket effektiva MiniLM-satstransformatorn från Hugging Face som visas i följande skärmdump. Denna modell är inte en LLM och är därför inte initierad på samma sätt som vår Llama 2-modell.
I hub_config
, specificera modell-ID som visas i skärmdumpen ovan men för uppgiften, använd funktionsextraktion eftersom vi genererar vektorinbäddningar, inte text som vår LLM. Efter detta, initiera modellkonfigurationen med HuggingFaceModel
som tidigare, men denna gång utan LLM-bilden och med vissa versionsparametrar.
Du kan distribuera modellen igen med deploy
, med den mindre (endast CPU) instansen av ml.t2.large
. MiniLM-modellen är liten, så den kräver inte mycket minne och behöver ingen GPU eftersom den snabbt kan skapa inbäddningar även på en CPU. Om så önskas kan du köra modellen snabbare på GPU.
För att skapa inbäddningar, använd predict
metod och skicka en lista över sammanhang att koda via inputs
nyckel som visas:
Två inmatningskontexter skickas, vilket returnerar två kontextvektorinbäddningar som visas:
len(out)
2
MiniLM-modellens inbäddningsdimensionalitet är 384
vilket innebär att varje vektor som bäddar in MiniLM-utgångar bör ha en dimensionalitet på 384
. Men om du tittar på längden på våra inbäddningar kommer du att se följande:
len(out[0]), len(out[1])
(8, 8)
Två listor innehåller åtta poster vardera. MiniLM bearbetar först text i ett tokeniseringssteg. Denna tokenisering förvandlar vår mänskligt läsbara oformaterade text till en lista med modellläsbara token-ID:n. I modellens utdatafunktioner kan du se inbäddningar på tokennivå. en av dessa inbäddningar visar den förväntade dimensionaliteten av 384
som visat:
len(out[0][0])
384
Omvandla dessa inbäddningar på tokennivå till inbäddningar på dokumentnivå genom att använda medelvärdena över varje vektordimension, som visas i följande illustration.
Med två 384-dimensionella vektorinbäddningar, en för varje inmatad text. För att göra våra liv enklare, slå in kodningsprocessen i en enda funktion som visas i följande skärmdump:
Laddar ned datamängden
Ladda ner Amazon SageMaker FAQs som kunskapsbas för att få data som innehåller både fråge- och svarskolumner.
När du utför sökningen, leta endast efter svar, så att du kan släppa kolumnen Fråga. Se anteckningsboken för detaljer.
Vår datauppsättning och inbäddningspipeline är klara. Nu behöver vi bara någonstans att lagra dessa inbäddningar.
Indexering
Pinecone vektordatabasen lagrar vektorinbäddningar och söker dem effektivt i skala. För att skapa en databas behöver du en gratis API-nyckel från Pinecone.
När du har anslutit till Pinecone vektordatabasen skapar du ett enda vektorindex (liknande en tabell i traditionella DB). Namnge indexet retrieval-augmentation-aws
och justera indexet dimension
och metric
parametrar med de som krävs av inbäddningsmodellen (MiniLM i detta fall).
För att börja infoga data, kör följande:
Du kan börja fråga indexet med frågan från tidigare i det här inlägget.
Ovanstående utdata visar att vi returnerar relevanta sammanhang för att hjälpa oss att svara på vår fråga. Eftersom vi top_k = 1
, index.query
returnerade toppresultatet vid sidan av metadata som läser Managed Spot Training can be used with all instances supported in Amazon
.
Förstärka uppmaningen
Använd de hämtade sammanhangen för att utöka prompten och besluta om en maximal mängd sammanhang som ska matas in i LLM. Använd 1000
teckenbegränsning för att iterativt lägga till varje returnerad kontext till prompten tills du överskrider innehållslängden.
Mata context_str
i LLM-prompten som visas i följande skärmdump:
[Input]: Vilka instanser kan jag använda med Managed Spot Training i SageMaker? [Utdata]: Baserat på det angivna sammanhanget kan du använda Managed Spot Training med alla instanser som stöds i Amazon SageMaker. Därför är svaret: Alla instanser stöds i Amazon SageMaker.
Logiken fungerar, så slå ihop den i en enda funktion för att hålla saker ren.
Du kan nu ställa frågor som de som visas i följande:
Städa upp
Ta bort modellen och slutpunkten för att sluta ta på dig oönskade avgifter.
Slutsats
I det här inlägget introducerade vi dig för RAG med LLM med öppen tillgång på SageMaker. Vi visade också hur man distribuerar Amazon SageMaker Jumpstart-modeller med Llama 2, Hugging Face LLMs med Flan T5 och bäddar in modeller med MiniLM.
Vi implementerade en komplett end-to-end RAG-pipeline med våra open access-modeller och ett Pinecone-vektorindex. Med hjälp av detta visade vi hur vi kan minimera hallucinationer och hålla LLM-kunskapen uppdaterad, och i slutändan förbättra användarupplevelsen och förtroendet för våra system.
För att köra det här exemplet på egen hand, klona detta GitHub-förråd och gå igenom de föregående stegen med hjälp av Anteckningsbok för svar på frågor på GitHub.
Om författarna
Vedant Jain är en Sr. AI/ML-specialist som arbetar med strategiska initiativ för generativ AI. Innan han började på AWS har Vedant haft ML/Data Science Specialty-positioner på olika företag som Databricks, Hortonworks (nu Cloudera) & JP Morgan Chase. Utanför sitt arbete brinner Vedant för att göra musik, klättra i berg, använda vetenskap för att leva ett meningsfullt liv och utforska kök från hela världen.
James Briggs är en Staff Developer Advocate på Pinecone, specialiserad på vektorsökning och AI/ML. Han vägleder utvecklare och företag i att utveckla sina egna GenAI-lösningar genom onlineutbildning. Före Pinecone arbetade James med AI för små tekniska startups till etablerade finansbolag. Utanför jobbet har James en passion för att resa och omfamna nya äventyr, allt från surfing och scuba till Muay Thai och BJJ.
Xin Huang är en Senior Applied Scientist för Amazon SageMaker JumpStart och Amazon SageMaker inbyggda algoritmer. Han fokuserar på att utveckla skalbara maskininlärningsalgoritmer. Hans forskningsintressen är inom området naturlig språkbehandling, förklarlig djupinlärning på tabelldata och robust analys av icke-parametrisk rum-tid-klustring. Han har publicerat många artiklar i ACL, ICDM, KDD-konferenser och Royal Statistical Society: Series A.
- SEO-drivet innehåll och PR-distribution. Bli förstärkt idag.
- PlatoData.Network Vertical Generative Ai. Styrka dig själv. Tillgång här.
- PlatoAiStream. Web3 Intelligence. Kunskap förstärkt. Tillgång här.
- Platoesg. Kol, CleanTech, Energi, Miljö, Sol, Avfallshantering. Tillgång här.
- PlatoHealth. Biotech och kliniska prövningar Intelligence. Tillgång här.
- Källa: https://aws.amazon.com/blogs/machine-learning/mitigate-hallucinations-through-retrieval-augmented-generation-using-pinecone-vector-database-llama-2-from-amazon-sagemaker-jumpstart/
- : har
- :är
- :inte
- :var
- $UPP
- 1
- 10
- 100
- 11
- 12
- 14
- 15%
- 16
- 17
- 19
- 23
- 32
- 7
- 8
- 9
- a
- Om oss
- ovan
- tillgång
- Enligt
- Konto
- tvärs
- lägga till
- Annat
- ytterligare information
- Antagande
- Äventyr
- förespråkare
- igen
- AI
- ai användningsfall
- AI / ML
- algoritmer
- rikta
- Alla
- längs
- redan
- också
- amason
- Amazon SageMaker
- Amazon SageMaker JumpStart
- Amazon SageMaker Studio
- Amazon Web Services
- mängd
- an
- analys
- och
- svara
- svar
- vilken som helst
- api
- app
- tillämpas
- tillvägagångssätt
- tillvägagångssätt
- ÄR
- OMRÅDE
- runt
- AS
- be
- At
- Försök
- förstärka
- augmented
- bil
- automatiskt
- tillgänglig
- AWS
- bas
- baserat
- BE
- därför att
- innan
- börja
- mellan
- Blogg
- Bloom
- båda
- bredare
- SLUTRESULTAT
- inbyggd
- företag
- men
- by
- KAN
- fånga
- Vid
- fall
- tecken
- avgifter
- chase
- rena
- klart
- Klättring
- Cloudera
- klustring
- Kolumn
- Kolonner
- Företag
- kompatibel
- fullborda
- komponent
- komponenter
- konferenser
- anslutna
- Konsol
- innehålla
- innehåller
- innehåll
- sammanhang
- kontexter
- konversera
- konversations AI
- konvertera
- Företag
- korrekt
- korrekt
- skapa
- kritisk
- För närvarande
- datum
- Databas
- Datum
- DBS
- beslutar
- djup
- djupt lärande
- distribuera
- utplacera
- Utvecklare
- utvecklare
- utveckla
- Utveckling
- Dimensionera
- direkt
- diskutera
- do
- gör
- doesn
- inte
- domän
- donation
- Drop
- under
- varje
- Tidigare
- lättare
- ekosystemet
- Utbildning
- effektiv
- effektivt
- inbäddning
- fattande
- kodning
- änden
- början till slut
- Slutpunkt
- förbättra
- Miljö
- etablerade
- Även
- exempel
- överstiga
- utförande
- förväntat
- erfarenhet
- utforska
- Utforska
- omfattande
- extern
- extrahera
- Ansikte
- snabbare
- Funktioner
- Fed
- få
- finansiering
- hitta
- slut
- Förnamn
- Flyta
- fokuserar
- efter
- För
- format
- fundament
- Fri
- från
- fungera
- allmänhet
- genereras
- generera
- generering
- generativ
- Generativ AI
- skaffa sig
- GitHub
- Ge
- ges
- ger
- Go
- Går
- GPU
- Guider
- hantera
- händer
- Har
- he
- Held
- hjälpa
- här.
- höggradigt
- hans
- Hur ser din drömresa ut
- How To
- Men
- HTTPS
- huang
- Nav
- Kramar ansikte
- läsbar
- i
- ID
- idealisk
- identifiera
- ids
- if
- bild
- genomföras
- importera
- in
- innefattar
- Inklusive
- Öka
- index
- indexeras
- industrier
- underrätta
- informationen
- initiativ
- ingång
- ingångar
- installera
- exempel
- integrerade
- intressen
- Gränssnitt
- inre
- in
- introducerade
- IT
- artikel
- james
- sammanfogning
- jp
- jp morgan
- JP Morgan Chase
- jpg
- Ha kvar
- Nyckel
- Vet
- kunskap
- språk
- Large
- större
- lansera
- leda
- inlärning
- lär
- Längd
- bibliotek
- livet
- tycka om
- BEGRÄNSA
- Lista
- listor
- Bor
- Lama
- LLM
- Logiken
- se
- du letar
- Lot
- Maskinen
- maskininlärning
- göra
- Framställning
- förvaltade
- manuellt
- många
- Match
- tändstickor
- maximal
- maxbelopp
- Maj..
- betyda
- meningsfull
- betyder
- Minne
- metadata
- metod
- Mildra
- ML
- modell
- modeller
- pengar
- mer
- Morgan
- mest
- mycket
- multipel
- Musik
- måste
- namn
- Natural
- Naturlig språkbehandling
- Behöver
- behov
- Nya
- Nästa
- nlp
- anteckningsbok
- nu
- numpy
- objektet
- of
- on
- ONE
- nätet
- endast
- öppet
- drift
- or
- beställa
- OS
- annat
- vår
- ut
- produktion
- utgångar
- utanför
- egen
- papper
- parametrar
- särskilt
- särskilt
- passera
- Godkänd
- brinner
- brinner
- Utföra
- utför
- behörigheter
- Bild
- rörledning
- Enkel
- plato
- Platon Data Intelligence
- PlatonData
- Populära
- positioner
- Inlägg
- Strömförsörjning
- förutsägelse
- Förutsägelser
- Predictor
- föredragen
- förhindra
- Förhandsvisning
- föregående
- tidigare
- Innan
- Problem
- process
- processer
- bearbetning
- Profil
- prompter
- proprietary
- förutsatt
- ger
- tillhandahålla
- publicly
- publicerade
- Python
- pytorch
- sökfrågor
- fråga
- frågor
- snabbt
- område
- som sträcker sig
- redo
- mottagande
- register
- regioner
- relevanta
- förlita
- Repository
- representerar
- kräver
- Obligatorisk
- forskning
- Svara
- resultera
- Resultat
- avkastning
- tillbaka
- robusta
- sten
- Roll
- kungliga
- Körning
- kör
- sagemaker
- Samma
- säga
- skalbar
- Skala
- Vetenskap
- Forskare
- göra
- screen
- sDK
- Sök
- sök
- se
- till synes
- välj
- senior
- känsla
- mening
- Serier
- Serie A
- Tjänster
- in
- skall
- show
- visade
- visas
- Visar
- sida
- liknande
- enklare
- eftersom
- enda
- Storlek
- Small
- mindre
- So
- Samhället
- enbart
- lösning
- Lösningar
- några
- någonstans
- Källa
- Utrymme
- specialist
- specialiserat
- Specialitet
- specifikt
- Spot
- Personal
- Startups
- statistisk
- Steg
- Steg
- Sluta
- lagra
- lagrar
- Strategisk
- Sträng
- studio
- sådana
- stödja
- Som stöds
- Stöder
- system
- System
- bord
- tar
- uppgift
- tech
- tekniska startups
- Teknologi
- berättar
- text
- thai
- än
- den där
- Smakämnen
- Området
- världen
- deras
- Dem
- därför
- Dessa
- de
- saker
- detta
- de
- Genom
- tid
- till
- token
- tokenization
- alltför
- verktyg
- topp
- traditionell
- Utbildning
- transformator
- transformatorer
- transformer
- Översätt
- Traveling
- Litar
- två
- typer
- Ytterst
- osannolik
- omöjlig att stoppa.
- tills
- oönskade
- Uppdatering
- us
- användning
- Begagnade
- Användare
- Användarupplevelse
- användare
- med hjälp av
- Värden
- olika
- version
- versioner
- via
- visuell
- vänta
- genomgång
- vill
- var
- Våg
- Sätt..
- we
- webb
- webbservice
- Webb-baserad
- Vad
- när
- som
- medan
- bred
- Brett utbud
- kommer
- med
- utan
- Arbete
- arbetade
- arbetssätt
- fungerar
- världen
- skulle
- linda
- X
- ja
- Om er
- Din
- zephyrnet