TensorFlow یک کتابخانه نرم افزاری منبع باز قدرتمند برای محاسبات عددی است، که به طور خاص برای یادگیری ماشین در مقیاس بزرگ، ارائه و تنظیم شده است. اصل اساسی آن ساده است: شما در ابتدا درپایتون یک نمودار از محاسباتی که باید انجام شود، تعریف می کنید (برای مثال شکل زیر)، و سپس تنسورفلو آن نمودار را می گیرد و آن را با استفاده از کد بهینه سازی شده C++ اجرا می کند. مهمتر از همه این که می توان نمودار را به چند تکه شکست و آنها را به صورت موازی بر روی چند CPU یا GPU اجرا کرد. تنسورفلو از محاسبات توزیع شده نیز پشتیبانی میکند به طوری که شما می توانید با تقسیم محاسبات در صدها سرور، شبکه های عصبی عظیم را روی مجموعه های آموزش بسیار بزرگ در مدت زمانی معقول آموزش دهید. TensorFlow می تواند یک شبکه با میلیون ها پارامتر را روی یک مجموعه آموزشی متشکل از میلیاردها نمونه هر یک با میلیونها ویژگی، آموزش دهد. این جای تعجب ندارد، چرا که TensorFlow توسط تیم Google Brain توسعه داده شده و از قدرت بسیاری از سرویسهای بزرگ مقیاس گوگل، مانند Google Cloud Speech ، Google Photos وGoogle Search بهره میبرد.
هنگامی که TensorFlow در ماه نوامبر سال ۲۰۱۵ منبع باز اعلام شد، تقریبا تعداد قابل توجهی کتابخانه معروف منبع باز برای یادگیری عمیق (شکل بالا) وجود داشت و با نگاهی عادلانه، بسیاری از ویژگی های تنسورفلو پیش از این در یک کتابخانه و یا دیگری وجود داشته است. با این وجود، طراحی تمیز TensorFlow، مقیاس پذیری، انعطاف پذیری و اسناد جامع و کامل آن (بدون در نظر گرفتن نام گوگل) به سرعت آن را به بالای لیست رساند.
به طور خلاصه، TensorFlow طراحی شده بود تا انعطاف پذیر، مقیاس پذیر و آماده تولید باشد و چارچوبهای موجود تنها دو مورد از این سه ویژگی را فراهم میکردند.
در اینجا به برخی نکات برجسته تنسورفلو اشاره میکنیم:
اصلی ترین API پایتون این کتابخانه، انعطاف پذیری بسیار بیشتری (البته با پیچیدگی بیشتر) ارائه می دهد که برای انواع محاسبات، در هر نوعی از معماری شبکه های عصبی که فکرش را می کنید، مناسب است. این کتابخانه شامل پیاده سازی C++ بسیار کارآمد عملگرهای یادگیری ماشین است که برای ساخت شبکه های عصبی به کار میروند. همچنین یک C++ API وجود دارد به خصوص برای کسانی که می خواهند عملیات high-performance مختص به خودشان را تعریف کنند. این رابط کاربری چندین گره بهینه سازی پیشرفته، برای جستجوی تابع پارامتری ارائه میدهد. های که به حداقل رساندن یک تابع هزینه. استفاده از این ویژگی بسیار آسان است زیرا تنسورفلو به طور خودکار هزینه مشتق گیری را با توجه به نوع تابع تعریف شده، کاهش میدهد. این کار افتراق اتوماتیک (یا autodiff) نامیده می شود. این کتابخانه همچنین با یک ابزار تجسم فوق العاده به نام TensorBoard همراه است که اجازه می دهد نمودار محاسباتی، منحنی های یادگیری و … را مشاهده کنید و به جست و جو در میان آنها بپردازید.
گوگل همچنین یک سرویس ابری برای اجرای نمودارهای TensorFlow راه اندازی کرده است. در آخر باید گفت، این کتابخانه یک تیم اختصاصی از توسعه دهندگان پرشور و حرفه ای و یک جامعه رو به رشد دارد که به بهبود آن کمک میکنند و یکی از محبوب ترین پروژه های منبع باز درر GitHub است و هر روز پروژه های بزرگ بیشتر و بیشتری بر مبنای آن ساخته میشود
در می ۲۰۱۶، گوگل از «واحد پردازش تانسور» (Tensor Processing Unit | TPU) خود پردهبرداری کرد که یک «مدار مجتمع با کاربرد خاص» (Application-Specific Integrated Circuit) (یک تراشه کامپیوتری) است. این تراشه، برای کاربردهای یادگیری ماشین و تنسورفلو طراحی شده بود. TPU یک «شتابدهنده هوش مصنوعی» (AI accelerator) قابل برنامهریزی است که برای فراهم کردن «توان عملیاتی» (Throughput) بالا برای «محاسبات دقت پایین» (Low-Precision Arithmetic) (برای مثال ۸ بیتی) طراحی شده است؛ این شتابدهنده، امکان ارائه مرتبه بزرگی بهتر بهینه شده «توان به ازای وات» (Performance Per Watt) را برای یادگیری ماشین میدهد.
در می ۲۰۱۷، گوگل انتشار نسل دوم TPUها را اعلام کرد که برای «موتور محاسبه گوگل» (Google Compute Engine) ارائه شده بودند. TPUهای نسل دوم، کارایی تا ۱۸۰ «ترافلاپس» (Teraflops) را فراهم میکردند و هنگامی که در خوشههای ۶۴ TPUیی قرار میگرفتند، تا ۱۱.۵ «پتافلاپس» (petaflops) کارایی را رقم میزدند. در فوریه ۲۰۱۸، گوگل اعلام کرد که در حال ساخت نسخه TPU برای «پلتفرم گوگل کلود» (Google Cloud Platform) هستند. در جولای ۲۰۱۸، Edge TPU منتشر شد. Edge TPU، یک تراشه «ایسیک» (ASIC) ساخته شده برای هدف خاص است که برای اجرا روی مدلهای یادگیری ماشین TensorFlow Lite در دستگاههای محاسباتی کوچک مانند گوشیهای هوشمند کوچک طراحی شده است؛ این موضوع با عنوان «رایانش لبهای» (Edge Computing) شناخته شده است.
در می ۲۰۱۷، گوگل یک «پشته نرمافزاری» (Software Stack) با عنوان «تنسورفلو لایت» (TensorFlow Lite) را به طور ویژه برای توسعه موبایل معرفی کرد. در ژوئن ۲۰۱۹، تیم تنسورفلو یک نسخه ویژه توسعهدهندگان از موتور استنتاج GPU موبایل OpenGL ES 3.1 Compute Shaders را روی دستگاههای اندرویدی و Metal Compute Shaders را روی دستگاههای iOS منتشر کرد.
در اکتبر ۲۰۱۷، «گوگل پیکسل ۲» (Google Pixel 2) منتشر شد که دارای ویژگی «پیکسل ویژوال کور» (Pixel Visual Core | PVC) است که یک «واحد پردازش تصویر» (Image Processing Unit | IPU)، «واحد پردازش بینایی» (Vision Processing Unit | VPU) و «پردازنده هوش مصنوعی» (AI Processor) برای دستگاههای موبایل به شمار میآید. PVC از تنسورفلو برای یادگیری ماشین (و «زبان برنامهنویسی» (Halide ) برای پردازش تصویر) پشتیبانی میکند.
«تنسورفلو دِو سامیت» (TensorFlow Dev Summit) گردهمایی است که هر سال فعالان حوزه یادگیری ماشین را از سراسر جهان به مدت دو روز گردهم میآورد. در این رویداد، شرکتکنندگان به گفتگوهای فنی سطح بالا، ارائه دموها و گفتگو با تیم و جامعه تنسورفلو میپردازند. در رویداد سال ۲۰۱۹، گوگل نسخه آلفا از تنسورفلو ۲.۰ را معرفی کرد. نسخه جدید با تمرکز بر افزایش بهرهوری توسعهدهندگان، سادگی و سهولت استفاده طراحی شده است. تغییراتی در تنسورفلو ۲.۰ به وقوع پیوسته که موجب افزایش بهرهوری کاربران آن میشود. همچنین، تغییرات متعددی در API آن انجام شده که از آن جمله میتوان به مرتبسازی مجدد آرگومانها، حذف APIهای زائد، تغییر نام سمبلها و تغییر مقادیر پیشفرض برای پارامترها اشاره کرد. در ادامه برخی از مهمترین تغییرات به وقوع پیوسته در تنسورفلو ۲.۰ بیان میشوند.
توصیه میشود که اگر کاربران قصد نصب این نسخه را روی کامپیوتر محلی خود برای ساخت یک محیط جدای پایتون/conda دارند، آن را فعال کرده و با وارد کردن و اجرای دستورات زیر در ترمینال، نصب را انجام دهند.
# CPU version
pip install tensorflow==2.0.0-alpha0
# GPU version
pip install tensorflow-gpu==2.0.0-alpha0
برای اطمینان حاصل کردن از اینکه تنسورفلو ۲.۰ با استفاده از دستورات بالا به درستی نصب شده است، دستور زیر را میتوان در ترمینال اجرا کرد.
هنگام نصب TF 2.0 روی Colab، این امکان وجود دارد که از کاربر خواسته شود زمان اجرا (runtime) را بازنشانی کند. بنابراین، باید مراحل را ادامه و بازنشانی را حتما انجام دهد.