LLM e l'emergente stack tecnologico ML

Feb 24 2023
Autori: Harrison Chase e Brian Raymond Il ritmo di sviluppo nello spazio Large Language Model (LLM) è esploso negli ultimi mesi e una delle trame più interessanti è stata il rapido spostamento verso un nuovo stack tecnologico per supportare un coinvolgimento completamente nuovo modello con questi modelli linguistici. In questo post del blog, esploreremo i cambiamenti che stanno avvenendo nello stack tecnologico LLM e cosa significa per gli sviluppatori.

Autori: Harrison Chase e Brian Raymond

Il ritmo di sviluppo nello spazio Large Language Model (LLM) è esploso negli ultimi mesi e una delle trame più interessanti è stata il rapido spostamento verso un nuovo stack tecnologico per supportare un modello di coinvolgimento completamente nuovo con questi modelli linguistici. In questo post del blog, esploreremo i cambiamenti che stanno avvenendo nello stack tecnologico LLM e cosa significa per gli sviluppatori.

Lo stack tecnico della PNL esistente

Fino a poco tempo fa, gli sviluppatori di PNL si affidavano a uno stack tecnologico ottimizzato per attività di PNL come la classificazione del testo, il riconoscimento di entità nominate, la disambiguazione di entità nominate. Questo stack tecnologico è generalmente costituito da una pipeline di preelaborazione dei dati, una pipeline di machine learning e vari database per archiviare incorporamenti e dati strutturati. Questa architettura ha funzionato bene per generare grandi quantità di triple, incorporamenti di parole, incorporamenti di frasi, output da sequenza a sequenza, probabilità del modello linguistico, pesi dell'attenzione e altro ancora. Gli sviluppatori in genere archiviano questi output strutturati nei database ElasticSearch, Postgres o Neo4j, che utilizzano come grafo di conoscenza che gli utenti (o i servizi) possono interrogare.

Questa architettura ha funzionato bene per la produzione di dati strutturati altamente affidabili che potrebbero essere implementati all'interno dei sistemi aziendali per automatizzare i processi chiave (ad esempio classificare documenti, trovare entità e relazioni tra entità, ecc.). Tuttavia, hanno faticato a ottenere un'adozione diffusa perché erano lenti ad alzarsi (richiedevano grandi quantità di dati etichettati e un bel po' di messa a punto del modello); costoso da eseguire (spesso queste architetture avrebbero più di tre dozzine di modelli in una pipeline/sistema); e le pipeline di importazione e modello erano fragili per i nuovi layout di documenti e tipi di dati.

Lo stack tecnologico emergente LLM

Dall'autunno del 2022, ha iniziato a emergere un nuovo stack tecnologico progettato per sfruttare tutto il potenziale degli LLM. Contrariamente al precedente stack tecnologico, questo ha lo scopo di abilitare la generazione di testo, il compito in cui i moderni LLM sono particolarmente bravi rispetto ai precedenti modelli di machine learning. Questo nuovo stack è costituito da quattro pilastri: una pipeline di preelaborazione dei dati, endpoint di incorporamento + archivio vettoriale, endpoint LLM e un framework di programmazione LLM. Ci sono molte grandi differenze tra il vecchio stack tecnologico e quello nuovo. Primo: il nuovo stack tecnologico non fa affidamento sui grafici della conoscenza che memorizzano dati strutturati (ad esempio triple) perché LLM come ChatGPT, Claude e Flan T-5 hanno molte più informazioni codificate al loro interno rispetto ai modelli precedenti come GPT 2. Secondo: il nuovo stack tecnologico utilizza un endpoint LLM standard come modello, piuttosto che una pipeline ML personalizzata (almeno per iniziare). Ciò significa che gli sviluppatori oggi dedicano molto meno tempo alla formazione di modelli specializzati di estrazione delle informazioni (ad es. Named Entity Recognition, Relation Extraction e Sentiment) e possono creare soluzioni in una frazione del tempo (e del costo).

Pipeline di preelaborazione dei dati : il primo pilastro del nuovo stack tecnologico è sostanzialmente invariato rispetto allo stack precedente: la pipeline di preelaborazione dei dati. Questo passaggio include i connettori per l'inserimento dei dati ovunque risiedano (ad es. bucket S3 o un CRM), un livello di trasformazione dei dati e connettori a valle (ad es. verso un database vettoriale). Spesso le informazioni più preziose da inserire in un LLM sono anche le più difficili da lavorare (PDF, PPTX, HTML, ecc.) ma anche documenti in cui il testo è facilmente accessibile (.DOCX, per esempio) contengono informazioni che gli utenti non 't desidera essere inviato al punto finale dell'inferenza (ad esempio pubblicità, boilerplate legale, ecc.).

Storicamente questo passaggio è stato creato a mano in modo specifico per ogni applicazione dai data scientist. A seconda dei tipi di dati coinvolti, potrebbero utilizzare modelli OCR standard e dozzine o centinaia di espressioni regolari personalizzate per trasformare e pulire i dati in linguaggio naturale per l'elaborazione in una pipeline di apprendimento automatico a valle. In Unstructured stiamo sviluppando strumenti open source per accelerare questa fase di pre-elaborazione, utilizzando una gamma di modelli di segmentazione dei documenti di visione artificiale, nonché modelli NLP, script Python ed espressioni regolari per estrarre, pulire e trasformare automaticamente elementi di documenti critici (ad es. titoli, corpo del testo, intestazioni/piè di pagina, elenchi e altro).

Embedding Endpoint e Vector Store:L'uso di un endpoint di incorporamento e di un archivio vettoriale rappresenta un'evoluzione significativa nel modo in cui i dati vengono archiviati e vi si accede. In precedenza gli incorporamenti erano ampiamente utilizzati per attività di nicchia come il clustering di documenti. Tuttavia, nella nuova architettura, l'archiviazione dei documenti e dei relativi incorporamenti in un database vettoriale consente modelli di coinvolgimento critici da parte dell'endpoint LLM (ne parleremo più avanti). Uno dei principali vantaggi di questa architettura è la capacità di archiviare direttamente gli incorporamenti non elaborati, anziché convertirli in un formato strutturato. Ciò significa che i dati possono essere archiviati nel loro formato naturale, consentendo tempi di elaborazione più rapidi e un recupero dei dati più efficiente. Inoltre, questo approccio può semplificare il lavoro con set di dati di grandi dimensioni, in quanto può ridurre la quantità di dati che devono essere elaborati durante l'addestramento e l'inferenza.

La generazione e l'archiviazione di incorporamenti di documenti, insieme alle versioni JSON dei documenti stessi, crea un meccanismo semplice per l'interfaccia LLM con l'archivio vettoriale. Ciò è particolarmente utile per le applicazioni in cui è richiesta l'elaborazione in tempo reale, come i chatbot. Riducendo al minimo il tempo necessario per il recupero dei dati, il sistema può rispondere più rapidamente e fornire una migliore esperienza utente. Un altro vantaggio dell'utilizzo degli incorporamenti (e dell'indice del documento) e dell'archivio vettoriale è che può semplificare l'implementazione di tecniche come l'apprendimento del trasferimento, per consentire una messa a punto più efficiente e prestazioni migliori.

Endpoint LLM : il terzo pilastro del nuovo stack tecnologico è l'endpoint LLM. Questo è l'endpoint che riceve i dati di input e produce l'output LLM. L'endpoint LLM è responsabile della gestione delle risorse del modello, inclusi memoria e calcolo, e della fornitura di un'interfaccia scalabile e a tolleranza di errore per servire l'output LLM alle applicazioni downstream.

Sebbene la maggior parte dei provider LLM offra diversi tipi di endpoint, lo usiamo per fare riferimento agli endpoint di generazione del testo. Come spiegato sopra, questo è il nuovo sblocco tecnologico che sta alimentando molte delle applicazioni emergenti (rispetto alle pipeline ML più tradizionali). È un po' una semplificazione, ma l'interfaccia esposta da questi endpoint LLM è un campo di testo come input e un campo di testo come output.

Framework di programmazione LLM : il pilastro finale del nuovo stack tecnologico è un framework di programmazione LLM. Questi framework forniscono una serie di strumenti e astrazioni per la creazione di applicazioni con modelli di linguaggio. In LangChain, questo è esattamente il framework su cui stiamo lavorando. Questi framework sono in rapida evoluzione, il che può renderli difficili da definire. Tuttavia, stiamo convergendo su una serie di astrazioni, che approfondiremo di seguito.

Una grande funzione di questi framework è orchestrare tutti i vari componenti. Nello stack moderno finora, i tipi di componenti che abbiamo visto emergere sono: provider LLM (trattati nella sezione precedente), modelli di incorporamento, vectorstore, caricatori di documenti, altri strumenti esterni (ricerca Google, ecc.). In LangChain, ci riferiamo ai modi di combinare questi componenti come catene. Ad esempio, abbiamo catene per eseguire QA su un archivio vettoriale, catene per interagire con database SQL, ecc.

Tutte queste catene comportano la chiamata del modello linguistico a un certo punto. Quando si chiama il modello di linguaggio, la sfida principale deriva dalla costruzione del prompt da passare al modello di linguaggio. Questi prompt sono spesso una combinazione di informazioni prese da altri componenti più un modello di prompt di base. LangChain fornisce una serie di modelli di prompt predefiniti per iniziare con queste catene, ma ci concentriamo anche sulla creazione di LangChainHub , un luogo in cui gli utenti possono condividere questi prompt.

Domande aperte:

Il modo migliore per indicizzare i dati: in questo momento, tutti utilizzano in gran parte i vectorstore come il modo principale per indicizzare i dati in modo tale che gli LLM possano interagire con essi. Tuttavia, questo è solo il primo passaggio per definire come dovrebbero funzionare queste interazioni. Un'area di esplorazione attiva è la misura in cui i grafici della conoscenza, insieme agli indici dei documenti e ai loro incorporamenti, possono migliorare ulteriormente la qualità delle inferenze dai LLM. Inoltre, per il prossimo futuro la maggior parte delle aziende continuerà a richiedere dati strutturati di alta qualità (in genere in un database a grafo) da fondere con i set di dati esistenti e le soluzioni di business intelligence. Ciò significa che, a medio termine, gli utilizzatori aziendali possono effettivamente fare affidamento su database vettoriali e grafici per potenziare applicazioni e flussi di lavoro esistenti.

Che aspetto avrà la messa a punto / riqualificazione: in questo momento, i framework di programmazione LLM come LangChain vengono utilizzati per combinare i tuoi dati con un LLM preaddestrato. Un altro modo per farlo è mettere a punto l'LLM sui tuoi dati. La messa a punto ha alcuni pro e contro. Tra i lati positivi, riduce la necessità di gran parte di questa orchestrazione. L'aspetto negativo, tuttavia, è che è più costoso e richiede tempo per essere corretti e richiede di farlo periodicamente per tenersi aggiornati. Sarà interessante vedere come questi compromessi si evolveranno nel tempo.

Diversi modi di utilizzare gli incorporamenti: anche se il modello di utilizzo principale rimane mantenendo i dati in un database esterno, piuttosto che perfezionarli, ci sono altri modi per combinarli con LLM piuttosto che con gli approcci attuali (che implicano tutti il ​​​​trasferimento nel prompt ). I più eccitanti sono approcci come RETRO , che recuperano gli incorporamenti per i documenti ma poi si occupano direttamente di quegli incorporamenti piuttosto che passare il testo come prompt. Sebbene questi modelli siano stati utilizzati principalmente in contesti di ricerca, sarà interessante vedere se lo renderanno mainstream e in che modo ciò influirà sui framework di programmazione LLM.

Conclusione

Il passaggio a questo nuovo stack tecnologico LLM è uno sviluppo entusiasmante che consentirà agli sviluppatori di creare e distribuire applicazioni NLP più potenti. Il nuovo stack è più efficiente, scalabile e più facile da usare rispetto al vecchio stack e sblocca tutto il potenziale degli LLM. Possiamo aspettarci di vedere più innovazioni in questo spazio nei prossimi mesi e anni mentre gli sviluppatori continuano a trovare nuovi modi per sfruttare la potenza degli LLM.