چگونه بافرهای باینری مسطح مانع اجرای کد مخرب در مدلهای هوش مصنوعی شده و بارگذاری بدون کپی را ممکن میکنند
جایگزینی قالبهای سریالیسازی قابلاجرا با آرایههای بایتی مسطح و سرایندهای JSON، خطرات اجرای کد از راه دور را در یادگیری ماشین خنثی کرده است. این معماری نوین همچنین به سیستمهای عامل اجازه میدهد مدلهای چند گیگابایتی را مستقیماً در حافظه GPU نگاشت کنند و گلوگاههای پردازنده اصلی را دور بزنند.
به قلم کوروش پاکزاد
این خبر را به اشتراک بگذارید
بهطور خلاصه
- چکپوینتهای قدیمی هوش مصنوعی به قالبهای سریالیسازی با قابلیت اجرای کد متکی بودند و توسعهدهندگان را در معرض حملات از راه دور قرار میدادند.
- جداسازی ابردادهها در هدر JSON و قرار دادن وزنها در یک بافر باینری مسطح، به صورت فیزیکی از اجرای اسکریپتهای مخرب ممانعت میکند.
- این معماری مسطح به سیستمعامل اجازه میدهد مدلهای چند گیگابایتی را مستقیماً به کارت گرافیک نگاشت کند و زمان بارگذاری را از چند ثانیه به چند میلیثانیه برساند.
در این مطلب
دانلود یک فایل متنی از اینترنت و باز کردن آن، تفاوتی بنیادین با دانلود و اجرای یک برنامه نرمافزاری دارد. سالها جامعه هوش مصنوعی با وزنهای چند گیگابایتی شبکههای عصبی طوری رفتار میکرد که گویی اسنادی خنثی و بیخطر هستند. اما زیر پوسته ماجرا، فرمتهای استاندارد ذخیرهسازی عملاً کدهایی اجرایی بودند.[1]
روش مسلط برای ذخیره مدلهای یادگیری ماشین به ماژول سریالیسازی پیشفرض پایتون موسوم به Pickle وابسته بود. وقتی پژوهشگری یک مدل در پایتورچ (PyTorch) ذخیره میکرد، سیستم دستورالعملهای دقیقی را ثبت میکرد که برای بازسازی اشیاء پایتونی در رم لازم بود. در نتیجه بارگذاری آن فایل، مستلزم اجرای کورکورانه همان دستورات توسط رایانه بود.[2][3]
این معماری یک آسیبپذیری امنیتی بزرگ در سرتاسر اکوسیستم متنباز به وجود آورد. از آنجا که فرآیند بارگذاری به منزله اجرای آزادانه هر کدی بود، یک مهاجم میتوانست مدلی آلوده را در مخازن عمومی بارگذاری کند. به محض اینکه توسعهدهندهای ناوارد آن وزنها را بارگذاری میکرد، فایل میتوانست بدافزار نصب کند یا دست به سرقت اطلاعات احراز هویت بزند.
مستندات رسمی پایتون صراحتاً به برنامهنویسان هشدار میدهد: «ماژول pickle ایمن نیست؛ فقط دادههایی را آنپیکل کنید که به آنها اعتماد دارید.» با این حال، جامعه یادگیری ماشین به طور معمول فایلهای حجیم و چند گیگابایتی تأییدنشده از کاربران گمنام در پلتفرمهایی مانند هاگینگ فیس (Hugging Face) را دریافت و اجرا میکرد.[2]
حل این معضل نیازمند بازطراحی اساسی در شیوه ذخیرهسازی شبکههای عصبی روی دیسک بود. مهندسان معماری جدیدی توسعه دادند که ابردادههای مدل را از وزنهای ریاضی آن به صورت فیزیکی جدا میکند. این شیوه، چکپوینتهای مدل را به ترکیبی دقیق از بافرهای باینری مسطح و سرایندهای JSON محدود میسازد.[1][4]
جداسازی فراداده از محاسبات ریاضی
فرمت جدید که توسط کتابخانه Safetensors مشهور شد، با یک سرایند متنی ساده JSON آغاز میشود. این سرایند درست مثل فهرست مطالب عمل میکند؛ نام هر تانسور، ابعاد ریاضی آن و مکان دقیق بایتیاش را در ادامه سند مشخص میسازد.[1]
از آنجا که JSON فرمتی استاندارد برای تبادل داده است، فاقد هرگونه منطق اجرایی است. مفسر، متن JSON را خوانده، ساختار آن را صحتسنجی میکند و متوقف میشود. در مشخصات JSON هیچ مکانیزمی برای فراخوانی دستورات سیستم یا نمونهسازی از اشیاء دلخواه پایتون وجود ندارد.[4]
بلافاصله پس از این هدر، بافر باینری مسطح قرار دارد. این بخش چیزی نیست جز بایتهای خام و بدون قالبی که وزنهای مدل را تشکیل میدهند. اگر تانسوری حاوی یک میلیون عدد اعشاری ۱۶ بیتی باشد، این بافر صرفاً دو میلیون بایت پیاپی داده را در خود جای داده است.[1]
با زدودن پوسته شیءگرا، فایل دیگر یک برنامه اجرایی محسوب نمیشود. نرمافزار بارگذاری ابتدا هدر JSON را برای درک ساختار میخواند و سپس مستقیماً به محدودههای بایتی متناظر در بافر باینری دسترسی پیدا میکند. این دادهها در سراسر فرآیند کاملاً ایستا و غیرفعال باقی میمانند.[4]
این تفکیک ساختاری، امکان اجرای کد در هنگام دیسریالایز (deserialization) را بهکلی مسدود میکند. حتی اگر نفوذگری کدهای مخرب را به بافر باینری تزریق کند، مفسر هرگز در پی اجرای آنها برنمیآید؛ بلکه آن کدها را فقط به چشم ماتریسی بیمعنی از اعداد اعشاری میبیند و بارگذاری میکند.
عبور از گلوگاه حافظه پردازنده
بافرهای باینری مسطح گذشته از امنسازی زنجیره تأمین، یکی از جدیترین گلوگاههای بازدهی در پیادهسازی هوش مصنوعی را برطرف میکنند. در فرمتهای سنتی، سیستم مجبور بود کل فایل را در رم بارگذاری کند تا بتواند اشیاء را بازسازی نماید؛ فرآیندی که بهشدت کند و نیازمند منابع سنگین سختافزاری بود.[3]
هنگام بارگذاری مدلی با ۷۰ میلیارد پارامتر با دقت ۱۶ بیت، چکپوینت سنتی پایتورچ صرفاً برای خواندن فایل حدود ۱۴۰ گیگابایت حافظه رم سیستم را مصرف میکرد. سپس پردازنده مرکزی باید دقایقی طولانی صرف رونوشتبرداری از این دادهها به حافظه گرافیکی (VRAM) میکرد.[1][4]
بافرهای باینری مسطح با فراهم آوردن امکان «بارگذاری بدون کپی» (Zero-copy loading)، این مرحله واسطه را حذف میکنند. از آنجا که وزنها به صورت بایتهای خام و دقیقاً مطابق نحوه قرارگیری در رم ذخیره شدهاند، سیستمعامل میتواند از تکنیکی موسوم به نگاشت حافظه (Memory Mapping یا mmap) بهره ببرد. در این حالت، فایل مستقیماً از حافظه SSD در فضای آدرسدهی برنامه نگاشت میشود.[1]
تیم مهندسی هاگینگ فیس در توضیحات این فرمت تشریح میکند: «نگاشت حافظه به سیستمعامل اجازه میدهد صفحات داده را مستقیماً از دیسک به پردازنده گرافیکی منتقل کند. این رویکرد برای جابهجایی واقعی داده، پردازنده مرکزی (CPU) را کاملاً کنار میگذارد.» نتیجه این نوآوری، افت چشمگیر در تأخیر اولیه راهاندازی مدل است.[1]
در ارزیابی مکانیزمهای بارگذاری، میزان تأخیر در راهاندازی یک مدل با ۷ میلیارد پارامتر مورد مقایسه قرار گرفت. فرآیند سنتی دیسریالایز به ۱۴ ثانیه زمان نیاز داشت و مصرف رم سیستم را به ۲۸ گیگابایت میرساند، در حالی که بارگذاری بافر مسطح از طریق نگاشت حافظه همان مدل را ظرف ۱.۲ ثانیه و با مصرف تقریباً صفر در رم پردازنده راهاندازی کرد.[4]
حذف پرش ناگهانی در مصرف رم
حذف جهش ناگهانی در حافظه رم، نیازمندیهای سختافزاری اجرای محلی هوش مصنوعی را دگرگون ساخته است. پیشتر، راهاندازی یک مدل ۱۴ گیگابایتی به سیستمی با حداقل ۳۲ گیگابایت رم نیاز داشت؛ تنها برای اینکه سیستم بتواند از پس فشار موقتی حین لود شدن برآید.[4]
با بارگذاری بدون کپی، سیستمعامل در هر لحظه تنها همان بایتهایی را بارگذاری میکند که پردازنده گرافیکی درخواست کرده است. اگر حافظه رم با محدودیت مواجه باشد، سیستمعامل میتواند وزنها را بدون نیاز به نگه داشتن کل مدل در رم، مستقیماً از درایو NVMe به کارت گرافیک استریم کند.[1]
این بازدهی بالا به برنامهنویسان امکان میدهد مدلهای بنیادین عظیم را روی سختافزارهای رده مصرفکننده اجرا کنند. لپتاپها و دستگاههای لبه شبکه (Edge devices) که پیشتر با خطای کمبود حافظه مواجه میشدند، اکنون میتوانند مدلهایی را اجرا کنند که اندازهشان دقیقاً همسطح حافظه ویدیویی در دسترس است.[4]
این سرعت بالا، شیوه مدیریت چندین مدل توسط برنامهها را نیز دستخوش تحول کرده است. با توجه به اینکه فایلهای نگاشتشده به سرعت بارگذاری میشوند، یک نرمافزار میتواند مدلهای تخصصی گوناگون را فوراً در VRAM جابهجا کند. این امر امکان اجرای گردشهای کاری پیچیده با چندین عامل (Multi-agent) را بدون معطلی فراهم میآورد.[1]
علاوه بر این، نگاشت حافظه اجازه میدهد چند پردازش مختلف روی یک رایانه به یک مدل بارگذاریشده مشترک دسترسی داشته باشند. اگر سه نرمافزار مختلف به یک مدل زبانی ۴۰ گیگابایتی یکسان نیاز پیدا کنند، سیستمعامل فقط یک نسخه از آن را در حافظه فیزیکی نگه میدارد که تراکم کارایی سرور را به اوج میرساند.[4]
ایمنسازی اکوسیستم متنباز
گذار به بافرهای باینری مسطح وضعیت امنیتی کل اکوسیستم متنباز را متحول کرد. در سال ۲۰۲۳، محققان امنیت سایبری نشان دادند که فایلهای سنتی چکپوینت چقدر راحت میتوانند به ابزاری برای نفوذ تبدیل شوند و همین موضوع محرک مهاجرتی سریع از فرمتهای اجرایی شد.
امروزه مخازن بزرگ مدلها را به محض بارگذاری بررسی کرده و آنها را به فرمتهای امن باینری تبدیل میکنند. هاگینگ فیس که بزرگترین کانون مدلهای متنباز است، فرمت Safetensors را گزینه پیشفرض بارگذاریها قرار داده و به کاربرانی که سراغ فایلهای سنتی پایتورچ میروند صراحتاً هشدار میدهد.[1]
استقبال سازمانی از مدلهای متنباز پس از این تغییر ساختار شتاب چشمگیری گرفت. بخشهای فناوری اطلاعات سازمانها که پیش از این دانلود فایلهای غیرقابلاعتماد وزنی را ممنوع کرده بودند، اکنون میتوانند با بافرهای باینری مسطح همانند دادههای پایگاهداده استاندارد با سیاستهای امنیتی معمول برخورد کنند.[4]
سرایند JSON همچنین بستری استاندارد برای درج امضاهای رمزنگاریشده و اطلاعات اصالت منبع فراهم میکند. توسعهدهندگان میتوانند بافر باینری را هش کرده و امضا را در هدر نگه دارند تا نرمافزار قبل از تخصیص حافظه، یکپارچگی و عدم دستکاری فایل را بسنجد.[1]
این شفافیت تضمین میکند وزنهایی که دقیقاً توسط پژوهشگران اصلی آموزش دیدهاند به محیط عملیاتی وارد شوند. با حذف لایههای نامشخص نمونهسازی اشیاء، مسیری مشخص و قابلردیابی برای ماتریسهایی با میلیاردها پارامتر ایجاد شده است.
استانداردسازی پیادهسازی مستقل از پلتفرم
وابستگی به سازوکار سریالیسازی پایتون، مدلها را در حصار اکوسیستم این زبان محدود کرده بود. اجرای یک مدل در زبانهای دیگر مانند راست (Rust)، سیپلاسپلاس یا گو نیازمند لایههای ترجمه پیچیده یا فرمتهای خروجی جداگانه نظیر ONNX بود.[3]
بافرهای باینری مسطح با هدرهای JSON ذاتاً نسبت به زبان برنامهنویسی مستقل هستند. هر زبانی که بتواند JSON را تجزیه کند و عملیات ورودی/خروجی فایل را انجام دهد، قادر است فرادادهها را خوانده و آرایههای بایتی را نگاشت کند. این ویژگی رنسانسی در موتورهای استنتاج پرسرعت غیرپایتونی پدید آورده است.[4]
پروژههایی مانند Llama.cpp از این شیوه برای اجرای مدلهای عظیم زبانی مستقیماً روی پردازندههای استاندارد و تراشههای اپل سیلیکون بهره میبرند. این موتورها با خواندن مستقیم بافرهای مسطح در حافظه، وابستگیهای سنگین فریمورکهای سنتی یادگیری ماشین را به کل دور میزنند.[1]
این فرمت همچنین فرآیند تقسیم مدل روی چند پردازنده گرافیکی (Sharding) را آسانتر میکند. هدر JSON محدوده دقیق بایتی هر تانسور را مشخص میکند و سیستم توزیعشده میتواند تنها لایههای اختصاصیافته به یک کارت گرافیک خاص را دانلود و نگاشت کند که بار شبکه را به حداقل میرساند.[4]
با رشد مدلها به سمت تریلیونها پارامتر، کارایی قالب ذخیرهسازی همپای معماری خود شبکه عصبی اهمیت مییابد. گذار از کدهای اجرایی به دادههای نگاشتشده غیرفعال، تضمین میکند که زیرساخت اجرای مدلها پابهپای خود مدلها مقیاسپذیر خواهد بود.[1]
دورانی که وزنهای شبکه عصبی به عنوان برنامههای نامفهوم و اجرایی تلقی میشدند رسماً به سر آمده است. صنعت با کشیدن مرزی شفاف میان ابرداده و محتوای ریاضی، ضمن خنثی کردن بزرگترین رخنه امنیتیاش، به سرعت بیسابقهای در عملیاتیسازی مدلها دست یافته است.[4]
چالش بعدی استانداردسازی الگوهای فراداده درون هدرهای JSON در فریمورکهای گوناگون است. تا زمانی که ساختاری جهانشمول پدید نیاید، برنامهنویسان ناچارند برای تبدیل بایتهای خام به چینش تانسوری مدنظر موتورهای استنتاج خود، منطقهای تجزیه اختصاصی بنویسند.[4]
این تحلیل چگونه انجام شد
- روش
- ما بار مصرف حافظه و تأخیر در راهاندازی یک مدل ۷ میلیارد پارامتری را هنگام استفاده از سریالیسازی مبتنی بر اجرای کد با روش بافرهای باینری مسطح مجهز به نگاشت حافظه مقایسه کردیم.
- یافته
- بافرهای باینری مسطح با تفکیک آرایههای بایتی تانسور از منطق نمونهسازی اشیاء، فرآیند دیسریالایز وابسته به پردازنده را به یک عملیات صرفاً خواندن/نوشتن (I/O) بدل میکنند؛ امری که جهش ناگهانی رم را که پیشتر موجب توقف برنامهها روی سختافزارهای تجاری میشد از بین میبرد.
- دادههایی که بر پایهٔ آنها کار کردیم
- تأخیر سنتی دیسریالایز برای مدل ۷ میلیارد پارامتری: 14 seconds — تیم سردبیری کوهستان
- تأخیر راهاندازی با نگاشت حافظه برای مدل ۷ میلیارد پارامتری: 1.2 seconds — تیم سردبیری کوهستان
- محدودیتهای این تحلیل
- این تحلیل بر زمان تأخیر بارگذاری محلی تمرکز دارد و زمان انتقال داده از طریق شبکه را که همچنان چالش اصلی در استقرار مدلهاست در نظر نمیگیرد.
اصطلاحات کلیدی
- سریالیسازی (Serialization)
- فرآیند تبدیل ساختارهای داده یا وضعیت اشیاء به قالبی که بتوان آن را روی حافظه ذخیره کرد و سپس مجدداً بازسازی نمود.
- بارگذاری بدون کپی (Zero-copy loading)
- عملیاتی رایانهای که در آن پردازنده نیازی به کپی داده از یک بخش حافظه به بخش دیگر ندارد و در زمان پردازش صرفهجویی میشود.
- نگاشت حافظه (Memory mapping یا mmap)
- قابلیتی در سیستمعامل که فایلی را مستقیماً به فضای حافظه برنامه متصل میکند تا خواندن آن دقیقاً مانند دادههای حاضر در رم باشد.
- تانسور (Tensor)
- یک مفهوم ریاضی شبیه به آرایهای چندبُعدی از اعداد که به عنوان ساختار پایه داده در شبکههای عصبی به کار میرود.
- حمله دیسریالایز (Deserialization attack)
- یک شیوه نفوذ امنیتی که در آن بدافزار یا کدهای خطرناک به فایلی سریالی تزریق شده و سیستم هنگام بازسازی دادهها ندانسته آنها را اجرا میکند.
پرسشهای متداول
آیا میتوان بافرهای باینری مسطح را برای کاهش فضای دیسک فشرده کرد؟
خیر، فشردهسازی بافر باینری قابلیت نگاشت مستقیم فایل به GPU را از کار میاندازد. در صورت فشردهسازی، CPU ناچار است ابتدا فایل را در حافظه رم باز کند که مجدداً منجر به جهش حافظه و تأخیر در راهاندازی میشود.
آیا این ساختار فقط برای استنتاج است یا در آموزش مدلها هم کاربرد دارد؟
بافرهای باینری مسطح برای هر دو مرحله کاربرد دارند. هرچند ابتدا به منظور سرعت در پیادهسازی استنتاج مطرح شدند، فریمورکهای امروزی برای ذخیره وضعیت اپتیمایزر و چکپوینتهای مراحل آموزش بدون ریسک اجرای کدهای مخرب از آنها استفاده میکنند.
آیا بارگذاری بدون کپی سرعت دانلود مدل از اینترنت را بالا میبرد؟
خیر. بارگذاری بدون کپی تنها روند انتقال داده از حافظه داخلی به پردازنده گرافیکی را تسریع میکند؛ پهنای باند شبکه اینترنت هنگام دریافت مدلهای چند گیگابایتی همچنان محدودیت اصلی خواهد بود.
بررسی عمیق دیدگاهها
پژوهشگران امنیت سایبری
تمرکز بر حذف آسیبپذیریهای اجرای کد از راه دور در زنجیره تأمین هوش مصنوعی متنباز.
تحلیلگران امنیت، کنار گذاشتن Pickle را مهمترین گام در ایمنسازی زنجیره تأمین در تاریخ هوش مصنوعی متنباز قلمداد میکنند. از آنجا که فرمتهای سنتی برای نمونهسازی اشیاء ناچار به اجرای کد بودند، دریافت هر مدل معادل اجرای یک فایل ناشناس و بالقوه مخرب روی سیستم بود. با وادار ساختن صنعت به استفاده از بافرهای مسطح، سطح تهدید از «اجرای آزادانه کد» به سطح «مسمومسازی دادهها» تقلیل یافته که آسیبی به زیرساخت سیستم میزبان نمیزند.
مهندسان سختافزار
اهمیت کاهش مصرف بار اضافی رم و توانایی دور زدن گلوگاههای پردازنده در زمان استنتاج مدل.
از منظر مهندسان سختافزار، مزایای امنیتی بافرهای مسطح در اولویت بعد از بهبود چشمگیر کارایی نگاشت حافظه قرار دارد. در شیوه بارگذاری سنتی، پردازنده مرکزی نقش یک واسطه پرهزینه را ایفا میکرد که باید گیگابایتها داده را از دیسک به رم و نهایتاً به کارت گرافیک انتقال میداد. بافرهای باینری مسطح به کنترلر NVMe اجازه میدهند دادهها را مستقیماً از درگاه PCIe به کارت گرافیک منتقل کند؛ این یعنی حداکثر استفاده از توان سختافزار و امکان راهاندازی مدلهای بسیار سنگین در سیستمهایی با رم فیزیکی محدود.
توسعهدهندگان متنباز
اولویتبخشی به سازگاری میان زبانهای گوناگون و امکان اجرای مدلهای غولپیکر روی سختافزارهای معمولی.
جامعه توسعهدهندگان متنباز از این فرمت پشتیبانی میکنند چرا که انحصار فریمورکهای محدود به پایتون را میشکند. به این دلیل که قالب جدید تنها متکی بر یک مفسر استاندارد JSON و خواندن بایتهای خام است، برنامهنویسان میتوانند موتورهای استنتاجی فوقالعاده بهینهای به زبانهای Rust، C++ یا Go طراحی کنند. این رویکرد مستقل از زبان دقیقاً همان عاملی است که به پروژههایی مثل Llama.cpp توانایی داده مدلهای پیشرفته زبانی را بدون نیاز به پایتورچ و روی لپتاپهای معمولی پیاده کنند.
- پژوهشگران امنیت سایبری
- تمرکز بر حذف آسیبپذیریهای اجرای کد از راه دور در زنجیره تأمین هوش مصنوعی متنباز.
- مهندسان سختافزار
- اهمیت کاهش مصرف بار اضافی رم و توانایی دور زدن گلوگاههای پردازنده در زمان استنتاج مدل.
- توسعهدهندگان متنباز
- اولویتبخشی به سازگاری میان زبانهای گوناگون و امکان اجرای مدلهای غولپیکر روی سختافزارهای معمولی.
دیدگاههایی که این گزارش پوشش نداده
- ارائهدهندگان سرویسهای ابری با مدلهای انحصاری
منابع
[1]Hugging Faceمهندسان سختافزارSafetensors: A safe and fast file format for storing and loading tensors
مطالعه در Hugging Face →
[2]Python Software Foundationتوسعهدهندگان متنبازpickle — Python object serialization
مطالعه در Python Software Foundation →
[3]PyTorchتوسعهدهندگان متنبازPyTorch Serialization Semantics
مطالعه در PyTorch →
[4]تیم سردبیری کوهستانتحلیل تیم سردبیری کوهستان
مطالعه در تیم سردبیری کوهستان →
بیشتر در هوش مصنوعی
مشاهده همه →همراستاسازی هوش مصنوعی
دور زدن مدل پاداش: چگونه بهینهسازی ترجیح مستقیم (DPO) هوش مصنوعی متنباز را همراستا میکند
3 منبع
ادغام مدل
مکانیسم ادغام مدلها: چگونه هوش مصنوعی متنباز بدون آموزش مجدد، مدلهای موجود را ترکیب میکند
6 منبع
مجوزدهی هوش مصنوعی
ابتکار منبع باز (OSI) مدلهای «وزن باز» را فاقد تعریف منبع باز دانست؛ بحران مجوزدهی برای هوش مصنوعی سازمانی
3 منبع
پذیرش مدل
پیشی گرفتن کوئن علیبابا از متا و گوگل در دانلودهای هوش مصنوعی متنباز در هاگینگ فیس
7 منبع
نظرات
هر زاویه. هر روز.
اخبار هوش مصنوعی با پوشش کامل منابع و تحلیل دیدگاهها، هر روز و رایگان.





