Авторегресійні гіганти, такі як GPT-4 та Claude, видають код токен за токеном, рухаючись по файлу зліва направо. Вони добре справляються з короткими фрагментами, але пасують, коли розробнику потрібно відредагувати рядок, заглиблений глибоко в великій кодовій базі. Модель має переоцінювати кожен наступний токен, і підтримання цілісності всього файлу стає справжнім кошмаром.
Дифузійні моделі починають із хмари випадкових токенів і ітеративно усувають шум, доки не з'явиться зв'язна програма. Оскільки процес уточнення охоплює всю послідовність одночасно, модель може вставляти, видаляти або переписувати будь-яку частину коду без перерахунку решти послідовності.
Чому поточна парадигма має труднощі з розробкою програмного забезпечення
Авторегресія змушує модель сприймати код як лінійний потік, що означає:
- Дивиться лише назад. Вона ніколи не бачить майбутніх токенів, тому не може передбачити, як зміна вплине на наступні рядки.
- Перераховує наступний текст. Одне редагування запускає каскад нових передбачень, збільшуючи затримку під час рефакторингу або виправлення помилок.
- Накопичує помилки на великих відстанях. Початкові невідповідності накопичуються як снігова куля, залишаючи фінальний файл синтаксично неправильним або логічно несумісним.
Коли вам потрібно виконати infill — вставити тіло функції посеред файлу або оновити сигнатуру API — послідовна природа авторегресійних моделей здається незграбною та схильною до помилок.
Дифузійна альтернатива: ітеративне уточнення, а не покрокове передбачення
Ми розглядаємо файл коду як зашумлений сигнал. Генерація відбувається в кілька етапів:
- Ініціалізація чистим шумом. Ми подаємо моделі послідовність випадкових токенів, які часто представлені спеціальним плейсхолдером.
- Поступове усунення шуму. На кожному кроці модель передбачає трохи чистішу версію, спрямовуючи токени до правдоподібного коду.
- Збіжність до готової програми. Після фіксованої кількості кроків шум зникає, залишаючи повністю сформований фрагмент.
Оскільки кожен крок переглядає всю послідовність, модель може підправити будь-який токен на будь-якому етапі. Такий глобальний погляд дозволяє їй додати відсутній імпорт, перейменувати змінну або змінити відступи блоку без
- Гібридні пайплайни. Майбутні системи можуть дозволити авторегресійній моделі створювати швидкий чернетковий варіант, який потім передається дифузійній моделі для шліфування.
- Інструментарій для структурних масок. Дослідники продовжують вдосконалювати маски уваги, що враховують синтаксис, щоб допомогти дифузійним моделям дотримуватися специфічних для мови обмежень.
Основні висновки
Дифузійні моделі докорінно змінюють підхід до генерації коду: замість покрокового просування токен за токеном, вони виліплюють цілу програму шляхом ітеративного усунення шуму. Цей підхід усуває головну слабкість авторегресійних систем — підтримання глобальної узгодженості у великих, мінливих кодових базах. Хоча дифузія є повільнішою та ресурсомісткішою, вона пропонує переконливий інструмент для рефакторингу, виправлення помилок та будь-яких сценаріїв, де чистий, синтаксично правильний результат важливіший за чисту швидкість. Найбільш перспективним шляхом розвитку видається гібридний робочий процес, що поєднує швидкість створення чернеток авторегресії з можливостями цілісного шліфування дифузії.
