টেনসরফ্লো কোয়ান্টাম ডিজাইন

টেনসরফ্লো কোয়ান্টাম (TFQ) NISQ- যুগের কোয়ান্টাম মেশিন লার্নিংয়ের সমস্যার জন্য ডিজাইন করা হয়েছে। এটি টেনসরফ্লো ইকোসিস্টেমে কোয়ান্টাম কম্পিউটিং আদিম নিয়ে আসে-যেমন কোয়ান্টাম সার্কিট তৈরি করা। টেনসরফ্লো দিয়ে তৈরি মডেল এবং অপারেশনগুলি শক্তিশালী কোয়ান্টাম-ক্লাসিক্যাল হাইব্রিড সিস্টেম তৈরি করতে এই আদিম ব্যবহার করে।

TFQ ব্যবহার করে, গবেষকরা একটি কোয়ান্টাম ডেটাসেট, একটি কোয়ান্টাম মডেল এবং ক্লাসিক্যাল কন্ট্রোল প্যারামিটার ব্যবহার করে একটি টেনসরফ্লো গ্রাফ তৈরি করতে পারেন। এগুলিকে একটি একক গণনামূলক গ্রাফে টেনসর হিসাবে উপস্থাপন করা হয়। কোয়ান্টাম পরিমাপের ফলাফল - ক্লাসিক্যাল সম্ভাব্য ঘটনাগুলির দিকে পরিচালিত করে - TensorFlow ops দ্বারা প্রাপ্ত হয়। প্রমিত কেরাস এপিআই দিয়ে প্রশিক্ষণ দেওয়া হয়। tfq.datasets মডিউল গবেষকদের নতুন এবং আকর্ষণীয় কোয়ান্টাম ডেটাসেট নিয়ে পরীক্ষা করার অনুমতি দেয়।

সার্ক

Cirq হল গুগলের একটি কোয়ান্টাম প্রোগ্রামিং ফ্রেমওয়ার্ক। এটি কোয়ান্টাম কম্পিউটার বা একটি সিমুলেটেড কোয়ান্টাম কম্পিউটারে কোয়ান্টাম সার্কিট তৈরি, পরিবর্তন এবং আহবান করতে - যেমন কিউবিট, গেট, সার্কিট এবং পরিমাপ-এর মতো মৌলিক ক্রিয়াকলাপগুলি সরবরাহ করে৷ TensorFlow কোয়ান্টাম ব্যাচ গণনা, মডেল বিল্ডিং, এবং গ্রেডিয়েন্ট গণনার জন্য TensorFlow প্রসারিত করতে এই Cirq আদিম ব্যবহার করে। TensorFlow কোয়ান্টামের সাথে কার্যকরী হতে, Cirq-এর সাথে কার্যকর হওয়া একটি ভাল ধারণা।

টেনসরফ্লো কোয়ান্টাম আদিম

টেনসরফ্লো কোয়ান্টাম কোয়ান্টাম কম্পিউটিং হার্ডওয়্যারের সাথে টেনসরফ্লোকে সংহত করার জন্য প্রয়োজনীয় উপাদানগুলি প্রয়োগ করে। সেই লক্ষ্যে, TFQ দুটি ডেটাটাইপ আদিম প্রবর্তন করে:

  • কোয়ান্টাম সার্কিট : এটি cirq.Circuit ) প্রতিনিধিত্ব করে। বিভিন্ন বাস্তব-মূল্যবান ডেটাপয়েন্টের ব্যাচের মতো বিভিন্ন আকারের সার্কিটের ব্যাচ তৈরি করুন।
  • পাউলি সমষ্টি : Cirq ( cirq.PauliSum ) এ সংজ্ঞায়িত পাওলি অপারেটরদের টেনসর পণ্যের রৈখিক সমন্বয় প্রতিনিধিত্ব করে। সার্কিটের মতো, বিভিন্ন আকারের অপারেটরদের ব্যাচ তৈরি করুন।

মৌলিক অপারেশন

একটি tf.Tensor এর মধ্যে কোয়ান্টাম সার্কিট আদিম ব্যবহার করে, TensorFlow কোয়ান্টাম অপ্স প্রয়োগ করে যা এই সার্কিটগুলিকে প্রক্রিয়া করে এবং অর্থপূর্ণ আউটপুট তৈরি করে।

TensorFlow অপ্স অপ্টিমাইজ করা C++ এ লেখা আছে। সার্কিট থেকে এই অপ্স নমুনা, প্রত্যাশা মান গণনা, এবং প্রদত্ত সার্কিট দ্বারা উত্পাদিত রাষ্ট্র আউটপুট. নমনীয় এবং পারফরম্যান্স লেখার কিছু চ্যালেঞ্জ রয়েছে:

  1. সার্কিট একই আকারের নয়। সিমুলেটেড সার্কিটের জন্য, আপনি স্ট্যাটিক অপারেশন তৈরি করতে অক্ষম (যেমন tf.matmul বা tf.add ) এবং তারপর বিভিন্ন আকারের সার্কিটের জন্য বিভিন্ন সংখ্যা প্রতিস্থাপন করতে পারবেন না। এই অপারেশনগুলিকে অবশ্যই গতিশীল আকারের জন্য অনুমতি দিতে হবে যা স্ট্যাটিক আকারের টেনসরফ্লো কম্পিউট গ্রাফ অনুমতি দেয় না।
  2. কোয়ান্টাম ডেটা সম্পূর্ণভাবে একটি ভিন্ন সার্কিট গঠন প্ররোচিত করতে পারে। এটি TFQ অপ্সে গতিশীল আকার সমর্থন করার আরেকটি কারণ। কোয়ান্টাম ডেটা অন্তর্নিহিত কোয়ান্টাম অবস্থার একটি কাঠামোগত পরিবর্তনকে প্রতিনিধিত্ব করতে পারে যা মূল সার্কিটের পরিবর্তন দ্বারা প্রতিনিধিত্ব করা হয়। যেহেতু নতুন ডেটাপয়েন্টগুলি রানটাইমে অদলবদল করা হয়, তাই টেনসরফ্লো কম্পিউট গ্রাফটি তৈরি হওয়ার পরে পরিবর্তন করা যায় না, তাই এই বিভিন্ন কাঠামোর জন্য সমর্থন প্রয়োজন।
  3. cirq.Circuits . সার্কিটগুলি কম্পিউট গ্রাফের অনুরূপ যে সেগুলি অপারেশনগুলির একটি সিরিজ—এবং কিছুতে চিহ্ন/স্থানধারক থাকতে পারে। এটি যতটা সম্ভব TensorFlow এর সাথে সামঞ্জস্যপূর্ণ করা গুরুত্বপূর্ণ।

কর্মক্ষমতার কারণে, আইজেন (অনেক টেনসরফ্লো অপ্সে ব্যবহৃত C++ লাইব্রেরি) কোয়ান্টাম সার্কিট সিমুলেশনের জন্য উপযুক্ত নয়। পরিবর্তে, ক্লাসিক্যাল পরীক্ষা-নিরীক্ষার বাইরে কোয়ান্টামে ব্যবহৃত সার্কিট সিমুলেটরগুলি যাচাইকারী হিসাবে ব্যবহার করা হয় এবং TFQ অপ্সের ভিত্তি হিসাবে প্রসারিত করা হয় (সমস্ত AVX2 এবং SSE নির্দেশাবলীর সাথে লেখা)। অভিন্ন কার্যকরী স্বাক্ষর সহ অপস তৈরি করা হয়েছিল যা একটি ভৌত ​​কোয়ান্টাম কম্পিউটার ব্যবহার করে। একটি সিমুলেটেড এবং শারীরিক কোয়ান্টাম কম্পিউটারের মধ্যে স্যুইচ করা কোডের একটি লাইন পরিবর্তন করার মতোই সহজ। এই অপারেশনগুলি circuit_execution_ops.py এ অবস্থিত।

স্তরসমূহ

TensorFlow কোয়ান্টাম স্তরগুলি tf.keras.layers.Layer ইন্টারফেস ব্যবহার করে ডেভেলপারদের কাছে নমুনা, প্রত্যাশা এবং রাষ্ট্রীয় গণনা প্রকাশ করে। ক্লাসিক্যাল কন্ট্রোল প্যারামিটার বা রিডআউট অপারেশনের জন্য সার্কিট লেয়ার তৈরি করা সুবিধাজনক। অতিরিক্তভাবে, আপনি ব্যাচ সার্কিট, ব্যাচ কন্ট্রোল প্যারামিটার মান এবং ব্যাচ রিডআউট ক্রিয়াকলাপগুলিকে সমর্থন করে এমন একটি উচ্চ মাত্রার জটিলতা সহ একটি স্তর তৈরি করতে পারেন। উদাহরণের জন্য tfq.layers.Sample দেখুন।

পার্থক্যকারী

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

এই সমস্যাটি সমাধান করার জন্য, tfq.differentiators মডিউলটি বেশ কয়েকটি মানক পার্থক্য কৌশল প্রদান করে। ব্যবহারকারীরা গ্রেডিয়েন্ট গণনা করার জন্য তাদের নিজস্ব পদ্ধতিও সংজ্ঞায়িত করতে পারে- নমুনা-ভিত্তিক প্রত্যাশা গণনার "বাস্তব বিশ্ব" সেটিং এবং বিশ্লেষণাত্মক সঠিক বিশ্ব উভয়েই। সীমিত পার্থক্যের মতো পদ্ধতিগুলি প্রায়শই একটি বিশ্লেষণাত্মক/সঠিক পরিবেশে দ্রুততম (ওয়াল ঘড়ির সময়) হয়। ধীরগতির (ওয়াল ঘড়ির সময়), প্যারামিটার শিফট বা স্টোকাস্টিক পদ্ধতির মতো আরও ব্যবহারিক পদ্ধতিগুলি প্রায়শই বেশি কার্যকর হয়। একটি tfq.differentiators.Differentiator generate_differentiable_op একটি বিদ্যমান অপের সাথে সংযুক্ত এবং সংযুক্ত করা হয়, অথবা tfq.layers.Expectation বা tfq.layers.SampledExpectation এর কন্সট্রাকটরকে পাঠানো হয়। একটি কাস্টম ডিফারেনশিয়াটর বাস্তবায়ন করতে, tfq.differentiators.Differentiator ক্লাস থেকে উত্তরাধিকারী হন। স্যাম্পলিং বা স্টেট ভেক্টর গণনার জন্য একটি গ্রেডিয়েন্ট অপারেশন সংজ্ঞায়িত করতে, tf.custom_gradient ব্যবহার করুন।

ডেটাসেট

কোয়ান্টাম কম্পিউটিং এর ক্ষেত্র যত বাড়বে, তত বেশি কোয়ান্টাম ডেটা এবং মডেলের সংমিশ্রণ ঘটবে, যা কাঠামোগত তুলনাকে আরও কঠিন করে তুলবে। tfq.datasets মডিউলটি কোয়ান্টাম মেশিন লার্নিং কাজের জন্য ডেটা উৎস হিসেবে ব্যবহৃত হয়। এটি মডেল এবং কর্মক্ষমতা জন্য কাঠামোগত তুলনা নিশ্চিত করে.

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