StarCoder — это state-of-the-art метод для исправления и генерации кода с помощью нейронных сетей от сообщества исследователей The BigCode, MIT, университета Пенсильвании и Колумбийского университета. StarCoder отличается от предыдущих моделей, таких как PaLM, LaMDA, LLaMA и OpenAI code-cushman-001 улучшением показателей качества и производительности. StarCoder работает с 86 языками программирования, такими как Python, C++, Java, Kotlin, PHP, Ruby, TypeScript и другими. В список не включен язык Swift «из-за человеческой ошибки» при составлении списка. Код модели, данные для обучения и параметры для запуска модели выложены в открытом доступе на Github.
StarCoder — это дообученная модель SantaCoder от тех же авторов. Потестировать генерацию кода моделью можно в песочнице.
Обучение Starcoder
Исследователи представили две модели:
- StarcoderBase — компактная модель обученная на 86 языках программирования, предназначенная только для исправления ошибок.
- Starcoder генерирует новый код и исправляет ошибки в существующем коде, была дообучена на 35 миллиардах Python-токенов.
Модель с 15,5 миллиардами параметров представляет собой дообученный SantaCoder на основе Transformer (только с декодером), содержащим Fill-in-the-Middle и MultiQuery механизмом внимания.
Обучение модели проводилось на датасете The Stack 1.2, он содержит более 6 ТБ файлов исходного кода из открытых репозиториев Github, охватывающих 358 языков программирования, из которых были отобраны 86 языков с достаточным количеством данных для обучения. Код из репозиториев был очищен и обезличен: удалены e-mail адреса, имена и пароли.
Оценка результатов модели
StarCoder была оценена на нескольких метриках, включая HumanEval и MBPP. В сравнении с предыдущими моделями продемонстрировано значительное улучшение в точности исправления и генерации кода на языках Python и Java.