Simple Science

Scienza all'avanguardia spiegata semplicemente

# Informatica# Calcolo e linguaggio# Linguaggi di programmazione

Avanzare l'HPC con modelli di linguaggio specifici per il dominio

Nuovo tokenizer migliora le prestazioni dei modelli linguistici per la programmazione ad alte prestazioni.

― 5 leggere min


Modelli di linguaggio HPCModelli di linguaggio HPCreinventaticodice per compiti ad alte prestazioni.Nuovo tokenizer ottimizza i modelli di
Indice

Con la crescita di computer potenti, c'è una tendenza a creare modelli linguistici più grandi (LLM) per lo sviluppo software. Questi modelli aiutano con vari compiti di programmazione, inclusi quelli legati al calcolo ad alte prestazioni (HPC). Tuttavia, alcuni di questi LLM sono davvero grandi e richiedono tante risorse per essere addestrati. Questo solleva una domanda importante: perché abbiamo bisogno di questi modelli grandi addestrati su lingue non rilevanti per l'HPC per compiti in quest'area specifica?

Il Problema con i Modelli Attuali

Molti LLM esistenti sono pre-addestrati su lingue naturali e affinati su lingue di programmazione. Anche se questo può essere utile per compiti che richiedono di comprendere la lingua naturale, può anche portare a modelli grandi che consumano un sacco di potenza di calcolo e soldi. Per esempio, alcuni LLM, come HPC-Coder, sono costruiti sintonizzando modelli più grandi che sono stati addestrati su una vasta gamma di lingue di programmazione. Questo approccio sembra superfluo. Se un Modello è destinato a compiti HPC, non potrebbe essere addestrato specificamente su lingue rilevanti per l'HPC?

LLM Specifici per il Dominio

Crediamo che LLM più piccoli e specifici per il dominio progettati per HPC sarebbero più efficienti ed efficaci. Il nostro obiettivo è analizzare le scelte progettuali fatte per gli LLM esistenti e proporre miglioramenti. In questo contesto, introduciamo un nuovo tokenizer specificamente per compiti HPC. Questo tokenizer comprende meglio la struttura del codice senza fare affidamento sulla semantica umana, rendendolo adatto per compiti di programmazione HPC.

Tokenizzazione per il Codice

La tokenizzazione è un passaggio cruciale per far funzionare i modelli linguistici con il codice. I metodi attuali spesso usano tecniche come la codifica byte-pair (BPE) o altri approcci che potrebbero non essere adatti per le lingue di programmazione. Questi metodi non tengono conto della sintassi e della struttura specifiche delle lingue di programmazione. Il nostro tokenizer proposto si concentra sulle esigenze uniche di HPC e dei compiti di compilazione.

Il Processo di Tokenizzazione

Il nostro tokenizer attraversa diversi passaggi per preparare il codice per il modello. Prima sostituisce i nomi delle variabili, i numeri e le stringhe con versioni anonime per rimuovere significati fuorvianti. Poi usa un parser per creare un Abstract Syntax Tree (AST) che cattura la struttura del codice. Il tokenizer aggiorna l'AST per riflettere le modifiche di anonimizzazione e mantiene un dizionario di queste modifiche.

Dopo aver aggiornato l'AST, lo trasforma di nuovo in codice rimuovendo dettagli non necessari. Per una migliore comprensione, i token multiparti vengono divisi in componenti più semplici. Infine, numeri casuali vengono allegati a token ricorrenti per ridurre la dipendenza da nomi o schemi specifici.

Confronto tra Tokenizer

Abbiamo eseguito test confrontando il nostro tokenizer con metodi tradizionali come BPE. I risultati mostrano una significativa diminuzione del numero totale di token prodotti, il che a sua volta riduce la complessità del modello. Il nostro tokenizer non solo crea meno token, ma preserva anche informazioni importanti che aiutano il modello a comprendere meglio il codice.

Addestramento del Modello

Abbiamo integrato il nostro tokenizer con un modello di codice all'avanguardia chiamato PolyCoder. Questo modello ha dimostrato di funzionare efficacemente con grandi quantità di codice di programmazione. Abbiamo addestrato entrambi i modelli su set di dati specifici contenenti codice scritto in Fortran, C e C++. I set di dati sono stati preparati con attenzione per garantire che non contenessero lingua naturale, concentrandosi solo su blocchi di codice strutturato.

Durante l'addestramento, abbiamo abbinato le dimensioni del modello per garantire un confronto equo tra il nostro nuovo approccio e i metodi tradizionali. L'addestramento ha utilizzato potenti GPU per accelerare il processo, permettendoci di testare l'efficienza del nostro tokenizer in scenari reali.

Risultati delle Prestazioni

La valutazione del nostro modello rispetto a PolyCoder rivela che il nostro tokenizer aumenta significativamente le prestazioni. Quando testiamo su compiti specifici legati all'HPC, il nostro approccio ha superato i modelli esistenti. Con il nostro tokenizer, abbiamo raggiunto una migliore accuratezza e comprensione in un tempo più breve.

Il nostro modello ha dimostrato metriche di prestazione migliorate, mostrando che può afferrare i modelli di design e i comportamenti nel codice. Rimuovendo la semantica umana, abbiamo dimostrato che è possibile per il modello linguistico apprendere e adattarsi alla struttura del codice in modo indipendente.

Lavoro Futuro

Guardando avanti, pianifichiamo di sviluppare ulteriormente il nostro tokenizer e modello. Ci concentreremo su come incorporare rappresentazioni aggiuntive del codice, come grafi di flusso di dati e rappresentazioni intermedie. Queste nuove funzionalità mirano a migliorare la comprensione del modello dei compiti di programmazione complessi.

Speriamo anche di affinare i nostri modelli pre-addestrati per compiti specifici HPC, come generare pragmi OpenMP e distribuire domini MPI. La nostra ricerca continuerà a esaminare diversi elementi degli LLM esistenti e ad adattarli se necessario per le esigenze uniche della programmazione HPC.

Sommario

L'uso dei modelli linguistici nello sviluppo software, in particolare nel calcolo ad alte prestazioni, presenta opportunità entusiasmanti. Mettendo in discussione l'approccio attuale e proponendo modelli specifici per il dominio, possiamo migliorare l'efficienza e l'efficacia. Il nostro nuovo tokenizer getta le basi per un'applicazione più mirata e pratica dei modelli linguistici nell'HPC, aprendo la strada a futuri progressi in quest'area. L'obiettivo è creare strumenti che siano sia potenti che accessibili per gli sviluppatori che lavorano nel calcolo ad alte prestazioni, rendendo i compiti complessi più facili e più efficienti.

Fonte originale

Titolo: Scope is all you need: Transforming LLMs for HPC Code

Estratto: With easier access to powerful compute resources, there is a growing trend in the field of AI for software development to develop larger and larger language models (LLMs) to address a variety of programming tasks. Even LLMs applied to tasks from the high-performance computing (HPC) domain are huge in size (e.g., billions of parameters) and demand expensive compute resources for training. We found this design choice confusing - why do we need large LLMs trained on natural languages and programming languages unrelated to HPC for HPC-specific tasks? In this line of work, we aim to question design choices made by existing LLMs by developing smaller LLMs for specific domains - we call them domain-specific LLMs. Specifically, we start off with HPC as a domain and propose a novel tokenizer named Tokompiler, designed specifically for preprocessing code in HPC and compilation-centric tasks. Tokompiler leverages knowledge of language primitives to generate language-oriented tokens, providing a context-aware understanding of code structure while avoiding human semantics attributed to code structures completely. We applied Tokompiler to pre-train two state-of-the-art models, SPT-Code and Polycoder, for a Fortran code corpus mined from GitHub. We evaluate the performance of these models against the conventional LLMs. Results demonstrate that Tokompiler significantly enhances code completion accuracy and semantic understanding compared to traditional tokenizers in normalized-perplexity tests, down to ~1 perplexity score. This research opens avenues for further advancements in domain-specific LLMs, catering to the unique demands of HPC and compilation tasks.

Autori: Tal Kadosh, Niranjan Hasabnis, Vy A. Vo, Nadav Schneider, Neva Krien, Abdul Wasay, Nesreen Ahmed, Ted Willke, Guy Tamir, Yuval Pinter, Timothy Mattson, Gal Oren

Ultimo aggiornamento: 2023-09-29 00:00:00

Lingua: English

URL di origine: https://arxiv.org/abs/2308.09440

Fonte PDF: https://arxiv.org/pdf/2308.09440

Licenza: https://creativecommons.org/licenses/by/4.0/

Modifiche: Questa sintesi è stata creata con l'assistenza di AI e potrebbe presentare delle imprecisioni. Per informazioni accurate, consultare i documenti originali collegati qui.

Si ringrazia arxiv per l'utilizzo della sua interoperabilità ad accesso aperto.

Altro dagli autori

Articoli simili