Разработчики представили решение для автоматического дифференцирования кода на языке Fortran, объединив компилятор LFortran с фреймворком Enzyme. Этот инструмент позволяет вычислять градиенты непосредственно в коде на Fortran, что критически важно для обучения нейронных сетей и оптимизации сложных физических моделей, где требуется высокая производительность и использование существующих научных библиотек без их переписывания на Python или C++.

Интеграция Enzyme с LFortran открывает путь к созданию дифференцируемых симуляций, которые могут быть встроены в современные пайплайны машинного обучения. Традиционно научные вычисления на Fortran были изолированы от экосистемы ИИ из-за отсутствия инструментов автоматического дифференцирования (autodiff). Теперь разработчики могут применять методы градиентного спуска к унаследованному коду, сохраняя при этом скорость выполнения, свойственную компилируемым языкам.

Технология использует возможности Enzyme по анализу графа потока управления на уровне LLVM IR, что позволяет эффективно обрабатывать сложные структуры данных и циклы, характерные для Fortran. Это значительно упрощает интеграцию высокопроизводительных научных расчетов с современными библиотеками глубокого обучения, обеспечивая прямую поддержку дифференцируемого программирования в задачах, требующих интенсивных вычислений.

Ключевые факты

  • LFortran обеспечивает современную инфраструктуру компиляции для языка Fortran, поддерживая трансляцию в LLVM IR.
  • Enzyme выступает в роли высокопроизводительного движка автоматического дифференцирования, работающего на уровне промежуточного представления LLVM.
  • Решение позволяет выполнять обратное распространение ошибки (backpropagation) непосредственно в коде на Fortran без необходимости ручного вывода производных.
  • Инструмент ориентирован на задачи научного машинного обучения (SciML), где требуется сочетание численных методов и нейросетевых архитектур.
  • Подход минимизирует накладные расходы при вычислении градиентов, сохраняя вычислительную эффективность оригинальных алгоритмов.