Официальная реализация генерации кодов на основе выполнения с использованием обучения глубокому подкреплению
Использование моделей языка программирования (PL), предварительно подготовленных на крупномасштабных кодах, в качестве средства автоматизации процессов разработки программного обеспечения, продемонстрировало значительный потенциал в оптимизации различных задач генерации кода, таких как завершение кода, перевод кода и синтез программ. Тем не менее, текущие подходы в основном полагаются на контролируемые цели точно настройки, заимствованные из генерации текста, пренебрегая конкретными функциями кода на уровне последовательности, включая, помимо прочего, компилируемость, а также синтаксическую и функциональную правильность. Чтобы учесть это ограничение, мы предлагаем PpoCoder , новую структуру для генерации кода, которая объединяет предварительно подготовленные модели PL с глубоким обучением для оптимизации политики (PPO) и использует обратную связь с выполнением в качестве внешнего источника знаний в оптимизации модели. PPOCODER можно переносить по разным задачам генерации кода и PLS.

Обзор PPOCODER с моделями актера и критиков : действие отображается из политики на основе заданных исходных данных
Чтобы запустить код, установите зависимости в требованиях.txt.
pip install -r requirements.txt
Мы определяем/оцениваем модели на следующих основных показателях набора данных для различных задач генерации кода:
Мы предварительно обрабатываем данные и строим последовательности ввода/вывода так же, как и в исходных эталонных бумагах. Разанипируйте и поместите все тесты в папку data .
Мы создали сценарий run.sh для выполнения точной настройки PPO на основе PPO на основе сигнала компилятора. Чтобы запустить скрипт для различных задач генерации кода, настройте следующие параметры:
| Параметры | Описание | Пример значений |
|---|---|---|
l1 | Исходный язык | Ява |
l2 | Целевой язык | CPP |
asp | Размер пространства действия | 5 |
ns | Количество синтетических образцов | 10 |
data_path | Путь к исходным образцам данных | data/xlcost/java-cpp/ |
output_path | Путь для сохранения поколений и выходов | saved_results/java-cpp/ |
baseline_output_dir | Путь к базовому скотоводному кодексу5 (до RL) выходов | Базовые линии/saved_models/java-cpp/ |
load_model_path | Путь к базовой модели Codetuned Codet5 (до RL) для каждой нижней задачи | Базовые линии/сохранение_моделей/java-cpp/pytorch_model.bin |
max_source_length | Maxmim Drowe | 400 |
max_target_length | MAXMIM ЦЕЛЕЙ ДЛИНА | 400 |
train_batch_size | Обучающий размер партии | 32 |
test_batch_size | Тестирование размера партии | 48 |
lr | Скорость обучения | 1e-6 |
kl_coef | Первоначальный коэффициент штрафа о дивергенции KL в награде | 0,1 |
kl_target | Цель KL, которая адаптивно контролирует коэффициент KL | 1 |
vf_coef | Коэффициент ошибки VF в потере PPO | 1E-3 |
run | Индекс прогона | 1 |
Run run.sh сохраняет сгенерированные программы в файле .txt и веса модели в конце каждой эпохи.
Если вы найдете бумагу или репо полезно
@Article {shojaee2023ppocoder,
title = {генерация кода на основе выполнения с использованием обучения глубоким подкреплением},
Автор = {Shojaee, Parshin и Jain, Aneesh и Tipirneni, Sindhu и Reddy, Chandan K},
Journal = {arxiv Preprint arxiv: 2301.13816},
Год = {2023}
}