Внутри StarCoder: Новая LLM с открытым исходным кодом, способная генерировать код на более чем 80 языках программирования

Новый проект является частью инициативы BigCode от компаний Hugging Face и ServiceNow.

Внутри StarCoder: Новая LLM с открытым исходным кодом, способная генерировать код на более чем 80 языках программирования

Кодирование – одно из самых интересных применений современных больших языковых моделей (LLM). Программирование – это проблема, значительно более сложная, чем другие языковые задачи, поскольку она включает в себя различные формы рассуждений. Однако за последние несколько лет прогресс в этой области был хорошо заметен.

GitHub CoPilot стал золотым стандартом применения ИИ в программировании, но он, конечно, не единственный. Amazon недавно вступила в гонку с Code Whisperer. Salesforce была очень активна в этой области с такими решениями, как CodeGen. Большинство из этих решений оставались закрытыми источниками. Недавно компании Hugging Face и ServiceNow анонсировали StarCoder, новый LLM с открытым исходным кодом для кодирования, который соответствует производительности GPT-4. StarCoder является частью более крупного сотрудничества, известного как проект BigCode.

Проект BigCode был инициирован как открытая научная инициатива с целью ответственной разработки LLM для кода. Компании Hugging Face и ServiceNow совместно курируют BigCode, который объединил более 600 участников из широкого круга академических учреждений и промышленных лабораторий. В сообщество входят различные рабочие группы, которые занимаются такими темами, как сбор наборов данных, внедрение методов быстрого вывода, создание набора оценок и разработка этических норм для этих моделей. Ранее сообщество выпустило The Stack – набор данных объемом 6,4 ТБ, содержащий разрешенный лицензионный исходный код на 384 языках программирования, который в версии v1.2 включает 54 ГБ проблем на GitHub и метаданные на уровне репозитория. Чтобы помочь разработчикам определить, включен ли их исходный код в набор данных, The Stack поставляется с “Am I in The Stack”, инструментом управления и процессом отказа от участия для тех, кто хочет, чтобы их код был удален. В декабре 2022 года сообщество также выпустило SantaCoder, модель с параметрами 1,1B, которая превосходит код на Java, JavaScript и Python из The Stack.

StarCoder
В техническом отчете описываются усилия, предпринятые для разработки StarCoder и StarCoderBase, двух моделей с параметрами 15,5 ББ, обученных на разрешенных лицензионных данных из The Stack. StarCoder-Base была обучена на более чем 1 триллионе лексем, полученных из более чем 80 языков программирования, выпусков GitHub, коммитов Git и блокнотов Jupyter. StarCoderBase была доработана на дополнительных 35 миллиардах токенов Python, в результате чего была создана модель StarCoder. Обе модели StarCoder используют инновационные архитектурные особенности, такие как длина контекста 8K, возможность заполнения с помощью Fill-in-the-Middle (FIM) и быстрый вывод большого количества данных с помощью Multi-Query-Attention (MQA). Технический отчет содержит всестороннюю оценку моделей StarCoder и включает демонстрацию с интегрированным инструментом атрибуции, который помогает пользователям идентифицировать поколения моделей, которые могли быть скопированы из обучающего набора.

Архитектура
Архитектурно StarCoder – это модель с 15,5B параметрами, обученная по той же архитектуре, что и SantaCoder. Это преобразователь только для декодера, который включает в себя Fill-in-the-Middle, Multi-Query-Attention и выученные абсолютные позиционные вкрапления. Для каждого обучающего документа FIM использовался как случайное преобразование входной последовательности, разделяя документ случайным образом на три секции: префикс, середину и суффикс. Каждому разделу присваивался маркер, а затем документ перестраивался таким образом, чтобы средний раздел оказался в конце последовательности. Цель обучения с авторегрессией осталась неизменной. Использовался FIM на уровне контекста, а преобразования применялись на уровне символов.

Было реализовано архитектурное изменение трансформатора, известное как Multi Query Attention (MQA), при котором вкрапления ключей и значений разделяются между головками внимания. Это изменение снижает требования к пропускной способности памяти во время генерации и приводит к более быстрому выводу по сравнению с многоголовочным вниманием (MHA).

Для ускорения вычислений внимания и уменьшения занимаемой памяти использовался FlashAttention, что позволило масштабировать его до длины контекста 8K. Во время обучения ключ и значение просто расширялись перед вызовом ядра внимания, чтобы FlashAttention функционировал вместе с MQA.

Оценка
Всесторонняя оценка StarCoder и различных аналогичных моделей была проведена с помощью ряда эталонов. Одним из часто используемых эталонов Python является HumanEval, который оценивает, может ли модель завершить функции на основе их сигнатуры и doc-строки. Было обнаружено, что StarCoder и StarCoderBase превосходят самые крупные модели, такие как PaLM, LaMDA и LLaMA, несмотря на их значительно меньший размер.

Внутри StarCoder: Новая LLM с открытым исходным кодом, способная генерировать код на более чем 80 языках программирования

Использование StarCoder
StarCoder интегрирован в библиотеку трансформеров Hugging Face. Опыт использования модели упрощен до нескольких строк кода:

from transformers import AutoModelForCausalLM, AutoTokenizer

checkpoint = "bigcode/starcoder"
device = "cuda" # for GPU usage or "cpu" for CPU usage

tokenizer = AutoTokenizer.from_pretrained(checkpoint)
# to save memory consider using fp16 or bf16 by specifying torch.dtype=torch.float16 for example
model = AutoModelForCausalLM.from_pretrained(checkpoint).to(device)

inputs = tokenizer.encode("def print_hello_world():", return_tensors="pt").to(device)
outputs = model.generate(inputs)
print(tokenizer.decode(outputs[0]))

Кроме того, модель легко поддается тонкой настройке.

Инструменты
Вместе с моделью Hugging Face и ServiceNow выпустили ряд инструментов, которые упрощают ее внедрение.

Tech Assistant Prompt – это инструмент, оптимизированный для помощи разработчикам в решении задач, связанных с программированием. Аналогично, StarCoder Playground позволяет разработчикам генерировать фрагменты кода на основе естественного языка. Режим включает расширение VSCode Extension, которое позволяет интегрировать его в традиционные конвейеры разработки. Чат StarCoder Chat позволяет общаться на темы, связанные с программированием.

StarCoder – это одна из самых полных моделей основ кодирования, когда-либо созданных, и она определенно может бросить вызов GPT-4.

+1
1
+1
0
+1
0
+1
0
+1
0

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *