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