গুগল I / O মে 18-20 মে! স্থান সংরক্ষণ করুন এবং আপনার সময়সূচীটি এখনই নিবন্ধ করুন

টেনসরফ্লো সংস্করণের সামঞ্জস্য

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

শব্দার্থক সংস্করণ ২.০

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

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

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

  • প্যাচ : পিছনের দিকে সামঞ্জস্যপূর্ণ বাগ ফিক্স।

উদাহরণস্বরূপ, রিলিজ ০.০.০ রিলিজ ০.০২.১ থেকে সামঞ্জস্যপূর্ণ পরিবর্তনগুলির পিছনে প্রবর্তন করেছিল। যাইহোক, রিলিজ 1.1.1 রিলিজ 1.0.0 এর সাথে সামঞ্জস্যপূর্ণ ছিল।

কি coveredাকা আছে

কেবলমাত্র টেনসরফ্লো এর সর্বজনীন এপিআইগুলি গৌণ এবং প্যাচ সংস্করণগুলিতে পিছনের দিকে সামঞ্জস্যপূর্ণ। সর্বজনীন এপিআইগুলি সমন্বিত

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

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

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

    যদি একটি চিহ্ন tensorflow পাইথন মডিউল বা এর tensorflow মাধ্যমে পাওয়া যায় তবে নথিভুক্ত না হয় তবে এটি পাবলিক এপিআইয়ের অংশ হিসাবে বিবেচনা করা হয় না

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

  • সি এপিআই

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

যা not াকা নেই

টেনসরফ্লো এর কিছু অংশ যে কোনও সময়ে পশ্চাদপটে বেমানান উপায়ে পরিবর্তন করতে পারে। এর মধ্যে রয়েছে:

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

    • tf.contrib মডিউল বা এর tf.contrib মডিউলগুলির কোনও চিহ্ন;
    • যে কোনও চিহ্ন (মডিউল, ফাংশন, যুক্তি, সম্পত্তি, শ্রেণি বা ধ্রুবক) যার নামটিতে experimental বা Experimental রয়েছে; বা

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

  • অন্যান্য ভাষা : পাইথন এবং সি ব্যতীত অন্য ভাষায় টেনসরফ্লো এপিআই, যেমন:

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

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

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

  • বিতরণকৃত টেনসরফ্লোতে সংস্করণ স্কিউ: একক ক্লাস্টারে টেনসরফ্লোয়ের দুটি ভিন্ন সংস্করণ চালানো অসমর্থিত। তারের প্রোটোকলের পিছনে সামঞ্জস্যতা সম্পর্কে কোনও গ্যারান্টি নেই।

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

  • অব্যবহৃত এপিআই: আমরা এমন পিপিআইগুলিতে পিছনের দিকে অসামঞ্জস্যিত পরিবর্তন আনার অধিকার সংরক্ষণ করি যার জন্য আমরা কোনও দলিলযুক্ত ব্যবহার পাই না (গিটহাব অনুসন্ধানের মাধ্যমে টেনসরফ্লো ব্যবহারের নিরীক্ষণ করে)। এ জাতীয় কোনও পরিবর্তন করার আগে, আমরা ঘোষিত @ মেলিং তালিকায় পরিবর্তনটি করার জন্য আমাদের অভিপ্রায়টি প্রকাশ করব, যে কোনও ভাঙ্গন (যদি প্রযোজ্য হয়) কীভাবে সমাধান করতে হয় তার জন্য নির্দেশাবলী সরবরাহ করব এবং আমাদের সম্প্রদায়কে তাদের মতামত ভাগ করে নেওয়ার সুযোগ দেওয়ার জন্য দুই সপ্তাহ অপেক্ষা করুন ।

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

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

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

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

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

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

গ্রাফডেফ সামঞ্জস্য

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

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

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

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

    নোট করুন যে এটি কেবল গ্রাফডেফগুলিতে সিরিয়ালযুক্ত গ্রাফগুলিতে প্রযোজ্য (এবং সেভডমডেলস): যে কোডটি একটি চেকপয়েন্টটি পড়ে সেটি টেনসরফ্লোর ভিন্ন সংস্করণে চলমান একই কোড দ্বারা উত্পন্ন চেকপয়েন্টগুলি পড়তে সক্ষম হতে পারে না।

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

    • টেনসরফ্লো 1.2 GraphDef সংস্করণ 4 থেকে 7 সমর্থন করে।
    • টেনসরফ্লো ১.৩ GraphDef সংস্করণ ৮ এবং সমর্থন সংস্করণ ৪ থেকে ৮ যোগ করতে পারে।
    • কমপক্ষে ছয় মাস পরে, টেনসরফ্লো ২.০.০ কেবলমাত্র ৮ টি সংস্করণ রেখে 4 থেকে 7 সংস্করণে সমর্থন ছাড়তে পারে।

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

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

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

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

পিছনের এবং আংশিক এগিয়ে সামঞ্জস্য

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

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

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

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

স্বতন্ত্র ডেটা সংস্করণ প্রকল্পগুলি

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

ডেটা, উত্পাদক এবং গ্রাহকগণ

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

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

প্রতিটি min_consumer ডেটাতে min_consumer VersionDef versions ক্ষেত্র রয়েছে যা producer যা ডেটা তৈরি করেছে, সেই min_consumer যা এটির সাথে সামঞ্জস্যপূর্ণ এবং bad_consumers সংস্করণগুলির তালিকা bad_consumers

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

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

যেহেতু উত্পাদক এবং গ্রাহকরা উভয়ই একই টেনসরফ্লো কোড বেস থেকে আসে, core/public/version.h ভার্সন। core/public/version.h এর একটি মূল ডেটা সংস্করণ থাকে যা producer উপর নির্ভর করে 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. নতুন কার্যকারিতাটি ব্যবহার করতে পাইথন র‍্যাপারগুলি পরিবর্তন করুন। min_consumer বৃদ্ধি করবেন না, যেহেতু এই min_consumer ব্যবহার করে না এমন মডেলগুলি ভাঙা উচিত নয়।

অপের কার্যকারিতা সরিয়ে বা সীমাবদ্ধ করুন

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

কোনও অপের কার্যকারিতা পরিবর্তন করুন

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

একটি একক অনিরাপদ গ্রাহক সংস্করণ নিষিদ্ধ করুন

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