گسترش

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

جزئیات بیشتر به زودی