এই নথিটি TFF-এর মূল স্তরের সাথে পরিচয় করিয়ে দেয় যা ফেডারেটেড লার্নিং এবং সম্ভাব্য ভবিষ্যতের অ-লার্নিং ফেডারেটেড অ্যালগরিদমগুলির ভিত্তি হিসাবে কাজ করে।
ফেডারেটেড কোরের একটি মৃদু পরিচয়ের জন্য, অনুগ্রহ করে নিম্নলিখিত টিউটোরিয়ালগুলি পড়ুন, কারণ তারা উদাহরণের মাধ্যমে কিছু মৌলিক ধারণার সাথে পরিচয় করিয়ে দেয় এবং ধাপে ধাপে একটি সাধারণ ফেডারেটেড গড় অ্যালগরিদমের নির্মাণ প্রদর্শন করে৷
কাস্টম ফেডারেটেড অ্যালগরিদম, পার্ট 1: ফেডারেটেড কোরের ভূমিকা ।
কাস্টম ফেডারেটেড অ্যালগরিদম, পার্ট 2: ফেডারেটেড অ্যাভারেজিং বাস্তবায়ন করা ।
এছাড়াও আমরা আপনাকে ফেডারেটেড লার্নিং এবং ইমেজ ক্লাসিফিকেশন এবং টেক্সট জেনারেশন সম্পর্কিত টিউটোরিয়ালগুলির সাথে নিজেকে পরিচিত করতে উত্সাহিত করব, কারণ ফেডারেটেড শিক্ষার জন্য ফেডারেটেড কোর এপিআই (এফসি এপিআই) এর ব্যবহার আমাদের করা কিছু পছন্দের জন্য গুরুত্বপূর্ণ প্রসঙ্গ প্রদান করে। এই স্তর ডিজাইন করা.
ওভারভিউ
লক্ষ্য, উদ্দেশ্যমূলক ব্যবহার এবং সুযোগ
ফেডারেটেড কোর (এফসি) বিতরণকৃত গণনা বাস্তবায়নের জন্য একটি প্রোগ্রামিং পরিবেশ হিসাবে সবচেয়ে ভালভাবে বোঝা যায়, অর্থাৎ, একাধিক কম্পিউটার (মোবাইল ফোন, ট্যাবলেট, এমবেডেড ডিভাইস, ডেস্কটপ কম্পিউটার, সেন্সর, ডাটাবেস সার্ভার ইত্যাদি) জড়িত কম্পিউটেশন যা প্রতিটি অ-সম্পাদনা করতে পারে। স্থানীয়ভাবে তুচ্ছ প্রক্রিয়াকরণ, এবং তাদের কাজ সমন্বয় করতে নেটওয়ার্ক জুড়ে যোগাযোগ.
বিতরণ করা শব্দটি খুবই সাধারণ, এবং TFF সেখানে সমস্ত সম্ভাব্য ধরণের বিতরণ করা অ্যালগরিদমকে লক্ষ্য করে না, তাই আমরা এই কাঠামোতে প্রকাশ করা অ্যালগরিদমের প্রকারগুলি বর্ণনা করতে কম জেনেরিক শব্দ ফেডারেটেড গণনা ব্যবহার করতে পছন্দ করি।
ফেডারেটেড কম্পিউটেশন শব্দটিকে সম্পূর্ণ আনুষ্ঠানিক পদ্ধতিতে সংজ্ঞায়িত করার সময় এই নথির সুযোগের বাইরে, একটি নতুন বিতরণ করা শিক্ষার অ্যালগরিদম বর্ণনা করে এমন একটি গবেষণা প্রকাশনাতে সিউডোকোডে আপনি যে ধরনের অ্যালগরিদমগুলিকে প্রকাশ করতে পারেন সেগুলি সম্পর্কে চিন্তা করুন৷
সংক্ষেপে, FC-এর লক্ষ্য হল একইভাবে কম্প্যাক্ট উপস্থাপনা সক্ষম করা, একই রকম ছদ্মকোড-সদৃশ বিমূর্ততার স্তরে, প্রোগ্রাম লজিকের যা সিউডোকোড নয় , বরং, এটি বিভিন্ন টার্গেট পরিবেশে কার্যকর করা যায়।
FC যে ধরণের অ্যালগরিদমগুলি প্রকাশ করার জন্য ডিজাইন করা হয়েছে তার মূল সংজ্ঞায়িত বৈশিষ্ট্য হল যে সিস্টেম অংশগ্রহণকারীদের ক্রিয়াগুলি সম্মিলিতভাবে বর্ণনা করা হয়। এইভাবে, আমরা প্রতিটি ডিভাইসের স্থানীয়ভাবে ডেটা রূপান্তরিত করার বিষয়ে কথা বলার প্রবণতা রাখি, এবং একটি কেন্দ্রীভূত সমন্বয়কারী দ্বারা সম্প্রচার করা , সংগ্রহ করা বা তাদের ফলাফলগুলি একত্রিত করা ডিভাইসগুলি সমন্বয় করে।
যদিও TFF কে সাধারণ ক্লায়েন্ট-সার্ভার আর্কিটেকচারের বাইরে যেতে সক্ষম হওয়ার জন্য ডিজাইন করা হয়েছে, যৌথ প্রক্রিয়াকরণের ধারণাটি মৌলিক। এটি ফেডারেটেড লার্নিং-এ TFF-এর উৎপত্তির কারণে, একটি প্রযুক্তি যা মূলত সম্ভাব্য সংবেদনশীল ডেটার গণনা সমর্থন করার জন্য ডিজাইন করা হয়েছে যা ক্লায়েন্ট ডিভাইসগুলির নিয়ন্ত্রণে থাকে এবং এটি গোপনীয়তার কারণে একটি কেন্দ্রীভূত অবস্থানে ডাউনলোড নাও হতে পারে। যদিও এই ধরনের সিস্টেমের প্রতিটি ক্লায়েন্ট সিস্টেমের ফলাফল কম্পিউট করার জন্য ডেটা এবং প্রক্রিয়াকরণের শক্তি প্রদান করে (যার ফলে আমরা সাধারণত সমস্ত অংশগ্রহণকারীদের কাছে মূল্যবান বলে আশা করি), আমরা প্রতিটি ক্লায়েন্টের গোপনীয়তা এবং পরিচয় গোপন রাখার চেষ্টা করি।
এইভাবে, যখন বিতরণকৃত কম্পিউটিং-এর জন্য বেশিরভাগ কাঠামো পৃথক অংশগ্রহণকারীদের দৃষ্টিকোণ থেকে প্রক্রিয়াকরণকে প্রকাশ করার জন্য ডিজাইন করা হয়েছে - অর্থাৎ, পৃথক পয়েন্ট-টু-পয়েন্ট বার্তা আদান-প্রদানের স্তরে এবং আগত এবং বহির্গামী বার্তাগুলির সাথে অংশগ্রহণকারীর স্থানীয় রাজ্য পরিবর্তনের পরস্পর নির্ভরতা। , TFF এর ফেডারেটেড কোরটি বিশ্বব্যাপী সিস্টেম-ব্যাপী দৃষ্টিকোণ থেকে সিস্টেমের আচরণ বর্ণনা করার জন্য ডিজাইন করা হয়েছে (একইভাবে, যেমন, MapReduce )।
ফলস্বরূপ, যখন সাধারণ উদ্দেশ্যে বিতরণ করা কাঠামোগুলি বিল্ডিং ব্লক হিসাবে প্রেরণ এবং গ্রহণ করার মতো ক্রিয়াকলাপগুলি অফার করতে পারে, তখন FC বিল্ডিং ব্লকগুলি প্রদান করে যেমন federated_language.federated_sum , tff.federated_reduce , বা federated_language.federated_broadcast যা সাধারণ বিতরণ করা প্রোটোকলগুলিকে অন্তর্ভুক্ত করে৷
ভাষা
পাইথন ইন্টারফেস
TFF ফেডারেটেড কম্পিউটেশনের প্রতিনিধিত্ব করার জন্য একটি অভ্যন্তরীণ ভাষা ব্যবহার করে, যার সিনট্যাক্স computation.proto- এ ক্রমিক উপস্থাপনা দ্বারা সংজ্ঞায়িত করা হয়। যদিও FC API ব্যবহারকারীদের সাধারণত এই ভাষার সাথে সরাসরি ইন্টারঅ্যাক্ট করতে হবে না। বরং, আমরা একটি পাইথন API ( tff নেমস্পেস) প্রদান করি যা কম্পিউটেশনকে সংজ্ঞায়িত করার উপায় হিসাবে এটিকে ঘিরে রাখে।
বিশেষভাবে, TFF পাইথন ফাংশন ডেকোরেটর প্রদান করে যেমন federated_language.federated_computation যা সজ্জিত ফাংশনগুলির বডি ট্রেস করে এবং TFF-এর ভাষায় ফেডারেটেড কম্পিউটেশন লজিকের ক্রমিক উপস্থাপনা তৈরি করে। federatedd_language.federated_computation দ্বারা সজ্জিত একটি ফাংশন এই ধরনের ক্রমিক উপস্থাপনের বাহক হিসাবে কাজ করে, এবং এটিকে অন্য গণনার মূল অংশে একটি বিল্ডিং ব্লক হিসাবে এম্বেড করতে পারে, বা অনুরোধ করা হলে এটিকে কার্যকর করতে পারে।
এখানে শুধু একটি উদাহরণ; কাস্টম অ্যালগরিদম টিউটোরিয়ালগুলিতে আরও উদাহরণ পাওয়া যাবে।
@federated_language.federated_computation(federated_language.FederatedType(np.float32, federated_language.CLIENTS))
def get_average_temperature(sensor_readings):
return federated_language.federated_mean(sensor_readings)
অ-আগ্রহী TensorFlow-এর সাথে পরিচিত পাঠকরা এই পদ্ধতিটিকে পাইথন কোড লেখার অনুরূপ খুঁজে পাবেন যা পাইথন কোডের একটি বিভাগে tf.add বা tf.reduce_sum এর মতো ফাংশন ব্যবহার করে যা একটি TensorFlow গ্রাফ সংজ্ঞায়িত করে। যদিও কোডটি প্রযুক্তিগতভাবে Python-এ প্রকাশ করা হয়েছে, এর উদ্দেশ্য হল নীচে একটি tf.Graph এর ক্রমিক উপস্থাপনা তৈরি করা, এবং এটি গ্রাফ, পাইথন কোড নয়, যা অভ্যন্তরীণভাবে TensorFlow রানটাইম দ্বারা কার্যকর করা হয়। একইভাবে, কেউ federated_language.federated_mean কে একটি ফেডারেটেড কম্পিউটেশনে একটি ফেডারেটেড অপ ঢোকানোর কথা ভাবতে পারে যেটি get_average_temperature দ্বারা উপস্থাপিত হয়।
FC একটি ভাষা সংজ্ঞায়িত করার কারণের একটি অংশ এই সত্যটির সাথে সম্পর্কিত যে, উপরে উল্লিখিত হিসাবে, ফেডারেটেড গণনাগুলি বিতরণ করা সমষ্টিগত আচরণগুলিকে নির্দিষ্ট করে এবং যেমন, তাদের যুক্তি অ-স্থানীয়। উদাহরণস্বরূপ, TFF অপারেটর, ইনপুট এবং আউটপুট সরবরাহ করে যা নেটওয়ার্কের বিভিন্ন স্থানে বিদ্যমান থাকতে পারে।
এটি একটি ভাষা এবং একটি টাইপ সিস্টেমের জন্য কল করে যা বিতরণের ধারণাটি ক্যাপচার করে।
টাইপ সিস্টেম
ফেডারেটেড কোর নিম্নলিখিত ধরণের ধরণের অফার করে। এই ধরনের বর্ণনা করার সময়, আমরা টাইপ কনস্ট্রাক্টরগুলির দিকে নির্দেশ করি এবং সেইসাথে একটি কমপ্যাক্ট নোটেশন প্রবর্তন করি, কারণ এটি একটি সহজ উপায় বা গণনা এবং অপারেটরগুলির প্রকারগুলি বর্ণনা করে।
প্রথমত, বিদ্যমান মূলধারার ভাষাগুলির সাথে ধারণাগতভাবে একই রকমের বিভাগগুলি এখানে রয়েছে:
টেনসর প্রকার (
federated_language.TensorType)। ঠিক যেমন টেনসরফ্লোতে, এগুলিরdtypeএবংshapeরয়েছে। একমাত্র পার্থক্য হল এই ধরনের বস্তুগুলিtf.Tensorমধ্যে সীমাবদ্ধ নয়। পাইথনের টেনসর দৃষ্টান্তগুলি যেগুলি একটি টেনসরফ্লো গ্রাফে টেনসরফ্লো অপ্সের আউটপুট উপস্থাপন করে, তবে এতে ডেটার এককও অন্তর্ভুক্ত থাকতে পারে যা উত্পাদিত হতে পারে, যেমন, একটি বিতরণের আউটপুট হিসাবে একত্রীকরণ প্রোটোকল। এইভাবে, TFF টেনসর টাইপ হল পাইথন বা টেনসরফ্লোতে এই ধরনের কংক্রিট শারীরিক উপস্থাপনার একটি বিমূর্ত সংস্করণ।TFF এর
TensorTypesTensorFlow এর তুলনায় তাদের (স্থির) আকৃতির চিকিৎসায় কঠোর হতে পারে। উদাহরণস্বরূপ, TFF-এর টাইপসিস্টেম অজানা র্যাঙ্ক সহ একটি টেনসরকে একইdtypeএর অন্য যেকোন টেনসর থেকে বরাদ্দযোগ্য হিসাবে বিবেচনা করে, কিন্তু নির্দিষ্ট র্যাঙ্ক সহ কোনও টেনসরের জন্য বরাদ্দযোগ্য নয়। এই চিকিত্সাটি নির্দিষ্ট রানটাইম ব্যর্থতা প্রতিরোধ করে (যেমন, অজানা র্যাঙ্কের একটি টেনসরকে ভুল সংখ্যক উপাদান সহ একটি আকারে রূপান্তর করার চেষ্টা করা), TFF যে গণনাগুলিকে বৈধ হিসাবে গ্রহণ করে তাতে আরও কঠোরতার মূল্যে।টেনসর প্রকারের জন্য কমপ্যাক্ট স্বরলিপি হল
dtypeবাdtype[shape]। উদাহরণস্বরূপ,int32এবংint32[10]যথাক্রমে পূর্ণসংখ্যা এবং int ভেক্টরের প্রকার।ক্রম প্রকার (
federated_language.SequenceType)। এগুলি হল TFF-এর বিমূর্ত সমতুল্য TensorFlow-এরtf.data.Datasets-এর কংক্রিট ধারণা। অনুক্রমের উপাদানগুলি একটি ক্রমিক পদ্ধতিতে গ্রাস করা যেতে পারে এবং জটিল প্রকারগুলি অন্তর্ভুক্ত করতে পারে।ক্রম প্রকারের কম্প্যাক্ট উপস্থাপনা হল
T*, যেখানেTহল উপাদানের প্রকার। উদাহরণস্বরূপint32*একটি পূর্ণসংখ্যা ক্রম প্রতিনিধিত্ব করে।নাম দেওয়া টিপল প্রকার (
federated_language.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>*পয়েন্টের ক্রমগুলির জন্য একটি কম্প্যাক্ট স্বরলিপি হবে।ফাংশনের ধরন (
federated_language.FunctionType)। TFF হল একটি কার্যকরী প্রোগ্রামিং কাঠামো, যেখানে ফাংশনগুলিকে প্রথম-শ্রেণীর মান হিসাবে বিবেচনা করা হয়। ফাংশনগুলির সর্বাধিক একটি যুক্তি থাকে এবং ঠিক একটি ফলাফল থাকে৷ফাংশনগুলির জন্য কমপ্যাক্ট স্বরলিপি হল
(T -> U), যেখানেTহল একটি আর্গুমেন্টের ধরন, এবংUহল ফলাফলের ধরন, অথবা( -> U)যদি কোন আর্গুমেন্ট না থাকে (যদিও নো-আর্গুমেন্ট ফাংশন একটি ডিজেনারেট হয় ধারণা যা বেশিরভাগই পাইথন স্তরে বিদ্যমান)। উদাহরণস্বরূপ(int32* -> int32)হল এক ধরনের ফাংশনের জন্য একটি স্বরলিপি যা একটি পূর্ণসংখ্যার ক্রমকে একটি একক পূর্ণসংখ্যার মান কমিয়ে দেয়।
নিম্নলিখিত প্রকারগুলি TFF কম্পিউটেশনের বিতরণকৃত সিস্টেমের দিকটিকে সম্বোধন করে। যেহেতু এই ধারণাগুলি TFF-এর জন্য কিছুটা অনন্য, তাই আমরা আপনাকে অতিরিক্ত মন্তব্য এবং উদাহরণের জন্য কাস্টম অ্যালগরিদম টিউটোরিয়ালটি উল্লেখ করতে উত্সাহিত করি।
বসানোর ধরন । এই প্রকারটি এখনও 2টি আক্ষরিক
federated_language.SERVERএবংfederated_language.CLIENTSআকারে ছাড়া পাবলিক API-এ প্রকাশ করা হয়নি যা আপনি এই ধরণের ধ্রুবক হিসাবে ভাবতে পারেন৷ এটি অভ্যন্তরীণভাবে ব্যবহার করা হয়, তবে, এবং ভবিষ্যতে রিলিজে পাবলিক API এ চালু করা হবে। এই ধরনের কম্প্যাক্ট উপস্থাপনা হলplacement।একটি প্লেসমেন্ট সিস্টেম অংশগ্রহণকারীদের একটি সমষ্টির প্রতিনিধিত্ব করে যা একটি নির্দিষ্ট ভূমিকা পালন করে। প্রাথমিক রিলিজটি ক্লায়েন্ট-সার্ভার গণনাকে লক্ষ্য করে, যেখানে অংশগ্রহণকারীদের 2টি গ্রুপ রয়েছে: ক্লায়েন্ট এবং একটি সার্ভার (আপনি পরবর্তীটিকে একটি সিঙ্গলটন গ্রুপ হিসাবে ভাবতে পারেন)। যাইহোক, আরও বিস্তৃত আর্কিটেকচারে, অন্যান্য ভূমিকা থাকতে পারে, যেমন একটি মাল্টি-টায়ার্ড সিস্টেমে মধ্যবর্তী অ্যাগ্রিগেটর, যারা বিভিন্ন ধরণের একত্রীকরণ সম্পাদন করতে পারে, বা সার্ভার বা সার্ভার দ্বারা ব্যবহৃত বিভিন্ন ধরণের ডেটা কম্প্রেশন/ডিকম্প্রেশন ব্যবহার করে। ক্লায়েন্টদের
প্লেসমেন্টের ধারণাকে সংজ্ঞায়িত করার প্রাথমিক উদ্দেশ্য হল ফেডারেটেড প্রকারগুলিকে সংজ্ঞায়িত করার ভিত্তি হিসাবে।
ফেডারেটেড প্রকার (
federated_language.FederatedType)। একটি ফেডারেটেড টাইপের একটি মান যা একটি নির্দিষ্ট প্লেসমেন্ট (যেমনfederated_language.SERVERবাfederated_language.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(federated_language.SequenceType(np.int32)) def add_up_integers(x): return x.reduce(np.int32(0), lambda x, y: x + y)অন্তর্নিহিত বা ফেডারেটেড অপারেটর (
tff.federated_...)। এটিfederated_language.federated_sumবাfederated_language.federated_broadcastএর মতো ফাংশনগুলির একটি লাইব্রেরি যা FC API-এর সিংহভাগ গঠন করে, যার বেশিরভাগই TFF-এর সাথে ব্যবহারের জন্য বিতরণ করা যোগাযোগ অপারেটরদের প্রতিনিধিত্ব করে।আমরা এগুলিকে অভ্যন্তরীণ হিসাবে উল্লেখ করি কারণ, কিছুটা অভ্যন্তরীণ ফাংশনগুলির মতো, এগুলি একটি উন্মুক্ত, এক্সটেনসিবল অপারেটরদের সেট যা TFF দ্বারা বোঝা যায় এবং নিম্ন-স্তরের কোডে সংকলিত হয়।
এই অপারেটরগুলির বেশিরভাগেরই পরামিতি এবং ফেডারেটেড ধরণের ফলাফল রয়েছে এবং বেশিরভাগই টেমপ্লেট যা বিভিন্ন ধরণের ডেটাতে প্রয়োগ করা যেতে পারে।
উদাহরণস্বরূপ,
federated_language.federated_broadcastএকটি কার্যকরী ধরনেরT@SERVER -> T@CLIENTSএর একটি টেমপ্লেট অপারেটর হিসাবে ভাবা যেতে পারে।Lambda এক্সপ্রেশন (
federated_language.federated_computation)। TFF-তে একটি ল্যাম্বডা এক্সপ্রেশন হল পাইথনেরlambdaবাdefসমতুল্য; এটি প্যারামিটারের নাম এবং একটি বডি (এক্সপ্রেশন) নিয়ে গঠিত যা এই প্যারামিটারের রেফারেন্স ধারণ করে।পাইথন কোডে,
federated_language.federated_computationদিয়ে পাইথন ফাংশন সাজিয়ে এবং একটি আর্গুমেন্ট নির্ধারণ করে এগুলি তৈরি করা যেতে পারে।এখানে একটি ল্যাম্বডা এক্সপ্রেশনের একটি উদাহরণ যা আমরা ইতিমধ্যেই উল্লেখ করেছি:
@federated_language.federated_computation(federated_language.FederatedType(np.float32, federated_language.CLIENTS)) def get_average_temperature(sensor_readings): return federated_language.federated_mean(sensor_readings)বসানো আক্ষরিক . আপাতত, শুধুমাত্র
federated_language.SERVERএবংfederated_language.CLIENTSসহজ ক্লায়েন্ট-সার্ভার গণনা সংজ্ঞায়িত করার জন্য।ফাংশন আহ্বান (
__call__)। একটি কার্যকরী প্রকারের যেকোনো কিছুকে আদর্শ Python__call__সিনট্যাক্স ব্যবহার করে আহ্বান করা যেতে পারে। আমন্ত্রণ একটি অভিব্যক্তি, যার ধরনটি আহ্বান করা ফাংশনের ফলাফলের প্রকারের মতোই।যেমন:
add_up_integers(x)একটি আর্গুমেন্টxএ আগে সংজ্ঞায়িত TensorFlow গণনার একটি আহ্বানকে প্রতিনিধিত্ব করে। এই এক্সপ্রেশনের ধরন হলint32।federated_language.federated_mean(sensor_readings)sensor_readingsএ ফেডারেটেড গড় অপারেটরের একটি আহ্বানকে প্রতিনিধিত্ব করে। এই অভিব্যক্তির ধরন হলfloat32@SERVER(উপরের উদাহরণ থেকে প্রসঙ্গ ধরে নেওয়া)।
টিপল গঠন এবং তাদের উপাদান নির্বাচন .
[x, y],x[y]বাxyফর্মের পাইথন এক্সপ্রেশন যাfederated_language.federated_computationদ্বারা সজ্জিত ফাংশনের বডিতে উপস্থিত হয়।