Blog

Traduzione interattiva del linguaggio naturale non strutturato in logiche temporali con nl2spec

Traduzione interattiva del linguaggio naturale non strutturato in logiche temporali | itkovian

Ringraziamenti: Questo post sul blog discute il lavoro congiunto tra l’autore e Matteo Cosler, Cristoforo Hahn, Daniele MendozzaE Federico Schmitt.

Una rigorosa formalizzazione dei requisiti di sistema desiderati è indispensabile quando si esegue qualsiasi attività di verifica, come il controllo del modello, la sintesi o la verifica del runtime. Ciò spesso limita l’applicazione delle tecniche di verifica, poiché la scrittura di specifiche formali è un’attività manuale soggetta a errori e che richiede tempo, tipicamente riservata agli esperti del settore. Nel nostro recente lavoro, abbiamo sviluppato un framework e uno strumento associato, chiamato nl2specper sfruttare i Large Language Models (LLM) per derivare specifiche formali (in LTL e logiche temporali simili) dal linguaggio naturale non strutturato.

Andando avanti, siamo entusiasti del potenziale ruolo degli LLM nel dominio della verifica hardware. In questo post sul blog, evidenziamo il nostro lavoro su nl2spec e sottolineiamo alcune osservazioni che riteniamo rilevanti per continuare a lavorare in questo spazio.

Verifica del modello e logica temporale

Logica temporale tempo lineare (LTL) è una logica temporale che costituisce la base di molti linguaggi di specificazione pratici, come il Linguaggio di specificazione delle proprietà IEEE (PSL), Logica temporale del segnale (STL)O Asserzioni di System Verilog (SVA).

Le formule LTL possono essere utilizzate per descrivere le proprietà sugli stati futuri di una traccia di esecuzione o di un’esecuzione sentiero. Le formule LTL sono costruite su un insieme base di variabili proposizionali, che fungono da atomi della logica e vengono utilizzati per descrivere le proprietà di base degli stati all’interno di una traccia di esecuzione. La logica contiene anche le costanti logiche di verità e falsità, così come i connettivi standard della logica proposizionale: congiunzione (∧), disgiunzione (∨), negazione (¬) e implicazione (→). Queste formule sono aumentate con modalità temporali U (fino a) e X (next), che relativizzano una formula rispetto a una nozione astratta di tempo, consentendo alle formule di fare riferimento a eventi che si verificano successivamente in una traccia di esecuzione. Esistono diversi operatori derivati, come Fφ ≡ trueUφ e Gφ ≡ ¬F¬φ. Fφ e Gφ affermano che φ vale Alcuni E ogni stato futuro della traccia, rispettivamente.

Gli operatori possono essere nidificati: GFφ, ad esempio, afferma che φ deve verificarsi infinitamente spesso. Le specifiche LTL descrivono il comportamento di un sistema e la sua interazione con un ambiente nel tempo. Ad esempio, dato un processo 0, un processo 1 e una risorsa condivisa, la formula G(r0 → Fg0) ∧ G(r1 → Fg1) ∧ SOL¬(g0 ∧ g1) afferma che ogni volta che un processo richiede (rio) l’accesso a una risorsa condivisa verrà eventualmente concesso (gio). La sottoformula G¬(g0 ∧ g1) garantisce che le sovvenzioni concesse si escludano a vicenda. La sintassi formale e la semantica di LTL si trovano nell’Appendice A del nostro nl2spec prestampa.

È possibile valutare le proprietà LTL di aderenza di un sistema, su uno spazio illimitato di tracce di esecuzione, utilizzando verificatori di proprietà basati su controllo del modello. Ad esempio, nello spazio della verifica formale dell’hardware, SystemVerilog Assertions (SVA), supporta la specifica delle proprietà LTL sulle tracce di esecuzione che possono essere realizzate su un’implementazione SystemVerilog RTL. Il verificatore di proprietà JasperGold di Cadence sfrutta gli algoritmi di controllo del modello per controllare l’aderenza di una specifica RTL agli SVA definiti dall’utente.

Grandi modelli linguistici

Gli LLM sono grandi reti neurali tipicamente costituite da un massimo di 176 miliardi di parametri. Sono pre-addestrati su enormi quantità di dati, come « Il mucchio.” Esempi di LLM includono il GPT E BERT famiglie di modelli e modelli open source, come ad esempio T5 E Fioritura. Gli LLM lo sono Trasformatori, ovvero l’architettura neurale allo stato dell’arte per l’elaborazione del linguaggio. Inoltre, Transformers ha mostrato prestazioni notevoli quando è stato applicato a problemi classici nella verifica, nel ragionamento e nell’auto-formalizzazione della matematica e delle specifiche formali. Vedi il nostro nl2spec prestampa per citazioni dettagliate.

Mentre la messa a punto dei modelli neurali su un’attività di traduzione specifica rimane anche un approccio valido successo iniziale generalizzando al linguaggio naturale non strutturato durante la traduzione in LTL, una tecnica comune per ottenere prestazioni elevate con una quantità limitata di dati etichettati è la cosiddetta « suggerimento a pochi colpi.” Il modello linguistico viene presentato con una descrizione in linguaggio naturale dell’attività accompagnata da alcuni esempi che dimostrano il comportamento input-output. Il framework nl2spec e il nostro lavoro in corso si basano su questa tecnica.

Il nostro contributo principale alla derivazione delle specifiche LTL dal linguaggio naturale è una nuova metodologia per scomporre prima l’input del linguaggio naturale in sub-traduzioni utilizzando LLM. Il framework nl2spec fornisce quindi un’interfaccia per aggiungerli, modificarli ed eliminarli in modo interattivo sub-traduzioni invece di dover affrontare l’intera formalizzazione in una volta (una caratteristica che manca in un lavoro simile, come NL2LTL E Lang2LTL).

Figura 1. Uno screenshot dell’interfaccia Web per nl2spec.

La figura 1 sopra mostra il frontend basato sul web di nl2spec. Ad esempio, consideriamo il seguente requisito di sistema fornito in linguaggio naturale: « A livello globale, concedere 0 e concedere 1 non valgono contemporaneamente fino a quando non viene consentito ». Lo strumento traduce automaticamente la specifica del linguaggio naturale correttamente nella formula LTL G((!((g0 & g1)) U a)). Inoltre, lo strumento genera sottotraduzioni, come la coppia (“non tenere allo stesso tempo”, !(g0 & g1)), che aiutano a verificare la correttezza della traduzione.

Si consideri, tuttavia, il seguente esempio ambiguo: “a vale fino a quando b vale o sempre a vale”. È necessaria la supervisione umana per risolvere l’ambiguità sulla precedenza dell’operatore. Ciò può essere facilmente ottenuto con nl2spec aggiungendo o modificando una sottotraduzione utilizzando parentesi esplicite (vedere la Sezione 4 del nostro preprint per maggiori dettagli ed esempi). Per catturare tale (e altri tipi di) ambiguità in un set di dati di riferimento, abbiamo condotto uno studio di utenti esperti chiedendo specificamente traduzioni impegnative di frasi in linguaggio naturale in formule LTL.

L’intuizione chiave nella progettazione di nl2spec è che il processo di traduzione può essere scomposto automaticamente in molte sottotraduzioni tramite LLM e la scomposizione in sottotraduzioni consente agli utenti di risolvere facilmente il linguaggio naturale ambiguo e le traduzioni errate attraverso la modifica interattiva delle sottotraduzioni . L’obiettivo centrale di nl2spec è mantenere la supervisione umana minima ed efficiente. A tal fine, tutte le traduzioni sono accompagnate da un punteggio di confidenza, è possibile visualizzare e scegliere suggerimenti alternativi per le sottotraduzioni tramite un menu a discesa e le sottotraduzioni fuorvianti possono essere eliminate prima del ciclo successivo della traduzione. Valutiamo l’accuratezza della traduzione end-to-end della nostra metodologia proposta sul set di dati di riferimento ottenuto dal nostro studio di utenti esperti.

Indirizziamo il lettore al ns prestampa per maggiori dettagli sull’approccio generale e istruzioni su come eseguire il nostro open-source nl2spec artefatto.

Il nostro lavoro su nl2spec fa un piccolo passo verso lo sfruttamento della potenza degli LLM per democratizzare la verifica dei sistemi informatici in generale e la verifica dell’hardware in particolare. Durante questo progetto, abbiamo fatto alcune osservazioni che riteniamo saranno rilevanti per il lavoro futuro in questo spazio:

  • Le rappresentazioni intermedie, come le nostre sottotraduzioni, sono efficaci nel risolvere l’ambiguità del linguaggio naturale e nel fornire interpretabilità delle specifiche.
  • Gli LLM possono rivelarsi utili per specializzare le proprietà esistenti per mirare a nuovi progetti. Ad esempio, alcune proprietà di correttezza funzionale possono persistere attraverso le generazioni di microarchitettura, ma la loro precisa formulazione cambierà per riflettere le differenze di progettazione.
  • Il suggerimento a pochi colpi si allinea bene con il modo in cui i progettisti hardware comunicano varie proprietà di sistema desiderate o indesiderate, ad esempio, modello di consistenza della memoria specifiche sotto forma di prove del nove, il CVE banca dati, il CWE database, tracce di simulazione e così via.
  • La verifica hardware assistita da LLM richiederà probabilmente nuovi metodi di astrazione e scomposizione dei circuiti a causa dei limiti di lunghezza del prompt. Se un utente formula una proprietà del linguaggio naturale rispetto a un circuito monolitico che è troppo grande per l’LLM, sia la proprietà che il design richiederanno la scomposizione, un processo che riteniamo possa essere assistito anche dagli LLM.
  • Abbiamo iniziato la nostra esplorazione della verifica assistita da LLM ideando un ciclo di feedback tra un essere umano (l’ingegnere di verifica) e un generatore di specifiche assistito da LLM. Tuttavia, prevediamo anche un prezioso ciclo di feedback tra la generazione delle specifiche e un verificatore di proprietà LTL, come un verificatore di modelli. Riteniamo che questo scenario sarà particolarmente utile nello spazio di riparazione hardware automatizzatain cui la progettazione dell’hardware deve essere modificata per conformarsi ad alcune specifiche (ad es. riparazione iterativa del circuito rispetto a specifiche formali).

Nel complesso, questo post sul blog evidenzia alcuni dei primi lavori (il nostro e quello di altri) nello spazio della verifica dei sistemi informatici assistita da LLM, con particolare attenzione alla verifica dell’hardware. Abbiamo fornito alcune intuizioni dietro il framework nl2spec per tradurre il linguaggio naturale non strutturato in logiche temporali. Una limitazione del nostro approccio è ovviamente la dipendenza dalle risorse computazionali al momento dell’inferenza. Questa è una limitazione generale quando si applicano tecniche di deep learning. Sia i modelli commerciali che quelli open source che abbiamo sperimentato nel nostro lavoro, tuttavia, forniscono API facilmente accessibili ai loro modelli. In particolare, tuttavia, la qualità delle traduzioni iniziali potrebbe essere influenzata dalla quantità di dati di addestramento su logica, codice o matematica che i modelli neurali sottostanti hanno visto durante il pre-addestramento.

Al centro di nl2spec c’è una metodologia per scomporre l’input in linguaggio naturale in sub-traduzioni, che sono mappature di frammenti di formule a parti rilevanti dell’input in linguaggio naturale. Nostro prestampa introduce uno schema di prompt interattivo che interroga gli LLM per le sottotraduzioni e un’interfaccia per gli utenti per aggiungere, modificare ed eliminare in modo interattivo le sottotraduzioni, che evita agli utenti di riformulare manualmente l’intera formalizzazione per correggere traduzioni errate. Il nostro modesto studio sugli utenti mostra che nl2spec può essere utilizzato in modo efficiente per formalizzare in modo interattivo un linguaggio naturale non strutturato e ambiguo.

Circa l’autore: Carolina Tripla ioÈ professore assistente di informatica e ingegneria elettrica presso la Stanford University. La sua ricerca sulla concorrenza architettonica e la verifica della sicurezza è stata riconosciuta con le distinzioni IEEE Top Picks, un NSF CAREER Award, il 2020 ACM SIGARCH/IEEE CS TCCA Outstanding Dissertation Award e il 2020 CGS/ProQuest® Distinguished Dissertation Award in Mathematics, Physical Sciences, & Ingegneria.

Disclaimer: Questi post sono scritti da singoli contributori per condividere i propri pensieri sul blog Computer Architecture Today a beneficio della comunità. Qualsiasi punto di vista o opinione rappresentata in questo blog è personale, appartiene esclusivamente all’autore del blog e non rappresenta quelli di ACM SIGARCH o della sua organizzazione madre, ACM.

Hi, I’m Samuel