Nonostante l’adozione apparentemente inarrestabile degli LLM in tutti i settori, essi rappresentano una componente di un ecosistema tecnologico più ampio che sta alimentando la nuova ondata di intelligenza artificiale. Molti casi d'uso dell'intelligenza artificiale conversazionale richiedono LLM come Llama 2, Flan T5 e Bloom per rispondere alle domande degli utenti. Questi modelli si basano sulla conoscenza parametrica per rispondere alle domande. Il modello apprende questa conoscenza durante l'addestramento e la codifica nei parametri del modello. Per aggiornare queste conoscenze, dobbiamo riqualificare il LLM, il che richiede molto tempo e denaro.
Fortunatamente, possiamo anche utilizzare la conoscenza della fonte per informare i nostri LLM. La conoscenza della fonte è l'informazione inserita nel LLM attraverso un prompt di input. Un approccio popolare per fornire la conoscenza della fonte è il Retrieval Augmented Generation (RAG). Utilizzando RAG, recuperiamo informazioni rilevanti da una fonte di dati esterna e inseriamo tali informazioni nel LLM.
In questo post del blog, esploreremo come distribuire LLM come Llama-2 utilizzando Amazon Sagemaker JumpStart e manterremo aggiornati i nostri LLM con le informazioni pertinenti tramite Retrieval Augmented Generation (RAG) utilizzando il database vettoriale Pinecone per prevenire l'allucinazione dell'intelligenza artificiale .
Recupero di generazione aumentata (RAG) in Amazon SageMaker
Pinecone gestirà il componente di recupero di RAG, ma sono necessari altri due componenti critici: un posto dove eseguire l'inferenza LLM e un posto dove eseguire il modello di incorporamento.
Amazon SageMaker Studio è un ambiente di sviluppo integrato (IDE) che fornisce un'unica interfaccia visiva basata sul Web in cui è possibile accedere a strumenti specifici per eseguire tutto lo sviluppo di machine learning (ML). Fornisce SageMaker JumpStart, un hub di modelli in cui gli utenti possono individuare, visualizzare in anteprima e avviare un particolare modello nel proprio account SageMaker. Fornisce modelli pre-addestrati, disponibili al pubblico e proprietari per un'ampia gamma di tipi di problemi, inclusi i modelli di base.
Amazon SageMaker Studio fornisce l'ambiente ideale per lo sviluppo di pipeline LLM abilitate per RAG. Innanzitutto, utilizzando la console AWS, vai su Amazon SageMaker e crea un dominio SageMaker Studio e apri un notebook Jupyter Studio.
Prerequisiti
Completa i seguenti passaggi prerequisiti:
- Configura Amazon SageMaker Studio.
- Onboarding in un dominio Amazon SageMaker.
- Iscriviti per un database vettoriale Pinecone di livello gratuito.
- Librerie prerequisiti: SageMaker Python SDK, Pinecone Client
Procedura dettagliata della soluzione
Utilizzando il notebook SageMaker Studio, dobbiamo prima installare le librerie dei prerequisiti:
Distribuzione di un LLM
In questo post, discutiamo due approcci alla distribuzione di un LLM. Il primo è attraverso il HuggingFaceModel
oggetto. È possibile utilizzarlo durante la distribuzione di LLM (e l'incorporamento di modelli) direttamente dall'hub del modello Hugging Face.
Ad esempio, puoi creare una configurazione distribuibile per google/flan-t5-xl modello come mostrato nella seguente schermata:
Quando schieri i modelli direttamente da Hugging Face, inizializza il file my_model_configuration
con i seguenti:
- An
env
config ci dice quale modello vogliamo utilizzare e per quale attività. - La nostra esecuzione di SageMaker
role
ci dà le autorizzazioni per distribuire il nostro modello. - An
image_uri
è una configurazione di immagine specifica per la distribuzione di LLM da Hugging Face.
In alternativa, SageMaker dispone di una serie di modelli direttamente compatibili con uno più semplice JumpStartModel
oggetto. Molti LLM popolari come Llama 2 sono supportati da questo modello, che può essere inizializzato come mostrato nella seguente schermata:
Per entrambe le versioni di my_model
, distribuirli come mostrato nella seguente schermata:
Con il nostro endpoint LLM inizializzato, puoi iniziare a eseguire query. Il formato delle nostre query può variare (in particolare tra LLM conversazionali e non conversazionali), ma il processo è generalmente lo stesso. Per il modello Hugging Face, procedi come segue:
Puoi trovare la soluzione nel Repository GitHub.
La risposta generata che riceviamo qui non ha molto senso: è un'allucinazione.
Fornire contesto aggiuntivo a LLM
Llama 2 tenta di rispondere alla nostra domanda basandosi esclusivamente sulla conoscenza parametrica interna. Chiaramente, i parametri del modello non memorizzano la conoscenza di quali istanze possiamo ottenere con l'addestramento spot gestito in SageMaker.
Per rispondere correttamente a questa domanda, dobbiamo utilizzare la conoscenza di base. Cioè, forniamo informazioni aggiuntive al LLM tramite il prompt. Aggiungiamo queste informazioni direttamente come contesto aggiuntivo per il modello.
Ora vediamo la risposta corretta alla domanda; è stato facile! Tuttavia, è improbabile che un utente inserisca contesti nei propri prompt, conoscerebbe già la risposta alla sua domanda.
Invece di inserire manualmente un singolo contesto, identifica automaticamente le informazioni rilevanti da un database di informazioni più ampio. Per questo, avrai bisogno di Retrieval Augmented Generation.
Recupero generazione aumentata
Con Retrieval Augmented Generation, puoi codificare un database di informazioni in uno spazio vettoriale in cui la vicinanza tra i vettori rappresenta la loro rilevanza/somiglianza semantica. Con questo spazio vettoriale come base di conoscenza, puoi convertire una nuova query utente, codificarla nello stesso spazio vettoriale e recuperare i record più rilevanti precedentemente indicizzati.
Dopo aver recuperato questi record rilevanti, selezionane alcuni e includili nel prompt LLM come contesto aggiuntivo, fornendo al LLM una conoscenza della fonte altamente rilevante. Si tratta di un processo in due fasi in cui:
- L'indicizzazione popola l'indice vettoriale con le informazioni provenienti da un set di dati.
- Il recupero avviene durante una query ed è il momento in cui recuperiamo le informazioni rilevanti dall'indice del vettore.
Entrambi i passaggi richiedono un modello di incorporamento per tradurre il nostro testo semplice leggibile dall'uomo in uno spazio vettoriale semantico. Utilizza il trasformatore di frasi MiniLM altamente efficiente di Hugging Face come mostrato nella seguente schermata. Questo modello non è un LLM e pertanto non è inizializzato allo stesso modo del nostro modello Llama 2.
Nel hub_config
, specifica l'ID del modello come mostrato nella schermata sopra ma per l'attività utilizza l'estrazione delle funzionalità perché stiamo generando incorporamenti di vettori e non testo come il nostro LLM. Successivamente, inizializza la configurazione del modello con HuggingFaceModel
come prima, ma questa volta senza l'immagine LLM e con alcuni parametri di versione.
Puoi distribuire nuovamente il modello con deploy
, utilizzando l'istanza più piccola (solo CPU) di ml.t2.large
. Il modello MiniLM è piccolo, quindi non richiede molta memoria e non necessita di GPU perché può creare rapidamente incorporamenti anche su una CPU. Se preferisci, puoi eseguire il modello più velocemente sulla GPU.
Per creare incorporamenti, utilizzare il file predict
metodo e passare un elenco di contesti da codificare tramite il metodo inputs
chiave come mostrato:
Vengono passati due contesti di input, restituendo due incorporamenti di vettori di contesto come mostrato:
len(out)
2
La dimensionalità di incorporamento del modello MiniLM è 384
il che significa che ogni vettore che incorpora gli output MiniLM dovrebbe avere una dimensionalità di 384
. Tuttavia, osservando la lunghezza dei nostri incorporamenti, vedrai quanto segue:
len(out[0]), len(out[1])
(8, 8)
Due elenchi contengono otto elementi ciascuno. MiniLM elabora innanzitutto il testo in una fase di tokenizzazione. Questa tokenizzazione trasforma il nostro testo semplice leggibile dall'uomo in un elenco di ID token leggibili dal modello. Nelle funzionalità di output del modello è possibile visualizzare gli incorporamenti a livello di token. uno di questi incastri mostra la dimensionalità attesa di 384
come mostrato:
len(out[0][0])
384
Trasforma questi incorporamenti a livello di token in incorporamenti a livello di documento utilizzando i valori medi in ogni dimensione vettoriale, come mostrato nella figura seguente.
Con due incorporamenti vettoriali a 384 dimensioni, uno per ciascun testo di input. Per semplificarci la vita, racchiudi il processo di codifica in un'unica funzione, come mostrato nella seguente schermata:
Download del set di dati
Scarica le domande frequenti su Amazon SageMaker come knowledge base per ottenere i dati che contengono sia colonne di domande che di risposte.
Quando esegui la ricerca, cerca solo Risposte, in modo da poter eliminare la colonna Domanda. Vedi il taccuino per i dettagli.
Il nostro set di dati e la pipeline di incorporamento sono pronti. Ora tutto ciò di cui abbiamo bisogno è un posto dove archiviare questi incorporamenti.
Indicizzazione
Il database vettoriale Pinecone archivia gli incorporamenti di vettori e li ricerca in modo efficiente su larga scala. Per creare un database, avrai bisogno di una chiave API gratuita di Pinecone.
Dopo esserti connesso al database vettoriale Pigna, crea un unico indice vettoriale (simile ad una tabella nei DB tradizionali). Assegna un nome all'indice retrieval-augmentation-aws
e allineare l'indice dimension
ed metric
parametri con quelli richiesti dal modello di incorporamento (MiniLM in questo caso).
Per iniziare a inserire i dati, eseguire quanto segue:
Puoi iniziare a interrogare l'indice con la domanda di prima in questo post.
L'output sopra mostra che stiamo restituendo contesti pertinenti per aiutarci a rispondere alla nostra domanda. Da quando noi top_k = 1
, index.query
ha restituito il risultato migliore insieme ai metadati che leggono Managed Spot Training can be used with all instances supported in Amazon
.
Aumentare il prompt
Utilizza i contesti recuperati per aumentare il prompt e decidere una quantità massima di contesto da inserire nel LLM. Usa il 1000
limite di caratteri per aggiungere in modo iterativo ogni contesto restituito al prompt finché non si supera la lunghezza del contenuto.
Nutri il context_str
nel prompt LLM come mostrato nella seguente schermata:
[Input]: quali istanze posso utilizzare con Managed Spot Training in SageMaker? [Output]: in base al contesto fornito, puoi utilizzare Managed Spot Training con tutte le istanze supportate in Amazon SageMaker. Pertanto, la risposta è: tutte le istanze supportate in Amazon SageMaker.
La logica funziona, quindi racchiudila in un'unica funzione per mantenere le cose pulite.
Ora puoi porre domande come quelle mostrate di seguito:
ripulire
Per non incorrere in addebiti indesiderati, elimina il modello e l'endpoint.
Conclusione
In questo post ti abbiamo presentato RAG con LLM ad accesso aperto su SageMaker. Abbiamo anche mostrato come distribuire modelli Jumpstart di Amazon SageMaker con Llama 2, Hugging Face LLM con Flan T5 e incorporare modelli con MiniLM.
Abbiamo implementato una pipeline RAG end-to-end completa utilizzando i nostri modelli ad accesso aperto e un indice vettoriale Pinecone. Utilizzando questo, abbiamo mostrato come ridurre al minimo le allucinazioni e mantenere aggiornate le conoscenze LLM e, in definitiva, migliorare l'esperienza dell'utente e la fiducia nei nostri sistemi.
Per eseguire questo esempio da solo, clona questo repository GitHub e segui i passaggi precedenti utilizzando il file Notebook con risposte alle domande su GitHub.
Circa gli autori
Giainista Vedante è uno specialista senior di AI/ML, che lavora su iniziative strategiche di intelligenza artificiale generativa. Prima di unirsi ad AWS, Vedant ha ricoperto posizioni di specialità ML/Data Science presso varie aziende come Databricks, Hortonworks (ora Cloudera) e JP Morgan Chase. Al di fuori del suo lavoro, Vedant è appassionato di fare musica, arrampicarsi su roccia, usare la scienza per condurre una vita significativa ed esplorare cucine di tutto il mondo.
James Briggs è un avvocato per gli sviluppatori dello staff presso Pinecone, specializzato in ricerca vettoriale e AI/ML. Guida sviluppatori e aziende nello sviluppo delle proprie soluzioni GenAI attraverso la formazione online. Prima di Pinecone, James ha lavorato sull'intelligenza artificiale per piccole startup tecnologiche e società finanziarie affermate. Al di fuori del lavoro, James ha una passione per i viaggi e abbraccia nuove avventure, che vanno dal surf e le immersioni alla Muay Thai e al BJJ.
Xin Huan è Senior Applied Scientist per gli algoritmi integrati di Amazon SageMaker JumpStart e Amazon SageMaker. Si concentra sullo sviluppo di algoritmi di apprendimento automatico scalabili. I suoi interessi di ricerca riguardano l'elaborazione del linguaggio naturale, il deep learning spiegabile su dati tabulari e l'analisi solida del clustering spazio-temporale non parametrico. Ha pubblicato molti articoli nelle conferenze ACL, ICDM, KDD e Royal Statistical Society: Series A.
- Distribuzione di contenuti basati su SEO e PR. Ricevi amplificazione oggi.
- PlatoData.Network Generativo verticale Ai. Potenzia te stesso. Accedi qui.
- PlatoAiStream. Intelligenza Web3. Conoscenza amplificata. Accedi qui.
- PlatoneESG. Carbonio, Tecnologia pulita, Energia, Ambiente, Solare, Gestione dei rifiuti. Accedi qui.
- Platone Salute. Intelligence sulle biotecnologie e sulle sperimentazioni cliniche. Accedi qui.
- Fonte: https://aws.amazon.com/blogs/machine-learning/mitigate-hallucinations-through-retrieval-augmented-generation-using-pinecone-vector-database-llama-2-from-amazon-sagemaker-jumpstart/
- :ha
- :È
- :non
- :Dove
- $ SU
- 1
- 10
- 100
- 11
- 12
- 14
- 15%
- 16
- 17
- 19
- 23
- 32
- 7
- 8
- 9
- a
- WRI
- sopra
- accesso
- Secondo
- Il mio account
- operanti in
- aggiungere
- aggiuntivo
- Informazioni aggiuntive
- Adozione
- avventure
- avvocato
- ancora
- AI
- casi d'uso ai
- AI / ML
- Algoritmi
- allineare
- Tutti
- lungo
- già
- anche
- Amazon
- Amazon Sage Maker
- JumpStart di Amazon SageMaker
- Amazon Sage Maker Studio
- Amazon Web Services
- quantità
- an
- .
- ed
- rispondere
- risposte
- in qualsiasi
- api
- App
- applicato
- approccio
- approcci
- SONO
- RISERVATA
- in giro
- AS
- chiedere
- At
- Tentativi
- aumentare
- aumentata
- auto
- automaticamente
- disponibile
- AWS
- base
- basato
- BE
- perché
- prima
- iniziare
- fra
- Blog
- Fioritura
- entrambi
- più ampia
- costruire
- incassato
- aziende
- ma
- by
- Materiale
- catturare
- Custodie
- casi
- caratteri
- oneri
- inseguimento
- cavedano
- chiaramente
- arrampicata
- Cloudera
- il clustering
- Colonna
- colonne
- Aziende
- compatibile
- completamento di una
- componente
- componenti
- conferenze
- collegato
- consolle
- contenere
- contiene
- contenuto
- contesto
- contesti
- discorsivo
- AI conversazionale
- convertire
- Corporazioni
- correggere
- correttamente
- creare
- critico
- Attualmente
- dati
- Banca Dati
- Data
- DBS
- decide
- deep
- apprendimento profondo
- schierare
- distribuzione
- Costruttori
- sviluppatori
- in via di sviluppo
- Mercato
- Dimensioni
- direttamente
- discutere
- do
- effettua
- doesn
- non
- dominio
- don
- Cadere
- durante
- ogni
- In precedenza
- più facile
- ecosistema
- Istruzione
- efficiente
- in modo efficiente
- incorporamento
- abbracciando
- codifica
- fine
- da un capo all'altro
- endpoint
- accrescere
- Ambiente
- sviluppate
- Anche
- esempio
- superare
- esecuzione
- previsto
- esperienza
- esplora
- Esplorare
- estensivo
- esterno
- estratto
- Faccia
- più veloce
- Caratteristiche
- Federale
- pochi
- finanziare
- Trovate
- finire
- Nome
- galleggiante
- si concentra
- i seguenti
- Nel
- formato
- Fondazione
- Gratis
- da
- function
- generalmente
- generato
- la generazione di
- ELETTRICA
- generativo
- AI generativa
- ottenere
- GitHub
- Dare
- dato
- dà
- Go
- va
- GPU
- Guide
- maniglia
- accade
- Avere
- he
- Eroe
- Aiuto
- qui
- vivamente
- il suo
- Come
- Tutorial
- Tuttavia
- HTTPS
- huang
- Hub
- abbracciare il viso
- leggibile dagli umani
- i
- ID
- ideale
- identificare
- ids
- if
- Immagine
- implementato
- importare
- in
- includere
- Compreso
- Aumento
- Index
- indicizzati
- industrie
- far sapere
- informazioni
- iniziative
- ingresso
- Ingressi
- install
- esempio
- integrato
- interessi
- Interfaccia
- interno
- ai miglioramenti
- introdotto
- IT
- elementi
- Giacomo
- accoppiamento
- jp
- jp morgan
- JP Morgan Chase
- jpg
- mantenere
- Le
- Sapere
- conoscenze
- Lingua
- grandi
- superiore, se assunto singolarmente.
- lanciare
- portare
- apprendimento
- impara
- Lunghezza
- biblioteche
- Vita
- piace
- LIMITE
- Lista
- elenchi
- Lives
- Lama
- LLM
- logica
- Guarda
- cerca
- lotto
- macchina
- machine learning
- make
- Fare
- gestito
- manualmente
- molti
- partita
- fiammiferi
- massimo
- importo massimo
- Maggio..
- significare
- significativo
- si intende
- Memorie
- Metadati
- metodo
- Ridurre la perdita dienergia con una
- ML
- modello
- modelli
- soldi
- Scopri di più
- Morgan
- maggior parte
- molti
- multiplo
- Musica
- devono obbligatoriamente:
- Nome
- Naturale
- Elaborazione del linguaggio naturale
- Bisogno
- esigenze
- New
- GENERAZIONE
- nlp
- taccuino
- adesso
- numpy
- oggetto
- of
- on
- ONE
- online
- esclusivamente
- aprire
- operazione
- or
- minimo
- OS
- altrimenti
- nostro
- su
- produzione
- uscite
- al di fuori
- proprio
- documenti
- parametri
- particolare
- particolarmente
- passare
- Passato
- passione
- appassionato
- Eseguire
- esecuzione
- permessi
- immagine
- conduttura
- pianura
- Platone
- Platone Data Intelligence
- PlatoneDati
- Popolare
- posizioni
- Post
- Accensione
- predizione
- Previsioni
- Predictor
- preferito
- prevenire
- Anteprima
- precedente
- in precedenza
- Precedente
- Problema
- processi
- i processi
- lavorazione
- Profilo
- istruzioni
- proprio
- purché
- fornisce
- fornitura
- pubblicamente
- pubblicato
- Python
- pytorch
- query
- domanda
- Domande
- rapidamente
- gamma
- che vanno
- pronto
- ricevente
- record
- regioni
- pertinente
- fare affidamento
- deposito
- rappresenta
- richiedere
- necessario
- riparazioni
- Rispondere
- colpevole
- Risultati
- ritorno
- di ritorno
- robusto
- Roccia
- Ruolo
- reale
- Correre
- corre
- sagemaker
- stesso
- dire
- scalabile
- Scala
- Scienze
- Scienziato
- Punto
- allo
- sdk
- Cerca
- Ricerche
- vedere
- apparentemente
- select
- anziano
- senso
- condanna
- Serie
- Serie A
- Servizi
- set
- dovrebbero
- mostrare attraverso le sue creazioni
- ha mostrato
- mostrato
- Spettacoli
- lato
- simile
- semplice
- da
- singolo
- Taglia
- piccole
- inferiore
- So
- Società
- unicamente
- soluzione
- Soluzioni
- alcuni
- da qualche parte
- Fonte
- lo spazio
- specialista
- specializzata
- Specialità
- in particolare
- Spot
- STAFF
- Startup
- statistiche
- step
- Passi
- Fermare
- Tornare al suo account
- negozi
- Strategico
- Corda
- studio
- tale
- supporto
- supportato
- supporti
- sistema
- SISTEMI DI TRATTAMENTO
- tavolo
- prende
- Task
- Tech
- start-up tecnologiche
- Tecnologia
- dice
- testo
- thai
- di
- che
- Il
- L'area
- il mondo
- loro
- Li
- perciò
- Strumenti Bowman per analizzare le seguenti finiture:
- di
- cose
- questo
- quelli
- Attraverso
- tempo
- a
- token
- tokenizzazione
- pure
- strumenti
- top
- tradizionale
- Training
- trasformatore
- trasformatori
- trasforma
- tradurre
- Di viaggio
- Affidati ad
- seconda
- Tipi di
- in definitiva
- improbabile
- inarrestabile.
- fino a quando
- non desiderato
- Aggiornanento
- us
- uso
- utilizzato
- Utente
- Esperienza da Utente
- utenti
- utilizzando
- Valori
- vario
- versione
- versioni
- via
- visivo
- aspettare
- walkthrough
- volere
- Prima
- Wave
- Modo..
- we
- sito web
- servizi web
- Web-basata
- Che
- quando
- quale
- while
- largo
- Vasta gamma
- volere
- con
- senza
- Lavora
- lavorato
- lavoro
- lavori
- mondo
- sarebbe
- avvolgere
- X
- sì
- Tu
- Trasferimento da aeroporto a Sharm
- zefiro