TensorFlow সংস্করণ সামঞ্জস্য

এই নথিটি এমন ব্যবহারকারীদের জন্য যাদের TensorFlow-এর বিভিন্ন সংস্করণে (কোড বা ডেটার জন্য হয়) পিছনের দিকে সামঞ্জস্যের প্রয়োজন, এবং ডেভেলপারদের জন্য যারা সামঞ্জস্য রক্ষা করার সময় TensorFlow পরিবর্তন করতে চান।

শব্দার্থিক সংস্করণ 2.0

TensorFlow শব্দার্থিক ভারশনিং 2.0 (অনুসরণ semver সর্বজনীন API- এর জন্য)। TensorFlow প্রত্যেকটি মুক্তি সংস্করণ ফর্ম আছে MAJOR.MINOR.PATCH । উদাহরণস্বরূপ, TensorFlow সংস্করণ 1.2.3 হয়েছে MAJOR সংস্করণ 1, MINOR সংস্করণ 2, এবং PATCH সংস্করণ 3. প্রতিটি সংখ্যা পরিবর্তন নিম্নলিখিত অর্থ আছে:

  • প্রধান: সম্ভাব্য পিছন বেমানান পরিবর্তন। আগের বড় রিলিজের সাথে কাজ করা কোড এবং ডেটা অগত্যা নতুন রিলিজের সাথে কাজ করবে না। যাইহোক, কিছু ক্ষেত্রে বিদ্যমান টেনসরফ্লো গ্রাফ এবং চেকপয়েন্টগুলি নতুন রিলিজে স্থানান্তরযোগ্য হতে পারে; দেখতে গ্রাফ এবং চেকপয়েন্ট এর সামঞ্জস্যের তথ্য সামঞ্জস্য বিস্তারিত।

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

  • প্যাচ: সাযুজ্যপূর্ণ ত্রুটি সমাধান।

উদাহরণস্বরূপ, মুক্তি 1.0.0 রিলিজ 0.12.1 থেকে পিছনের দিকে বেমানান পরিবর্তন পরিচয় করিয়ে দেন। যাইহোক, মুক্তি 1.1.1 রিলিজ 1.0.0 সঙ্গে সাযুজ্যপূর্ণ ছিল।

আচ্ছাদিত কি

শুধুমাত্র TensorFlow-এর সর্বজনীন APIগুলি ছোট এবং প্যাচ সংস্করণগুলিতে পিছনের দিকে সামঞ্জস্যপূর্ণ। পাবলিক API গুলি নিয়ে গঠিত

  • সকল নথিভুক্ত পাইথন ফাংশন এবং ক্লাসের tensorflow মডিউল এবং তার submodules, ছাড়া,

    • ব্যক্তিগত প্রতীক: কোনো ফাংশন, বর্গ, ইত্যাদি, যার নাম দিয়ে শুরু _
    • পরীক্ষামূলক এবং tf.contrib প্রতীক, দেখতে নিচের বিস্তারিত জানার জন্য।

    লক্ষ্য করুন কোড examples/ এবং tools/ ডিরেক্টরি মাধ্যমে যোগাযোগ করা যাবে না tensorflow পাইথন মডিউল এবং এইভাবে সামঞ্জস্য গ্যারান্টি দ্বারা আবৃত করা হয় না।

    যদি একটি প্রতীক মাধ্যমে উপলব্ধ tensorflow পাইথন মডিউল বা তার submodules কিন্তু নথিভুক্ত করা হয় না, তারপর, এটা প্রকাশ্য API- এর সুবিবেচিত অংশ নয়।

  • উপযুক্ততা এপিআই (পাইথন এ, tf.compat মডিউল)। প্রধান সংস্করণগুলিতে, আমরা ব্যবহারকারীদের একটি নতুন প্রধান সংস্করণে রূপান্তরিত করতে সহায়তা করার জন্য ইউটিলিটি এবং অতিরিক্ত শেষ পয়েন্ট প্রকাশ করতে পারি। এই API চিহ্নগুলি অবহেলিত এবং সমর্থিত নয় (অর্থাৎ, আমরা কোনও বৈশিষ্ট্য যোগ করব না, এবং আমরা দুর্বলতাগুলি ঠিক করা ছাড়া অন্য বাগগুলি ঠিক করব না), তবে সেগুলি আমাদের সামঞ্জস্যতার গ্যারান্টিগুলির অধীনে পড়ে৷

  • সি এপিআই

  • নিম্নলিখিত প্রোটোকল বাফার ফাইল:

কি আচ্ছাদিত করা হয় না

TensorFlow-এর কিছু অংশ যে কোনো সময়ে পশ্চাৎমুখী বেমানান উপায়ে পরিবর্তিত হতে পারে। এর মধ্যে রয়েছে:

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

    • যে কোন প্রতীক tf.contrib মডিউল বা তার submodules;
    • কোন প্রতীক (মডিউল, ফাংশন, যুক্তি, সম্পত্তি, বর্গ, বা ধ্রুবক) যাদের নাম রয়েছে experimental বা Experimental ; বা
    • যে কোনো চিহ্ন যার সম্পূর্ণ যোগ্য নামের মধ্যে একটি মডিউল বা শ্রেণী অন্তর্ভুক্ত থাকে যা নিজেই পরীক্ষামূলক। এই ক্ষেত্র এবং বলা কোনো প্রোটোকল বাফার submessages অন্তর্ভুক্ত experimental
  • অন্যান্য ভাষাসমূহ: যেমন পাইথন এবং C ছাড়া অন্য ভাষায় TensorFlow API গুলি:

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

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

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

  • সংস্করণ বিতরণ করা Tensorflow মধ্যে তীর্যক: একটি একক ক্লাস্টারের মধ্যে TensorFlow দুই বিভিন্ন সংস্করণ চলমান অসমর্থিত। তারের প্রোটোকলের পিছনের সামঞ্জস্য সম্পর্কে কোন গ্যারান্টি নেই।

  • বাগ: আমরা পিছনের দিকে বেমানান আচরণ করা করার অধিকার রাখি (যদিও API) যে পরিবর্তন যদি বর্তমান বাস্তবায়ন পরিষ্কারভাবে নষ্ট হয়ে গেছে, যদি ডকুমেন্টেশন contradicts অথবা যদি একটি সুপরিচিত এবং ভাল-সংজ্ঞায়িত অভিপ্রেত আচরণ সঠিকভাবে কারণে বাস্তবায়িত হয়নি একটি বাগ উদাহরণস্বরূপ, যদি একটি অপ্টিমাইজার একটি সুপরিচিত অপ্টিমাইজেশান অ্যালগরিদম প্রয়োগ করার দাবি করে কিন্তু একটি ত্রুটির কারণে সেই অ্যালগরিদমের সাথে মেলে না, তাহলে আমরা অপ্টিমাইজারটি ঠিক করব৷ আমাদের ফিক্স কনভারজেন্সের জন্য ভুল আচরণের উপর নির্ভর করে কোড ভাঙতে পারে। আমরা রিলিজ নোটগুলিতে এই ধরনের পরিবর্তনগুলি নোট করব।

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

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

সংরক্ষিত মডেল, গ্রাফ এবং চেকপয়েন্টের সামঞ্জস্য

SavedModel হল TensorFlow প্রোগ্রামে ব্যবহার করার জন্য পছন্দের সিরিয়ালাইজেশন ফরম্যাট। এক বা একাধিক গ্রাফ হিসাবে এনকোডেড: SavedModels দুটি অংশ থাকে GraphDefs এবং একটি চেকপয়েন্ট। গ্রাফগুলি চালানোর জন্য অপারেটিং সিস্টেমের ডেটা ফ্লো বর্ণনা করে এবং চেকপয়েন্টগুলি একটি গ্রাফে ভেরিয়েবলের সংরক্ষিত টেনসর মান ধারণ করে।

অনেক TensorFlow ব্যবহারকারী SavedModels তৈরি করে এবং TensorFlow-এর পরবর্তী রিলিজের মাধ্যমে সেগুলিকে লোড ও কার্যকর করে। মেনে semver , TensorFlow এক সংস্করণের সাথে লিখিত SavedModels লোড এবং একই প্রধান রিলিজের সাথে TensorFlow এর পরবর্তী সংস্করণের সাথে মূল্যায়ন করা যাবে।

আমরা সমর্থিত SavedModels জন্য অতিরিক্ত নিশ্চয়তা দিই না। আমরা একটি SavedModel যা শুধুমাত্র অ অবচিত, অ-পরীক্ষামূলক, TensorFlow অ সামঞ্জস্য API গুলি প্রধান সংস্করণ ব্যবহার করে তৈরি করা হয় কল N একটি SavedModel সংস্করণে সমর্থিত N । কোন SavedModel সমর্থিত TensorFlow মধ্যে প্রধান সংস্করণ N লোড এবং TensorFlow প্রধান সংস্করণ মৃত্যুদন্ড কার্যকর করা যেতে পারে N+1 । যাইহোক, এই ধরনের মডেল তৈরি বা সংশোধন করার জন্য প্রয়োজনীয় কার্যকারিতা আর উপলব্ধ নাও হতে পারে, তাই এই গ্যারান্টিটি শুধুমাত্র অপরিবর্তিত সংরক্ষিত মডেলের ক্ষেত্রে প্রযোজ্য।

আমরা যতদিন সম্ভব পিছনের সামঞ্জস্য রক্ষা করার চেষ্টা করব, যাতে সিরিয়াল করা ফাইলগুলি দীর্ঘ সময়ের জন্য ব্যবহারযোগ্য হয়।

GraphDef সামঞ্জস্য

গ্রাফ মাধ্যমে ধারাবাহিকভাবে হয় GraphDef প্রোটোকল বাফার। গ্রাফ থেকে পিছনের দিকে বেমানান পরিবর্তন সহজতর করার জন্য প্রতিটি GraphDef একটি সংস্করণ সংখ্যা TensorFlow সংস্করণ থেকে পৃথক হয়েছে। উদাহরণস্বরূপ, GraphDef সংস্করণ 17 অবচিত inv পক্ষে অপ reciprocal । শব্দার্থবিদ্যা হল:

  • TensorFlow প্রত্যেকটি সংস্করণের একটি বিরতি সমর্থন GraphDef সংস্করণ। এই ব্যবধান প্যাচ রিলিজ জুড়ে ধ্রুবক থাকবে, এবং শুধুমাত্র ছোট রিলিজ জুড়ে বৃদ্ধি পাবে। একটি জন্য সমর্থন ড্রপ GraphDef সংস্করণ শুধুমাত্র TensorFlow একটি প্রধান মুক্তির জন্য ঘটবে (এবং শুধুমাত্র সংস্করণটিকে সমর্থন SavedModels জন্য নিশ্চিত সাথে সংযুক্ত)।

  • নতুন তৈরি গ্রাফ সর্বশেষ হস্তান্তর করা হয়েছে GraphDef সংস্করণ সংখ্যা।

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

    নোট যে এই GraphDefs (এবং SavedModels) ধারাবাহিকভাবে গ্রাফ একমাত্র প্রযোজ্য: কোড যেখানে লেখা আছে একটি চেকপয়েন্ট TensorFlow কোনো ভিন্ন সংস্করণ চলমান একই কোড দ্বারা উত্পন্ন চেকপয়েন্ট পড়তে সক্ষম নাও হতে পারে।

  • তাহলে GraphDef উপরের আবদ্ধ একটি (মাইনর) রিলিজের মধ্যে এক্স বৃদ্ধি হয়, অন্তত ছয় মাস আগে লোয়ার বাউন্ড উদাহরণস্বরূপ এক্স (আমরা প্রকল্পিত সংস্করণ সংখ্যা এখানে ব্যবহার করছেন) এর অনেক বেড়ে যায় হবে:

    • TensorFlow 1.2 সমর্থন পারে GraphDef 7 সংস্করণ 4।
    • TensorFlow 1.3 যোগ করতে পারিনি GraphDef থেকে 8 সংস্করণ 8 ও সমর্থন সংস্করণ 4।
    • অন্তত ছয় মাস পরে, TensorFlow 2.0.0 4 থেকে 7 সংস্করণের জন্য সমর্থন বাদ দিতে পারে, শুধুমাত্র সংস্করণ 8 রেখে।

    উল্লেখ্য যে TensorFlow-এর প্রধান সংস্করণগুলি সাধারণত 6 মাসেরও বেশি সময়ের ব্যবধানে প্রকাশিত হয়, তাই উপরে বর্ণিত সমর্থিত SavedModels-এর গ্যারান্টিগুলি GraphDefs-এর জন্য 6 মাসের গ্যারান্টির চেয়ে অনেক বেশি শক্তিশালী।

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

টেনসরফ্লো প্রসারিত করার সময় গ্রাফ এবং চেকপয়েন্ট সামঞ্জস্য

এই বিভাগে প্রাসঙ্গিক শুধুমাত্র যখন থেকে বেমানান পরিবর্তন হয় GraphDef যেমন যখন অপস যোগ অপস সরানো, অথবা বিদ্যমান অপস কার্যকারিতা পরিবর্তন বিন্যাস। পূর্ববর্তী বিভাগটি বেশিরভাগ ব্যবহারকারীর জন্য যথেষ্ট।

পশ্চাদপদ এবং আংশিক এগিয়ে সামঞ্জস্য

আমাদের সংস্করণ স্কিমের তিনটি প্রয়োজনীয়তা রয়েছে:

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

নোট যে GraphDef সংস্করণ প্রক্রিয়া TensorFlow সংস্করণ থেকে পৃথক হয়, এর পেছনে বেমানান পরিবর্তন GraphDef বিন্যাস এখনো শব্দার্থিক ভারশনিং দ্বারা সীমাবদ্ধ। এই উপায়ে কার্যকারিতা শুধুমাত্র সরানো বা মধ্যবর্তী পরিবর্তন করা যাবে MAJOR (যেমন TensorFlow সংস্করণ 1.7 থেকে 2.0 )। উপরন্তু, এগিয়ে সামঞ্জস্য প্যাচ রিলিজ (মধ্যে জারি করা হয়েছে 1.x.1 করার 1.x.2 উদাহরণস্বরূপ)।

পশ্চাৎপদ এবং এগিয়ে সামঞ্জস্য অর্জন করতে এবং ফরম্যাটের পরিবর্তনগুলি কখন প্রয়োগ করতে হবে তা জানতে, গ্রাফ এবং চেকপয়েন্টগুলিতে মেটাডেটা থাকে যা বর্ণনা করে যে তারা কখন তৈরি হয়েছিল৷ বিস্তারিত নীচের বিভাগের TensorFlow বাস্তবায়ন ও নব্য জন্য নির্দেশিকা GraphDef সংস্করণ।

স্বাধীন ডেটা সংস্করণ স্কিম

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

ডেটা, প্রযোজক এবং ভোক্তা

আমরা নিম্নলিখিত ধরণের ডেটা সংস্করণ তথ্যের মধ্যে পার্থক্য করি:

  • প্রযোজক: বাইনেরিতে যে ডেটা উত্পাদন। প্রযোজক একটি সংস্করণ (আছে producer ) এবং একটি ন্যূনতম ভোক্তা সংস্করণ যা তারা (সঙ্গে সামঞ্জস্যপূর্ণ min_consumer )।
  • ভোক্তাদের: বাইনেরিতে যে ডেটা ব্যবহার করা হবে। কনজিউমার্স একটি সংস্করণ (আছে consumer ) এবং একটি ন্যূনতম প্রযোজক সংস্করণ যা তারা (সঙ্গে সামঞ্জস্যপূর্ণ min_producer )।

Versioned তথ্য প্রত্যেকটি টুকরা হয়েছে VersionDef versions ক্ষেত্র যা রেকর্ড producer যে ডেটা, তৈরি min_consumer এটি সঙ্গে সামঞ্জস্যপূর্ণ, এবং একটি তালিকা bad_consumers যে অননুমোদিত হয় সংস্করণ।

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

  • consumer > = ডেটা এর min_consumer
  • তথ্য এর producer > = ক্রেতার min_producer
  • consumer ডাটা এর মধ্যে bad_consumers

উভয় উত্পাদক ও ক্রেতার একই TensorFlow কোড বেস থেকে আসা সাল থেকে, core/public/version.h যা পারেন হিসাবে গণ্য হবে একটি প্রধান তথ্য সংস্করণ রয়েছে producer বা consumer প্রসঙ্গ উপর নির্ভর করে এবং উভয় min_consumer এবং min_producer (উত্পাদক ও ক্রেতার প্রয়োজনীয় যথাক্রমে) . বিশেষ করে,

  • জন্য GraphDef সংস্করণ, আমরা TF_GRAPH_DEF_VERSION , TF_GRAPH_DEF_VERSION_MIN_CONSUMER এবং TF_GRAPH_DEF_VERSION_MIN_PRODUCER
  • চেকপয়েন্ট সংস্করণ জন্য, আমরা আছে TF_CHECKPOINT_VERSION , TF_CHECKPOINT_VERSION_MIN_CONSUMER এবং TF_CHECKPOINT_VERSION_MIN_PRODUCER

একটি বিদ্যমান অপে ডিফল্ট সহ একটি নতুন বৈশিষ্ট্য যোগ করুন

নিচের নির্দেশিকা অনুসরণ করা আপনাকে ফরওয়ার্ড সামঞ্জস্য দেয় শুধুমাত্র যদি অপ্সের সেট পরিবর্তন না হয়:

  1. এগিয়ে সামঞ্জস্য পছন্দসই হয়, তাহলে সেট strip_default_attrs করার True যখন যেকোন একটি ব্যবহার করে মডেল রপ্তানি tf.saved_model.SavedModelBuilder.add_meta_graph_and_variables এবং tf.saved_model.SavedModelBuilder.add_meta_graph পদ্ধতি SavedModelBuilder বর্গ, বা tf.estimator.Estimator.export_saved_model
  2. এটি মডেলগুলি উত্পাদন/রপ্তানি করার সময় ডিফল্ট মূল্যবান বৈশিষ্ট্যগুলি বন্ধ করে দেয়। এই নিশ্চিত করুন যে রপ্তানি তোলে tf.MetaGraphDef নতুন উপ-অ্যাট্রিবিউট ধারণ করে না যখন ডিফল্ট মান ব্যবহার করা হয়।
  3. এই নিয়ন্ত্রণ থাকার ফলে পুরানো ভোক্তাদের (উদাহরণস্বরূপ, বাইনারি পরিবেশন করা যা প্রশিক্ষণ বাইনারি থেকে পিছিয়ে) মডেলগুলি লোড করা চালিয়ে যেতে এবং মডেল পরিবেশনে বাধা রোধ করতে পারে।

ক্রমবর্ধমান গ্রাফডিফ সংস্করণ

এই বিভাগে কিভাবে এই ভার্সন প্রক্রিয়া ব্যবহার করতে পরিবর্তনগুলি বিভিন্ন ধরনের করতে ব্যাখ্যা করে GraphDef বিন্যাস।

একটি অপশন যোগ করুন

একই সময়ে উভয় ভোক্তাদের এবং প্রযোজক নতুন অপ যোগ করুন, এবং কোনো পরিবর্তন করবেন না GraphDef সংস্করণ। এই ধরনের পরিবর্তন স্বয়ংক্রিয়ভাবে পশ্চাদমুখী সামঞ্জস্যপূর্ণ, এবং বিদ্যমান প্রযোজক স্ক্রিপ্টগুলি হঠাৎ করে নতুন কার্যকারিতা ব্যবহার করবে না বলে ফরওয়ার্ড সামঞ্জস্যতার পরিকল্পনাকে প্রভাবিত করে না।

একটি অপ যোগ করুন এবং এটি ব্যবহার করতে বিদ্যমান পাইথন র‍্যাপারগুলি স্যুইচ করুন৷

  1. নতুন ভোক্তা কার্যকারিতা বাস্তবায়ন এবং বাড়ায় GraphDef সংস্করণ।
  2. যদি র‍্যাপারগুলিকে শুধুমাত্র সেই ক্ষেত্রে নতুন কার্যকারিতা ব্যবহার করা সম্ভব হয় যেগুলি আগে কাজ করেনি, তাহলে র‍্যাপারগুলি এখন আপডেট করা যেতে পারে৷
  3. নতুন কার্যকারিতা ব্যবহার করতে Python wrappers পরিবর্তন করুন। না বৃদ্ধি কি min_consumer , মডেল যে এই অপ ব্যবহার করবেন না বিরতি করা উচিত নয় গেছে।

অপসারণ বা একটি অপের কার্যকারিতা সীমাবদ্ধ

  1. নিষিদ্ধ অপশন বা কার্যকারিতা ব্যবহার না করার জন্য সমস্ত প্রযোজক স্ক্রিপ্ট (টেনসরফ্লো নিজে নয়) ঠিক করুন।
  2. বাড়ায় GraphDef সংস্করণ এবং নতুন ভোক্তা কার্যকারিতা বাস্তবায়ন যে নিষিদ্ধ সরানো অপ বা GraphDefs জন্য কার্যকারিতা নতুন সংস্করণ এবং উপরে। যদি সম্ভব হয়, TensorFlow উত্পাদক স্টপ করা GraphDefs নিষিদ্ধ বৈশিষ্ট্য সহ। এটা করার জন্য, যোগ REGISTER_OP(...).Deprecated(deprecated_at_version, message)
  3. পশ্চাদপদ সামঞ্জস্যের উদ্দেশ্যে একটি বড় রিলিজের জন্য অপেক্ষা করুন।
  4. বাড়ান min_producer (2) থেকে GraphDef সংস্করণে এবং সম্পূর্ণরূপে কার্যকারিতা মুছে ফেলুন।

একটি অপ এর কার্যকারিতা পরিবর্তন করুন

  1. একটি নতুন অনুরূপ অপ নামে যোগ SomethingV2 বা অনুরূপ এবং এটি যুক্ত করা এবং বিদ্যমান পাইথন চাদরে এটি ব্যবহার করতে সুইচিং প্রক্রিয়ার মধ্য দিয়ে যেতে। এগিয়ে সামঞ্জস্য ব্যবহার চেক প্রস্তাব নিশ্চিত করার জন্য compat.py যখন পাইথন চাদরে পরিবর্তন।
  2. পুরানো অপটি সরান (পশ্চাদগামী সামঞ্জস্যের কারণে শুধুমাত্র একটি বড় সংস্করণ পরিবর্তনের সাথে হতে পারে)।
  3. বাড়ান min_consumer , পুরাতন অপ সঙ্গে ভোক্তাদের বাতিল জন্য একটি alias পুরনো অপ পুনরায় জুড়তে SomethingV2 এবং বিদ্যমান পাইথন চাদরে এটি ব্যবহার করতে স্যুইচ করতে প্রক্রিয়ার মধ্য দিয়ে যেতে।
  4. প্রক্রিয়ার মধ্য দিয়ে যেতে মুছে ফেলার জন্য SomethingV2

একটি একক অনিরাপদ ভোক্তা সংস্করণ নিষিদ্ধ করুন

  1. আচমকা GraphDef সংস্করণ এবং খারাপ সংস্করণ যোগ bad_consumers সব নতুন GraphDefs জন্য। যদি সম্ভব হয়, যোগ bad_consumers শুধুমাত্র GraphDefs যা একটি নির্দিষ্ট অপ বা অনুরূপ ধারণ জন্য।
  2. বিদ্যমান ভোক্তাদের খারাপ সংস্করণ থাকলে, যত তাড়াতাড়ি সম্ভব তাদের সরিয়ে দিন।