Crea un’interfaccia utente web per interagire con gli LLM utilizzando Amazon SageMaker JumpStart

Creare un'interfaccia web interattiva per gli LLM utilizzando Amazon SageMaker JumpStart

Il lancio di ChatGPT e l’aumento di popolarità dell’IA generativa hanno catturato l’immaginazione dei clienti curiosi su come possono utilizzare questa tecnologia per creare nuovi prodotti e servizi su AWS, come chatbot aziendali più conversazionali. Questo articolo mostra come è possibile creare un’interfaccia utente web, che chiamiamo Chat Studio, per avviare una conversazione e interagire con modelli fondamentali disponibili in Amazon SageMaker JumpStart come Llama 2, Stable Diffusion e altri modelli disponibili su Amazon SageMaker. Dopo aver implementato questa soluzione, gli utenti possono iniziare rapidamente e sperimentare le funzionalità di più modelli fondamentali nell’IA conversazionale tramite un’interfaccia web.

Chat Studio può anche richiamare facoltativamente il punto di invocazione del modello Stable Diffusion per restituire un collage di immagini e video pertinenti se l’utente richiede la visualizzazione dei media. Questa funzionalità può contribuire a migliorare l’esperienza dell’utente con l’uso dei media come risorse di accompagnamento alla risposta. Questo è solo un esempio di come è possibile arricchire Chat Studio con integrazioni aggiuntive per raggiungere i propri obiettivi.

Le seguenti schermate mostrano esempi di come appare una query e una risposta dell’utente.

Interfaccia di query di Chat Studio

Interfaccia di risposta di Chat Studio

Modelli di linguaggio avanzati

I chatbot di IA generativa come ChatGPT sono alimentati da modelli di linguaggio avanzati (LLM) basati su una rete neurale di deep learning che può essere addestrata su grandi quantità di testo non etichettato. L’uso dei LLM consente un’esperienza conversazionale migliorata che assomiglia da vicino alle interazioni con persone reali, favorendo un senso di connessione e una migliore soddisfazione dell’utente.

Modelli di base di SageMaker

Nel 2021, lo Stanford Institute for Human-Centered Artificial Intelligence ha definito alcuni LLM come modelli di base. I modelli di base sono pre-addestrati su un ampio e generico set di dati e sono destinati a fungere da base per ulteriori ottimizzazioni in una vasta gamma di casi d’uso, dalla generazione di arte digitale alla classificazione di testi multilingue. Questi modelli di base sono popolari tra i clienti perché addestrare un nuovo modello da zero richiede tempo e può essere costoso. SageMaker JumpStart offre accesso a centinaia di modelli di base mantenuti da fornitori di terze parti open source e proprietari.

Panoramica della soluzione

Questo articolo illustra un flusso di lavoro a basso codice per implementare LLM pre-addestrati e personalizzati tramite SageMaker e creare un’interfaccia utente web per interagire con i modelli implementati. Copriamo i seguenti passaggi:

  1. Implementazione di modelli di base di SageMaker.
  2. Implementazione di AWS Lambda e autorizzazioni di gestione identità e accessi AWS (IAM) utilizzando AWS CloudFormation.
  3. Configurazione ed esecuzione dell’interfaccia utente.
  4. Facoltativamente, aggiunta di altri modelli di base di SageMaker. Questo passaggio estende le capacità di Chat Studio per interagire con modelli di base aggiuntivi.
  5. Facoltativamente, implementazione dell’applicazione utilizzando AWS Amplify. Questo passaggio implementa Chat Studio sul web.

Consultare il seguente diagramma per una panoramica dell’architettura della soluzione.

Architettura della soluzione Chat Studio

Prerequisiti

Per seguire la soluzione, devi avere i seguenti prerequisiti:

  • Un account AWS con sufficienti privilegi IAM utente.
  • npm installato nel tuo ambiente locale. Per istruzioni su come installare npm, consulta Scaricare e installare Node.js e npm.
  • Una quota di servizio pari a 1 per i corrispondenti endpoint di SageMaker. Per Llama 2 13b Chat, utilizziamo un’istanza ml.g5.48xlarge e per Stable Diffusion 2.1, utilizziamo un’istanza ml.p3.2xlarge.

Per richiedere un aumento della quota di servizio, sulla console AWS Service Quotas, vai su Servizi AWS, SageMaker e richiedi un aumento della quota di servizio a un valore di 1 per ml.g5.48xlarge per l’utilizzo degli endpoint e ml.p3.2xlarge per l’utilizzo degli endpoint.

La richiesta di aumento della quota di servizio potrebbe richiedere alcuni ore per essere approvata, a seconda della disponibilità del tipo di istanza.

Deploy dei modelli foundation di SageMaker

SageMaker è un servizio di machine learning (ML) completamente gestito per sviluppatori che consente di costruire e addestrare rapidamente modelli di ML con facilità. Completa i seguenti passaggi per distribuire i modelli foundation di Llama 2 13b Chat e Stable Diffusion 2.1 utilizzando Amazon SageMaker Studio:

  1. Crea un dominio SageMaker. Per istruzioni, consulta Accedi a Amazon SageMaker Domain utilizzando la configurazione rapida.

Un dominio configura tutto lo storage e ti consente di aggiungere utenti per accedere a SageMaker.

  1. Sulla console SageMaker, seleziona Studio nel riquadro di navigazione, quindi seleziona Apri Studio.
  2. Al lancio di Studio, nel riquadro di navigazione sotto SageMaker JumpStart, seleziona Modelli, notebook, soluzioni. Console SageMaker JumpStart
  3. Nella barra di ricerca, cerca Llama 2 13b Chat.
  4. Nella sezione Configurazione del deployment, per Istanza di hosting SageMaker, scegli ml.g5.48xlarge e per Nome dell’endpoint, inserisci meta-textgeneration-llama-2-13b-f.
  5. Scegli Deploy.
Configurazione del deployment SageMaker JumpStart

Dopo il successo del deployment, dovresti poter vedere lo stato In Service.

Stato del modello Llama
  1. Sulla pagina Modelli, notebook, soluzioni, cerca Stable Diffusion 2.1.
  2. Nella sezione Configurazione del deployment, per Istanza di hosting SageMaker, scegli ml.p3.2xlarge e per Nome endpoint, inserisci jumpstart-dft-stable-diffusion-v2-1-base.
  3. Scegli Deploy.
Configurazione deployment SageMaker JumpStart

Dopo il successo del deployment, dovresti poter vedere lo stato In servizio.

Stato del modello Stable Diffusion

Deploy di Lambda e delle autorizzazioni IAM usando AWS CloudFormation

In questa sezione descriveremo come lanciare uno stack di CloudFormation che esegue una funzione Lambda che elabora la richiesta dell’utente e chiama il punto finale SageMaker che hai deployato, e deploya tutte le necessarie autorizzazioni IAM. Completa i seguenti passaggi:

  1. Vai al repository GitHub e scarica il template di CloudFormation (lambda.cfn.yaml) sul tuo computer locale.
  2. Nella console di CloudFormation, scegli il menu a discesa Crea stack e scegli Con nuove risorse (standard).
  3. Nella pagina Specifica template, seleziona Carica un file di template e Scegli un file.
  4. Scegli il file lambda.cfn.yaml che hai scaricato, poi scegli Avanti.
  5. Nella pagina Specifica dettagli stack, inserisci un nome per lo stack e la chiave API che hai ottenuto nei prerequisiti, poi scegli Avanti.
  6. Nella pagina Configura opzioni stack, scegli Avanti.
  7. Rivedi e accetta le modifiche, poi scegli Invia.

Configura l’interfaccia utente web

In questa sezione descriveremo i passaggi per eseguire l’interfaccia utente web (creata utilizzando il Cloudscape Design System) sul tuo computer locale:

  1. Nella console IAM, vai all’utente functionUrl.

  2. Nella scheda Credenziali di sicurezza, scegli Crea chiave di accesso.

  3. Nella pagina Best practice e alternative per le chiavi di accesso, seleziona Command Line Interface (CLI) e scegli Avanti.

  4. Nella pagina Imposta tag di descrizione, scegli Crea chiave di accesso.

  5. Copia la chiave di accesso e la chiave di accesso segreta.

  6. Scegli Fatto.

  7. Vai al repository GitHub e scarica il codice react-llm-chat-studio.

  8. Avvia la cartella nel tuo IDE preferito e apri un terminale.

  9. Vai a src/configs/aws.json e inserisci la chiave di accesso e la chiave di accesso segreta che hai ottenuto.

  10. Inserisci i seguenti comandi nel terminale:

    npm installnpm start
  11. Apri http://localhost:3000 nel tuo browser e inizia a interagire con i tuoi modelli!

Per utilizzare Chat Studio, scegli un modello fondamentale dal menu a tendina e inserisci la tua query nella casella di testo. Per ottenere immagini generati dall’IA insieme alla risposta, aggiungi la frase “con immagini” alla fine della tua query.

Aggiungi altri modelli di base di SageMaker

Puoi estendere ulteriormente la capacità di questa soluzione per includere ulteriori modelli di base di SageMaker. Poiché ogni modello si aspetta formati di input e output diversi quando invoca il suo endpoint di SageMaker, sarà necessario scrivere del codice di trasformazione nella funzione Lambda callSageMakerEndpoints per interfacciarsi con il modello.

Questa sezione descrive i passaggi generali e le modifiche al codice necessarie per implementare un modello aggiuntivo a tua scelta. Si noti che è richiesta una conoscenza di base del linguaggio Python per i passaggi da 6 a 8.

  1. In SageMaker Studio, distribuisci il modello di base di SageMaker della tua scelta.
  2. Scegli SageMaker JumpStart e Launch JumpStart assets.
  3. Scegli il tuo endpoint di modello appena distribuito e scegli Apri Notebook.
  4. Nella console del notebook, trova i parametri del payload.

Questi sono i campi che il nuovo modello si aspetta quando invoca il suo endpoint di SageMaker. La seguente schermata mostra un esempio.

Configurazione endpoint SageMaker
  1. Nella console Lambda, passa a callSageMakerEndpoints.
  2. Aggiungi un gestore di input personalizzato per il tuo nuovo modello.

Nella seguente schermata, abbiamo trasformato l’input per Falcon 40B Instruct BF16 e GPT NeoXT Chat Base 20B FP16. Puoi inserire la tua logica di parametro personalizzato come indicato per aggiungere la logica di trasformazione dell’input facendo riferimento ai parametri del payload che hai copiato.

Snippet codice Lambda
  1. Torna alla console del notebook e individua query_endpoint.

Questa funzione ti dà un’idea di come trasformare l’output dei modelli per estrarre la risposta finale in forma di testo.

Configurazione endpoint SageMaker
  1. Con riferimento al codice in query_endpoint, aggiungi un gestore di output personalizzato per il tuo nuovo modello. Codice Lambda

  2. Scegli Deploy.

  3. Apri il tuo IDE, avvia il codice react-llm-chat-studio e vai su src/configs/models.json.

  4. Aggiungi il nome del tuo modello e l’endpoint del modello, e inserisci i parametri del payload dal Passaggio 4 sotto payload seguendo il formato seguente:

    "nome_modello_aggiunto": {"nome_endpoint": "nome_endpoint_aggiunto","payload": {"aggiungi_parametri_payload_qui"}},
  5. Aggiorna il tuo browser per iniziare a interagire con il tuo nuovo modello!

Distribuisci l’applicazione utilizzando Amplify

Amplify è una soluzione completa che ti consente di distribuire rapidamente ed efficientemente la tua applicazione. Questa sezione descrive i passaggi per distribuire Chat Studio su una distribuzione di Amazon CloudFront utilizzando Amplify se desideri condividere la tua applicazione con altri utenti.

  1. Naviga alla cartella del codice react-llm-chat-studio che hai creato in precedenza.

  2. Inserisci i seguenti comandi nel terminale e segui le istruzioni per l’installazione:

    npm install -g @aws-amplify/cliamplify configure
  3. Inizializza un nuovo progetto Amplify utilizzando il seguente comando. Fornisci un nome al progetto, accetta le configurazioni predefinite e scegli chiavi di accesso AWS quando ti viene chiesto di selezionare il metodo di autenticazione.

    amplify init
  4. Ospita il progetto Amplify utilizzando il seguente comando. Scegli Amazon CloudFront e S3 quando ti viene chiesto di selezionare la modalità del plugin.

    amplify hosting add
  5. Infine, crea e distribuisci il progetto con il seguente comando:

    amplify publish
  6. Dopo il successo della distribuzione, apri l’URL fornito nel tuo browser e inizia a interagire con i tuoi modelli!

Pulizia

Per evitare future spese, completa i seguenti passaggi:

  1. Elimina lo stack di CloudFormation. Per istruzioni, consulta Eliminazione di uno stack nella console di AWS CloudFormation.
  2. Elimina l’endpoint di SageMaker JumpStart. Per istruzioni, consulta Elimina endpoint e risorse.
  3. Elimina il dominio di SageMaker. Per istruzioni, consulta Elimina un dominio Amazon SageMaker.

Conclusioni

In questo post, abbiamo spiegato come creare un’interfaccia utente web per interagire con LLMs distribuiti su AWS.

Con questa soluzione, puoi interagire con il tuo LLM e avere una conversazione in modo user-friendly per testare o fare domande al LLM, e ottenere un collage di immagini e video se necessario.

Puoi estendere questa soluzione in vari modi, ad esempio integrando modelli fondamentali aggiuntivi, integrando con Amazon Kendra per abilitare una ricerca intelligente basata su ML per comprendere i contenuti aziendali e altro ancora!

Ti invitiamo a sperimentare con diversi LLM pre-trained disponibili su AWS, o creare i tuoi LLM in SageMaker. Facci sapere le tue domande e scoperte nei commenti, e divertiti!