সাহায্য Kaggle উপর TensorFlow সঙ্গে গ্রেট বেরিয়ার রিফ রক্ষা চ্যালেঞ্জ যোগদান

ফেডারেটড লার্নিং

ওভারভিউ

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

এই স্তর দ্বারা অফার করা ইন্টারফেসগুলি নিম্নলিখিত তিনটি মূল অংশ নিয়ে গঠিত:

  • মডেল। ক্লাস এবং সহায়ক ফাংশন যা আপনাকে আপনার বিদ্যমান মডেলগুলিকে TFF-এর সাথে ব্যবহারের জন্য মোড়ানোর অনুমতি দেয়। একটি মডেল মোড়ানো একটি একক মোড়ানো ফাংশন (যেমন, কলিং হিসাবে সহজ হিসাবে হতে পারে tff.learning.from_keras_model ), অথবা একটি উপশ্রেণী সংজ্ঞা tff.learning.Model পূর্ণ customizability জন্য ইন্টারফেস।

  • ফেডারেটেড গণনা বিল্ডার্স। সাহায্যকারী ফাংশন যা আপনার বিদ্যমান মডেলগুলি ব্যবহার করে প্রশিক্ষণ বা মূল্যায়নের জন্য ফেডারেটেড গণনা তৈরি করে।

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

এই ইন্টারফেসগুলি প্রাথমিকভাবে মধ্যে সংজ্ঞায়িত করা হয় tff.learning গবেষণা ডেটা সেট এবং অন্যান্য সিমুলেশন-সম্পর্কিত ক্ষমতা যে গোষ্ঠীবদ্ধ করা হয়েছে ছাড়া, নামস্থান tff.simulation । এই স্তরে দ্বারা প্রদত্ত নিম্ন স্তরের ইন্টারফেস ব্যবহার বাস্তবায়িত হয় ফেডারেটেড কোর (এফসি) , যা একটি রানটাইম এনভায়রনমেন্ট প্রদান করে।

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

মডেল

স্থাপত্য অনুমান

সিরিয়ালাইজেশন

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

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

বর্তমানে, TensorFlow সম্পূর্ণরূপে সিরিয়ালাইজিং এবং ডিসিরিয়ালাইজিং এজার-মোড TensorFlow সমর্থন করে না। সুতরাং, TFF মধ্যে ধারাবাহিকতাতে বর্তমানে মেমরি 1.0 প্যাটার্ন, যেখানে সব কোড একটি ভিতরে নির্মাণ করা আবশ্যক অনুসরণ করে tf.Graph যে TFF নিয়ন্ত্রণ। এর মানে হল বর্তমানে TFF একটি ইতিমধ্যে-নির্মিত মডেল ব্যবহার করতে পারে না; পরিবর্তে, মডেল সংজ্ঞা যুক্তিবিজ্ঞান একটি নো ARG ফাংশন যা রিটার্ন একটি প্যাকেজ হয় tff.learning.Model । মডেলের সমস্ত উপাদান সিরিয়ালাইজ করা হয়েছে তা নিশ্চিত করতে এই ফাংশনটিকে TFF দ্বারা ডাকা হয়। উপরন্তু, একটি জোরালোভাবে টাইপ পরিবেশ হচ্ছে, TFF অতিরিক্ত মেটাডাটা, একটি সামান্য বিট যেমন আপনার মডেল ইনপুট ধরনের সুনির্দিষ্ট মান হিসাবে চিহ্নিত প্রয়োজন হবে।

সমষ্টি

আমরা দৃঢ়ভাবে Keras ব্যবহার বেশিরভাগ ব্যবহারকারীর কনস্ট্রাক্ট মডেল সুপারিশ দেখতে Keras জন্য কনভার্টার বিভাগটি দেখুন। এই মোড়কগুলি মডেল আপডেটের সমষ্টির পাশাপাশি মডেলের জন্য স্বয়ংক্রিয়ভাবে সংজ্ঞায়িত যেকোনো মেট্রিক্স পরিচালনা করে। যাইহোক, এটা এখনও বুঝতে অ্যাগ্রিগেশন একটি সাধারণ জন্য পরিচালিত হয় দরকারী হতে পারে tff.learning.Model

ফেডারেটেড লার্নিংয়ে সর্বদা কমপক্ষে দুটি স্তরের সমষ্টি থাকে: স্থানীয় অন-ডিভাইস একত্রীকরণ এবং ক্রস-ডিভাইস (বা ফেডারেটেড) একত্রীকরণ:

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

    এই লেভেলে অ্যাগ্রিগেশন করা আপনার মডেল কোডের দায়িত্ব, এবং স্ট্যান্ডার্ড টেনসরফ্লো কনস্ট্রাক্ট ব্যবহার করে সম্পন্ন করা হয়।

    প্রক্রিয়াকরণের সাধারণ কাঠামো নিম্নরূপ:

    • মডেল প্রথম নির্মান tf.Variable যেমন ইত্যাদি ব্যাচ সংখ্যা বা প্রক্রিয়াজাত উদাহরণ সংখ্যা, প্রতি ব্যাচ বা প্রতি উদাহরণস্বরূপ লোকসান এর সমষ্টি, যেমন, হোল্ড দলা থেকে গুলি

    • TFF ডাকে forward_pass আপনার এর উপর পদ্ধতি Model একাধিক বার, ক্রমানুসারে ক্লায়েন্ট ডেটার উপর পরবর্তী ব্যাচ, যা আপনি ভেরিয়েবল একটি পার্শ্ব প্রতিক্রিয়া বিভিন্ন দলা অধিষ্ঠিত আপডেট করতে পারেন।

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

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

    এই স্তরে একত্রীকরণ সম্পাদন করা TFF এর দায়িত্ব। একজন মডেল স্রষ্টা হিসাবে, তবে, আপনি এই প্রক্রিয়াটি নিয়ন্ত্রণ করতে পারেন (নীচে এই বিষয়ে আরও)।

    প্রক্রিয়াকরণের সাধারণ কাঠামো নিম্নরূপ:

    • প্রাথমিক মডেল, এবং প্রশিক্ষণের জন্য প্রয়োজনীয় যে কোনো পরামিতি, একটি সার্ভার দ্বারা ক্লায়েন্টদের একটি উপসেটে বিতরণ করা হয় যারা প্রশিক্ষণ বা মূল্যায়নের একটি রাউন্ডে অংশগ্রহণ করবে।

    • প্রতিটি ক্লায়েন্টের উপর, স্বাধীনভাবে এবং সমান্তরালভাবে, আপনার মডেল কোডটি স্থানীয় ডেটা ব্যাচগুলির একটি স্ট্রীমে বারবার আহ্বান করা হয় যাতে মডেল প্যারামিটারগুলির একটি নতুন সেট (প্রশিক্ষণের সময়) এবং উপরে বর্ণিত স্থানীয় মেট্রিক্সের একটি নতুন সেট তৈরি করা হয় (এটি স্থানীয় একত্রিতকরণ)।

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

বিমূর্ত ইন্টারফেস

এই প্রাথমিক কন্সট্রাকটর + + মেটাডেটা ইন্টারফেস ইন্টারফেস দ্বারা প্রতিনিধিত্ব করা হয় tff.learning.Model নিম্নরূপ:

  • কন্সট্রাকটর, forward_pass এবং report_local_outputs পদ্ধতি মডেল ভেরিয়েবল, ফরওয়ার্ড পাস গঠন করা উচিত, এবং পরিসংখ্যানগুলি আপনাকে সঙ্গতিপূর্ণভাবেই, রিপোর্ট করতে ইচ্ছুক। এই পদ্ধতিগুলি দ্বারা নির্মিত TensorFlow অবশ্যই ক্রমিক হতে হবে, যেমন উপরে আলোচনা করা হয়েছে।

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

উপরন্তু, বিমূর্ত ইন্টারফেস tff.learning.Model একটি সম্পত্তি অনাবৃত federated_output_computation যে, একসঙ্গে সঙ্গে report_local_outputs সম্পত্তি উল্লেখ করেছে আগে, আপনি সারসংক্ষেপ পরিসংখ্যান সমষ্টি প্রক্রিয়া নিয়ন্ত্রণ করতে দেয়।

কীভাবে আপনার নিজস্ব সংজ্ঞায়িত করতে উদাহরণ জানতে পারেন tff.learning.Model আমাদের দ্বিতীয় অংশে ইমেজ শ্রেণীবিন্যাস সেইসাথে উদাহরণ মডেলের আমরা পরীক্ষার জন্য ব্যবহার, টিউটোরিয়াল model_examples.py

কেরাসের জন্য রূপান্তরকারী

প্রায় সব তথ্য যে TFF প্রয়োজনীয় ডাকে আহরিত হতে পারে tf.keras ইন্টারফেস, তাই যদি আপনি একটি Keras মডেল আছে, তবে আপনি উপর নির্ভর করতে পারেন tff.learning.from_keras_model একটি গঠন করা tff.learning.Model

নোট TFF এখনও আপনি একটি কন্সট্রাকটর প্রদান করতে চান - যেমন নিম্নলিখিত হিসাবে একটি নো-যুক্তি মডেল ফাংশন:

def model_fn():
  keras_model = ...
  return tff.learning.from_keras_model(keras_model, sample_batch, loss=...)

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

Keras চাদরে ব্যবহার আমাদের দেখানো হয় ইমেজ শ্রেণীবিন্যাস এবং টেক্সট প্রজন্ম টিউটোরিয়াল।

ফেডারেটেড কম্পিউটেশন বিল্ডার্স

tff.learning প্যাকেজের জন্য বিভিন্ন বিল্ডার উপলব্ধ tff.Computation গুলি যে শেখার সংক্রান্ত কর্ম সঞ্চালন; আমরা আশা করি যে এই ধরনের গণনার সেট ভবিষ্যতে প্রসারিত হবে।

স্থাপত্য অনুমান

মৃত্যুদন্ড

একটি ফেডারেটেড গণনা চালানোর দুটি স্বতন্ত্র পর্যায় রয়েছে।

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

  • সম্পাদন TFF এই কম্পিউটেশন চালানো উপায় প্রদান করে। আপাতত, এক্সিকিউশন শুধুমাত্র স্থানীয় সিমুলেশনের মাধ্যমে সমর্থিত (যেমন, সিমুলেটেড বিকেন্দ্রীভূত ডেটা ব্যবহার করে একটি নোটবুকে)।

যেমন একটি প্রশিক্ষণ অ্যালগরিদম যে ব্যবহারসমূহ যেমন TFF এর ফেডারেটেড শিক্ষণ এপিআই, উত্পন্ন হওয়া ফেডারেট গণনার ফেডারেট মডেল গড় , অথবা একটি ফেডারেট মূল্যায়ন, উপাদান, এর মধ্যে উল্লেখযোগ্য হল একটি নম্বর রয়েছে:

  • আপনার মডেল প্রশিক্ষণ / মূল্যায়ন লুপ চালাতে ফেডারেটেড শিক্ষণ ফ্রেমওয়ার্ক দ্বারা নির্মিত আপনার মডেল কোড সেইসাথে অতিরিক্ত TensorFlow কোডের একটি ধারাবাহিকভাবে ফর্ম (যেমন optimizers নির্মাণের মডেল আপডেট প্রয়োগের উপর iterating যেমন tf.data.Dataset s, এবং কম্পিউটিং মান, এবং সার্ভারে সমষ্টিগত আপডেট প্রয়োগ করা, কয়েকটি নাম দেওয়ার জন্য)।

  • ক্লায়েন্ট এবং একটি সার্ভার (ক্লায়েন্ট ডিভাইস জুড়ে অ্যাগ্রিগেশন এর সাধারণত বিভিন্ন ফর্ম, এবং সার্ভার থেকে সব গ্রাহকদের সম্প্রচার), এবং মধ্যে যোগাযোগের একটি ঘোষণামূলক স্পেসিফিকেশন কিভাবে এই বিতরণ যোগাযোগ ক্লায়েন্ট-স্থানীয় বা সার্ভার-স্থানীয় সঞ্চালনের সঙ্গে ইন্টারলিভড্ হয় টেনসরফ্লো কোডের।

ফেডারেট এই ধারাবাহিকভাবে আকারে প্রতিনিধিত্ব কম্পিউটেশন একটি প্ল্যাটফর্ম স্বাধীন অভ্যন্তরীণ পাইথন থেকে স্বতন্ত্র ভাষায় প্রকাশ করা হয়, কিন্তু ফেডারেটেড শিক্ষণ API- টি ব্যবহার করার, আপনি এই প্রতিনিধিত্বের বিস্তারিত উদ্বেগ নিজেকে প্রয়োজন হবে না। কম্পিউটেশন ধরনের বস্তু হিসাবে আপনার পাইথন কোডে প্রতিনিধিত্ব করা হয় tff.Computation , যা অধিকাংশ অংশ জন্য আপনি অস্বচ্ছ পাইথন হিসেবে বিবেচনা করতে পারেন callable গুলি।

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

মডেলিং রাষ্ট্র

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

যেহেতু TFF কার্যকরী, স্টেটফুল প্রসেসগুলিকে TFF-এ কম্পিউটেশন হিসাবে মডেল করা হয় যা বর্তমান অবস্থাকে একটি ইনপুট হিসাবে গ্রহণ করে এবং তারপরে একটি আউটপুট হিসাবে আপডেট করা অবস্থা প্রদান করে। একটি রাষ্ট্রীয় প্রক্রিয়া সম্পূর্ণরূপে সংজ্ঞায়িত করার জন্য, প্রাথমিক অবস্থাটি কোথা থেকে এসেছে তাও নির্দিষ্ট করতে হবে (অন্যথায় আমরা প্রক্রিয়াটিকে বুটস্ট্র্যাপ করতে পারি না)। এই সাহায্যকারী ক্লাসের সংজ্ঞা বন্দী করা হয় tff.templates.IterativeProcess 2 properties সহযোগে, initialize এবং next , আরম্ভের সংশ্লিষ্ট এবং পুনরাবৃত্তির যথাক্রমে।

উপলব্ধ বিল্ডার

এই মুহুর্তে, TFF দুটি নির্মাতা ফাংশন প্রদান করে যা ফেডারেটেড প্রশিক্ষণ এবং মূল্যায়নের জন্য ফেডারেটেড গণনা তৈরি করে:

  • tff.learning.build_federated_averaging_process একটি মডেল ফাংশন এবং একটি ক্লায়েন্ট অপটিমাইজার লাগে, এবং একটি stateful ফেরৎ tff.templates.IterativeProcess

  • tff.learning.build_federated_evaluation একটি মডেল ফাংশন লাগে এবং মডেল ফেডারেট নিরীক্ষার জন্য একটি একক ফেডারেট গণনার ফেরৎ, যেহেতু মূল্যায়ন stateful নয়।

ডেটাসেট

স্থাপত্য অনুমান

ক্লায়েন্ট নির্বাচন

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

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

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

trainer = tff.learning.build_federated_averaging_process(...)
state = trainer.initialize()
federated_training_data = ...

def sample(federate_data):
  return ...

while True:
  data_for_this_round = sample(federated_training_data)
  state, metrics = trainer.next(state, data_for_this_round)

এই সহজতর করার জন্য, যখন সিমিউলেশন মধ্যে TFF ব্যবহার করে, ফেডারেট তথ্য হিসাবে পাইথন গৃহীত list গুলি, ক্লায়েন্ট ডিভাইস অংশগ্রহণকারী ডিভাইসে স্থানীয় প্রতিনিধিত্ব করতে প্রতি এক উপাদান সঙ্গে tf.data.Dataset

বিমূর্ত ইন্টারফেস

অর্ডার কৃত্রিম ফেডারেট ডেটা সেট সঙ্গে তার আচরণ প্রমিত করার জন্য, TFF একটি বিমূর্ত ইন্টারফেস প্রদান tff.simulation.datasets.ClientData কোনটি ক্লায়েন্ট সেট গনা, এবং একটি গঠন করা করার অনুমতি দেয় tf.data.Dataset যে একটি নির্দিষ্ট ডাটা ধারণ করে ক্লায়েন্ট সেই tf.data.Dataset গুলি সরাসরি উৎসুক মোডে উত্পন্ন ফেডারেট কম্পিউটেশন ইনপুট হিসাবে খাওয়ানো যেতে পারে।

এটি লক্ষ করা উচিত যে ক্লায়েন্টের পরিচয় অ্যাক্সেস করার ক্ষমতা হল এমন একটি বৈশিষ্ট্য যা শুধুমাত্র ডেটাসেট দ্বারা সিমুলেশনে ব্যবহারের জন্য প্রদান করা হয়, যেখানে ক্লায়েন্টদের নির্দিষ্ট উপসেট থেকে ডেটার উপর প্রশিক্ষণের ক্ষমতা প্রয়োজন হতে পারে (যেমন, বিভিন্ন দৈনিকের প্রাপ্যতা অনুকরণ করা ক্লায়েন্টের প্রকার)। সংকলিত কম্পিউটেশন এবং মূলগত রানটাইম ক্লায়েন্ট পরিচয়ের কোনো ধারণা জড়িত না। একবার ক্লায়েন্ট একটি নির্দিষ্ট উপসেট থেকে ডেটা একটি কল, একটি ইনপুট, যেমন হিসেবে নির্বাচিত হয়েছে tff.templates.IterativeProcess.next , ক্লায়েন্ট পরিচয় আর এটি প্রদর্শিত হয়।

উপলব্ধ ডেটা সেট

আমরা নামস্থান নিবেদিত করেছি tff.simulation.datasets ডেটাসেট যে বাস্তবায়ন জন্য tff.simulation.datasets.ClientData সিমিউলেশন ব্যবহারের জন্য ইন্টারফেস, এবং ডেটাসেট সমর্থন করার জন্য সঙ্গে এটি বীজযুক্ত ইমেজ শ্রেণীবিন্যাস এবং টেক্সট প্রজন্ম টিউটোরিয়াল। আমরা আপনাকে প্ল্যাটফর্মে আপনার নিজস্ব ডেটাসেটগুলি অবদান রাখতে উত্সাহিত করতে চাই৷