پرش به محتوای اصلی
پرش به محتوای مقاله

LFortran و Enzyme: انتقال گرادیان‌های دقیق به کدهای قدیمی فیزیک

·۲۳ تیر ۱۴۰۵۲۰ دقیقه مطالعه
ترجمه فارسی مختصر برای متن جایگزین تصویر در مقاله‌ای با عنوان: "Differentiable Fortran with LFortran and Enzyme". حداکثر ۱۲۵
ترجمه فارسی مختصر برای متن جایگزین تصویر در مقاله‌ای با عنوان: "Differentiable Fortran with LFortran and Enzyme". حداکثر ۱۲۵
اشتراک‌گذاری
واقعاً چه چیز جدید است؟

نقل انتقال مشتق‌گیری خودکار (AD) از سطح کد منبع به سطح LLVM IR؛ این کار اجازه می‌دهد هر زبانی که به LLVM کامپایل شود، بدون نیاز به بازنویسی، در محیط‌های PyTorch و JAX مشتق‌پذیر شود.

تصور کنید مجبور باشید هزاران خط کد تاییدشده‌ای را که دهه‌ها در صنایع هوافضا یا هسته‌ای کاربرد داشته، برای استفاده در یک مدل یادگیری ماشین بازنویسی کنید. این کابوس اکنون با حذف نیاز به کدنویسی دستی مشتقات یا پذیرش خطاهای روش‌های تفاضل محدود، به پایان رسیده است.

طبق اعلام تیم Tesseract در ۱۴ ژوئیه ۲۰۲۶، اکنون می‌توان ۹۰۰ مؤلفه گرادیان را از یک حل‌کننده کامپایل‌شده فورترن تنها با یک پیمایش معکوس استخراج کرد، بدون اینکه حتی یک خط کد Adjoint نوشته شود. این زیرساخت، پلی میان چارچوب‌های مدرن مانند JAX و PyTorch و شبیه‌سازی‌های قدیمی فیزیک ایجاد می‌کند.

همان‌طور که در تحلیل‌های قبلی ما درباره امنیت مدل‌های بازمتن دیدیم، تعامل میان لایه‌های قدیمی سخت‌افزاری و نرم‌افزاری همیشه چالش‌برانگیز است. در دنیای فیزیک، کدهای بهینه‌شده در زبان فورترن به دلیل عدم ارائه گرادیان‌ها، برای مدل‌های هوش مصنوعی مانند یک «جعبه سیاه» بودند. مهندسان پیش از این باید بین سه گزینه دشوار انتخاب می‌کردند: ماه‌ها وقت صرف کدنویسی دستی مشتقات کنند، از روش‌های کند و نادقیق تفاضل محدود استفاده کنند، یا ریسک بازنویسی کل کد در JAX را بپذیرند که اغلب منجر به ورود باگ‌های جدید در محاسبات فیزیکی می‌شد.

به گزارش Tesseract، راهکار جدید به جای تغییر در کد منبع، مشتق‌گیری خودکار (Automatic Differentiation) — که شبیه داشتن یک ماشین‌حساب پیشرفته است که می‌داند هر تغییر کوچک در ورودی، چه تأثیری بر خروجی نهایی می‌گذارد — را در سطح نمایش میانی LLVM (LLVM IR) اعمال می‌کند. از آنجا که Enzyme روی LLVM IR عمل می‌کند، می‌تواند هر کدی را که به این فرمت کامپایل شود، از جمله فورترن، C، C++ و Rust، مشتق‌گیری کند.

زنجیره کامپایل

این فرآیند یک حل‌کننده فورترن را در حدود ۳۰ ثانیه به یک کتابخانه مشترک مشتق‌پذیر تبدیل می‌کند:

  • LFortran کد منبع را به LLVM IR تبدیل می‌کند و محاسبات اشاره‌گر (Pointer) تمیزتری نسبت به کامپایلر رسمی Flang ارائه می‌دهد.
  • یک مرحله بهینه‌سازی سبک (-O1) برای پاکسازی IR استفاده می‌شود تا از بروز خطاهای NaN در حالت معکوس جلوگیری شود.
  • یک پوشش (Wrapper) ساده در زبان C، تخصیص حافظه را مدیریت می‌کند.
  • Enzyme کد IR را تحلیل کرده و کد مشتق را سنتز می‌کند؛ در واقع یک مسیر معکوس را به تابع «می‌رواند».
  • در نهایت، بهینه‌سازی --O3 منجر به تولید یک کتابخانه مشترک (.so) با نقاط دسترسی Forward، JVP و VJP می‌شود.

اهمیت LFortran

نقش LFortran در اینجا حیاتی است؛ زیرا آرایه‌ها را به عنوان اشاره‌گرهای ساده می‌بیند. در مقابل، کامپایلر Flang از ساختارهای پیچیده‌ای استفاده می‌کند که ردیابی آن‌ها برای Enzyme دشوار است. با غیرفعال کردن بررسی محدوده آرایه‌ها و انتقال آرایه‌های پیش‌تخصیص‌شده از C، شفافیت IR برای مرحله مشتق‌گیری تضمین می‌شود.

محک دقت و عملکرد

تیم پژوهشی برای تایید نتایج، یک حل‌کننده انتقال حرارت دوبعدی ۲۲۰ خطی را آزمایش کرد. آن‌ها گرادیان‌های Enzyme را با گرادیان‌های تحلیلی مستقل مقایسه کردند.

کامپایلر LFortran و ابزار Enzyme برای مشتق‌گیری خودکار در Fortran.

بر اساس نتایج، Enzyme گرادیان را با دقت تقریباً ۱۱ رقم معنادار (خطای نسبی ۶e-۱۲) بازتولید کرد. در مقابل، روش‌های تفاضل محدود (FD) حتی با بهینه‌ترین گام‌ها، در سطح 1e-10 متوقف شدند و در موارد نادر خطاهایی تا 1e-2 داشتند. یک فراخوانی VJP، گرادیان‌ها را با هزینه‌ای معادل دو بار اجرای مستقیم (Forward pass) فراهم کرد که برای مسئله‌ای با ۹۰۰ پارامتر، یعنی شتابی ۴۵۰ برابری نسبت به تفاضل محدود است.

ادغام با JAX

برای کاربردی کردن این نتایج، Tesseract کتابخانه کامپایل‌شده را در قالب یک Primitive در JAX بسته‌بندی می‌کند. با استفاده از تابع apply_tesseract و از طریق یک مرز HTTP، مدل هوش مصنوعی زاینده (Generative AI) — مانند کتابخانه‌داری که میلیاردها صفحه را خوانده و حالا با همان لحن جواب می‌دهد — می‌تواند دستورات jax.value_and_grad را مستقیماً به کدهای تولیدشده توسط Enzyme ارسال کند.

کاربرد: جرم‌شناسی حرارتی

این سیستم در یک مسئله معکوس به کار گرفته شد: بازسازی یک میدان دمایی با ۹۰۰ المان، تنها بر اساس ۱ hundred سنسور نویزی که ۵ ثانیه پس از یک رویداد گرمایشی داده جمع کرده بودند.

ترجمه فارسی مختصر برای متن جایگزین تصویر در مقاله‌ای با عنوان: "Differentiable Fortran with LFortran and Enzyme". حداکثر ۱۲۵

با استفاده از بهینه‌ساز SciPy L-BFGS-B که توسط گرادیان‌های Enzyme هدایت می‌شد، سیستم توانست دو نقطه داغ گوسی را شناسایی کند. بازسازی نهایی به ضریب همبستگی ۰.۹۸ با میدان واقعی رسید و ثابت کرد که گرادیان‌ها می‌توانند از فورترن کامپایل‌شده، عبور کرده و به یک بهینه‌ساز استاندارد برسند.

این معماری امکان ترکیب‌پذیری فوق‌العاده‌ای فراهم می‌کند. کاربر می‌تواند یک حل‌کننده CFD در فورترن را مستقیماً به یک شبکه عصبی در JAX متصل کند. هر جزء با ابزار مشتق‌گیری بومی خود عمل کرده و Tesseract قطعات را به هم می‌دوزد.

با این حال، نویسندگان هشدار می‌دهند که این روش هنوز آزمایشی است. LFortran در حال تکامل است و کدهای صنعتی بزرگ ممکن است در مدیریت حافظه با مشکل مواجه شوند؛ زیرا مشتق‌گیری حالت معکوس، مقادیر میانی را ذخیره می‌کند و در مسائل با بردارهای حالت عظیم و هزاران گام زمانی، حافظه را به سرعت مصرف می‌کند، هرچند یادداشت‌های Checkpointing در Enzyme می‌توانند این مشکل را کاهش دهند.

این رویکرد «سد بازنویسی» در محاسبات علمی را می‌شکند و به مهندسان اجازه می‌دهد حل‌کننده‌های تاییدشده قدیمی خود را حفظ کرده و هم‌زمان از قدرت بهینه‌سازی مشتق‌گیری خودکار مدرن بهره ببرند.

گام بعدی شما

  • اگر از شبیه‌سازهای قدیمی (Legacy) در پروژه‌های ML استفاده می‌کنید، مستندات Enzyme را برای جایگزینی تفاضل محدود بررسی کنید.
  • برای کاهش مصرف حافظه در مسائل مقیاس‌بزرگ، مکانیسم Checkpointing در Enzyme را به طور ویژه مطالعه کنید.
  • ترکیب مدل‌های فیزیکی با شبکه‌های عصبی (Physics-Informed ML) را با استفاده از لایه‌های مشتق‌پذیر فورترن آزمایش کنید.

اما پیچیدگی‌های مدیریت حافظه در این سطح از کامپایل، داستان دیگری دارد — به تحلیل ما درباره بهینه‌سازی استنتاج در مدل‌های عظیم مراجعه کنید.

چرا این موضوع مهم است؟

این رویکرد با استفاده از تخصص در سطح کامپایلر، ریسک خطاهای انسانی در بازنویسی کدهای حساس (مانند هوافضا) را حذف می‌کند. اعتماد به نتایج شبیه‌سازی‌ها اکنون با سرعت عملیاتی بهینه‌سازهای مدرن جفت شده است.

تأثیر برای ایران

این ابزار برای پژوهشگران محاسباتی و مهندسین مکانیک و برق در ایران که با کدهای قدیمی Fortran در مراکز پژوهشی سروکار دارند، فرصتی برای ادغام شبیه‌سازی‌های دقیق با هوش مصنوعی است.

·نگاه ما
تحریریه دات‌هوش

این دستاورد نشان می‌دهد که آینده محاسبات علمی نه در بازنویسی کدهای قدیمی به زبان‌های مدرن، بلکه در ساخت لایه‌های میان‌افزاری است که مفاهیم ریاضی مدرن را به کدهای بهینه قدیمی تزریق کند. با این روش، «اعتبار» کدهای قدیمی فیزیک با «انعطاف» یادگیری ماشین ترکیب می‌شود و نیاز به انتخاب بین دقت فیزیکی و سرعت بهینه‌سازی از بین می‌رود.

منابع

این گزارش با خط‌لولهٔ خودکار دات‌هوش از منابع معتبر جهانی تدوین و زیر نظر تحریریه منتشر شده است. روش کار ما

گفتگو

پنج‌شنبه‌های هوش‌محور

بسته‌ی هفتگی دات‌هوش

۵ خبر، ۲ ابزار، ۱ پرامپت در هر شماره. به‌زودی راه‌اندازی می‌شود — هر پنج‌شنبه صبح.

خبر کلیدی
ابزار کاربردی
پرامپت حرفه‌ای
تحلیل پژوهش
به‌زودی
زاویه‌ی ایرانی
به‌زودی
تمرین این هفته
به‌زودی

راهنماهای دات‌هوش

راهنماهای کاربردیِ دات‌هوش برای کار با هوش مصنوعی — از همین‌جا شروع کنید:

دات‌هوش

راهنمای فارسی هوش مصنوعی — با نگاه به ایران

اخبار روزانه، معرفی ابزارها و مدل‌ها، و آموزشِ کار با هوش مصنوعی؛ همیشه با این پرسش که از ایران چه چیزی کار می‌کند و چه چیزی نه.