به کمک زبان برنامه نویسی tensor، سرعت و صحت دیگر با یکدیگر رقابت نمی کنند ،آنها می توانند دست در دست هم دهند.
محاسبات با کارایی بالا برای بسیاری از task ها مانند: پردازش تصویر و یادگیری عمیق در شبکههای عصبی مورد استفاده قرار میگیرد. جایی که باید حجم انبوهی از دادهها را بررسی و تحلیل کنید، همچنین همزمان باید تمتم کارهای ذکر شده را با سرعت معقول انجام دهید،در غیر این صورت انجام دادن این حجم از کار با سرعت پایین مسخره به نظر میرسد. به طور کلی برای انجام این نوع از عملیات، معاوضههای اجتناب ناپذیری بین سرعت و قابلیت اطمینان وجود داشته باشد. اگر سرعت اولویت اول باشد، طبق این دیدگاه، قابلیت اطمینان احتمالاً آسیب خواهد دید و بالعکس.
با این حال، تیمی از محققان دانشگاه MIT این مفهوم را زیر سوال میبرند و ادعا میکنند که می توان سرعت و دقت را در کنار هم داشت. آماندا لیو، دانشجوی سال دوم دکترای علوم کامپیوتر و هوش مصنوعی دانشگاه ام آی تی (MIT CSAIL) میگوید: با زبان برنامه نویسی جدیدی که آنها به طور اختصاصی برای محاسبات با کارایی بالا (high performance) نوشته اند، دیگر لازم نیست که «سرعت و صحت با هم رقابت کنند. در عوض، آنها می توانند در برنامه ها، دست به دست هم بدهند.»
لیو به همراه گیلبرت لوئیس برنشتاین، استادیار دانشگاه کالیفرنیا در برکلی، آدام چلیپالا، دانشیار MIT، و جاناتان راگان-کلی، استادیار MIT در کنفرانس اصول زبانهای برنامهنویسی در فیلادلفیا، پتانسیل زبان جدید برنامه نویسی خود “یک زبان تنسو ( ATL Tensor)” را توصیف کردند.
لیو میگوید: «هدف همه چیز در زبان ما تولید یک عدد یا یک تنسور (Tensor) است.» تنسوها به نوبه خود تعمیم بردارها و ماتریس ها هستند. در حالی که بردارها اشیاء یک بعدی هستند (اغلب با فلشهای تکی نشان داده می شوند) و ماتریسها به عنوان آرایههای دو بعدی از اعداد شناخته میشوند، تنسورها آرایه های n بعدی هستند که می توانند به شکل یک آرایه ۳x3x3 و یا حتی بیشتر یا کمتر از این مقدار باشند.
تمام هدف یک برنامه کامپیوتری یا الگوریتم، شروع یک محاسبات خاص است. اما روشهای مختلفی برای نوشتن آن برنامه وجود دارد. همان طور که لیو و همکارانش در مقاله کنفرانسی که به زودی منتشر میشود، نوشتند: «راههای مختلف و گیج کنندهای برای تشخیص کد وجود دارد» اما برخی از آنها بسیار سریعتر از بقیه هستند. او توضیح میدهد که دلیل اصلی پشت ATL این است: «با توجه به این که محاسبات با کارایی بالا نیازمند منابع زیادی است، خواسته شما این است که بتوانید برنامهها را به شکلی بهینه تغییر دهید یا آن را بازنویسی کنید تا سرعت کارها افزایش پیدا کند. این کار اغلب با برنامهای شروع میشود که نوشتن آن راحتتر باشد، اما ممکن است سریعترین راه برای اجرای آن نباشد.»
به عنوان مثال، فرض کنید یک تصویر با یک آرایه ۱۰۰×۱۰۰ از اعداد نشان داده شده است که هر کدام مربوط به یک پیکسل است، و شما میخواهید میانگین این اعداد را بدست آورید. این کار را میتوان در دو مرحله محاسباتی، با تعیین میانگین هر ردیف و سپس بدست آوردن میانگین هر ستون انجام داد. ATL یک جعبه ابزار ترکیبی دارد. چیزی که دانشمندان کامپیوتر آن را “framework” مینامند و نشان میدهد، چگونه این فرآیند دو مرحلهای میتواند به یک فرآیند یک مرحلهای سریعتر تبدیل شود.
لیو میگوید: « ما میتوانیم با استفاده از چیزی به نام دستیار اثبات، صحت این بهینهسازی را تضمین کنیم». برای این منظور، زبان جدید تیم (Coq) که حاوی یک دستیار اثبات است، ساخته شده است. دستیار اثبات، ظرفیت ذاتی برای اثبات ادعاهای خود به روش دقیق ریاضی را دارد.
Coq یک ویژگی ذاتی دیگری داشت که آن را برای گروه MIT جذاب کرد. برنامههای که با این زبان نوشته میشدند، پایان داشتند و نمیتوانستند برای همیشه در حلقههای بیپایان (endless loops) گیر کنند (مثل برنامههای نوشته شده با جاوا). لیو میگوید: «ما یک برنامه را اجرا میکنیم تا یک پاسخ واحد را دریافت کنیم چه یک عدد باشد یا یک تنسور.”برنامه ای که هرگز خاتمه نمی یابد برای ما بیفایده خواهد بود، اما خاتمه چیزی است که با استفاده از Coq به صورت رایگان دریافت می کنیم.”
پروژه ATL دو مورد از علایق اصلی تحقیقاتی Ragan-Kelley و Chlipala را ترکیب می کند. Ragan-Kelley مدتهاست که در راستای بهینهسازی الگوریتمها در حوزه high performance computing کار میکند. در عین حال، Chlipala، بیشتر بر روی موادری مانند ریاضیات در بهینهسازیهای الگوریتمی تمرکز کرده است. این پروژه اولین همکاری مشترک آنها است.Bernstein و Liu سال گذشته وارد این شرکت شدند و ATL نتیجه پژوهشهای آن است.
اکنون این مورد به عنوان اولین و تنها زبان تنسور رسمی تایید شده است. لیو هشدار می دهد، ATL هنوز فقط یک نمونه اولیه و البته امیدوارکننده است که روی تعدادی از برنامههای کوچک آزمایش شده است. او میگوید: «یکی از اهداف اصلی ما نگاه به آینده و بهبود مقیاسپذیری ATL است تا بتوان از آن برای برنامههای بزرگتری در دنیای واقعی ، استفاده کنیم.»
در گذشته، بهینهسازی این برنامهها معمولاً به صورت دستی انجام میشد و این کار در اغلب اوقات آزمون و خطا و اشتباهات زیادی داشت.. لیو اضافه میکند که با ATL، «مردم میتوانند قاعده اصولیتری را برای بازنویسی راحتتر و مطمئنتر این برنامهها استفاده کنند.
منبع :
دیدگاهتان را بنویسید