ফেডারেটেড কোর

এই নথিটি TFF-এর মূল স্তরের সাথে পরিচয় করিয়ে দেয় যা ফেডারেটেড লার্নিং এবং সম্ভাব্য ভবিষ্যতের অ-লার্নিং ফেডারেটেড অ্যালগরিদমগুলির ভিত্তি হিসাবে কাজ করে।

ফেডারেটেড কোরের একটি মৃদু পরিচয়ের জন্য, অনুগ্রহ করে নিম্নলিখিত টিউটোরিয়ালগুলি পড়ুন, কারণ তারা উদাহরণের মাধ্যমে কিছু মৌলিক ধারণার সাথে পরিচয় করিয়ে দেয় এবং ধাপে ধাপে একটি সাধারণ ফেডারেটেড গড় অ্যালগরিদমের নির্মাণ প্রদর্শন করে৷

এছাড়াও আমরা আপনাকে ফেডারেটেড লার্নিং এবং ইমেজ ক্লাসিফিকেশন এবং টেক্সট জেনারেশন সম্পর্কিত টিউটোরিয়ালগুলির সাথে নিজেকে পরিচিত করতে উত্সাহিত করব, কারণ ফেডারেটেড শিক্ষার জন্য ফেডারেটেড কোর এপিআই (এফসি এপিআই) এর ব্যবহার আমাদের করা কিছু পছন্দের জন্য গুরুত্বপূর্ণ প্রসঙ্গ প্রদান করে। এই স্তর ডিজাইন করা.

ওভারভিউ

লক্ষ্য, উদ্দেশ্যমূলক ব্যবহার এবং সুযোগ

ফেডারেটেড কোর (এফসি) বিতরণকৃত গণনা বাস্তবায়নের জন্য একটি প্রোগ্রামিং পরিবেশ হিসাবে সবচেয়ে ভালভাবে বোঝা যায়, অর্থাৎ, একাধিক কম্পিউটার (মোবাইল ফোন, ট্যাবলেট, এমবেডেড ডিভাইস, ডেস্কটপ কম্পিউটার, সেন্সর, ডাটাবেস সার্ভার ইত্যাদি) জড়িত কম্পিউটেশন যা প্রতিটি অ-সম্পাদনা করতে পারে। স্থানীয়ভাবে তুচ্ছ প্রক্রিয়াকরণ, এবং তাদের কাজ সমন্বয় করতে নেটওয়ার্ক জুড়ে যোগাযোগ.

বিতরণ করা শব্দটি খুবই সাধারণ, এবং TFF সেখানে সমস্ত সম্ভাব্য ধরণের বিতরণ করা অ্যালগরিদমকে লক্ষ্য করে না, তাই আমরা এই কাঠামোতে প্রকাশ করা অ্যালগরিদমের প্রকারগুলি বর্ণনা করতে কম জেনেরিক শব্দ ফেডারেটেড গণনা ব্যবহার করতে পছন্দ করি।

ফেডারেটেড কম্পিউটেশন শব্দটিকে সম্পূর্ণ আনুষ্ঠানিক পদ্ধতিতে সংজ্ঞায়িত করার সময় এই নথির সুযোগের বাইরে, একটি নতুন বিতরণ করা শিক্ষার অ্যালগরিদম বর্ণনা করে এমন একটি গবেষণা প্রকাশনাতে সিউডোকোডে আপনি যে ধরনের অ্যালগরিদমগুলিকে প্রকাশ করতে পারেন সেগুলি সম্পর্কে চিন্তা করুন৷

সংক্ষেপে, FC-এর লক্ষ্য হল একইভাবে কম্প্যাক্ট উপস্থাপনা সক্ষম করা, একই রকম ছদ্মকোড-সদৃশ বিমূর্ততার স্তরে, প্রোগ্রাম লজিকের যা সিউডোকোড নয় , বরং, এটি বিভিন্ন টার্গেট পরিবেশে কার্যকর করা যায়।

FC যে ধরণের অ্যালগরিদমগুলি প্রকাশ করার জন্য ডিজাইন করা হয়েছে তার মূল সংজ্ঞায়িত বৈশিষ্ট্য হল যে সিস্টেম অংশগ্রহণকারীদের ক্রিয়াগুলি সম্মিলিতভাবে বর্ণনা করা হয়। এইভাবে, আমরা প্রতিটি ডিভাইসের স্থানীয়ভাবে ডেটা রূপান্তরিত করার বিষয়ে কথা বলার প্রবণতা রাখি, এবং একটি কেন্দ্রীভূত সমন্বয়কারী দ্বারা সম্প্রচার করা , সংগ্রহ করা বা তাদের ফলাফলগুলি একত্রিত করা ডিভাইসগুলি সমন্বয় করে।

যদিও TFF কে সাধারণ ক্লায়েন্ট-সার্ভার আর্কিটেকচারের বাইরে যেতে সক্ষম হওয়ার জন্য ডিজাইন করা হয়েছে, যৌথ প্রক্রিয়াকরণের ধারণাটি মৌলিক। এটি ফেডারেটেড লার্নিং-এ TFF-এর উৎপত্তির কারণে, একটি প্রযুক্তি যা মূলত সম্ভাব্য সংবেদনশীল ডেটার গণনা সমর্থন করার জন্য ডিজাইন করা হয়েছে যা ক্লায়েন্ট ডিভাইসগুলির নিয়ন্ত্রণে থাকে এবং এটি গোপনীয়তার কারণে একটি কেন্দ্রীভূত অবস্থানে ডাউনলোড নাও হতে পারে। যদিও এই ধরনের সিস্টেমের প্রতিটি ক্লায়েন্ট সিস্টেমের ফলাফল কম্পিউট করার জন্য ডেটা এবং প্রক্রিয়াকরণের শক্তি প্রদান করে (যার ফলে আমরা সাধারণত সমস্ত অংশগ্রহণকারীদের কাছে মূল্যবান বলে আশা করি), আমরা প্রতিটি ক্লায়েন্টের গোপনীয়তা এবং পরিচয় গোপন রাখার চেষ্টা করি।

এইভাবে, যখন বিতরণকৃত কম্পিউটিং-এর জন্য বেশিরভাগ কাঠামো পৃথক অংশগ্রহণকারীদের দৃষ্টিকোণ থেকে প্রক্রিয়াকরণকে প্রকাশ করার জন্য ডিজাইন করা হয়েছে - অর্থাৎ, পৃথক পয়েন্ট-টু-পয়েন্ট বার্তা আদান-প্রদানের স্তরে এবং আগত এবং বহির্গামী বার্তাগুলির সাথে অংশগ্রহণকারীর স্থানীয় রাজ্য পরিবর্তনের পরস্পর নির্ভরতা। , TFF এর ফেডারেটেড কোর ডিজাইন করা হয়েছে বৈশ্বিক সিস্টেম-ব্যাপী দৃষ্টিকোণ থেকে সিস্টেমের আচরণ বর্ণনা করার জন্য (একইভাবে, যেমন, MapReduce )।

ফলস্বরূপ, যদিও সাধারণ উদ্দেশ্যে বিতরণ করা কাঠামোগুলি বিল্ডিং ব্লক হিসাবে প্রেরণ এবং গ্রহণ করার মতো ক্রিয়াকলাপগুলি সরবরাহ করতে পারে, FC বিল্ডিং ব্লকগুলি যেমন tff.federated_sum , tff.federated_reduce , বা tff.federated_broadcast প্রদান করে যা সাধারণ বিতরণ করা প্রোটোকলগুলিকে অন্তর্ভুক্ত করে।

ভাষা

পাইথন ইন্টারফেস

TFF ফেডারেটেড কম্পিউটেশনের প্রতিনিধিত্ব করার জন্য একটি অভ্যন্তরীণ ভাষা ব্যবহার করে, যার সিনট্যাক্স computation.proto- এ ক্রমিক উপস্থাপনা দ্বারা সংজ্ঞায়িত করা হয়। যদিও FC API ব্যবহারকারীদের সাধারণত এই ভাষার সাথে সরাসরি ইন্টারঅ্যাক্ট করতে হবে না। বরং, আমরা একটি পাইথন API ( tff নেমস্পেস) প্রদান করি যা কম্পিউটেশনকে সংজ্ঞায়িত করার উপায় হিসাবে এটিকে ঘিরে রাখে।

বিশেষভাবে, TFF পাইথন ফাংশন ডেকোরেটর প্রদান করে যেমন tff.federated_computation যা সজ্জিত ফাংশনগুলির দেহগুলিকে ট্রেস করে এবং TFF-এর ভাষায় ফেডারেটেড গণনা যুক্তির ক্রমিক উপস্থাপনা তৈরি করে। tff.federated_computation দ্বারা সজ্জিত একটি ফাংশন এই ধরনের ক্রমিক উপস্থাপনের বাহক হিসাবে কাজ করে এবং এটিকে অন্য গণনার মূল অংশে একটি বিল্ডিং ব্লক হিসাবে এম্বেড করতে পারে, বা যখন আহ্বান করা হয় তখন এটিকে কার্যকর করতে পারে।

এখানে শুধু একটি উদাহরণ; কাস্টম অ্যালগরিদম টিউটোরিয়ালগুলিতে আরও উদাহরণ পাওয়া যাবে।

@tff.federated_computation(tff.FederatedType(np.float32, tff.CLIENTS))
def get_average_temperature(sensor_readings):
  return tff.federated_mean(sensor_readings)

অ-আগ্রহী TensorFlow-এর সাথে পরিচিত পাঠকরা এই পদ্ধতিটিকে পাইথন কোড লেখার অনুরূপ খুঁজে পাবেন যা পাইথন কোডের একটি বিভাগে tf.add বা tf.reduce_sum এর মতো ফাংশন ব্যবহার করে যা একটি TensorFlow গ্রাফ সংজ্ঞায়িত করে। যদিও কোডটি প্রযুক্তিগতভাবে Python-এ প্রকাশ করা হয়েছে, এর উদ্দেশ্য হল নীচে একটি tf.Graph এর ক্রমিক উপস্থাপনা তৈরি করা, এবং এটি গ্রাফ, পাইথন কোড নয়, যা অভ্যন্তরীণভাবে TensorFlow রানটাইম দ্বারা কার্যকর করা হয়। একইভাবে, কেউ একজন tff.federated_mean get_average_temperature দ্বারা উপস্থাপিত একটি ফেডারেটেড কম্পিউটেশনে একটি ফেডারেটেড অপ ঢোকানোর কথা ভাবতে পারে।

FC একটি ভাষা সংজ্ঞায়িত করার কারণের একটি অংশ এই সত্যটির সাথে সম্পর্কিত যে, উপরে উল্লিখিত হিসাবে, ফেডারেটেড গণনাগুলি বিতরণ করা সমষ্টিগত আচরণগুলিকে নির্দিষ্ট করে এবং যেমন, তাদের যুক্তি অ-স্থানীয়। উদাহরণস্বরূপ, TFF অপারেটর, ইনপুট এবং আউটপুট সরবরাহ করে যা নেটওয়ার্কের বিভিন্ন স্থানে বিদ্যমান থাকতে পারে।

এটি একটি ভাষা এবং একটি টাইপ সিস্টেমের জন্য কল করে যা বিতরণের ধারণাটি ক্যাপচার করে।

টাইপ সিস্টেম

ফেডারেটেড কোর নিম্নলিখিত ধরণের ধরণের অফার করে। এই ধরনের বর্ণনা করার সময়, আমরা টাইপ কনস্ট্রাক্টরগুলির দিকে নির্দেশ করি এবং সেইসাথে একটি কমপ্যাক্ট নোটেশন প্রবর্তন করি, কারণ এটি একটি সহজ উপায় বা গণনা এবং অপারেটরগুলির প্রকারগুলি বর্ণনা করে।

প্রথমত, বিদ্যমান মূলধারার ভাষাগুলির সাথে ধারণাগতভাবে একই রকমের বিভাগগুলি এখানে রয়েছে:

  • টেনসর প্রকার ( tff.TensorType )। ঠিক যেমন টেনসরফ্লোতে, এগুলির dtype এবং shape রয়েছে। একমাত্র পার্থক্য হল এই ধরনের বস্তুগুলি tf.Tensor এর মধ্যে সীমাবদ্ধ নয়। পাইথনের টেনসর দৃষ্টান্তগুলি যেগুলি একটি টেনসরফ্লো গ্রাফে টেনসরফ্লো অপ্সের আউটপুট উপস্থাপন করে, তবে এতে ডেটার এককও অন্তর্ভুক্ত থাকতে পারে যা উত্পাদিত হতে পারে, যেমন, একটি বিতরণের আউটপুট হিসাবে একত্রীকরণ প্রোটোকল। এইভাবে, TFF টেনসর টাইপ হল পাইথন বা টেনসরফ্লোতে এই ধরনের কংক্রিট শারীরিক উপস্থাপনার একটি বিমূর্ত সংস্করণ।

    TFF এর TensorTypes TensorFlow এর তুলনায় তাদের (স্থির) আকৃতির চিকিৎসায় কঠোর হতে পারে। উদাহরণস্বরূপ, TFF-এর টাইপসিস্টেম অজানা র‌্যাঙ্ক সহ একটি টেনসরকে একই dtype এর অন্য যেকোন টেনসর থেকে বরাদ্দযোগ্য হিসাবে বিবেচনা করে, কিন্তু নির্দিষ্ট র‌্যাঙ্ক সহ কোনও টেনসরের জন্য বরাদ্দযোগ্য নয়। এই চিকিত্সাটি নির্দিষ্ট রানটাইম ব্যর্থতা প্রতিরোধ করে (যেমন, অজানা র‌্যাঙ্কের একটি টেনসরকে ভুল সংখ্যক উপাদান সহ একটি আকারে রূপান্তর করার চেষ্টা করা), TFF যে গণনাগুলিকে বৈধ হিসাবে গ্রহণ করে তাতে আরও কঠোরতার মূল্যে।

    টেনসর প্রকারের জন্য কমপ্যাক্ট স্বরলিপি হল dtype বা dtype[shape] । উদাহরণস্বরূপ, int32 এবং int32[10] যথাক্রমে পূর্ণসংখ্যা এবং int ভেক্টরের প্রকার।

  • ক্রম প্রকার ( tff.SequenceType )। এগুলি হল TFF-এর বিমূর্ত সমতুল্য TensorFlow-এর tf.data.Dataset s-এর কংক্রিট ধারণা। অনুক্রমের উপাদানগুলি একটি ক্রমিক পদ্ধতিতে গ্রাস করা যেতে পারে এবং জটিল প্রকারগুলি অন্তর্ভুক্ত করতে পারে।

    ক্রম প্রকারের কম্প্যাক্ট উপস্থাপনা হল T* , যেখানে T হল উপাদানের প্রকার। উদাহরণস্বরূপ int32* একটি পূর্ণসংখ্যা ক্রম প্রতিনিধিত্ব করে।

  • নাম দেওয়া টিপল প্রকার ( tff.StructType )। এগুলি হল টিএফএফ-এর টিপল এবং অভিধান-সদৃশ কাঠামো তৈরির উপায় যেগুলিতে নির্দিষ্ট ধরণের নাম বা নামবিহীন পূর্বনির্ধারিত সংখ্যক উপাদান রয়েছে। গুরুত্বপূর্ণভাবে, TFF-এর নামযুক্ত টিপল ধারণাটি পাইথনের আর্গুমেন্ট টিপলগুলির বিমূর্ত সমতুল্যকে অন্তর্ভুক্ত করে, অর্থাৎ, উপাদানগুলির সংগ্রহ যার মধ্যে কিছু, কিন্তু সকলের নাম দেওয়া হয় না এবং কিছু অবস্থানগত।

    নামযুক্ত টিপলের জন্য কমপ্যাক্ট স্বরলিপি হল <n_1=T_1, ..., n_k=T_k> , যেখানে n_k হল ঐচ্ছিক উপাদানের নাম, এবং T_k হল উপাদানের প্রকার। উদাহরণ স্বরূপ, <int32,int32> হল একজোড়া নামহীন পূর্ণসংখ্যার জন্য একটি কম্প্যাক্ট স্বরলিপি, এবং <X=float32,Y=float32> হল X এবং Y নামের এক জোড়া ফ্লোটের জন্য একটি কমপ্যাক্ট স্বরলিপি যা সমতলে একটি বিন্দুকে উপস্থাপন করতে পারে। . Tuples নেস্ট করা যেতে পারে পাশাপাশি অন্যান্য প্রকারের সাথে মিশ্রিত করা যেতে পারে, যেমন, <X=float32,Y=float32>* পয়েন্টের ক্রমগুলির জন্য একটি কম্প্যাক্ট স্বরলিপি হবে।

  • ফাংশনের ধরন ( tff.FunctionType )। TFF হল একটি কার্যকরী প্রোগ্রামিং কাঠামো, যেখানে ফাংশনগুলিকে প্রথম-শ্রেণীর মান হিসাবে বিবেচনা করা হয়। ফাংশনগুলির সর্বাধিক একটি যুক্তি থাকে এবং ঠিক একটি ফলাফল থাকে৷

    ফাংশনগুলির জন্য কমপ্যাক্ট স্বরলিপি হল (T -> U) , যেখানে T হল একটি আর্গুমেন্টের ধরন, এবং U হল ফলাফলের ধরন, অথবা ( -> U) যদি কোন আর্গুমেন্ট না থাকে (যদিও নো-আর্গুমেন্ট ফাংশন একটি ডিজেনারেট হয় ধারণা যা বেশিরভাগই পাইথন স্তরে বিদ্যমান)। উদাহরণস্বরূপ (int32* -> int32) হল এক ধরনের ফাংশনের জন্য একটি স্বরলিপি যা একটি পূর্ণসংখ্যার ক্রমকে একটি একক পূর্ণসংখ্যার মান কমিয়ে দেয়।

নিম্নলিখিত প্রকারগুলি TFF কম্পিউটেশনের বিতরণকৃত সিস্টেমের দিকটিকে সম্বোধন করে। যেহেতু এই ধারণাগুলি TFF-এর জন্য কিছুটা অনন্য, তাই আমরা আপনাকে অতিরিক্ত মন্তব্য এবং উদাহরণের জন্য কাস্টম অ্যালগরিদম টিউটোরিয়ালটি উল্লেখ করতে উত্সাহিত করি।

  • বসানোর ধরন । এই প্রকারটি এখনও 2 লিটারেল tff.SERVER এবং tff.CLIENTS আকারে ব্যতীত অন্য পাবলিক API তে প্রকাশ করা হয়নি যা আপনি এই ধরণের ধ্রুবক হিসাবে ভাবতে পারেন। এটি অভ্যন্তরীণভাবে ব্যবহার করা হয়, তবে, এবং ভবিষ্যতে রিলিজে পাবলিক API এ চালু করা হবে। এই ধরনের কম্প্যাক্ট উপস্থাপনা হল placement

    একটি প্লেসমেন্ট সিস্টেম অংশগ্রহণকারীদের একটি সমষ্টির প্রতিনিধিত্ব করে যা একটি নির্দিষ্ট ভূমিকা পালন করে। প্রাথমিক রিলিজটি ক্লায়েন্ট-সার্ভার গণনাকে লক্ষ্য করে, যেখানে অংশগ্রহণকারীদের 2টি গ্রুপ রয়েছে: ক্লায়েন্ট এবং একটি সার্ভার (আপনি পরবর্তীটিকে একটি সিঙ্গলটন গ্রুপ হিসাবে ভাবতে পারেন)। যাইহোক, আরও বিস্তৃত আর্কিটেকচারে, অন্যান্য ভূমিকা থাকতে পারে, যেমন একটি মাল্টি-টায়ার্ড সিস্টেমে মধ্যবর্তী অ্যাগ্রিগেটর, যারা বিভিন্ন ধরণের একত্রীকরণ সম্পাদন করতে পারে, বা সার্ভার বা সার্ভার দ্বারা ব্যবহৃত বিভিন্ন ধরণের ডেটা কম্প্রেশন/ডিকম্প্রেশন ব্যবহার করে। ক্লায়েন্টদের

    প্লেসমেন্টের ধারণাকে সংজ্ঞায়িত করার প্রাথমিক উদ্দেশ্য হল ফেডারেটেড প্রকারগুলিকে সংজ্ঞায়িত করার ভিত্তি হিসাবে।

  • ফেডারেটেড প্রকার ( tff.FederatedType )। একটি ফেডারেটেড টাইপের একটি মান যা একটি নির্দিষ্ট প্লেসমেন্ট (যেমন tff.SERVER বা tff.CLIENTS ) দ্বারা সংজ্ঞায়িত সিস্টেম অংশগ্রহণকারীদের একটি গ্রুপ দ্বারা হোস্ট করা হয়। একটি ফেডারেটেড টাইপকে স্থান নির্ধারণের মান দ্বারা সংজ্ঞায়িত করা হয় (এইভাবে, এটি একটি নির্ভরশীল প্রকার ), সদস্য উপাদানের ধরন (প্রতিটি অংশগ্রহণকারী স্থানীয়ভাবে কী ধরনের সামগ্রী হোস্ট করছে), এবং অতিরিক্ত বিট all_equal যা নির্দিষ্ট করে যে সমস্ত অংশগ্রহণকারী স্থানীয়ভাবে কিনা। একই আইটেম হোস্টিং.

    ফেডারেটেড ধরনের মানগুলির জন্য কমপ্যাক্ট নোটেশন যাতে T টাইপের আইটেম (সদস্য উপাদান) অন্তর্ভুক্ত থাকে, প্রতিটি গ্রুপ (প্লেসমেন্ট) G দ্বারা হোস্ট করা হয় T@G বা {T}@G যথাক্রমে all_equal বিট সেট বা সেট নয়।

    যেমন:

    • {int32}@CLIENTS একটি ফেডারেটেড মান প্রতিনিধিত্ব করে যা সম্ভাব্য স্বতন্ত্র পূর্ণসংখ্যাগুলির একটি সেট নিয়ে গঠিত, প্রতি ক্লায়েন্ট ডিভাইসে একটি। নোট করুন যে আমরা নেটওয়ার্ক জুড়ে একাধিক অবস্থানে প্রদর্শিত ডেটার একাধিক আইটেমকে অন্তর্ভুক্ত করে একটি একক ফেডারেটেড মান সম্পর্কে কথা বলছি। এটি সম্পর্কে চিন্তা করার একটি উপায় হল "নেটওয়ার্ক" মাত্রা সহ এক ধরণের টেনসর, যদিও এই সাদৃশ্যটি নিখুঁত নয় কারণ TFF একটি ফেডারেটেড মানের সদস্য উপাদানগুলিতে এলোমেলো অ্যাক্সেসের অনুমতি দেয় না।

    • {<X=float32,Y=float32>*}@CLIENTS একটি ফেডারেটেড ডেটা সেট প্রতিনিধিত্ব করে, একটি মান যা XY স্থানাঙ্কের একাধিক ক্রম নিয়ে গঠিত, প্রতি ক্লায়েন্ট ডিভাইসে একটি ক্রম।

    • <weights=float32[10,5],bias=float32[5]>@SERVER সার্ভারে ওজন এবং বায়াস টেনসরের একটি নামযুক্ত টিপল প্রতিনিধিত্ব করে। যেহেতু আমরা কোঁকড়া ধনুর্বন্ধনী বাদ দিয়েছি, এটি নির্দেশ করে all_equal বিট সেট করা হয়েছে, অর্থাৎ, এখানে শুধুমাত্র একটি একক টিপল রয়েছে (এই মান হোস্টিং একটি ক্লাস্টারে কতগুলি সার্ভারের প্রতিলিপি থাকতে পারে তা নির্বিশেষে)।

বিল্ডিং ব্লক

ফেডারেটেড কোরের ভাষা ল্যাম্বডা-ক্যালকুলাসের একটি রূপ, কিছু অতিরিক্ত উপাদান সহ।

এটি বর্তমানে সর্বজনীন API তে উন্মুক্ত নিম্নলিখিত প্রোগ্রামিং বিমূর্ততা প্রদান করে:

  • টেনসরফ্লো গণনা ( tff.tensorflow.computation )। এগুলি tff.tensorflow.computation ডেকোরেটর ব্যবহার করে TFF-এ পুনঃব্যবহারযোগ্য উপাদান হিসাবে মোড়ানো TensorFlow কোডের বিভাগ। তাদের সর্বদা কার্যকরী প্রকার থাকে এবং টেনসরফ্লো-তে ফাংশনের বিপরীতে, তারা কাঠামোগত প্যারামিটার নিতে পারে বা একটি সিকোয়েন্স টাইপের কাঠামোগত ফলাফল দিতে পারে।

    এখানে একটি উদাহরণ দেওয়া হল, টাইপের একটি TF গণনা (int32* -> int) যা tf.data.Dataset.reduce অপারেটর ব্যবহার করে পূর্ণসংখ্যার যোগফল গণনা করে:

    @tff.tensorflow.computation(tff.SequenceType(np.int32))
    def add_up_integers(x):
      return x.reduce(np.int32(0), lambda x, y: x + y)
    
  • অন্তর্নিহিত বা ফেডারেটেড অপারেটর ( tff.federated_... )। এটি tff.federated_sum বা tff.federated_broadcast এর মতো ফাংশনগুলির একটি লাইব্রেরি যা FC API-এর সিংহভাগ গঠন করে, যার বেশিরভাগই TFF-এর সাথে ব্যবহারের জন্য বিতরণ করা যোগাযোগ অপারেটরদের প্রতিনিধিত্ব করে।

    আমরা এগুলিকে অভ্যন্তরীণ হিসাবে উল্লেখ করি কারণ, কিছুটা অভ্যন্তরীণ ফাংশনগুলির মতো, এগুলি একটি উন্মুক্ত, এক্সটেনসিবল অপারেটরদের সেট যা TFF দ্বারা বোঝা যায় এবং নিম্ন-স্তরের কোডে সংকলিত হয়।

    এই অপারেটরগুলির বেশিরভাগেরই পরামিতি এবং ফেডারেটেড ধরণের ফলাফল রয়েছে এবং বেশিরভাগই টেমপ্লেট যা বিভিন্ন ধরণের ডেটাতে প্রয়োগ করা যেতে পারে।

    উদাহরণস্বরূপ, tff.federated_broadcast একটি কার্যকরী প্রকার T@SERVER -> T@CLIENTS এর একটি টেমপ্লেট অপারেটর হিসাবে ভাবা যেতে পারে।

  • ল্যাম্বডা এক্সপ্রেশন ( tff.federated_computation )। TFF-তে একটি ল্যাম্বডা এক্সপ্রেশন হল পাইথনের lambda বা def সমতুল্য; এটি প্যারামিটারের নাম এবং একটি বডি (এক্সপ্রেশন) নিয়ে গঠিত যা এই প্যারামিটারের রেফারেন্স ধারণ করে।

    পাইথন কোডে, এগুলি পাইথন ফাংশনগুলিকে tff.federated_computation দিয়ে সাজিয়ে এবং একটি যুক্তি সংজ্ঞায়িত করে তৈরি করা যেতে পারে।

    এখানে একটি ল্যাম্বডা এক্সপ্রেশনের একটি উদাহরণ যা আমরা ইতিমধ্যেই উল্লেখ করেছি:

    @tff.federated_computation(tff.FederatedType(np.float32, tff.CLIENTS))
    def get_average_temperature(sensor_readings):
      return tff.federated_mean(sensor_readings)
    
  • বসানো আক্ষরিক . আপাতত, শুধুমাত্র tff.SERVER এবং tff.CLIENTS সহজ ক্লায়েন্ট-সার্ভার গণনা সংজ্ঞায়িত করার জন্য।

  • ফাংশন আহ্বান ( __call__ )। একটি কার্যকরী প্রকারের যেকোনো কিছুকে আদর্শ Python __call__ সিনট্যাক্স ব্যবহার করে আহ্বান করা যেতে পারে। আমন্ত্রণ একটি অভিব্যক্তি, যার ধরনটি আহ্বান করা ফাংশনের ফলাফলের প্রকারের মতোই।

    যেমন:

    • add_up_integers(x) একটি আর্গুমেন্ট x এ আগে সংজ্ঞায়িত TensorFlow গণনার একটি আহ্বানকে প্রতিনিধিত্ব করে। এই এক্সপ্রেশনের ধরন হল int32

    • tff.federated_mean(sensor_readings) sensor_readings এ ফেডারেটেড গড় অপারেটরের একটি আহ্বানকে প্রতিনিধিত্ব করে। এই অভিব্যক্তির ধরন হল float32@SERVER (উপরের উদাহরণ থেকে প্রসঙ্গ ধরে নেওয়া)।

  • টিপল গঠন এবং তাদের উপাদান নির্বাচন . [x, y] , x[y] বা xy ফর্মের পাইথন এক্সপ্রেশন যা tff.federated_computation দ্বারা সজ্জিত ফাংশনের বডিতে উপস্থিত হয়।