یک عکس تنها نگاهی اجمالی به دنیای خالق دارد – علایق و احساسات آنها در مورد یک موضوع یا فضای معین. اما درباره سازندگان فناوریهایی که به امکانپذیر کردن این تصاویر کمک میکنند، چطور؟
استادیار جاناتان راگان-کلی از دپارتمان مهندسی برق و علوم کامپیوتر MIT یکی از این افراد است که همه چیز را از ابزار جلوه های بصری در فیلم ها گرفته تا زبان برنامه نویسی Halide را طراحی کرده است که به طور گسترده در صنعت ویرایش و پردازش عکس ها استفاده می شود. Ragan-Kelley به عنوان محقق در آزمایشگاه هوش مصنوعی واتسون MIT-IBM و آزمایشگاه علوم رایانه و هوش مصنوعی، در برنامه نویسی با کارایی بالا و زبان های یادگیری ماشینی تخصص دارد که گرافیک های دو بعدی و سه بعدی، جلوه های بصری و عکاسی محاسباتی
Ragan-Kelly میگوید: «بزرگترین درایو برای بسیاری از تحقیقات ما، توسعه زبانهای برنامهنویسی جدید است که نوشتن برنامههایی را آسانتر میکند که واقعاً کارآمدتر روی سختافزار پیچیدهتر امروزی در رایانه شما اجرا میشوند. اگر بخواهیم به افزایش قدرت محاسباتی که میتوانیم برای برنامههای کاربردی دنیای واقعی از گرافیک و محاسبات بصری گرفته تا هوش مصنوعی ادامه دهیم، باید روش برنامهنویسی خود را تغییر دهیم.»
پیدا کردن حد وسط
در طول دو دهه گذشته، طراحان تراشه و مهندسان نرم افزار شاهد کاهش سرعت بوده اند قانون مور و تغییر قابل توجهی از محاسبات همه منظوره در CPUها به واحدهای پردازش و پردازش متنوع و تخصصی تر مانند GPU ها و شتاب دهنده ها. با این انتقال یک مبادله به وجود می آید: توانایی اجرای کدهای همه منظوره بر روی پردازنده های تا حدودی کند، برای سخت افزار سریعتر و کارآمدتر که نیاز به این دارد که کد به شدت با آن تطبیق داده شود و با برنامه ها و کامپایلرهای سفارشی با آن نقشه برداری شود. سختافزار جدیدتر با برنامهنویسی بهبودیافته میتواند از برنامههایی مانند رابطهای رادیویی سلولی با پهنای باند بالا، رمزگشایی ویدیوهای بسیار فشرده برای پخش جریانی، و پردازش گرافیک و ویدیو در دوربینهای تلفن همراه با محدودیت انرژی، بهتر پشتیبانی کند.
“کار ما بسیار در مورد باز کردن قدرت بهترین سخت افزاری است که می توانیم بسازیم تا حداکثر کارایی محاسباتی و کارایی ممکن را برای این نوع برنامه ها ارائه دهیم، به گونه ای که زبان های برنامه نویسی سنتی این کار را نمی کنند.”
برای رسیدن به این هدف، راگان-کلی کار خود را به دو بخش تقسیم می کند. اول، کلیت را قربانی ساختار مسائل محاسباتی خاص و مهم می کند و از آن برای کارایی محاسباتی بهتر استفاده می کند. این را می توان در زبان پردازش تصویر Halide مشاهده کرد، که او به طور مشترک توسعه داد و به تبدیل صنعت ویرایش تصویر به برنامه هایی مانند فتوشاپ کمک کرد. همچنین، از آنجا که به طور خاص برای پردازش سریع آرایه های متراکم و منظم از اعداد (تانسورها) طراحی شده است، برای محاسبات شبکه عصبی نیز به خوبی کار می کند. تمرکز دوم روی اتوماسیون است، به ویژه اینکه چگونه کامپایلرها برنامه ها را به سخت افزار نگاشت می کنند. یکی از این پروژه ها با آزمایشگاه هوش مصنوعی واتسون MIT-IBM از Exo استفاده می کند، زبانی که در گروه Ragan-Kelley توسعه یافته است.
در طول سالها، محققان برای خودکارسازی کدنویسی با کامپایلرهایی که میتوانند یک جعبه سیاه باشند، سخت کار کردهاند. با این حال، هنوز نیاز زیادی به کنترل و تنظیم صریح توسط مهندسان عملکرد وجود دارد. راگان-کلی و گروهش روشهایی را توسعه میدهند که هر تکنیک را در بر میگیرند، و برای دستیابی به برنامهنویسی کارآمد و کارآمد از نظر منابع، تعادلها را متعادل میکنند. در قلب بسیاری از برنامههای با کارایی بالا، مانند موتورهای بازی ویدیویی یا پردازش دوربین تلفن همراه، سیستمهای پیشرفتهای قرار دارند که عمدتاً توسط متخصصان انسانی به زبانهای سطح پایین و دقیق مانند C بهصورت دستی بهینهسازی میشوند. ، C++ و اسمبلی. در اینجا، مهندسان انتخاب های خاصی در مورد نحوه اجرای برنامه بر روی سخت افزار انجام می دهند.
Ragan-Kelley خاطرنشان می کند که برنامه نویسان می توانند “کدهای سطح پایین بسیار پر زحمت، بسیار غیرمولد و بسیار خطرناک” را انتخاب کنند که می تواند اشکالات ایجاد کند، یا “API های سطح بالاتر ایمن تر و پربازده” که توانایی درست کردن آنها را ندارند. تنظیمات در کامپایلر برای نحوه اجرای برنامه و معمولاً عملکرد کمتری را ارائه می دهد. بنابراین تیم او در تلاش است تا حد وسطی پیدا کند. راگان-کلی میگوید: «ما در تلاش هستیم تا چگونگی کنترل مشکلات کلیدی را که مهندسان عملکرد انسانی میخواهند کنترل کنند، فراهم کنیم، بنابراین ما در تلاش هستیم تا کلاس جدیدی از زبانها را بسازیم. زبانهای قابل برنامهریزی توسط کاربر را فراخوانی کنید که به کنترلکنندههای سطح بالاتر امنتر برای کنترل کارهایی که کامپایلر انجام میدهد یا نحوه بهینهسازی برنامه را کنترل کنند.
باز کردن قفل سخت افزار: راه های سطح بالا و کم خدمت
Ragan-Kelley و گروه تحقیقاتی او این موضوع را از طریق دو خط کار انجام می دهند: استفاده از یادگیری ماشینی و تکنیک های پیشرفته هوش مصنوعی برای تولید خودکار برنامه های بهینه شده، رابط با کامپایلر، برای دستیابی به عملکرد بهتر کامپایلر. دیگری از یک “برون کامپایل” استفاده می کند که در آزمایشگاه روی آن کار می کند. او این روش را به عنوان راهی برای “برگرداندن کامپایلر به داخل” با یک اسکلت کامپایلر با کنترلهایی برای هدایت انسان و سفارشیسازی توصیف میکند. علاوه بر این، تیم او میتواند برنامهنویسهای سفارشی خود را اضافه کند که میتوانند به هدف قرار دادن سختافزارهای تخصصی مانند شتابدهندههای یادگیری ماشین از IBM Research کمک کنند. برنامه های کاربردی برای این کار طیف گسترده ای را شامل می شود: بینایی کامپیوتر، تشخیص اشیا، سنتز گفتار، سنتز تصویر، تشخیص گفتار، تولید متن (مدل های زبان بزرگ)، و موارد دیگر.
پروژه مقیاس بزرگ او با آزمایشگاه این را یک گام فراتر می برد و از طریق یک لنز سیستمی به کار نزدیک می شود. تیم راگان-کلی در کاری که توسط مشاور و کارآموز آزمایشگاهش ویلیام براندون، با همکاری دانشمند آزمایشگاهی رامسوار پاندا هدایت میشود، در حال بازنگری در مدلهای زبان بزرگ (LLM) هستند و راههایی برای تغییر جزئی معماری محاسباتی و برنامهنویسی مدل بهگونهای پیدا میکنند که مدلهای مبتنی بر ترانسفورماتور می تواند با کارایی بیشتری بر روی سخت افزار هوش مصنوعی بدون به خطر انداختن دقت اجرا شود. راگان-کلی میگوید، کار آنها از روشهای استاندارد تفکر به روشهای قابل توجهی منحرف میشود و دستاوردهای بالقوه زیادی در کاهش هزینهها، بهبود قابلیتها، و/یا کاهش LLM برای نیاز به حافظه کمتر و اجرا در رایانههای کوچکتر دارد.
وقتی صحبت از کارایی محاسباتی و سختافزار میشود، این تفکر آوانگاردتر است که راگان-کلی در آن برتری مییابد و ارزش آن را، بهویژه در بلندمدت میبیند. “من فکر می کنم مناطقی وجود دارد [of research] که باید دنبال شوند، اما به خوبی تثبیت شده اند، یا آشکار هستند، یا به اندازه کافی پذیرفته شده اند که بسیاری از مردم یا قبلا آنها را دنبال می کنند یا خواهند داشت.” ما در حال تلاش برای یافتن ایدههایی هستیم که تأثیر زیادی برای تأثیر عملی بر جهان دارند و در عین حال چیزهایی هستند که لزوماً اتفاق نمیافتند یا فکر میکنم بقیه جامعه نسبت به پتانسیلهایشان کمتر از آنها استفاده میکنند.» “
دوره ای که او اکنون تدریس می کند، 6.106 (مهندسی عملکرد نرم افزار)، نمونه ای از این موضوع است. حدود 15 سال پیش، یک تغییر از یک پردازنده به چند پردازنده در یک دستگاه اتفاق افتاد که باعث شد بسیاری از برنامه های دانشگاهی آموزش موازی سازی را آغاز کنند. اما همانطور که Ragan-Kelley توضیح میدهد، MIT متوجه شد که درک نه تنها موازیسازی، بلکه بهینهسازی حافظه و استفاده از سختافزار تخصصی برای دستیابی به بهترین عملکرد ممکن برای دانشجویان چقدر مهم است.
با تغییر روش برنامهنویسی، میتوانیم پتانسیل محاسباتی ماشینهای جدید را باز کنیم و این امکان را برای مردم فراهم کنیم که به سرعت به توسعه برنامههای کاربردی جدید و ایدههای جدیدی ادامه دهند که قادر به استفاده از این سختافزار پیچیده و چالش برانگیز هستند.