Как эффективно выполнять символьные и численные тензорные вычисления в веб-приложении на 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

Будем признательны за любые советы от тех, кто создавал инструменты для научных или символьных вычислений в Интернете.

Вернуться на верх