رفتن به محتوای اصلی
توضیح کوهستاناستنتاج هوش مصنوعیمحاسبات ممیز شناور· 7 دقیقه مطالعه· در هوش مصنوعی

چگونه دسته‌بندی پویا قطعیت هوش مصنوعی را در دمای صفر بر هم می‌زند؟

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

به قلم اِلا فرجاد

این خبر را به اشتراک بگذارید

به‌طور خلاصه

  • تنظیم مدل در دمای صفر با انتخاب محتمل‌ترین واژه بعدی باید خروجی‌های کاملاً یکسانی تولید کند.
  • به دلیل گردکردن کسرهای میکروسکوپی در پردازنده‌ها، تغییر ترتیب جمع اعداد حاصل نهایی را عوض می‌کند.
  • بهینه‌سازی سرورها مدام ترتیب جمع را تغییر داده و نوساناتی می‌سازد که واژه برگزیده مدل را دگرگون می‌کند.

مقیاس را در کسری از یک سنت در نظر بگیرید؛ اگر در محاسبه حساب بانکی، یک‌هزارم پنی گرد شود، صاحب حساب هرگز متوجه این کسر ناچیز نخواهد شد. اما در درون یک مدل زبانی بزرگ، خطای گردکردنی با همان مقیاس یعنی یک‌هزارم رقم اعشار، می‌تواند متنی هزارکلمه‌ای را به کلی بازنویسی کند.[4]

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

علت این موضوع نه یک باگ نرم‌افزاری است و نه ردپایی از خلاقیت نهفته ماشینی؛ بلکه نتیجه برخوردی بنیادین میان ریاضیات نظری یادگیری ماشین و واقعیت فیزیکی تراشه‌های سیلیکونی است که اعداد را به صورت موازی پردازش می‌کنند. در واقع این خود سخت‌افزار است که مصالحه را تحمیل می‌کند.[4]

برای درک چرایی انحراف یک مدل قفل‌شده، باید سازوکار مدیریت هزاران کاربر هم‌زمان توسط سرورهای تجاری را واکاوی کرد. همان مکانیزمی که استقرار هوش مصنوعی را از نظر اقتصادی توجیه‌پذیر می‌کند، هم‌زمان بازتولیدپذیری نتایج آن را از بین می‌برد.[4]

سازوکار کدگشایی حریصانه

وقتی یک مدل زبانی بزرگ متنی تولید می‌کند، به ساختار جمله فکر نمی‌کند؛ بلکه احتمال قطعه بعدی واژه یعنی توکن را محاسبه می‌کند. مدل به هر واژه بالقوه در دایره لغات خود یک امتیاز ریاضی موسوم به لاجیت نسبت می‌دهد.[4]

توسعه‌دهندگان نحوه انتخاب واژه‌ها را با متغیری به نام دما کنترل می‌کنند. دمای بالا منحنی احتمالات را هموارتر کرده و به سامانه امکان می‌دهد واژه‌هایی با رتبه پایین‌تر را برای پاسخی خلاقانه‌تر انتخاب کند؛ اما دمای صفر دقیقاً برعکس عمل می‌کند.[4]

کدگشایی حریصانه مدل را ملزم به گزینش بالاترین امتیاز می‌کند و جایی برای تصادف باقی نمی‌گذارد.

در دمای صفر، مدل ملزم به استفاده از کدگشایی حریصانه است؛ یعنی باید همواره توکنی را برگزیند که بیشترین احتمال را دارد، حتی اگر اختلافش با گزینه بعدی ناچیز باشد. اگر واژه «سیب» امتیاز ۰.۹۰۰۱ و «پرتقال» امتیاز ۰.۹۰۰۰ بگیرد، «سیب» در هر بار برنده قطعی خواهد بود.[4]

در محاسبات ریاضی محض، این قاعده قطعیت کامل را تضمین می‌کند. اگر ورودی پرامپت یکسان باشد، احتمالات به‌دست‌آمده و واژه دارای بالاترین امتیاز باید دقیقاً یکسان باشند و چه یک‌بار پرسیده شود چه یک‌میلیون‌بار، همان توالی کلمات تولید شود.[4]

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

محدودیت‌های محاسبات ممیز شناور

رایانه‌ها حافظه نامحدود برای ثبت ارقام اعشاری ندارند؛ آن‌ها اعداد کسری را بر اساس استاندارد سال ۱۹۸۵ موسوم به IEEE 754 و با حساب ممیز شناور نمایش می‌دهند. هوش مصنوعی مدرن برای کاهش مصرف حافظه و تسریع پردازش، به‌شدت به قالب ممیز شناور ۱۶ بیتی یا همان FP16 تکیه دارد.[2]

قالب FP16 فوق‌العاده کارآمد است اما محدودیت دقت جدی دارد. کوچک‌ترین تفاوتی که این قالب می‌تواند تفکیک کند، اپسیلون ماشین نام دارد و تقریباً ۰.۰۰۰۹۷۷ است. هر رقمی کوچک‌تر از این آستانه، ناچار گرد می‌شود تا در فضای حافظه اختصاص‌یافته جا بگیرد.[2][4]

گردکردن، رفتاری عجیب در ریاضیات رایانه ایجاد می‌کند: جمع در ممیز شناور خاصیت شرکت‌پذیری ندارد. در جبر جبری، حاصل (الف + ب) + ج با الف + (ب + ج) برابر است، اما در رایانه، تغییر ترتیب جمع مقادیر، نحوه گردکردن آن‌ها را دستخوش تغییر می‌کند.[2]

محدودیت ذخیره ارقام اعشار در رایانه‌ها باعث می‌شود ترتیب جمع‌زدن اعداد، نتیجه نهایی را دگرگون کند.

اگر پردازنده عددی بسیار بزرگ را با عددی بی‌نهایت کوچک جمع بزند، عدد کوچک ممکن است به‌کلی گرد شده و محو شود. اما اگر ابتدا چند عدد کوچک جمع شوند، حجم انباشته آن‌ها حفظ می‌شود و هنگام جمع با عدد بزرگ زنده می‌ماند. این توالی است که نتیجه را رقم می‌زند.[2]

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

کارت‌های گرافیک چگونه میلیون‌ها عدد را جمع می‌زنند؟

تولید یک کلمه مستلزم میلیاردها عملیات ریاضی است که هسته اصلی آن ضرب ماتریسی است؛ فرآیندی که شامل ضرب شبکه‌های عددی عظیم و جمع‌زدن نتایج حاصله است. واحد پردازش گرافیکی یا همان کارت گرافیک، این جمع‌ها را با ساختاری موسوم به درخت تقلیل انجام می‌دهد.[4]

کارت گرافیک به‌جای جمع‌کردن تک‌تک اعداد در یک صف طولانی، آن‌ها را دوبه‌دو جفت می‌کند. جفت‌های اول و دوم جمع می‌شوند تا ردیفی تازه از مجموع‌ها شکل گیرد؛ سپس این مجموع‌ها باز هم دوبه‌دو ترکیب می‌شوند تا درختی شکل بگیرد که در رأس آن تنها یک عدد باقی بماند.[3]

شکل هندسی این درخت تقلیل، توالی دقیق عملیات جمع را تعیین می‌کند. یک درخت کاملاً متقارن، اعداد را در تمام سطوح به‌طور منظم جفت می‌کند؛ اما درخت نامتقارن ممکن است یک عدد را معلق نگه دارد و آن را در مرحله دیگری از گردکردن وارد کند.[3][4]

اگر ساختار درخت ثابت بماند، خطاهای گردکردن نیز یکنواخت مانده و نتیجه نهایی کاملاً قابل تکرار خواهد بود. اما در یک مرکز داده زنده، ساختار این درخت تقریباً هرگز ثابت نمی‌ماند و بسته به حجم ترافیک سرور در هر میلی‌ثانیه، دچار نوسان می‌شود.[4]

دسته‌بندی پویا کارت گرافیک را ناچار به بازآرایی درخت تقلیل کرده و توالی عملیات ریاضی را تغییر می‌دهد.

همین معماری منعطف است که شکاف میان ویژگی‌های سخت‌افزاری و غیرقابل‌پیش‌بینی بودن خروجی نرم‌افزار را رقم می‌زند. کارت گرافیک پیوسته مسیرهای محاسباتی خود را بازتنظیم می‌کند تا پاسخگوی نوسان درخواست کاربران باشد و این امر توالی گردکردن را دگرگون می‌سازد.[4]

آشفتگی ناشی از زمان‌بندی دسته‌ای پویا

پردازش درخواست هر کاربر به‌صورت جداگانه از منظر اقتصادی توجیه‌ناپذیر است. مدیران سرورها برای بهره‌برداری بهینه از تراشه‌ها از زمان‌بندی دسته‌ای پویا بهره می‌برند؛ سیستم کسری از ثانیه منتظر می‌ماند تا چند درخواست مختلف را جمع‌آوری کرده و هم‌زمان در قالب یک دسته پردازش کند.[4]

اندازه این دسته‌ها ثبات ندارد؛ در ساعت ۲ بامداد ممکن است دسته‌ها ۱۶ تایی باشند و در اوج ترافیک ساعت ۹ صبح به ۱۲۸ عدد برسند. اندازه دسته، ابعاد ماتریس‌هایی را تعیین می‌کند که کارت گرافیک باید در هم ضرب کند.[4]

با تغییر ابعاد ماتریس، پردازنده گرافیکی ساختار درخت تقلیل را برای بهینه‌سازی بار کاری دگرگون می‌کند. استراتژی جمع موازی در دسته ۱۶تایی کاملاً با دسته ۱۲۸تایی متفاوت است؛ بنابراین ترتیب عملیات جمع و به تبع آن خطاهای گردکردن تغییر می‌یابند.[3][4]

این یعنی پاسخ به پرامپت یک کاربر بسته به اینکه آیا دو کاربر دیگر دقیقاً در همان میلی‌ثانیه درخواستی فرستاده‌اند یا خیر، تغییرات ریاضی بسیار ریزی پیدا می‌کند. کاربران مجزا هستند، اما سخت‌افزار اشتراکی نوعی درهم‌تنیدگی عددی پنهان میان آن‌ها به وجود می‌آورد.[4]

این تفاوت معمولاً امتیاز احتمال واژه را کمتر از یک‌هزارم تغییر می‌دهد و برای عموم محاسبات کاملاً بی‌خطر است؛ توکن اول همچنان اول می‌ماند و خروجی در ظاهر پایدار به نظر می‌رسد.[4]

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

اثر پروانه‌ای یک توکن منفرد

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

در این وضعیت، وقتی تغییر اندازه دسته ساختار درخت تقلیل را جابه‌جا می‌کند، خطای گردکردن می‌تواند این فاصله ریز را پر کند؛ امتیاز «پرتقال» اندکی بالا رفته، امتیاز «سیب» کاهش می‌یابد و ترتیب جابه‌جا می‌شود. سپس مدل بر اساس کدگشایی حریصانه، گزینه برنده جدید را برمی‌گزیند.[4]

به محض تغییر حتی یک کلمه، کل روند تولید متن از مسیر قبلی جدا می‌شود. مدل‌های زبانی ویژگی خودبازگشتی دارند؛ به این معنا که خروجی قبلی خود را به عنوان ورودی بعدی دریافت می‌کنند. جایگزینی «پرتقال» به جای «سیب»، زمینه متن را دگرگون کرده و مبنای تمام محاسبات بعدی را به کلی تغییر می‌دهد.[4]

این پدیده که اثر پروانه‌ای توکن‌هاست نشان می‌دهد چگونه دو پرامپت کاملاً یکسان می‌توانند به مقالاتی کاملاً متفاوت ختم شوند. این تفاوت ناشی از جهش خلاقانه مدل نیست، بلکه از خطای گردکردن ناچیزی در کلمه چهاردهم نشأت می‌گیرد که به دلیل درخواست هم‌زمان کاربری در قاره‌ای دیگر فعال شده است.[4]

این پدیده که اثر پروانه‌ای توکن‌هاست نشان می‌دهد چگونه دو پرامپت کاملاً یکسان می‌توانند به مقالاتی کاملاً متفاوت ختم شوند.

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

این تحلیل چگونه انجام شد

روش
محاسبه اثر فزاینده جمع غیرشرکت‌پذیر ممیز شناور در اعماق متغیر درخت تقلیل پردازنده گرافیکی و مقایسه خطای انباشته گردکردن با حاشیه احتمالاتی متداول میان دو توکن برتر پیش‌بینی‌شده.
یافته
هنگامی که اندازه دسته‌ها به صورت پویا از ۱۶ به ۱۲۸ درخواست تغییر می‌کند، عمق تغییریافته درخت تقلیل نوسان ممیز شناور کافی برای پوشش فاصله احتمالی میان توکن‌های نزدیک ایجاد کرده و باعث انحراف دائمی خروجی حتی در دمای صفر می‌شود.
داده‌هایی که بر پایهٔ آن‌ها کار کردیم
  • اپسیلون ماشین در قالب FP16 (آستانه گردکردن): 0.000977 — IEEE
  • محدودیت‌های عملیات تقلیل موازی: Launch configuration dependency — NVIDIA
محدودیت‌های این تحلیل
این تحلیل انباشت استاندارد در قالب FP16 را مدل‌سازی می‌کند؛ مدل‌هایی که از انباشت FP32 برای مجموع‌های میانی بهره می‌برند با نرخ کمتری از انحراف مواجه خواهند شد، گرچه این نرخ به صفر نمی‌رسد.

اصطلاحات کلیدی

کدگشایی حریصانه (Greedy Decoding)
رویکردی در تولید متن که در آن مدل هوش مصنوعی همواره تنها محتمل‌ترین واژه بعدی را برمی‌گزیند تا رفتارهای تصادفی را به صفر برساند.
دما (Temperature)
پارامتری برای تنظیم میزان تصادفی‌بودن خروجی؛ مقدار صفر مدل را ملزم به انتخاب قطعی‌ترین و ایمن‌ترین گزینه ممکن می‌کند.
حساب ممیز شناور (Floating-Point Arithmetic)
روش استاندارد رایانه‌ها برای نمایش اعداد اعشاری که به علت محدودیت حافظه، کسرهای بسیار کوچک را گرد می‌کند.
دسته‌بندی پویا (Dynamic Batching)
تکنیک بهینه‌سازی سرور که درخواست‌های ارسالی چند کاربر را با هم ترکیب کرده و هم‌زمان روی یک پردازنده گرافیکی اجرا می‌کند.
درخت تقلیل (Reduction Tree)
ساختار محاسبات موازی کارت گرافیک برای جمع‌زدن میلیون‌ها عدد که مقادیر را مرحله‌به‌مرحله و دوبه‌دو ترکیب می‌کند.
لاجیت (Logit)
امتیاز خام ریاضی که مدل هوش مصنوعی پیش از تبدیل به درصد احتمالاتی نهایی، به یک واژه احتمالی تخصیص می‌دهد.

پرسش‌های متداول

آیا استفاده از دقت ریاضی بالاتر می‌تواند این مشکل را برطرف کند؟

استفاده از ممیز شناور ۳۲ بیتی یا ۶۴ بیتی ابعاد خطای گردکردن را کاهش داده و تعویض توکن‌ها را بسیار نادر می‌کند؛ با این حال، حافظه مورد نیاز را دو تا چهار برابر افزایش داده و سرعت تولید متن را به شدت کم و هزینه‌ها را سنگین می‌کند.

آیا این پدیده هنگام اجرای مدل‌ها روی سیستم محلی نیز رخ می‌دهد؟

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

آیا راهکارهای نرم‌افزاری برای سرورها وجود دارد؟

برخی چارچوب‌ها به توسعه‌دهندگان اجازه می‌دهند الگوریتم‌های قطعی را در درایورهای کارت گرافیک اجباری کنند که ترتیب ثابت عملیات را صرف‌نظر از اندازه دسته تضمین می‌کند؛ اما این کار سرعت پردازش را شدیداً کاهش می‌دهد.

بررسی عمیق دیدگاه‌ها

مهندسان سخت‌افزار

توان عملیاتی محاسبات و نرخ بهره‌وری سرور را بر خلوص ریاضیاتی ترجیح می‌دهند.

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

پژوهشگران یادگیری ماشین

رفتار قطعی مدل را برای عیب‌یابی، تکرارپذیری علمی و ارزیابی عادلانه عملکرد حیاتی می‌دانند.

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

توسعه‌دهندگان سازمانی

خواهان خروجی‌های پیش‌بینی‌پذیر برای مشتریان خود هستند اما توان پرداخت هزینه‌های استنتاج غیراشتراکی را ندارند.

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

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

دیدگاه‌هایی که این گزارش پوشش نداده

  • کاربران نهایی
  • حسابرسان ایمنی هوش مصنوعی

منابع

پوشش منابع

4 منبع

3 دیدگاه شناسایی‌شده

مهندسان سخت‌افزار 40%پژوهشگران یادگیری ماشین 35%توسعه‌دهندگان سازمانی 25%
  1. [1]PyTorchپژوهشگران یادگیری ماشین

    Reproducibility and Determinism in PyTorch

    مطالعه در PyTorch →
  2. [2]IEEEپژوهشگران یادگیری ماشین

    IEEE Standard for Floating-Point Arithmetic

    مطالعه در IEEE →
  3. [3]NVIDIAمهندسان سخت‌افزار

    CUDA C++ Programming Guide: Floating-Point Standard

    مطالعه در NVIDIA →
  4. [4]تیم سردبیری کوهستانتوسعه‌دهندگان سازمانی

    تحلیل تیم سردبیری کوهستان

    مطالعه در تیم سردبیری کوهستان →

نظرات

همیشه در جریان باشید

هر زاویه. هر روز.

اخبار هوش مصنوعی با پوشش کامل منابع و تحلیل دیدگاه‌ها، هر روز و رایگان.