TFF علاوه بر تعریف محاسبات، ابزارهایی را برای اجرای آنها فراهم می کند. در حالی که تمرکز اصلی بر روی شبیهسازی است، رابطها و ابزارهایی که ما ارائه میکنیم کلیتر هستند. این سند گزینه های استقرار در انواع مختلف پلتفرم را تشریح می کند.
بررسی اجمالی
دو حالت اصلی استقرار برای محاسبات TFF وجود دارد:
پشتیبان های بومی اگر بتواند ساختار نحوی محاسبات TFF را همانطور که در
computation.proto
تعریف شده است، تفسیر کند، ما به یک Backend به عنوان بومی اشاره خواهیم کرد. یک باطن بومی لزوماً نباید از تمام ساختارها یا ذاتی زبان پشتیبانی کند. پشتیبانهای بومی باید یکی از رابطهای اجرایی استاندارد TFF، مانندtff.framework.Executor
برای مصرف کد پایتون، یا نسخه مستقل از زبان آن که درexecutor.proto
در معرض نقطه پایانی gRPC تعریف شده است، پیادهسازی کنند.پشتیبانهای بومی که از رابطهای فوق پشتیبانی میکنند، میتوانند بهجای زمان اجرا مرجع پیشفرض، بهعنوان مثال برای اجرای نوتبوکها یا اسکریپتهای آزمایشی، بهصورت تعاملی استفاده شوند. اکثر پشتیبانهای بومی در حالت تفسیری عمل میکنند، یعنی تعریف محاسباتی را همانطور که تعریف شده است پردازش میکنند و آن را به صورت تدریجی اجرا میکنند، اما همیشه اینطور نیست. یک Backend بومی همچنین میتواند بخشی از محاسبات را برای عملکرد بهتر یا سادهسازی ساختار آن تبدیل کند ( کامپایل یا JIT-compile). یکی از مثالهای رایج استفاده از این میتواند کاهش مجموعه عملگرهای فدرال که در یک محاسبات ظاهر میشوند، باشد، به طوری که بخشهایی از پاییندستی تبدیل تبدیل در معرض مجموعه کامل قرار نگیرد.
پشتیبان های غیر بومی پشتیبانهای غیر بومی، بر خلاف نمونههای بومی، نمیتوانند مستقیماً ساختار محاسباتی TFF را تفسیر کنند و نیاز دارند که آن را به یک نمایش هدف متفاوت که توسط باطن درک میشود تبدیل شود. یک مثال قابل توجه از چنین باطنی یک خوشه Hadoop یا یک پلت فرم مشابه برای خطوط لوله داده استاتیک است. برای اینکه یک محاسبات در چنین باطنی مستقر شود، ابتدا باید تبدیل شود (یا کامپایل شود ). بسته به راهاندازی، میتوان این کار را به صورت شفاف برای کاربر انجام داد (یعنی یک Backend غیر بومی را میتوان در یک رابط اجرایی استاندارد مانند
tff.framework.Executor
که تبدیلها را در زیر هود انجام میدهد پیچیده شود)، یا میتوان آن را به عنوان در معرض دید قرار داد. ابزاری که به کاربر اجازه می دهد تا به صورت دستی یک محاسبات، یا مجموعه ای از محاسبات را به نمایش هدف مناسبی که توسط کلاس خاصی از backendها درک می شود، تبدیل کند. کدهایی که از انواع خاصی از backend های غیر بومی پشتیبانی می کنند را می توان در فضای نامtff.backends
یافت. در زمان نگارش این مقاله، تنها نوع پشتیبانی از پشتیبانهای غیر بومی، کلاسی از سیستمها هستند که قادر به اجرای MapReduce تک دور هستند.
Backend های بومی
جزئیات بیشتر به زودی
Backendهای غیر بومی
MapReduce
جزئیات بیشتر به زودی