01 Что такое Genie? Что он может делать?
Подобно Devin, Genie также может самостоятельно выполнять различные задачи кодирования под руководством инженеров-людей, включая исправление ошибок, создание функций, рефакторинг кода и проверку кода с помощью комплексного тестирования.
Помимо автономной работы, Genie также может сотрудничать с пользователями.
В настоящее время Genie находится на стадии внутреннего тестирования, и вы можете подать заявку на пробное использование после регистрации информации на официальном сайте.
Cosine утверждает, что Genie может имитировать когнитивные процессы инженеров-людей.
Pullen объясняет в своем блоге: "Моя идея была проста: позволить ему наблюдать, как инженеры-люди выполняют работу, и имитировать этот процесс".
Код, сгенерированный Genie, хранится в репозитории GitHub пользователя, что означает, что Cosine не сохраняет копии и не несет никаких связанных с этим рисков безопасности.
Кроме того, программная платформа Cosine интегрирована со Slack и системными уведомлениями, что позволяет ей, как и человеческим коллегам, использовать системные уведомления для оповещения пользователей, задавания вопросов или отметки проблем.
"Genie также может задавать пользователям уточняющие вопросы и отвечать на комментарии/мнения о созданных им запросах на слияние (Pull Requests)".
Pullen говорит: "Мы пытаемся сделать так, чтобы Genie вел себя как коллега, поэтому логично, чтобы модель использовала те же каналы, что и коллеги".
Сотрудничество с OpenAI, использование новейшего GPT-4o
В отличие от многих моделей, которые полагаются на базовые модели с небольшим количеством инструментов, Genie был разработан с помощью проприетарного процесса, включающего обучение и тонкую настройку моделей от OpenAI.
Когда Genie только начинал разрабатываться, он мог основываться только на моделях с относительно небольшим контекстным окном в диапазоне 16-32k токенов.
В ходе ранних исследований команда обнаружила, что даже с использованием больших наборов данных объемом более 100 миллионов токенов, преимуществами архитектурного дизайна и различными методами сжатия/разбиения, они все еще ограничены объемом информации, которую модель может выразить в определенный момент времени. Единственным решением было использование моделей с большим контекстным окном.
К счастью, вскоре после этого они получили доступ к модели OpenAI с длинным контекстом, что стало прорывом в возможностях Genie.
Pullen рассказал VentureBeat: "Genie (в настоящее время) является неуниверсальным вариантом GPT-4o, к которому OpenAI предоставила нам доступ и разрешила использовать их модель для обучения в рамках экспериментальной программы".
"Модель показала хорошие результаты, и мы поделились своими выводами с командой по тонкой настройке OpenAI и руководством инженерного отдела. Это стало для нас настоящим поворотным моментом, так как убедило их вложить ресурсы и внимание в нашу новую технологию".
Хотя Cosine не указывает конкретную модель, OpenAI недавно объявила об ограниченной доступности модели GPT-4o с длинным выходным контекстом, длина которого может достигать 64k токенов, что в 16 раз больше по сравнению с первоначальными 4k.
Ключевое значение имеют обучающие данные
Pullen пишет в техническом отчете, что в недавних обучающих запусках Genie был обучен на десятках миллиардов токенов данных, комбинация которых была выбрана таким образом, чтобы модель была максимально компетентна в языках, которые больше всего интересуют текущих пользователей.
В техническом отчете Genie перечислены 15 языков, включенных в обучающие данные, в том числе популярные языки, такие как Java, JS, C, C++, C#, Rust, Python, а также часто используемые Scala, Kotlin, Swift, PHP и другие.
Среди них JavaScript, Python, TypeScript и TSX составляют наибольшую долю в наборе данных, а остальные - по 3%.
В блоге Cosine говорится, что команда потратила почти год на сбор набора данных, включая большое количество действий по разработке программного обеспечения от реальных инженеров.
Получить и эффективно использовать эти данные было чрезвычайно сложно, потому что по сути этих данных не существовало.
Их конвейер данных начинается с отслеживания траекторий разработки инженеров-программистов, сбора данных из запросов на слияние, коммитов, проблем из репозиториев OSS (с лицензией MIT) и т.д.
Затем эти данные проходят через конвейер, чтобы судебно-медицинским способом извлечь процесс рассуждений и воссоздать, как люди пришли к окончательным выводам.
Этот проприетарный набор данных стал основой для обучения первой версии модели, а остальная работа была выполнена с помощью самоигры и самосовершенствования.
Цикл автономности Genie состоит из четырех основных процессов: планирования, поиска, написания кода и выполнения кода. Сами по себе они не новы, но поскольку Genie обучен выполнять задачи как человек, они были значительно улучшены.
"Влияние разметки данных нельзя недооценивать, получить высококачественные данные от компетентных инженеров-программистов очень сложно, но результат того стоит, так как это дает нам представление о том, как разработчики думают о решении проблем, что не так легко заметить".
Этот набор данных не только отражает идеальную информационную последовательность и постепенное открытие знаний, но и фиксирует процесс постепенного принятия решений инженерами-людьми.
Pullen утверждает: "Обучая нашу модель на этом наборе данных, а не просто подсказывая базовой модели (что делают другие), мы обнаружили, что больше не просто случайно генерируем код, а решаем проблемы как люди".
Результаты базовой оценки
В процессе разработки модели команда в основном использовала два эталона для оценки - SWE-Bench и HumanEval.
Первый охватывает более широкий спектр проблем, включая декомпозицию проблем, поиск соответствующего кода, классификацию кода и реализацию жизнеспособных решений; второй больше сосредоточен на написании кода, не включает аспекты поиска и меньше внимания уделяет пониманию проблем.
Однако в официальном блоге раскрыты только оценки SWE-Bench, где Genie получил 30,08% в SWE-Bench и 50,67% в SWE-Lite.
Результаты Genie в SWE-Bench особенно впечатляющие: это самый высокий балл на сегодняшний день, более чем на 10% выше, чем у второго места с 19,27%.
Кроме того, команда отдельно тестировала способность модели к поиску информации, особенно способность находить нужные части файлов с кодом.
Это один из ключевых компонентов AI-инженера - если модель не может надежно и умело находить правильный код для редактирования, то способность редактировать код не может быть полностью реализована.
Предполагая, что модель всегда находит правильный код, можно просто измерить способность поиска, посмотрев, сколько строк кода модель ищет для выполнения задачи и сколько строк кода она фактически находит.
В тесте Genie успешно нашел 91 475 нужных строк кода из 142 338, получив оценку 64,27%. Здесь явно есть большой потенциал для улучшения, и способность поиска - это аспект, которому уделяется меньше внимания по сравнению со способностью декомпозиции проблем.
02 Поддержка YC, команда во главе с китайским выпускником Оксфорда
Cosine была основана через известный стартап-акселератор Y Combinator в Кремниевой долине.
Компания является лабораторией человеческого мышления, ориентированной на изучение и систематизацию того, как люди выполняют задачи, с целью научить искусственный интеллект имитировать, совершенствовать и расширять эти задачи.
В 2022 году Alistair Pullen, Sam Stenner и Yang Li совместно основали Cosine, позиционируя ее как лабораторию человеческого мышления.
Начиная с области разработки программного обеспечения, они надеются изучить и систематизировать способы выполнения задач людьми, чтобы научить ИИ имитировать, совершенствовать и расширять эти задачи, продвигая развитие интеллекта.
Cosine уже