Una soluzione alimentata da AI generativa su Amazon SageMaker per aiutare Amazon EU Design and Construction

Una soluzione basata sull'AI generativa su Amazon SageMaker per supportare Amazon EU Design and Construction

Il team Amazon EU Design and Construction (Amazon D&C) è il team di ingegneria che progetta e costruisce i magazzini Amazon in Europa e nella regione MENA. I processi di progettazione e implementazione dei progetti coinvolgono molti tipi di Richieste di Informazioni (RFI) riguardanti i requisiti di ingegneria relativi ad Amazon e le linee guida specifiche del progetto. Queste richieste vanno dal semplice recupero dei valori di progettazione di base, alla revisione delle proposte di ingegneria del valore, all’analisi dei rapporti e ai controlli di conformità. Attualmente, queste richieste vengono gestite da un team tecnico centrale, composto da esperti nel settore che possono rispondere a domande altamente tecniche e fornire questo servizio a tutti i portatori di interesse e ai team durante l’intero ciclo di vita del progetto. Il team sta cercando una soluzione di intelligenza artificiale generativa per rispondere alle domande, al fine di ottenere rapidamente informazioni e procedere con il progetto di ingegneria. In particolare, questi casi d’uso non si limitano solo al team Amazon D&C, ma sono applicabili a un’ampia gamma di servizi di ingegneria globale coinvolti nella realizzazione del progetto. Tutta la gamma di portatori di interesse e team coinvolti nel ciclo di vita del progetto possono beneficiare di una soluzione di intelligenza artificiale generativa per rispondere alle domande, in quanto consentirà di accedere rapidamente alle informazioni critiche, semplificando i processi di progettazione ingegneristica e di gestione del progetto.

Le soluzioni di intelligenza artificiale generativa esistenti per la risposta alle domande si basano principalmente su “Retrieval Augmented Generation” (RAG). RAG ricerca documenti tramite l’incorporamento e vettorializzazione di modelli di linguaggio di grandi dimensioni (LLM), crea il contesto dai risultati della ricerca attraverso il clustering e utilizza il contesto come un prompt arricchito per inferire un modello di base per ottenere la risposta. Questo metodo è meno efficiente per i documenti altamente tecnici di Amazon D&C, che contengono una quantità significativa di dati non strutturati come fogli di Excel, tabelle, elenchi, figure e immagini. In questo caso, il compito di rispondere alle domande funziona meglio con il fine-tuning del LLM con i documenti. Il fine-tuning regola e adatta i pesi del LLM pre-addestrato per migliorare la qualità e l’accuratezza del modello.

Per affrontare queste sfide, presentiamo un nuovo framework con RAG e LLM sintonizzati. La soluzione utilizza Amazon SageMaker JumpStart come servizio principale per il fine-tuning del modello e l’inference. In questo articolo, non solo forniamo la soluzione, ma discutiamo anche le lezioni apprese e le migliori pratiche durante l’implementazione della soluzione in casi d’uso reali. Confrontiamo e confrontiamo le diverse metodologie e i modelli di linguaggio di grandi dimensioni open source nel nostro caso d’uso e discutiamo come trovare un equilibrio tra le prestazioni del modello e i costi delle risorse di calcolo.

Panoramica della soluzione

La soluzione ha i seguenti componenti, come mostrato nel diagramma architetturale:

  1. Repository del contenuto – I contenuti di D&C includono una vasta gamma di documenti leggibili dall’uomo con vari formati, come file PDF, fogli di Excel, pagine wiki e altro ancora. In questa soluzione, abbiamo archiviato questi contenuti in un bucket di Amazon Simple Storage Service (Amazon S3) e li abbiamo utilizzati come base di conoscenza per il recupero delle informazioni e l’inference. In futuro, costruiremo adattatori di integrazione per accedere direttamente ai contenuti da dove si trovano.
  2. Framework RAG con LLM sintonizzati – Ciò include i seguenti sottocomponenti:
    1. Framework RAG – Questo recupera i dati pertinenti dai documenti, arricchisce i prompt aggiungendo i dati recuperati nel contesto e li passa a un LLM sintonizzato per generare le risposte.
    2. LLM sintonizzati – Abbiamo costruito il set di dati di addestramento dai documenti e dai contenuti e abbiamo effettuato il fine-tuning sul modello di base. Dopo l’addestramento, il modello ha acquisito conoscenze dai contenuti di D&C e può quindi rispondere alle domande in modo indipendente.
    3. Modulo di convalida del prompt – Questo misura la corrispondenza semantica tra il prompt dell’utente e il set di dati per il fine-tuning. Se il LLM è sintonizzato per rispondere a questa domanda, è possibile eseguire l’inference del modello sintonizzato per ricevere una risposta. In caso contrario, è possibile utilizzare RAG per generare la risposta.
    4. LangChain – Utilizziamo LangChain per creare un flusso di lavoro per rispondere alle domande in arrivo.
  3. Interfaccia utente finale – Questa è l’interfaccia della chatbot per catturare le domande e le query degli utenti e presentare le risposte dalla risposta di RAG e LLM.
overall_architecture

Nelle sezioni seguenti, dimostriamo come creare il flusso di lavoro RAG e costruire i modelli raffinati.

RAG con modelli fondamentali di SageMaker JumpStart

RAG combina i poteri del recupero denso pre-addestrato e dei modelli fondamentali di sequenza-sequenza (seq2seq). Per rispondere alle domande dai documenti Amazon D&C, è necessario preparare in anticipo quanto segue:

  • Embedding e indicizzazione dei documenti utilizzando un modello di embedding LLM – Abbiamo diviso i documenti multipli in piccoli pezzi in base alla struttura del capitolo e della sezione del documento, testati con il modello Amazon GPT-J-6B su SageMaker JumpStart per generare gli indici e memorizzato gli indici in un archivio vettoriale FAISS
  • Un modello fondamentale pre-addestrato per generare risposte da prompt – Abbiamo testato i modelli Flan-T5 XL, Flan-T5 XXL e Falcon-7B su SageMaker JumpStart

Il processo di risposta alle domande è implementato da LangChain, che è un framework per lo sviluppo di applicazioni alimentate da modelli di linguaggio. Il flusso di lavoro nella catena contiene i seguenti passaggi:

  1. Ottenere una domanda dall’utente.

  2. Eseguire una ricerca semantica sui documenti indicizzati attraverso FAISS per ottenere i pezzi di documento più rilevanti in alto.

  3. Definire il modello del prompt, come ad esempio

    """Risposta basata sul contesto:\n\n{conte

    Tuttavia, abbiamo osservato che RAG non fornisce risposte chiare e concise alle domande che sono più specifiche e altamente tecniche, come linee guida, numeri e cifre. Come mostrato nell'esempio seguente, quando ci si aspetta un output di dimensione tecnica, RAG non può fornire la risposta specifica, principalmente perché il processo di incorporamento e ricerca non può restituire un contesto conciso.

    DomandaQuali sono i requisiti di altezza del pavimento per il livello P2 del primo piano in cemento?
    Risposta attesa7,50 m AFFL
    Risposta di RAG (incorporamento GPT-J-6B con Flan-T5-XXL)P2 Primo piano in cemento

    Questo deve essere migliorato perché non è tollerata l'allucinazione a causa della criticità delle conseguenze in questo caso d'uso.

    Affinare i modelli LLM su SageMaker

    Per affrontare questa sfida e migliorare la qualità delle risposte, adottiamo un nuovo approccio per affinare il modello LLM utilizzando i documenti per una task di risposta alle domande. Il modello verrà addestrato per apprendere la conoscenza corrispondente direttamente dai documenti. A differenza di RAG, non dipende dal fatto che i documenti siano incorporati e indicizzati correttamente, e che l'algoritmo di ricerca semantica sia abbastanza efficace da restituire i contenuti più rilevanti dal database vettoriale.

    Per preparare il dataset di addestramento per l'affinamento, estraiamo le informazioni dai documenti D&C e costruiamo i dati nel seguente formato:

    • Istruzione - Descrive il compito e fornisce un prompt parziale
    • Input - Fornisce ulteriore contesto da consolidare nel prompt
    • Risposta - L'output del modello

    Durante il processo di addestramento, aggiungiamo una chiave di istruzioni, una chiave di input e una chiave di risposta a ogni parte, le combiniamo nel prompt di addestramento, lo tokenizziamo. Quindi i dati vengono forniti a un trainer in SageMaker per generare il modello affinato.

    Per accelerare il processo di addestramento e ridurre il costo delle risorse di calcolo, abbiamo utilizzato l'Affinamento Efficienti dei Parametri (PEFT) con la tecnica Low-Rank Adaptation (LoRA). PEFT ci consente di affinare solo un piccolo numero di parametri extra del modello, e LoRA rappresenta gli aggiornamenti dei pesi con due matrici più piccole attraverso la decomposizione a basso rango. Con PEFT e LoRA su quantizzazione a 8 bit (un'operazione di compressione che riduce ulteriormente la memoria del modello e accelera le prestazioni di addestramento e inferenza), siamo in grado di adattare l'addestramento di 125 coppie domanda-risposta all'interno di un'istanza g4dn.x con una singola GPU.

    Per dimostrare l'efficacia dell'affinamento, abbiamo effettuato dei test con diversi LLM su SageMaker. Abbiamo selezionato cinque modelli di piccole dimensioni: Bloom-7B, Flan-T5-XL, GPT-J-6B e Falcon-7B su SageMaker JumpStart, e Dolly-3B da Hugging Face su SageMaker.

    Attraverso l'addestramento a 8 bit basato su LoRA, siamo in grado di ridurre i parametri addestrabili a non più del 5% del peso completo di ciascun modello. L'addestramento richiede da 10 a 20 epoche per convergere, come mostrato nella seguente figura. Per ciascun modello, i processi di affinamento possono essere eseguiti su una singola GPU di un'istanza g4dn.x, ottimizzando i costi delle risorse di calcolo.

    training_process

    Inferenza del modello affinato implementato su SageMaker

    Abbiamo implementato il modello affinato insieme al framework RAG in un singolo nodo GPU g4dn.x su SageMaker e confrontato i risultati dell'inferenza per le 125 domande. Le prestazioni del modello sono misurate da due metriche. Una è il punteggio ROUGE (Recall-Oriented Understudy for Gisting Evaluation), un popolare metodo di valutazione dei modelli di elaborazione del linguaggio naturale (NLP) che calcola il rapporto tra le parole corrispondenti e il numero totale di parole nella frase di riferimento. L'altra è il punteggio di similarità semantica (testuale), che misura quanto siano vicini i significati di due pezzi di testo utilizzando un modello di trasformazione per codificare le frasi per ottenere i loro incorporamenti, quindi utilizzando una metrica di similarità coseno per calcolare il punteggio di similarità. Dagli esperimenti, possiamo vedere che queste due metriche sono abbastanza coerenti nel presentare la qualità delle risposte alle domande.

    Nella tabella e nella figura seguenti, possiamo vedere che il modello Falcon-7B affinato fornisce la migliore qualità di risposta, e anche i modelli Flan-T5-XL e Dolly-3B generano risposte accurate.

    .RAG_GPT-J-6B_Flan-T5-XLRAG_GPT-J-6B_Flan-T5-XXLFine-tuned Bloom-7B1Fine-tuned Flan-T5-XLFine-tuned GPT-J-6BFine-tuned Dolly-3BFine-tuned Falcon-7B
    ROUGE Score0.19380.27470.39140.49770.37400.69910.9459
    Punteggio di similarità semantica0.41210.47860.56660.72050.54140.81470.9774
    training_results

    Di seguito è riportato un esempio di risposta dai modelli. Il modello RAG con il modello Flan-T5-XL ha fornito una risposta altamente incoerente, mentre la risposta del modello RAG con il modello Flan-T5-XXL più grande era più rilevante ma ancora non in grado di coprire completamente il messaggio atteso. In confronto, tutti i modelli affinati (Flan-T5-XL, Dolly-3B e Falcon-7B) sono stati in grado di fornire la risposta più accurata come la risposta attesa.

    DomandaQuali sono i requisiti per il sigillante/induritore post molatura? (TS0004 – sezione 2.8)
    Risposta attesaVerrà utilizzato un sigillante/induritore a base di litio dopo qualsiasi procedura di molatura/carteggiatura eseguita sul pavimento AR. Si prega di fare riferimento alle procedure TGC /0007 AR Floor SCA. Le alternative verranno prese in considerazione ma devono essere approvate da Amazon e dal consulente di pavimentazione.
    Risposta da RAG (incorporazione GPT-J-6B con Flan-T5-XL)Il sigillante penetrante per calcestruzzo deve essere discusso durante la riunione pre-versamento e deve essere approvato dal consulente di pavimentazione e da Amazon
    Risposta da RAG (incorporazione GPT-J-6B con Flan-T5-XXL)Il composto proposto deve essere discusso durante la riunione pre-versamento e deve essere approvato dal consulente di pavimentazione e da Amazon. Le alternative verranno prese in considerazione ma devono essere approvate da Amazon e dal consulente di pavimentazione.
    Risposta da Flan-T5-XL affinatoVerrà utilizzato un sigillante/induritore a base di litio dopo qualsiasi procedura di molatura/carteggiatura eseguita sul pavimento AR. Si prega di fare riferimento alle procedure TGC /0007 AR Floor SCA. Le alternative verranno prese in considerazione ma devono essere approvate da Amazon e dal consulente di pavimentazione.
    Risposta da Dolly-3B affinatoVerrà utilizzato un sigillante/induritore a base di litio dopo qualsiasi procedura di molatura/carteggiatura eseguita sul pavimento AR. Si prega di fare riferimento alle procedure TGC /0007 AR Floor SCA. Le alternative verranno prese in considerazione ma devono essere approvate da Amazon e dal consulente di pavimentazione.
    Risposta da Falcon-7B affinatoVerrà utilizzato un sigillante/induritore a base di litio dopo qualsiasi procedura di molatura/carteggiatura eseguita sul pavimento AR. Si prega di fare riferimento alle procedure TGC /0007 AR Floor SCA. Le alternative verranno prese in considerazione ma devono essere approvate da Amazon e dal consulente di pavimentazione.

    Prototipo della soluzione e risultato

    Sviluppiamo un prototipo basato sull'architettura presentata e conduciamo una prova di concetto per dimostrare il risultato. Per sfruttare sia il framework RAG che il modello LLM ottimizzato, e anche per ridurre l'allucinazione, iniziamo con una validazione semantica della domanda in arrivo. Se la domanda è presente nei dati di addestramento per l'ottimizzazione (il modello ottimizzato già possiede le conoscenze per fornire una risposta di alta qualità), dirigiamo la domanda come input al modello ottimizzato. In caso contrario, la domanda passa attraverso LangChain e ottiene la risposta da RAG. Il diagramma seguente illustra questo flusso di lavoro.

    RAG_LLM_validate

    Abbiamo testato l'architettura con un set di dati di prova di 166 domande, che contiene le 125 domande utilizzate per ottimizzare il modello e ulteriori 41 domande con cui il modello ottimizzato non è stato addestrato. Il framework RAG con il modello di embedding e il modello Falcon-7B ottimizzato ha fornito risultati di alta qualità, con un punteggio ROUGE di 0,7898 e un punteggio di similarità semantica di 0,8781. Come mostrato negli esempi seguenti, il framework è in grado di generare risposte alle domande degli utenti che sono ben allineate con i documenti D&C.

    L'immagine seguente è il nostro primo esempio di documento.

    bot1

    La seguente schermata mostra l'output del bot.

    bot2

    Il bot è in grado anche di rispondere con dati da una tabella o una lista e visualizzare immagini relative alle domande corrispondenti. Ad esempio, utilizziamo il seguente documento.

    bot3

    La seguente schermata mostra l'output del bot.

    bot4

    Possiamo anche utilizzare un documento con un'immagine, come nell'esempio seguente.

    bot5

    La seguente schermata mostra l'output del bot con il testo e l'immagine.

    bot6-1

    La seguente schermata mostra l'output del bot solo con l'immagine.

    bot7-1

    Lezioni apprese e migliori pratiche

    Attraverso la progettazione delle soluzioni e gli esperimenti con più LLM, abbiamo imparato come garantire la qualità e le prestazioni per il compito di rispondere alle domande in una soluzione di intelligenza artificiale generativa. Raccomandiamo le seguenti migliori pratiche quando si applica la soluzione ai vostri casi d'uso di risposta alle domande:

    • RAG fornisce risposte ragionevoli alle domande di ingegneria. Le prestazioni dipendono pesantemente dall'incorporamento e dall'indicizzazione del documento. Per documenti altamente non strutturati, potrebbe essere necessario un lavoro manuale per suddividere e ampliare correttamente i documenti prima dell'incorporamento e dell'indicizzazione di LLM.
    • La ricerca degli indici è importante per determinare l'output finale di RAG. Dovreste tarare correttamente l'algoritmo di ricerca per ottenere un buon livello di precisione e assicurare che RAG generi risposte più pertinenti.
    • LLM sintonizzati sono in grado di apprendere conoscenze aggiuntive da documenti altamente tecnici e non strutturati, e posseggono la conoscenza nel modello senza dipendere dai documenti dopo l'addestramento. Questo è particolarmente utile per casi d'uso in cui non è tollerata l'allucinazione.
    • Per garantire la qualità della risposta del modello, il formato del set di dati di addestramento per il fine-tuning dovrebbe utilizzare un modello di prompt specifico del compito ben definito. La pipeline di inferenza dovrebbe seguire lo stesso modello per generare risposte simili a quelle umane.
    • LLM spesso comporta un costo considerevole e richiede risorse considerevoli e costi eccessivi. È possibile utilizzare le tecniche di PEFT e LoRA e di quantizzazione per ridurre la domanda di potenza di calcolo ed evitare costi elevati per l'addestramento e l'inferenza.
    • SageMaker JumpStart fornisce modelli LLM preaddestrati a cui è facile accedere per il fine-tuning, l'inferenza e la distribuzione. Può accelerare significativamente la progettazione e l'implementazione delle soluzioni di intelligenza artificiale generative.

    Conclusione

    Con il framework RAG e LLM sintonizzati su SageMaker, siamo in grado di fornire risposte simili a quelle umane alle domande e ai prompt degli utenti, consentendo loro di recuperare efficientemente informazioni accurate da un grande volume di documenti altamente non strutturati e disorganizzati. Continueremo a sviluppare la soluzione, ad esempio fornendo un livello superiore di risposta contestuale dalle interazioni precedenti e ulteriormente sintonizzando i modelli a partire dai feedback umani.

    I vostri commenti sono sempre benvenuti; lasciate i vostri pensieri e le vostre domande nella sezione commenti.