Llama3-SWE-RL: Методика обучения LLM для задач разработки ПО с использованием RL

МЕНЮ


Главная страница
Поиск
Регистрация на сайте
Помощь проекту
Архив новостей

ТЕМЫ


Новости ИИРазработка ИИВнедрение ИИРабота разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика

Авторизация



RSS


RSS новости


SWE-RL (https://arxiv.org/pdf/2502.18449) – техника обучения LLM для задач разработки программного обеспечения с применением обучения с подкреплением на данных открытых репозиториев Github.

Llama3-SWE-RL наделяет навыкам ризонинга, улучшая результаты на задачах вне общего домена кодинга: функциональное программирование, использование библиотек, планирование кода, математические операции и NLP. В отличие от SFT, SWE-RL позволяет модели улучшать свои общие способности рассуждения.

Пайплайн методики состоит из последовательности этапов:

Первый этап - сбор, модерация и агрегирование pull requests из публичных репозиториев Github, разметка и преобразование этого массива в датасет (описание проблемы-контекст кода - "oracle patch")

Oracle patch - это эталонный вариант исправления кода, используемый для обучения и оценки языковых моделей в задачах, связанных с автоматическим решением проблем в программном обеспечении

Второй этап: обучение LLM навыкам генерации кода на основе задачи и контекста, расчет поощрения для RL (тут используют similarity score между инференсом модели и "oracle patch" с использованием difflib.SequenceMatcher. Неверные ответы получают отрицательный reward)

Третий этап: корректировка и оптимизация политики обучения с помощью GPRO.

Тестовая модель Llama3-SWE-RL-70B, обученная на основе Llama-3.3-70B-Instruct с использованием SWE-RL, показала 41.0% solve rate на SWE-bench Verified, это лучший показатель среди моделей среднего размера (<100B) и сопоставимо с результатом GPT-4o.

Прикладная реализация SWE-RL доступна в репозитории проекта (https://github.com/facebookresearch/swe-rl), где разработчиками представлены шаблоны промптов (https://github.com/facebookresearch/swe-rl/blob/main/src/swerl/core/prompts.py) и реализация функции вознаграждения (https://github.com/facebookresearch/swe-rl/blob/main/src/swerl/core/reward.py) на основе сходства последовательностей.

Локальная установка с примером использования в проекте:

# Install SWE-RL  

git clone https://github.com/facebookresearch/swe-rl && cd swe-rl

pip install -e ".[dev]"

pytest

# example on how you can use the reward function in your own project:

import swerl

file = """

def sort_list(lst):

return sorted(lst)

""".strip()

oracle_file = """

def sort_list(lst: list[int]) -> list[int]:

return sorted(lst)

""".strip()

context = {"example.py": file}

oracle = {"example.py": oracle_file}

output = """

<think>

...thoughts by LLM

</think>

<solution>

```python

### example.py

<<<<<<< SEARCH

def sort_list(lst):

=======

def sort_list(lst: list[int]) -> list[int]:

>>>>>>> REPLACE

</solution>

""".strip()

reward, metadata = swerl.core.reward.calculate_search_replace_reward(context, oracle, output)

assert reward == 1.0

print(metadata)

Лицензирование: CC-NC-4.0 License.

Arxiv (https://arxiv.org/pdf/2502.18449)

GitHub (https://github.com/facebookresearch/swe-rl)


Источник: github.com

Комментарии: