Suicide
07.10.2020, 20:06
Инженеры из Facebook опубликовали транскомпилятор TransCoder (https://github.com/facebookresearch/TransCoder), использующий методы машинного обучения для преобразования исходных текстов с одного высокоуровневого языка программирования на другой. В настоящее время предоставлена поддержка трансляции кода между языками Java, C++ и Python. Например, TransCoder позволяет преобразовать исходные тексты на Java в код на Python, а код на Python в исходные тексты на Java. Наработки проекта реализуют на практике теоретические изыскания (https://arxiv.org/pdf/2006.03511.pdf) по созданию нейронной сети для эффективной автоматической транскомпиляции кода и распространяются (https://github.com/facebookresearch/TransCoder) под лицензией Creative Commons Attribution-NonCommercial 4.0, разрешающей применение только для некоммерческих целей.
Реализация системы машинного обучения построена на базе Pytorch. Для загрузки предложены две готовые модели: первая (https://dl.fbaipublicfiles.com/transcoder/model_1.pth) для трансляции C++ в Java, Java в C++ и Java в Python, а вторая (https://dl.fbaipublicfiles.com/transcoder/model_2.pth) для трансляции C++ в Python, Python в C++ и Python в Java. Для обучения моделей использовалась исходные тексты проектов, размещённых на GitHub. При желании модели трансляции могут быть созданы и для других языков программирования. Для проверки качества трансляции подготовлена коллекция unit-тестов, а также тестовый набор, включающий 852 параллельных функции.
Утверждается, что по точности преобразования TransCoder значительно превосходит коммерческие трансляторы, использующие методы на основе правил преобразования, и в процессе работы позволяет обойтись без экспертной оценки знатоков исходного и целевого языка. Большую часть ошибок, возникающий при работе модели, удаётся устранить через добавление простых ограничений в декодировщик, позволяющих гарантировать, что генерируемые функции будут синтаксически корректны.
https://www.opennet.ru/opennews/pics_base/0_1601986157.png (https://arxiv.org/pdf/2006.03511.pdf)
Исследователями использована архитектура нейронной сети "Transformer" для моделирования последовательностей, в которой рекуррентность заменена "вниманием (https://towardsdatascience.com/sequence-2-sequence-model-with-attention-mechanism-9e9ca2a613a)" (seq2seq model with attention), что позволяет избавиться от некоторых зависимостей в вычислительном графе и распараллелить то, что раньше не поддавалось распараллеливанию. Для всех поддерживаемых языков применяется единая общая модель, при тренировке которой используются три принципа - инициализация, моделирование языка и обратный перевод.
https://www.opennet.ru/opennews/pics_base/0_1601987802.png (https://camo.githubusercontent.com/c8fff63f269d473859e430068af39034b7991252/68747470733a2f2f646c2e666261697075626c696366696c65 732e636f6d2f7472616e73636f6465722f5472616e73436f64 65725f536368656d612e6a7067)
06.10.2020
https://www.opennet.ru/opennews/art.shtml?num=53839
Реализация системы машинного обучения построена на базе Pytorch. Для загрузки предложены две готовые модели: первая (https://dl.fbaipublicfiles.com/transcoder/model_1.pth) для трансляции C++ в Java, Java в C++ и Java в Python, а вторая (https://dl.fbaipublicfiles.com/transcoder/model_2.pth) для трансляции C++ в Python, Python в C++ и Python в Java. Для обучения моделей использовалась исходные тексты проектов, размещённых на GitHub. При желании модели трансляции могут быть созданы и для других языков программирования. Для проверки качества трансляции подготовлена коллекция unit-тестов, а также тестовый набор, включающий 852 параллельных функции.
Утверждается, что по точности преобразования TransCoder значительно превосходит коммерческие трансляторы, использующие методы на основе правил преобразования, и в процессе работы позволяет обойтись без экспертной оценки знатоков исходного и целевого языка. Большую часть ошибок, возникающий при работе модели, удаётся устранить через добавление простых ограничений в декодировщик, позволяющих гарантировать, что генерируемые функции будут синтаксически корректны.
https://www.opennet.ru/opennews/pics_base/0_1601986157.png (https://arxiv.org/pdf/2006.03511.pdf)
Исследователями использована архитектура нейронной сети "Transformer" для моделирования последовательностей, в которой рекуррентность заменена "вниманием (https://towardsdatascience.com/sequence-2-sequence-model-with-attention-mechanism-9e9ca2a613a)" (seq2seq model with attention), что позволяет избавиться от некоторых зависимостей в вычислительном графе и распараллелить то, что раньше не поддавалось распараллеливанию. Для всех поддерживаемых языков применяется единая общая модель, при тренировке которой используются три принципа - инициализация, моделирование языка и обратный перевод.
https://www.opennet.ru/opennews/pics_base/0_1601987802.png (https://camo.githubusercontent.com/c8fff63f269d473859e430068af39034b7991252/68747470733a2f2f646c2e666261697075626c696366696c65 732e636f6d2f7472616e73636f6465722f5472616e73436f64 65725f536368656d612e6a7067)
06.10.2020
https://www.opennet.ru/opennews/art.shtml?num=53839