এই নথিটি TFF-এর মূল স্তরের সাথে পরিচয় করিয়ে দেয় যা ফেডারেটেড লার্নিং এবং সম্ভাব্য ভবিষ্যতের অ-লার্নিং ফেডারেটেড অ্যালগরিদমের ভিত্তি হিসাবে কাজ করে।
ফেডারেটেড কোরের একটি মৃদু পরিচয়ের জন্য, অনুগ্রহ করে নিম্নলিখিত টিউটোরিয়ালগুলি পড়ুন, কারণ তারা উদাহরণের মাধ্যমে কয়েকটি মৌলিক ধারণার সাথে পরিচয় করিয়ে দেয় এবং ধাপে ধাপে একটি সাধারণ ফেডারেটেড গড় অ্যালগরিদম তৈরি করে।
কাস্টম ফেডারেটেড অ্যালগরিদম, পার্ট 1: ফেডারেটেড কোরের ভূমিকা ।
কাস্টম ফেডারেটেড অ্যালগরিদম, পার্ট 2: ফেডারেটেড অ্যাভারেজিং বাস্তবায়ন করা ।
এছাড়াও আমরা আপনাকে ফেডারেটেড লার্নিং এবং ইমেজ ক্লাসিফিকেশন এবং টেক্সট জেনারেশন সম্পর্কিত টিউটোরিয়ালগুলির সাথে নিজেকে পরিচিত করতে উত্সাহিত করব, কারণ ফেডারেটেড শিক্ষার জন্য ফেডারেটেড কোর এপিআই (এফসি এপিআই) এর ব্যবহার আমাদের করা কিছু পছন্দের জন্য গুরুত্বপূর্ণ প্রসঙ্গ প্রদান করে। এই স্তর ডিজাইন করা.
ওভারভিউ
লক্ষ্য, উদ্দেশ্যমূলক ব্যবহার এবং সুযোগ
ফেডারেটেড কোর (এফসি) বিতরণকৃত গণনা বাস্তবায়নের জন্য একটি প্রোগ্রামিং পরিবেশ হিসাবে ভালভাবে বোঝা যায়, অর্থাৎ, একাধিক কম্পিউটার (মোবাইল ফোন, ট্যাবলেট, এমবেডেড ডিভাইস, ডেস্কটপ কম্পিউটার, সেন্সর, ডাটাবেস সার্ভার ইত্যাদি) জড়িত কম্পিউটেশন যা প্রত্যেকে অ-সম্পাদনা করতে পারে। স্থানীয়ভাবে তুচ্ছ প্রক্রিয়াকরণ, এবং তাদের কাজ সমন্বয় করতে নেটওয়ার্ক জুড়ে যোগাযোগ.
ডিস্ট্রিবিউট করা শব্দটি খুবই সাধারণ, এবং 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.type_at_clients(tf.float32))
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
এর তুলনায় তাদের (স্থির) আকৃতির চিকিৎসায় কঠোর হতে পারে। উদাহরণস্বরূপ, 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.tf_computation
)। এইগুলি হলtff.tf_computation
ডেকোরেটর ব্যবহার করে TFF-এ পুনঃব্যবহারযোগ্য উপাদান হিসাবে মোড়ানো TensorFlow কোডের বিভাগ। তাদের সর্বদা কার্যকরী প্রকার থাকে এবং টেনসরফ্লো-এর ফাংশনগুলির বিপরীতে, তারা কাঠামোগত প্যারামিটার নিতে পারে বা একটি সিকোয়েন্স টাইপের কাঠামোগত ফলাফল দিতে পারে।এখানে একটি উদাহরণ দেওয়া হল, টাইপের একটি TF গণনা
(int32* -> int)
যাtf.data.Dataset.reduce
অপারেটর ব্যবহার করে পূর্ণসংখ্যার যোগফল গণনা করে:@tff.tf_computation(tff.SequenceType(tf.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
CLIENTS এর একটি টেমপ্লেট অপারেটর হিসাবে ভাবা যেতে পারে।ল্যাম্বডা এক্সপ্রেশন (
tff.federated_computation
)। টিএফএফ-এ একটি ল্যাম্বডা এক্সপ্রেশন হল পাইথনেরlambda
বাdef
সমতুল্য; এটি প্যারামিটারের নাম এবং একটি বডি (এক্সপ্রেশন) নিয়ে গঠিত যা এই প্যারামিটারের রেফারেন্স ধারণ করে।পাইথন কোডে,
tff.federated_computation
দিয়ে পাইথন ফাংশন সাজিয়ে এবং একটি আর্গুমেন্ট সংজ্ঞায়িত করে এগুলি তৈরি করা যেতে পারে।এখানে একটি ল্যাম্বডা অভিব্যক্তির একটি উদাহরণ যা আমরা ইতিমধ্যেই উল্লেখ করেছি:
@tff.federated_computation(tff.type_at_clients(tf.float32)) def get_average_temperature(sensor_readings): return tff.federated_mean(sensor_readings)
বসানো আক্ষরিক . আপাতত, শুধুমাত্র
tff.SERVER
এবংtff.CLIENTS
সহজ ক্লায়েন্ট-সার্ভার গণনা সংজ্ঞায়িত করার জন্য।ফাংশন আহ্বান (
__call__
)। একটি কার্যকরী প্রকারের যেকোন কিছুকে আদর্শ পাইথন__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
দ্বারা সজ্জিত ফাংশনের বডিতে উপস্থিত হয়।