OpenDLSS: اجرای مجدد Vulkan از شبکه رندر عصبی DLSS 5 Nvidia
آدرس مقاله: https://github.com/maanHimself/OpenDLSS-NR آدرس نظرات: https://news.ycombinator.com/item?id=49906100 امتیاز: 220 # نظرات: 103
یک پیادهسازی مجدد Vulkan از شبکه رندر عصبی DLSS 5 NVIDIA، دقیقا در مقایسه با نسخه اصلی.
همان شبکه 71 بلوکی Swin / ViT به عنوان DLSS-NR بیلد 310.8.0 که FP8 را روی هسته های تانسور اجرا می کند. واسطه ها نیز مطابقت دارند، نه فقط تصویر نهایی: تمام 75 مرز بلوک، بایت به بایت.
ports/browser-webgpu/ یک پیادهسازی مستقل دوم است: همان بایتها در مرورگر، بدون هستههای تانسور و بدون FP8.
شما وزن ها را به عنوان دایرکتوری مدل در طرحی که در زیر توضیح داده شده است، ارائه می کنید.
یک شبکه U از بلوکهای ترانسفورماتور پنجرهای جابجا شده با یک ViT جهانی در پایین: 71 بلوک در شش سطح ادغام، فعالسازی FP8 (E4M3) با تجمع FP16، 141 مگابایت وزن. این یک شبکه رندر عصبی مولد (اصطلاح NVIDIA) است: فریمی را که موتور قبلا ترسیم کرده بود، دوباره رندر می دهد و جزئیات را از نویز تزریقی ایجاد می کند و تن، ساختار و پوسته را تحت یک تنظیم سبک تنظیم می کند. ورودی و خروجی وضوح یکسانی دارند. ارتقاء دهنده نیست.
پورت WebGPU در 2048x1152، NR در سمت چپ خاموش و در سمت راست روشن است. صحنه: کابوی گرامپس اثر محمد اسماعیل، CC0.
یک فریم رندر شده (پراکسی دامنه دینامیکی پایین آن، سه خط نویز گاوسی، خروجی فریم قبلی بازپخش شده و پنج اسکالر شرطیسازی) و چهار کانال f32 در هر پیکسل تولید میکند: یک RGB باقیمانده و یک لاجیت ترکیبی زمانی. docs/network.md نمودار به طور کامل است. NVIDIA مدل را در گزارش خود، DLSS 5: Generative Neural Rendering (صفحه پروژه) توصیف می کند.
دمو را می توان دوبار کلیک کرد. تمام صحنههای زیر build\scenes را در منوی کشویی صحنه نمایشی فهرست میکند و از اولین صحنه شروع میشود، یا glTF دادهشده در خط فرمان را بارگیری میکند. دایرکتوری مدل --model <dir> است، در غیر اینصورت DLSS5VK_MODEL، else models\nr در کنار این README است. برای رندر، کلیدها، صحنهها و view.json به دمو/README.md مراجعه کنید.
RTX 4070 SUPER، کل شبکه در هر فریم، حداقل بیش از 40 فریم. 241 ارسال در هر وضوح.
GPU به طور متناوب بین دو حالت ساعت تحت بارگذاری پایدار تغییر می کند، بنابراین میانه ها چند درصد بالاتر کار می کنند. حداقل ها را مقایسه کنید
اجرا نشده: DLSS-SR که یک شبکه متفاوت است. مسیر زمانی پیادهسازی میشود، اما در نسخه آزمایشی: خطوط ورودی تاریخچه شبکه و logit ترکیبی در هر پیکسل آن، یک حلقه بازخورد بازپخششده را هدایت میکنند (docs/frame.md). ابزار dlss5vk فریم های منفرد را بدون سابقه اجرا می کند، که همان چیزی است که عکس های مرجع با آن ساخته شده اند.
nr::مدل manifest.json را می خواند: یک آرایه مراحل (هر ورودی: id، فایل مربوط به دایرکتوری، packedByteLength، sha256) و یک آرایه تانسور (هر ورودی: نام، بلوک، لایه، پارامتر، مرحله، stageOffset، byteLength). فایل های مرحله ای وزن های E4M3 را به صورت بایت های بسته بندی شده نگه می دارند. میزبان دوباره آنها را در ماتریس هایی که هسته ها مصرف می کنند، قرار می دهد (src/nr_model.cpp). هیچ چیز در این مخزن چنین دایرکتوری تولید نمی کند.
نمودار شبکه 71 بلوکی 310.8.0 است و هیچ چیز دیگری: مدلی با تعداد بلوک های متفاوت در بارگذاری رد می شود.
برابری با عکسهای ضبطشده نسخه اصلی مقایسه میشود، که بخشی از این مخزن نیستند. فیکسچر یک دایرکتوری با manifest.json است:
همه چیز قبل از اجرای GPU تأیید میشود، و ثابتی که هیچ کدام از آنها را اجرا نمیکند، رد میشود: یک بررسی اعلامشده بدون مرجع، مرجعی که وجود ندارد، کوتاه است یا چیزی در نمودار نام نمیبرد، مرجعی که از چک اعلامشده استفاده نمیکند، یا یک مرز قابل مقایسه (بلوکهای 0-69، پنج انتقال رمزگذار) بدون مرجع یا دلیل. احکام بیت دقیق (گذر)، برابر با علامت صفر (شکست)، در یک کد (فقط ضبط 8 بیتی، گزارش جدا) یا عدم تطابق هستند. به docs/numerics.md مراجعه کنید.
هد و خروجی در برنامه تولید با هم مقایسه میشوند و دوباره ارسال میشوند - زمانهای تکرار (پیشفرض 3)، که همچنین باید با همان نمودار زیر موانع مطابقت داشته باشد. مرزها از یک اجرا ابزاری می آیند که سر آن باید با تولید موافق باشد. تأیید علاوه بر این به ویژگی های ورودی و یک مرجع بلوک 0 نیاز دارد.
همه به طور پیش فرض روی مسیر سریع و دقیق هستند. هر سوئیچ بایت خروجی را یکسان نگه می دارد و برابری زیر هر یک از آنها بخشی از گیت است. هر سوئیچ که یک هسته را به GLSL برمی گرداند، زنجیره شمارنده را نیز خاموش می کند، زیرا فقط هسته های PTX در آن شرکت می کنند.
docs/README.md شاخص است: network.md نمودار، numerics.md قرارداد دقیق، وزنها.md طرحبندی، execution.md زمانبندی، و frame.md قاب نمایشی است.
این پروژه به NVIDIA وابسته، تایید یا پشتیبانی نمی شود. این شامل هیچ نرم افزار NVIDIA، وزن، هدر، یا دستورالعملی برای به دست آوردن آنها نیست. این مخزن یا مجوز آن هیچ حقوقی تحت هیچ یک از مالکیت معنوی NVIDIA اعطا یا ضمنی ندارد و شما مسئول مجوزهایی هستید که برای هر داده مدلی که با آن استفاده می کنید اعمال می شود.
MIT برای همه چیز در این مخزن (LICENSE). اجزای شخص ثالث در NOTICE فهرست شده اند.
متن اصلی (انگلیسی)
OpenDLSS: A Vulkan Reimplementation of Nvidia's DLSS 5 Neural Rendering Network
Article URL: https://github.com/maanHimself/OpenDLSS-NR Comments URL: https://news.ycombinator.com/item?id=49906100 Points: 220 # Comments: 103