StarCoder Un LLM all’avanguardia per il Codice

StarCoder un LLM all'avanguardia per il Codice

Presentazione di StarCoder

StarCoder e StarCoderBase sono modelli di linguaggio di grandi dimensioni per il codice (Code LLMs) allenati su dati con licenza permissiva provenienti da GitHub, inclusi più di 80 linguaggi di programmazione, commit Git, problemi GitHub e notebook Jupyter. Come LLaMA, abbiamo allenato un modello di ~15 miliardi di parametri per 1 trilione di token. Abbiamo migliorato ulteriormente il modello StarCoderBase per 35 miliardi di token Python, ottenendo un nuovo modello che chiamiamo StarCoder.

Abbiamo scoperto che StarCoderBase supera i modelli di codice aperti esistenti su popolari benchmark di programmazione e eguaglia o supera modelli chiusi come code-cushman-001 di OpenAI (il modello Codex originale che alimentava le prime versioni di GitHub Copilot). Con una lunghezza del contesto di oltre 8.000 token, i modelli StarCoder possono elaborare più input rispetto a qualsiasi altro LLM aperto, consentendo una vasta gamma di applicazioni interessanti. Ad esempio, utilizzando i modelli StarCoder con una serie di dialoghi, siamo riusciti a farli agire come assistenti tecnici. Inoltre, i modelli possono essere utilizzati per completare automaticamente il codice, apportare modifiche al codice tramite istruzioni e spiegare un frammento di codice in linguaggio naturale. Abbiamo adottato diversi importanti passi verso una sicura distribuzione di un modello aperto, tra cui un migliorato processo di redazione dei dati personali, un nuovo strumento di tracciamento dei diritti di attribuzione e abbiamo reso StarCoder pubblicamente disponibile con una versione migliorata della licenza OpenRAIL. La licenza aggiornata semplifica il processo per le aziende di integrare il modello nei propri prodotti. Crediamo che, grazie alle sue elevate prestazioni, i modelli StarCoder rappresenteranno una solida base per la comunità per utilizzarli e adattarli ai propri casi d’uso e prodotti.

Valutazione

Abbiamo valutato approfonditamente StarCoder e diversi modelli simili in diversi benchmark. Un popolare benchmark di Python è HumanEval, che verifica se il modello è in grado di completare le funzioni in base alla loro firma e docstring. Abbiamo scoperto che sia StarCoder che StarCoderBase superano i modelli più grandi, inclusi PaLM, LaMDA e LLaMA, nonostante siano significativamente più piccoli. Superano anche il modello CodeGen-16B-Mono e il modello code-cushman-001 di OpenAI (12B). Abbiamo anche notato che un caso di fallimento del modello era la produzione di codice come # Soluzione qui, probabilmente perché quel tipo di codice fa parte di un esercizio. Per forzare il modello a generare una soluzione effettiva, abbiamo aggiunto il prompt <nomefile>solutions/solution_1.py\n# Ecco l'implementazione corretta dell'esercizio di codice. Questo ha aumentato significativamente il punteggio di HumanEval di StarCoder dal 34% a oltre il 40%, stabilendo un nuovo risultato state-of-the-art per i modelli aperti. Abbiamo provato lo stesso prompt anche per CodeGen e StarCoderBase, ma non abbiamo osservato molte differenze.

Un aspetto interessante di StarCoder è che è multilingue e quindi l’abbiamo valutato su MultiPL-E, che estende HumanEval a molte altre lingue. Abbiamo osservato che StarCoder eguaglia o supera code-cushman-001 in molte lingue. Su un benchmark di data science chiamato DS-1000, lo batte chiaramente così come tutti gli altri modelli di accesso aperto. Ma vediamo cos’altro il modello può fare oltre al completamento del codice!

Assistente tecnico

Dalle valutazioni approfondite abbiamo scoperto che StarCoder è molto capace di scrivere codice. Ma volevamo anche testare se può essere utilizzato come assistente tecnico, dopo tutto è stato allenato su molta documentazione e problemi su GitHub. Ispirati all’HHH prompt di Anthropic, abbiamo creato un Prompt per l’Assistente Tecnico . Sorprendentemente, solo con il prompt il modello è in grado di agire come assistente tecnico e rispondere a richieste legate alla programmazione!

Dati di allenamento

Il modello è stato allenato su un sottoinsieme di The Stack 1.2. Il dataset è composto solo da codice con licenza permissiva e include un processo di opt-out in modo che i contributori di codice possano rimuovere i propri dati dal dataset (vedi Am I in The Stack). In collaborazione con Toloka, abbiamo rimosso i dati personali identificabili dai dati di allenamento, come nomi, password e indirizzi email.

Su BigCode

BigCode è una collaborazione scientifica aperta guidata congiuntamente da Hugging Face e ServiceNow che lavora allo sviluppo responsabile di grandi modelli di linguaggio per il codice.

Rilasci aggiuntivi

Insieme al modello, stiamo rilasciando una lista di risorse e demo:

  • i pesi del modello, inclusi checkpoint intermedi con licenza OpenRAIL
  • tutto il codice per la preelaborazione dei dati e l’allenamento con licenza Apache 2.0
  • un set completo di strumenti di valutazione per i modelli di codice
  • un nuovo dataset PII per l’allenamento e la valutazione della rimozione dei dati personali identificabili
  • il dataset completamente preelaborato utilizzato per l’allenamento
  • uno strumento di attribuzione del codice per trovare il codice generato nel dataset

Modelli

  • Documento : Un rapporto tecnico su StarCoder.
  • GitHub : Tutto ciò che devi sapere sull’uso o la personalizzazione di StarCoder.
  • StarCoder : StarCoderBase ulteriormente addestrato su Python.
  • StarCoderBase : Addestrato su oltre 80 lingue da The Stack.
  • StarEncoder : Modello di codifica addestrato su TheStack.
  • StarPii : Rilevatore di PII basato su StarEncoder.

Strumenti e Demo

  • StarCoder Chat : Chatta con StarCoder!
  • Estensione di VSCode : Codifica con StarCoder!
  • StarCoder Playground : Scrivi con StarCoder!
  • StarCoder Editor : Modifica con StarCoder!

Dati e Governance

  • StarCoderData : Dataset di pre-Allenamento di StarCoder.
  • Prompt dell’Assistente Tecnico : Con questo prompt puoi trasformare StarCoder in un assistente tecnico.
  • Carta di Governance : Una scheda che illustra la governance del modello.
  • Accordo di licenza di StarCoder : Il modello è concesso in licenza secondo l’accordo di licenza BigCode OpenRAIL-M v1.
  • Ricerca StarCoder : Ricerca full-text del codice nel dataset di pre-Allenamento.
  • Test di adesione a StarCoder : Test estremamente veloce se il codice era presente nel dataset di pre-Allenamento.

Puoi trovare tutte le risorse e i link su huggingface.co/bigcode!