فکر کنید مغز شما یک کامپیوتره. این مغز میتونه کارهای مختلفی انجام بده؛ مثلا کتاب بخونه، یک مسئله ریاضی حل کنه، یا یک عکس رو تشخیص بده. هر کدوم از این کارها، یک جور «پردازش» به حساب میاد. توی کامپیوترها و گوشیهای ما هم قطعههایی وجود دارن که این پردازشها رو انجام میدن.
سیپییو (CPU): مغز همه کاره کامپیوتر
اول از همه سیپییو یا «واحد پردازش مرکزی» رو داریم. این قطعه، مغز اصلی و همه کاره هر دستگاه دیجیتالیه؛ از لپتاپ و گوشی هوشمند گرفته تا کامپیوترهای غولپیکر. سیپییوها طوری طراحی شدن که بتونن طیف وسیعی از کارهای مختلف رو انجام بدن. وقتی شما یک فایل رو ذخیره میکنید، یک متن رو تایپ میکنید، یا یک برنامه رو باز میکنید، این سیپییو هست که دستورات رو یکی یکی و با سرعت خیلی بالا اجرا میکنه.
یک نکته مهم در مورد سیپییو اینه که کارها رو به صورت «ترتیبی» یا پشت سر هم انجام میده. یعنی یک محاسبه رو تموم میکنه و بعد میره سراغ محاسبه بعدی. این روش برای کارهای روزمره عالیه، اما وقتی پای محاسبات خیلی سنگین و موازی به میون میاد، سیپییو ممکنه به مشکل بخوره. به همین دلیله که برای بعضی کارها، به یک دستیار قویتر نیاز پیدا میکنیم.
جیپییو (GPU): متخصص کارهای گرافیکی و موازی
اینجا جیپییو یا «واحد پردازش گرافیکی» وارد صحنه میشه. جیپییوها اول برای کارهای گرافیکی مثل رندر کردن ویدیوها و اجرای بازیهای سهبعدی طراحی شده بودن. ویژگی اصلی اونها، «پردازش موازی» هست. یعنی جیپییو میتونه هزاران کار کوچیک رو به طور همزمان انجام بده. به جای اینکه مثل سیپییو کارها رو دونه دونه انجام بده، یک مسئله بزرگ و پیچیده رو به هزاران یا حتی میلیونها تیکه کوچیکتر تقسیم میکنه و همه رو با هم حل میکنه.
این قابلیت پردازش موازی، جیپییوها رو برای دنیای هوش مصنوعی و یادگیری ماشین خیلی جذاب کرد. چون خیلی از الگوریتمهای هوش مصنوعی، شامل انجام محاسبات تکراری روی حجم عظیمی از دادهها هستن. یک جیپییو مدرن معمولا بین ۲۵۰۰ تا ۵۰۰۰ «واحد منطق و حساب» یا ALU داره که بهش اجازه میده هزاران عملیات ضرب و جمع رو به صورت همزمان انجام بده.
اما جیپییوها هم بینقص نیستن. اونها به عنوان پردازندههایی با کاربرد عمومی طراحی شدن که باید از میلیونها برنامه و نرمافزار مختلف پشتیبانی کنن. برای همین، وقتی دارن محاسبات موازی رو انجام میدن، باید مدام به حافظه خودشون دسترسی پیدا کنن تا نتایج میانی رو بخونن و ذخیره کنن. این دسترسی مداوم به حافظه، انرژی زیادی مصرف میکنه و میتونه سرعت کار رو کمی پایین بیاره. با اینکه جیپییوها در حال حاضر محبوبترین معماری پردازنده در یادگیری عمیق هستن، یک رقیب تخصصیتر هم دارن.
تیپییو (TPU): قهرمان تخصصی دنیای هوش مصنوعی
و بالاخره میرسیم به موضوع اصلی بحثمون، یعنی TPU یا «واحد پردازش تانسور». TPU یک مدار مجتمع با کاربرد خاص (ASIC) هست که توسط گوگل طراحی شده. اصطلاح ASIC یعنی این چیپ برای یک هدف خیلی مشخص ساخته شده و قرار نیست مثل سیپییو همه کاری انجام بده. هدف اصلی و تخصصی TPU، سرعت دادن به محاسبات شبکههای عصبی و یادگیری ماشینه.
گوگل وقتی TPU رو طراحی کرد، یک معماری «دامنه-خاص» ساخت. یعنی به جای اینکه یک پردازنده عمومی مثل جیپییو بسازه، یک «پردازنده ماتریسی» طراحی کرد که به طور ویژه برای بارهای کاری شبکههای عصبی بهینه شده. این طراحی تخصصی، مشکلی که جیپییوها با دسترسی مداوم به حافظه داشتن رو حل کرد و بهشون اجازه داد با قدرت پردازشی کمتر، کارها رو سریعتر انجام بدن.
پس به طور خلاصه:
- CPU: یک کارگر همه فن حریف که کارها رو یکی یکی با دقت انجام میده.
- GPU: یک تیم بزرگ از کارگرها که میتونن هزاران کار مشابه رو همزمان با هم انجام بدن.
- TPU: یک کارخانه فوق تخصصی که فقط برای یک نوع محصول (محاسبات هوش مصنوعی) ساخته شده و این کار رو با بهینهترین شکل ممکن انجام میده.
حالا که با جایگاه TPU در کنار بقیه پردازندهها آشنا شدیم، بیایید عمیقتر بشیم و ببینیم این قطعه دقیقا چیه و چطوری کار میکنه.
فصل دوم: کالبدشکافی TPU؛ درون این چیپ چه خبر است؟
همونطور که گفتیم، TPU مخفف واحد پردازش تانسوره. اما «تانسور» اصلا چی هست؟ به زبان ساده، تانسور یک ساختار دادهایه که اعداد، اشیا و انواع دیگهای از دادهها رو در یک قالب چندبعدی ذخیره میکنه. میتونید اون رو مثل یک جدول از دادهها با سطر و ستون تصور کنید (که بهش ماتریس میگیم)، اما در ابعادی بیشتر از دو بعد. در دنیای یادگیری ماشین و شبکههای عصبی، دادهها معمولا به شکل همین تانسورها پردازش میشن.
گوگل این چیپها رو به طور اختصاصی برای فریمورک یادگیری ماشین خودش یعنی «تنسورفلو» (TensorFlow) طراحی کرد. تنسورفلو یک کتابخانه متنباز از ابزارها و منابع برای ساخت، آموزش و پیادهسازی مدلهای یادگیری ماشینه.
داستان تولد TPU: یک نیاز فوری
گوگل از سال ۲۰۰۶ به فکر ساختن یک چیپ ASIC برای شبکههای عصبی بود، اما در سال ۲۰۱۳ این موضوع به یک ضرورت تبدیل شد. در اون زمان، تقاضای محاسباتی شبکههای عصبی به سرعت در حال رشد بود و گوگل متوجه شد که اگر بخواد به این تقاضا پاسخ بده، ممکنه مجبور بشه تعداد دیتاسنترهای خودش رو دو برابر کنه. این یک چالش بزرگ بود.
معمولا طراحی و ساخت یک چیپ جدید چندین سال طول میکشه، اما در مورد TPU، تیم گوگل یک کار فوقالعاده انجام داد. اونها در عرض فقط ۱۵ ماه، این پردازنده رو طراحی، تایید، تولید و در دیتاسنترهای خودشون مستقر کردن. به گفته «نورم جوپی»، مدیر فنی پروژه TPU:
«ما یک طراحی چیپ خیلی سریع انجام دادیم. واقعا قابل توجه بود. ما اولین سیلیکون رو بدون هیچ اصلاح باگ یا تغییر ماسکی عرضه کردیم. با توجه به اینکه ما همزمان با ساخت چیپ در حال استخدام تیم بودیم، استخدام طراحان RTL (طراحی مدار) و عجله برای استخدام افراد تایید طراحی، دوران پرمشغلهای بود.»
اولین نسل TPU روی یک فرآیند ۲۸ نانومتری ساخته شد، با فرکانس ۷۰۰ مگاهرتز کار میکرد و موقع کار حدود ۴۰ وات برق مصرف میکرد. چون باید این چیپها رو خیلی سریع در سرورهای موجود گوگل نصب میکردن، تصمیم گرفتن اونها رو به شکل یک کارت شتابدهنده خارجی طراحی کنن که در اسلات هارد دیسک SATA قرار میگرفت. این کارت از طریق یک باس PCIe Gen3 x16 به سرور میزبان وصل میشد که پهنای باند موثر ۱۲.۵ گیگابایت بر ثانیه رو فراهم میکرد.
جادوی TPU از کجا میاد؟
حالا سوال اینه که TPU چطور میتونه اینقدر بهینه عمل کنه؟ چند تا دلیل کلیدی وجود داره:
۱. کوانتیزیشن (Quantization): کار با اعداد سادهتر
وقتی بیرون بارون میاد، شما معمولا نیاز ندارید بدونید دقیقا چند قطره آب در هر ثانیه داره میباره. فقط میخواهید بدونید بارون شدیده یا نمنم. شبکههای عصبی هم برای پیشبینی، اغلب به دقت بالای محاسبات ممیز شناور (اعداد اعشاری) با ۳۲ یا ۱۶ بیت نیاز ندارن. با کمی تلاش، میشه از اعداد صحیح ۸ بیتی برای محاسبات یک شبکه عصبی استفاده کرد و همچنان دقت قابل قبولی داشت.
این تکنیک که بهش «کوانتیزیشن» میگن، مقادیر بین یک حداقل و حداکثر مشخص رو با یک عدد صحیح ۸ بیتی تقریب میزنه. این کار دو مزیت بزرگ داره:
- کاهش حجم محاسبات: کار با اعداد صحیح ۸ بیتی خیلی سادهتر و سریعتر از اعداد ممیز شناور ۳۲ بیتیه.
- کاهش مصرف حافظه: حجم مدلها به شدت کم میشه. برای مثال، وقتی مدل معروف تشخیص تصویر Inception رو کوانتیزه میکنیم، حجمش از ۹۱ مگابایت به ۲۳ مگابایت کاهش پیدا میکنه، یعنی تقریبا یک چهارم اندازه اصلی.
استفاده از عملیات عددی صحیح به جای ممیز شناور، باعث کاهش شدید مصرف انرژی و فضای سختافزاری TPU میشه. یک TPU شامل ۶۵,۵۳۶ ضربکننده عدد صحیح ۸ بیتی هست. در حالی که جیپییوهای محبوب در محیطهای ابری، چند هزار ضربکننده ممیز شناور ۳۲ بیتی دارن. تا زمانی که دقت ۸ بیتی برای کاربرد شما کافی باشه، این یعنی میتونید تا ۲۵ برابر یا بیشتر ضربکننده داشته باشید.
۲. معماری CISC: دستورات سطح بالا
بیشتر سیپییوهای مدرن از سبک طراحی «ریسک» (RISC) یا «کامپیوتر با مجموعه دستورات کاهشیافته» پیروی میکنن. در این سبک، تمرکز روی تعریف دستورات ساده (مثل بارگذاری، ذخیره، جمع و ضرب) و اجرای هرچه سریعتر اونهاست.
اما گوگل برای TPU سبک «سیسک» (CISC) یا «کامپیوتر با مجموعه دستورات پیچیده» رو انتخاب کرد. در طراحی سیسک، تمرکز روی پیادهسازی دستورات سطح بالاست که با هر دستور، کارهای پیچیدهتری رو انجام میدن (مثلا محاسبه ضرب و جمع به دفعات زیاد).
دستورات اصلی TPU به این شکل هستن:
دستور TPU | کارکرد |
---|---|
Read_Host_Memory | خوندن داده از حافظه میزبان |
Read_Weights | خوندن وزنها از حافظه |
MatrixMultiply/Convolve | انجام ضرب ماتریسی یا کانولوشن با دادهها و وزنها و جمع کردن نتایج |
Activate | اعمال توابع فعالسازی |
Write_Host_Memory | نوشتن نتیجه در حافظه میزبان |
این مجموعه دستورات، دقیقا روی عملیات اصلی مورد نیاز برای یک شبکه عصبی تمرکز دارن: ضرب ماتریسی دادههای ورودی در وزنها و اعمال یک تابع فعالسازی. به عبارت دیگه، طراحی TPU جوهره محاسبات شبکه عصبی رو در خودش داره.
۳. قلب تپنده TPU: آرایه سیستولیک (Systolic Array)
مهمترین و شاید جالبترین بخش TPU، واحد ضرب ماتریسی (MXU) اون هست که با یک معماری کاملا متفاوت به نام «آرایه سیستولیک» ساخته شده.
سیپییوها کامپیوترهای همهکاره هستن. برای این کار، مقادیر رو در رجیسترها ذخیره میکنن و یک برنامه به واحد منطق و حساب (ALU) میگه کدوم رجیسترها رو بخونه، چه عملیاتی انجام بده و نتیجه رو در کدوم رجیستر بذاره. این انعطافپذیری، هزینه انرژی و فضای چیپ رو بالا میبره.
اما در یک MXU، هدف فقط ضرب ماتریسیه. در این عملیات، ورودیها بارها و بارها استفاده میشن. پس میتونیم هر ورودی رو فقط یک بار بخونیم و برای چندین عملیات مختلف ازش استفاده کنیم، بدون اینکه نیازی به ذخیره مجدد در رجیستر باشه. در آرایه سیستولیک، واحدهای حساب (ALU) فقط به همسایههای خودشون وصل هستن. این باعث میشه سیمکشیها کوتاه و کممصرف باشن. ALUها هم فقط ضرب و جمع رو در الگوهای ثابتی انجام میدن که طراحیشون رو ساده میکنه.
این طراحی رو «سیستولیک» مینامند، چون دادهها مثل موج در چیپ جریان پیدا میکنن، شبیه به روشی که قلب خون رو پمپاژ میکنه. این آرایه به طور خاص برای بهینگی در مصرف انرژی و فضا در عملیات ضرب ماتریسی طراحی شده و برای محاسبات عمومی مناسب نیست.
واحد ضرب ماتریسی TPU یک آرایه سیستولیک ۲۵۶ در ۲۵۶ داره، یعنی در مجموع ۶۵,۵۳۶ واحد ALU. این یعنی یک TPU میتونه در هر چرخه کلاک، ۶۵,۵۳۶ عملیات ضرب و جمع رو برای اعداد صحیح ۸ بیتی انجام بده. از اونجایی که فرکانس TPU حدود ۷۰۰ مگاهرتز هست، میتونه در هر ثانیه حدود ۹۲ تریلیون عملیات (۹۲ Teraops) در واحد ماتریسی خودش انجام بده.
بیایید تعداد عملیات در هر چرخه کلاک رو بین پردازندهها مقایسه کنیم:
نوع پردازنده | عملیات در هر چرخه کلاک |
---|---|
CPU (بدون افزونههای برداری) | چند عدد |
CPU (با افزونههای برداری) | دهها |
GPU | دهها هزار |
TPU | صدها هزار (تا ۱۲۸ هزار) |
در طول این ضرب ماتریسی عظیم، تمام نتایج میانی مستقیما بین ۶۴ هزار ALU منتقل میشن، بدون هیچ دسترسی به حافظه. این کار مصرف انرژی رو به شدت کاهش میده و سرعت رو بالا میبره. در نتیجه، TPU نسبت به سیپییوها و جیپییوهای همدورهاش، به ترتیب ۸۳ و ۲۹ برابر نسبت عملکرد به وات بهتری ارائه میده.
۴. طراحی مینیمال و قطعی
یک مزیت دیگه طراحی یک پردازنده تخصصی برای شبکههای عصبی اینه که میتونید در طراحی خودتون یک مینیمالیست تمام عیار باشید. در مقاله TPU اومده:
«در مقایسه با سیپییوها و جیپییوها، TPU تکرشتهای هیچکدام از ویژگیهای میکروآرچیتکچرال پیچیدهای رو که ترانزیستور و انرژی مصرف میکنن تا عملکرد میانگین رو بهبود بدن اما نه عملکرد صدک ۹۹ رو، نداره: نه کش، نه پیشبینی انشعاب، نه اجرای خارج از ترتیب، نه چندپردازشی، نه پیشواکشی، نه ادغام آدرس، نه چندرشتهای، نه تعویض زمینه و غیره. مینیمالیسم یک فضیلت برای پردازندههای دامنه-خاص است.»
چون پردازندههای عمومی مثل سیپییو و جیپییو باید در طیف وسیعی از کاربردها عملکرد خوبی داشته باشن، مکانیزمهای پیچیده زیادی دارن. این باعث میشه رفتارشون سخت پیشبینی بشه. اما طراحی TPU کاملا مینیمال و «قطعی» هست، چون در هر لحظه فقط یک کار انجام میده: پیشبینی شبکه عصبی. شما میتونید سادگی اون رو در نقشه کف (Floor Plan) چیپ TPU ببینید. در این نقشه، بخشهای قرمز رنگ (منطق کنترل) خیلی کوچیکتر از سیپییوها و جیپییوها هستن و کمتر از ۲ درصد از سطح چیپ رو اشغال میکنن.
مهمتر از اون، با وجود داشتن واحدهای محاسباتی خیلی بیشتر و حافظه روی چیپ بزرگتر، چیپ TPU نصف اندازه چیپهای دیگه است. چون هزینه یک چیپ تقریبا با توان سوم مساحتش متناسبه، نصف شدن اندازه چیپ، هزینه ساخت اون رو تقریبا ۸ برابر کاهش میده.
این طراحی قطعی به ما اجازه میده دقیقا تخمین بزنیم که اجرای یک شبکه عصبی چقدر طول میکشه. این باعث میشه بتونیم با حفظ یک محدودیت زمانی سخت، نزدیک به حداکثر توان چیپ کار کنیم. به همین دلیله که TPU به طور میانگین حدود ۱۵ تا ۳۰ برابر سریعتر از جیپییو یا سیپییو همدورهاش عمل میکنه و نسبت «عملیات بر وات» اون هم ۳۰ تا ۸۰ برابر بالاتره.
فصل سوم: تکامل TPUها؛ از نسل اول تا امروز
گوگل از سال ۲۰۱۵ که اولین TPU رو معرفی کرد، بیکار ننشسته و نسلهای مختلفی از این چیپ رو با بهبودهای چشمگیر عرضه کرده. بیایید نگاهی به این سیر تکاملی بندازیم.
TPU v1 (معرفی در ۲۰۱۵)
- فرآیند ساخت: ۲۸ نانومتر
- حافظه روی چیپ: ۲۸ مگابایت
- حافظه خارجی: ۸ گیگابایت DDR3
- توان محاسباتی: ۲۳ تریلیون عملیات بر ثانیه (عدد صحیح)
- تمرکز اصلی: این نسل فقط برای «استنتاج» (Inference) طراحی شده بود. استنتاج یعنی اجرای یک مدل آموزشدیده برای انجام پیشبینی. این چیپها فقط با اعداد صحیح ۸ بیتی کار میکردن و برای آموزش مدلها مناسب نبودن.
TPU v2 (معرفی در ۲۰۱۷)
- فرآیند ساخت: ۱۶ نانومتر
- حافظه خارجی: ۱۶ گیگابایت HBM (حافظه با پهنای باند بالا)
- توان محاسباتی: ۴۵ تریلیون عملیات ممیز شناور بر ثانیه (teraFLOPS)
- تغییرات کلیدی: این نسل یک جهش بزرگ بود. گوگل متوجه شد که نسل اول با پهنای باند حافظه محدود شده بود. برای همین در نسل دوم از حافظه HBM استفاده کرد که پهنای باند رو به ۶۰۰ گیگابایت بر ثانیه رسوند. مهمتر از اون، TPU v2 میتونست محاسبات ممیز شناور رو هم انجام بده و از فرمت
bfloat16
که توسط Google Brain ابداع شده بود، پشتیبانی میکرد. این یعنی از این نسل به بعد، TPUها هم برای آموزش و هم برای استنتاج مدلها قابل استفاده بودن. - مفهوم پاد (Pod): گوگل این چیپها رو در ماژولهای چهار تایی با توان ۱۸۰ ترافلاپس مرتب کرد. بعد ۶۴ تا از این ماژولها رو در یک «پاد» با ۲۵۶ چیپ و توان ۱۱.۵ پتافلاپس (۱۱,۵۰۰ ترافلاپس) کنار هم قرار داد.
TPU v3 (معرفی در ۲۰۱۸)
- فرآیند ساخت: ۱۶ نانومتر
- حافظه خارجی: ۳۲ گیگابایت HBM
- توان محاسباتی: ۱۲۳ ترافلاپس
- تغییرات کلیدی: پردازندههای نسل سوم دو برابر قدرتمندتر از نسل دوم بودن و در پادهایی با چهار برابر تعداد چیپ (تا ۱۰۲۴ چیپ در هر پاد) مستقر میشدن. این یعنی عملکرد هر پاد ۸ برابر نسبت به نسل دوم افزایش پیدا کرد. یکی از مشخصههای این نسل، استفاده از سیستم خنککننده مایع بود تا بتونه عملکرد بالاتر رو مدیریت کنه.
TPU v4 (معرفی در ۲۰۲۱)
- فرآیند ساخت: ۷ نانومتر
- حافظه خارجی: ۳۲ گیگابایت HBM
- توان محاسباتی: ۲۷۵ ترافلاپس
- تغییرات کلیدی: عملکرد این نسل بیش از دو برابر نسبت به TPU v3 بهبود پیدا کرد. به گفته ساندار پیچای، مدیرعامل گوگل، «یک پاد v4 شامل ۴۰۹۶ چیپ v4 هست و هر پاد در مقیاس بزرگ، ۱۰ برابر پهنای باند اتصال بین چیپها نسبت به هر تکنولوژی شبکه دیگهای داره». این اتصال سریع بین چیپها با استفاده از «سوئیچهای مدار نوری» انجام میشه. یک مقاله از گوگل در آوریل ۲۰۲۳ ادعا کرد که TPU v4 در بنچمارکهای یادگیری ماشین، ۵ تا ۸۷ درصد سریعتر از Nvidia A100 عمل میکنه.
- نسخه v4i: یک نسخه «استنتاج» از این نسل هم به نام v4i وجود داره که سبکتره و به خنککننده مایع نیاز نداره.
نسل پنجم: v5e و v5p (معرفی در ۲۰۲۳)
جالبه بدونید که گوگل برای طراحی چیدمان فیزیکی TPU v5 از یک کاربرد جدید یادگیری تقویتی عمیق کمک گرفت.
- TPU v5e: این نسخه «مقرونبهصرفه» نسل پنجمه. حرف
e
در آخر اسمش مخفف «efficiency» یا بهینگی هست. این چیپ برای نیازهای آموزش و استنتاج طراحی شده و نسبت به TPU v4، تا ۲.۵ برابر عملکرد به ازای هر دلار بیشتر و تا ۱.۷ برابر سرعت بالاتری داره. هر چیپ v5e میتونه تا ۳۹۳ تریلیون عملیات عدد صحیح ۸ بیتی در ثانیه انجام بده. - TPU v5p: این نسخه «قدرتمندترین» TPU برای آموزش مدلهای هوش مصنوعیه. حرف
p
در آخر اسمش مخفف «performance» یا عملکرد هست. گوگل در دسامبر ۲۰۲۳ این نسخه رو معرفی کرد و ادعا شد که با چیپ قدرتمند H100 انویدیا رقابت میکنه.
Trillium (v6e) (معرفی در ۲۰۲۴)
- توان محاسباتی: ۹۱۸ ترافلاپس (bf16)
- تغییرات کلیدی: این نسل ششم TPU هست که در کنفرانس Google I/O ۲۰۲۴ معرفی شد. گوگل ادعا کرد که این نسل ۴.۷ برابر افزایش عملکرد نسبت به TPU v5e داره. این بهبود از طریق واحدهای ضرب ماتریسی بزرگتر و افزایش فرکانس کلاک به دست اومده. ظرفیت و پهنای باند حافظه HBM هم دو برابر شده. یک پاد از این نسل میتونه تا ۲۵۶ واحد Trillium داشته باشه.
Ironwood (v7) (معرفی در ۲۰۲۵)
- توان محاسباتی: ۴۶۱۴ ترافلاپس (fp8)
- تغییرات کلیدی: این نسل هفتم TPU در کنفرانس Google Cloud Next در آوریل ۲۰۲۵ رونمایی شد. این چیپ جدید در دو پیکربندی عرضه میشه: یک خوشه ۲۵۶ چیپی و یک خوشه ۹۲۱۶ چیپی. این نسل قرار است «عصر استنتاج» را رهبری کند و از مدلهایی که صرفا اطلاعات را بازیابی میکنند به سمت مدلهایی که بینش تولید میکنند و به عنوان همکاران فعال عمل میکنند، حرکت کند.
در جدول زیر میتونید خلاصه مشخصات نسلهای مختلف TPU رو ببینید:
نسخه | تاریخ معرفی | فرآیند ساخت | حافظه خارجی | پهنای باند حافظه | توان محاسباتی (bf16) |
---|---|---|---|---|---|
v1 | ۲۰۱۵ | ۲۸ نانومتر | ۸ گیگابایت DDR3 | ۳۴ گیگابایت بر ثانیه | ۲۳ تراآپس (int8) |
v2 | ۲۰۱۷ | ۱۶ نانومتر | ۱۶ گیگابایت HBM | ۶۰۰ گیگابایت بر ثانیه | ۴۵ ترافلاپس |
v3 | ۲۰۱۸ | ۱۶ نانومتر | ۳۲ گیگابایت HBM | ۹۰۰ گیگابایت بر ثانیه | ۱۲۳ ترافلاپس |
v4 | ۲۰۲۱ | ۷ نانومتر | ۳۲ گیگابایت HBM | ۱۲۰۰ گیگابایت بر ثانیه | ۲۷۵ ترافلاپس |
v5e | ۲۰۲۳ | نامشخص | ۱۶ گیگابایت HBM | ۸۱۹ گیگابایت بر ثانیه | ۱۹۷ ترافلاپس |
v5p | ۲۰۲۳ | نامشخص | ۹۵ گیگابایت HBM | ۲۷۶۵ گیگابایت بر ثانیه | ۴۵۹ ترافلاپس |
v6e (Trillium) | ۲۰۲۴ | نامشخص | ۳۲ گیگابایت | ۱۶۴۰ گیگابایت بر ثانیه | ۹۱۸ ترافلاپس |
v7 (Ironwood) | ۲۰۲۵ | نامشخص | ۱۹۲ گیگابایت HBM | ۷.۳۷ ترابایت بر ثانیه | ۴۶۱۴ ترافلاپس (fp8) |
فصل چهارم: TPUهای اج (Edge TPU)؛ هوش مصنوعی در دستان شما
تا اینجا در مورد TPUهایی صحبت کردیم که در دیتاسنترهای عظیم گوگل زندگی میکنن و بهشون «Cloud TPU» میگن. اما گوگل یک خانواده دیگه از TPUها هم داره که برای دنیای متفاوتی ساخته شدن.
در جولای ۲۰۱۸، گوگل «Edge TPU» رو معرفی کرد. این یک چیپ ASIC هست که به طور خاص برای اجرای مدلهای یادگیری ماشین در «رایانش لبه» (Edge Computing) طراحی شده. رایانش لبه یعنی پردازش دادهها در خود دستگاه یا نزدیک به منبع داده انجام بشه، به جای اینکه به یک دیتاسنتر ابری فرستاده بشه. این یعنی Edge TPU خیلی کوچیکتره و انرژی بسیار کمتری نسبت به برادران بزرگترش مصرف میکنه.
یک Edge TPU میتونه ۴ تریلیون عملیات در ثانیه رو با مصرف فقط ۲ وات برق انجام بده.
در ژانویه ۲۰۱۹، گوگل این چیپها رو تحت برند «Coral» در اختیار توسعهدهندهها قرار داد. محصولات Coral شامل کامپیوترهای تکبردی، ماژولهای سیستم، لوازم جانبی USB و کارتهای mini PCI-e و M.2 میشن. این دستگاهها به توسعهدهندهها اجازه میدن هوش مصنوعی رو مستقیما به دستگاههای کوچیک مثل دوربینهای هوشمند، رباتها و سنسورهای اینترنت اشیا بیارن.
نکته مهم در مورد Edge TPU اینه که اونها فقط میتونن عملیات «پیشرو» (forward-pass) رو تسریع کنن، یعنی عمدتا برای انجام «استنتاج» مفید هستن. همچنین فقط از محاسبات ۸ بیتی پشتیبانی میکنن.
Edge TPU در زندگی روزمره
شاید براتون جالب باشه که بدونید این چیپهای کوچیک به گوشیهای هوشمند ما هم راه پیدا کردن.
- Pixel Neural Core: در ۱۵ اکتبر ۲۰۱۹، گوگل گوشی Pixel 4 رو معرفی کرد که یک Edge TPU به نام «Pixel Neural Core» داشت. گوگل این چیپ رو برای ویژگیهای کلیدی دوربین این گوشی سفارشی کرده بود.
- Google Tensor: در سال ۲۰۲۱، گوگل با عرضه گوشیهای سری Pixel 6، یک چیپ سفارشی به نام «Google Tensor» رو معرفی کرد که یک Edge TPU در داخل خودش داشت. این چیپ در بنچمارکهای متمرکز بر یادگیری ماشین، مزایای عملکردی بسیار بزرگی نسبت به رقبا نشون داد.
فصل پنجم: چطور از TPU استفاده کنیم و برای چه کارهایی مناسب است؟
حالا که با انواع TPU آشنا شدیم، سوال اینه که این چیپها دقیقا برای چه کارهایی خوب هستن و چطور میشه ازشون استفاده کرد.
چه زمانی از TPU استفاده کنیم؟
TPUها برای بارهای کاری خاصی بهینه شدن. به طور کلی، میتونید طبق این راهنما تصمیم بگیرید که از چه سختافزاری استفاده کنید:
- CPU: برای نمونهسازی سریع که به حداکثر انعطافپذیری نیاز داره، مدلهای سادهای که آموزش اونها طولانی نیست، و مدلهایی که توسط ورودی/خروجی یا پهنای باند شبکه محدود شدن.
- GPU: برای مدلهایی که تعداد زیادی عملیات سفارشی دارن که باید حداقل بخشی از اونها روی سیپییو اجرا بشه، و مدلهای متوسط تا بزرگی که اندازه بچ (Batch Size) موثر بزرگی دارن.
- TPU:
- مدلهایی که محاسباتشون تحت سلطه ضرب ماتریسی است.
- مدلهایی که در حلقه اصلی آموزش، هیچ عملیات سفارشی PyTorch/JAX ندارن.
- مدلهایی که هفتهها یا ماهها آموزش میبینن.
- مدلهای بزرگ با اندازه بچ موثر بزرگ.
- مدلهایی با امبدینگهای فوقالعاده بزرگ که در سیستمهای توصیهگر پیشرفته رایج هستن.
TPUها برای این کارها مناسب نیستن:
- برنامههای جبر خطی که به انشعابهای مکرر نیاز دارن یا شامل عملیات جبری عنصری زیادی هستن.
- بارهای کاری که به محاسبات با دقت بالا نیاز دارن.
کاربردهای رایج TPU
TPUها در طیف وسیعی از کاربردها استفاده میشن. بعضی از مهمترین اونها عبارتند از:
- آموزش مدلهای زبان بزرگ (LLM): ساختن مدلهایی مثل Gemini و PaLM.
- تولید محتوای رسانهای: ساختن عکس، ویدیو و موسیقی.
- موتورهای توصیهگر و شخصیسازی: مثل پیشنهاد ویدیو در یوتیوب.
- خدمات بینایی کامپیوتر: تحلیل و تشخیص اشیا در تصاویر و ویدیوها.
- تولید گفتار مصنوعی.
- کاربردهای حوزه سلامت: مثل مدلسازی تاخوردگی پروتئین و کشف دارو.
گوگل از TPUها در تمام سرویسهای مبتنی بر هوش مصنوعی خودش مثل جستجو، عکسها، نقشهها و Street View استفاده میکنه که همگی به بیش از ۱ میلیارد کاربر خدمترسانی میکنن. در پروژه Street View، گوگل تونست با استفاده از TPUها تمام متنهای موجود در پایگاه دادهاش رو در کمتر از پنج روز پیدا کنه. در Google Photos، یک TPU به تنهایی میتونه روزانه بیش از ۱۰۰ میلیون عکس رو پردازش کنه.
چگونه به TPU دسترسی پیدا کنیم؟
یک سوال مهم که خیلیها میپرسن اینه که «آیا میتونم یک TPU بخرم و در کامپیوتر شخصی خودم نصب کنم؟». جواب کوتاه اینه که خیر. TPUها به صورت کارتهای توسعه PCIe برای فروش عمومی عرضه نمیشن.
اما راههایی برای استفاده از اونها وجود داره. گوگل از طریق سرویسهای ابری خودش، دسترسی به TPUها رو برای اشخاص ثالث فراهم کرده:
- Cloud TPU: این یک سرویس وب در پلتفرم ابری گوگل (Google Cloud) هست که TPUها رو به عنوان منابع محاسباتی مقیاسپذیر در اختیار شما قرار میده.
- Google Kubernetes Engine (GKE): میتونید قدرت TPUها رو با انعطافپذیری و مقیاسپذیری GKE ترکیب کنید تا مدلهای یادگیری ماشین رو سریعتر بسازید و مستقر کنید.
- Vertex AI: برای کسانی که به دنبال سادهترین راه برای توسعه مدلهای هوش مصنوعی هستن، Vertex AI یک پلتفرم کاملا مدیریتشده است که زیرساختهای لازم رو برای آموزش با عملکرد بالا و ارائه سرویس با تاخیر کم فراهم میکنه.
- سرویسهای مبتنی بر نوتبوک: گوگل از طریق سرویسهایی مثل Kaggle و Colaboratory (Colab)، دسترسی (معمولا محدود و رایگان) به TPUها رو برای محققان و علاقهمندان فراهم میکنه.
هزینه استفاده از TPU چقدر است؟
قیمتگذاری Cloud TPU بر اساس «چیپ-ساعت» محاسبه میشه. یعنی شما به ازای هر ساعتی که از یک چیپ TPU استفاده میکنید، هزینه پرداخت میکنید. در اینجا یک نمونه از قیمتگذاری برای نسلهای مختلف TPU (بدون تخفیفهای تعهدی) آورده شده:
نسخه Cloud TPU | قیمت ارزیابی (به ازای هر چیپ-ساعت) | قیمت با تعهد ۱ ساله (شروع از) | قیمت با تعهد ۳ ساله (شروع از) |
---|---|---|---|
Trillium | ۲.۷۰ دلار | ۱.۸۹ دلار | ۱.۲۲ دلار |
Cloud TPU v5p | ۴.۲۰ دلار | ۲.۹۴ دلار | ۱.۸۹ دلار |
Cloud TPU v5e | ۱.۲۰ دلار | ۰.۸۴ دلار | ۰.۵۴ دلار |
همونطور که میبینید، استفاده از این سختافزارهای قدرتمند، به خصوص برای پروژههای بزرگ، میتونه هزینه قابل توجهی داشته باشه.
فصل ششم: یک ماجرای حقوقی؛ دعوای گوگل و Singular Computing
در سال ۲۰۱۹، شرکتی به نام Singular Computing که در سال ۲۰۰۹ توسط جوزف بیتس، استاد مدعو در MIT، تاسیس شده بود، از گوگل به خاطر نقض پتنت در چیپهای TPU شکایت کرد.
این شرکت ادعا میکرد که گوگل در طراحی TPUهای خودش از تکنولوژیهای ثبت شده توسط اونها استفاده کرده. تا سال ۲۰۲۰، گوگل موفق شد تعداد ادعاها رو به دو مورد کاهش بده. هر دو پتنت مربوط به محدوده دینامیکی اعداد ممیز شناور بودن. Singular Computing به طور خاص به استفاده گوگل از فرمت bfloat16
اشاره کرد، چون این فرمت محدوده دینامیکی بیشتری نسبت به فرمت استاندارد float16
داره.
ادعای Singular این بود که فرمتهای ممیز شناور غیراستاندارد در سال ۲۰۰۹ بدیهی نبودن. اما گوگل در دفاع از خودش گفت که فرمت VFLOAT
که در سال ۲۰۰۲ وجود داشته، یک نمونه هنر پیشین (prior art) محسوب میشه.
در نهایت، در اواخر دادگاه در ژانویه ۲۰۲۴، گوگل با شرایطی نامشخص با این شرکت به توافق رسید و پرونده بسته شد.
فصل هفتم: پرسش و پاسخهای متداول
حالا که با جزئیات TPUها آشنا شدیم، بیایید به چند تا از سوالات رایجی که ممکنه در ذهن شما شکل گرفته باشه، پاسخ بدیم.
سوال ۱: بالاخره TPU بهتره یا GPU؟
این سوال مثل اینه که بپرسیم کامیون بهتره یا ماشین مسابقه. جوابش اینه که «بستگی داره برای چه کاری بخواهید».
- GPUها مثل ماشینهای مسابقه هستن؛ خیلی سریع و قدرتمند، اما برای کاربردهای عمومیتر. اونها در پردازش موازی عالی هستن و برای طیف وسیعی از کارها از بازی و ویرایش ویدیو گرفته تا هوش مصنوعی استفاده میشن. انعطافپذیری بالایی دارن.
- TPUها مثل کامیونهای معدن فوق تخصصی هستن. اونها فقط برای یک کار مشخص (محاسبات شبکههای عصبی) ساخته شدن و این کار رو با بهینگی فوقالعادهای از نظر انرژی و سرعت انجام میدن. در حوزه تخصصی خودشون، معمولا از GPUها عملکرد بهتری دارن، اما برای کارهای دیگه قابل استفاده نیستن.
پس هیچکدوم به طور مطلق «بهتر» نیست. انتخاب بین اونها به پروژه، بودجه و نوع محاسباتی که نیاز دارید، بستگی داره.
سوال ۲: چرا گوگل خودش چیپ طراحی کرد؟ مگر نمیتونست از GPUهای موجود استفاده کنه؟
همونطور که در داستان تولد TPU گفتیم، گوگل حدود ۱۰ سال پیش متوجه شد که با رشد سریع سرویسهای هوش مصنوعی مثل تشخیص گفتار، اگر بخواد از سختافزارهای موجود در بازار استفاده کنه، باید تعداد دیتاسنترهای خودش رو دو برابر کنه. این کار هم از نظر هزینه و هم از نظر مصرف انرژی، یک چالش عظیم بود. اونها به چیزی نیاز داشتن که خیلی بهینهتر باشه. برای همین تصمیم گرفتن خودشون دست به کار بشن و چیپی رو از پایه طراحی کنن که دقیقا برای نیازهای اونها ساخته شده باشه. این تصمیم منجر به تولد TPU شد.
سوال ۳: آیا میتونم یک TPU بخرم و روی کامپیوتر گیمینگ خودم نصب کنم؟
نه، این امکان وجود نداره. TPUها، به خصوص Cloud TPUها، برای کار در دیتاسنترهای عظیم و در مقیاس بزرگ طراحی شدن. اونها به صورت یک محصول مصرفی برای کامپیوترهای شخصی فروخته نمیشن. تنها راه استفاده از قدرت اونها، از طریق سرویسهای ابری گوگل مثل Google Cloud، Vertex AI یا پلتفرمهای آموزشی مثل Colab و Kaggle هست. البته محصولات Edge TPU مثل Coral برای توسعهدهندهها قابل خرید هستن، اما اونها برای کارهای کوچک و در لبه شبکه طراحی شدن، نه برای آموزش مدلهای بزرگ.
سوال ۴: شنیدم که TPUها پایدارتر هستن. این یعنی چی؟
بله، یکی از اهداف اصلی گوگل در طراحی نسلهای جدید TPU، افزایش بهینگی انرژی بوده. برای مثال، نسل ششم TPU یعنی Trillium، حدود ۶۷ درصد بهینگی انرژی بیشتری نسبت به نسل قبلی خودش (TPU v5e) داره. این یعنی با مصرف انرژی کمتر، کار بیشتری انجام میده. با توجه به اینکه تقاضا برای هوش مصنوعی به سرعت در حال افزایشه، پایداری و کاهش مصرف انرژی دیتاسنترها به یک موضوع خیلی مهم تبدیل شده و TPUها نقش کلیدی در این زمینه ایفا میکنن. یک مطالعه داخلی گوگل نشون داده که نسل Trillium در مدیریت بارهای کاری هوش مصنوعی، سه برابر کربن-کارآمدتر از نسل TPU v4 بوده.
سوال ۵: آیا TPUها فقط با TensorFlow کار میکنن؟
TPUها از ابتدا برای کار با فریمورک TensorFlow گوگل طراحی شدن و بیشترین سازگاری و پشتیبانی رو با این فریمورک دارن. اما این به این معنی نیست که فقط با تنسورفلو کار میکنن. گزینههای دیگهای مثل JAX و PyTorch هم وجود دارن و میشه کدهای نوشته شده با این فریمورکها رو روی Cloud TPU اجرا کرد. با این حال، استفاده از اونها با TPU ممکنه به سادگی و روانی کار با TensorFlow نباشه.
منابع
- [۲] TPU vs GPU: Pros and Cons | OpenMetal IaaS
- [۴] What’s the difference between CPUs, GPUs and TPUs?
- [۶] [D] Is it possible to buy a standalone TPU? (Tensor Processing Unit) : r/MachineLearning
- [۸] [۱۷۰۴.۰۴۷۶۰] In-Datacenter Performance Analysis of a Tensor Processing Unit
- [۱۰] What Is a Tensor Processing Unit (TPU)? | Built In
دیدگاهتان را بنویسید