چه عاملی شرکت هوآنگ را از دیگر تراشهسازان متمایز کرده است؟
خندق انویدیا
به نوشته مجله وایرد، چند سال بعد، دیوارهای قلعه همچنان امن هستند. جدا از یک دوره کوتاه وحشت هنگام ظهور دیپسیک، مدلهای هوش مصنوعی متنباز عملکرد چندان بهتری نسبت به مدلهای اختصاصی نداشتهاند. با این حال، هیچکدام از آزمایشگاههای پیشرو – اوپنای آی، آنتروپیک، گوگل - هیچ خندقی ندارند که در مورد آن نیاز به صحبت کردن داشته باشند.
با این حال شرکتی که خندق دارد، انویدیا است. جنسن هوآنگ، مدیرعامل این شرکت، آن را گرانبهاترین «گنجینه» خود نامیده است. این، برخلاف تصور شما برای یک شرکت تراشهسازی، یک قطعه سختافزاری نیست. چیزی به نام CUDA است. چیزی که به نظر میرسد یک ترکیب شیمیایی است که توسط سازمان غذا و داروی آمریکا (FDA) ممنوع شده است، ممکن است تنها خندق واقعی در هوشمصنوعی باشد.
CUDA از نظر فنی مخفف Compute Unified Device Architecture (معماری دستگاه یکپارچه محاسباتی) است، اما درست مانند لیزر یا اسکوبا، هیچ کس زحمت بسط دادن این مخفف را به خود نمیدهد؛ ما فقط میگوییم «KOOduh». پس این گنجینه بسیار مهم به چه دردی میخورد؟ اگر مجبور باشیم یک جواب یک کلمهای بدهیم: «موازیسازی.»
یک مثال ساده. فرض کنید از یک ماشین میخواهیم جدول ضرب ۹×۹ را پر کند. با استفاده از یک کامپیوتر تک هستهای، تمام ۸۱ عملیات به صورت وظیفهشناسانه و یکی یکی اجرا میشوند. اما یک پردازنده گرافیکی (GPU) با نه هسته میتواند وظایف را طوری تعیین کند که هر هسته ستون متفاوتی را اشغال کند - یکی از ۱×۱ تا ۱×۹، دیگری از ۲×۱ تا ۲×۹ و غیره - تا سرعت نه برابر افزایش یابد. پردازندههای گرافیکی مدرن میتوانند حتی باهوشتر هم باشند. برای مثال، اگر طوری برنامهریزی شوند که خاصیت جابهجایی را تشخیص دهند— ۷×۹ = ۹×۷— میتوانند از کار تکراری جلوگیری کنند و ۸۱ عملیات را به ۴۵ کاهش دهند که تقریبا حجم کار را نصف میکند. وقتی یک دوره آموزشی صدمیلیون دلار هزینه دارد، هر بهینهسازی مهم است. پردازندههای گرافیکی انویدیا در ابتدا برای رندر کردن گرافیک بازیهای ویدئویی ساخته شده بودند. در اوایل دهه ۲۰۰۰، یک دانشجوی دکترای دانشگاه استنفورد به نام ایان باک که برای اولینبار بهعنوان یک گیمر وارد حوزه پردازندههای گرافیکی (GPU) شده بود، متوجه شد که معماری آنها میتواند برای محاسبات عمومی با کارآیی بالا مورد استفاده مجدد قرار گیرد. او که یک زبان برنامهنویسی به نام بروک (Brook) ایجاد کرد، توسط انویدیا (Nvidia) استخدام شد و به همراه جان نیکولز (John Nickolls)، رهبری توسعه CUDA را بر عهده گرفت.
CUDA به خودی خود یک زبان برنامهنویسی نیست، بلکه یک «پلتفرم» است. برخی از این کلمه «بیمعنی» استفاده میکنند، چون برخلاف نیویورکتایمز که هم روزنامه است و در عین حال یک شرکت بازیسازی هم هست، CUDA در طول سالها به مجموعهای تودرتو از کتابخانههای نرمافزاری برای هوش مصنوعی تبدیل شده است. هر تابع چند نانوثانیه از زمان عملیات ریاضی تکی کم میکند که در مجموع، باعث میشوند پردازندههای گرافیکی (GPU) در اصطلاح صنعتی، بسیار سریعتر از حد انتظار عمل کنند. یک کارت گرافیک مدرن فقط یک برد مدار چاپی پر از تراشه و حافظه و فن نیست. این یک معجون استادانه از سلسله مراتب حافظه پنهان و واحدهای تخصصی به نام «هستههای تنسور» و «چندپردازندههای جریانی» است.
از این نظر، آنچه شرکتهای تراشه میفروشند مانند یک آشپزخانه حرفهای است و هستههای بیشتر شبیه ایستگاههای کبابپزی بیشتر هستند. اما حتی یک آشپزخانه با ۳۰ ایستگاه کبابپزی نیز بدون یک سرآشپز توانمند که ماهرانه وظایف را تعیین کند، سریعتر کار نخواهد کرد؛ همانطور که CUDA برای هستههای GPU انجام میدهد. برای بسط این استعاره، کتابخانههای CUDA که با دست تنظیم شدهاند و برای یک عملیات ماتریسی بهینه شدهاند، معادل ابزارهای آشپزخانهای هستند که برای یک کار واحد و نه بیشتر طراحی شدهاند - یک هستهگیر گیلاس، یک جداکننده میگو - که برای آشپزهای خانگی بسیار مفید هستند، اما اگر دل و روده ۱۰۰۰۰ میگو را برای بیرون کشیدن داشته باشید، دیگر چنین نیستند؛ که این ما را به دیپسیک باز میگرداند. مهندسان آن به زیر این لایه انتزاعی عمیق رفتند تا مستقیما در PTX، نوعی زبان اسمبلی برای پردازندههای گرافیکی انویدیا، کار کنند. فرض کنید وظیفه، پوست کندن سیر است.
یک پردازنده گرافیکی بهینه نشده میگوید: «پوست را با ناخنهایت بکن.» CUDA میتواند دستور دهد: «میخک را با کف چاقو له کن.» PTX به شما اجازه میدهد هر دستورالعمل فرعی را دیکته کنید: «تیغه را ۲.۳۵ اینچ بالاتر از تخته برش بلند کنید، آن را موازی با خط استوای میخک قرار دهید و با کف دست خود با نیروی ۳۶.۲ نیوتن به سمت پایین ضربه بزنید.» کم کم میتوانید بفهمید که چرا CUDA برای انویدیا اینقدر ارزشمند است - و چرا دیگران به سختی میتوانند به آن دست پیدا کنند. تنظیم عملکرد پردازنده گرافیکی (GPU) یک مشکل پیچیده است. شما نمیتوانید همینطوری یک دانشجوی کارشناسیِ تیزهوش را در خیابان مارکت به خدمت اجباری بگیرید، یک نقشهی کلود مکس به او بدهید و انتظار داشته باشید که هستههای پردازندهی گرافیکی (GPU) را هک کند. نوشتن در این سطح کار طاقتفرسایی است، مگر اینکه یک برنامهنویس حرفهای در دیپسیک باشید.