Как эффективно выполнять символьные и численные тензорные вычисления в веб-приложении на Python с помощью Django и SymPy
Я создаю научный веб-инструмент, который позволяет пользователям вводить пользовательские метрики пространства-времени и вычислять геометрические величины из общей теории относительности - включая символы Кристоффеля, тензоры Риччи, Эйнштейна и Вейля.
Бэкэнд построен на Python с помощью Django, а для символьных вычислений я использую SymPy. Я также работаю над отдельным модулем на языке C для визуализации трассировки лучей в искривленном пространстве-времени, который может быть вызван через привязки позже.
На данный момент фронтенд готов и развернут, но бэкенд (который обрабатывает тяжелые символьные вычисления) пока не размещен из-за ограничений по стоимости. Я хотел бы понять, какую архитектуру и стратегии оптимизации лучше выбрать, когда я размещу его на хостинге.
Мои основные задачи:
Производительность: SymPy может стать медленным при работе со сложными метриками. Существуют ли какие-либо лучшие практики для кэширования или оптимизации повторяющихся тензорных вычислений?
Развертывание: Порекомендуете ли вы такие платформы, как Render, Fly.io или Railway, для Django-приложений с более высокой символьной нагрузкой?
Существует ли лучший подход к разделению символьной и числовой частей, чтобы сделать их более эффективными/масштабируемыми?
Есть ли опасения по поводу безопасности при открытии публичного доступа к обработке символьного ввода?
Это часть открытого проекта, над которым я работаю в одиночку. Вот версия фронтенда: https://itensor.online. Доки: https://itensor-docs.com. Бэкэнд исходников: https://github.com/Klaudiusz321/Tensor-backend-calculator
Будем признательны за любые советы от тех, кто создавал инструменты для научных или символьных вычислений в Интернете.