TensorFlow क्वांटम डिज़ाइन

TensorFlow क्वांटम (TFQ) NISQ-युग क्वांटम मशीन लर्निंग की समस्याओं के लिए डिज़ाइन किया गया है। यह क्वांटम कंप्यूटिंग प्राइमेटिव्स - जैसे क्वांटम सर्किट का निर्माण - को टेन्सरफ्लो इकोसिस्टम में लाता है। TensorFlow के साथ निर्मित मॉडल और ऑपरेशन शक्तिशाली क्वांटम-क्लासिकल हाइब्रिड सिस्टम बनाने के लिए इन प्राइमिटिव का उपयोग करते हैं।

टीएफक्यू का उपयोग करके, शोधकर्ता क्वांटम डेटासेट, क्वांटम मॉडल और शास्त्रीय नियंत्रण मापदंडों का उपयोग करके एक टेन्सरफ्लो ग्राफ का निर्माण कर सकते हैं। इन सभी को एकल कम्प्यूटेशनल ग्राफ़ में टेंसर के रूप में दर्शाया गया है। क्वांटम माप के परिणाम - जो शास्त्रीय संभाव्य घटनाओं की ओर ले जाते हैं - टेन्सरफ्लो ऑप्स द्वारा प्राप्त किए जाते हैं। प्रशिक्षण मानक केरस एपीआई के साथ किया जाता है। tfq.datasets मॉड्यूल शोधकर्ताओं को नए और दिलचस्प क्वांटम डेटासेट के साथ प्रयोग करने की अनुमति देता है।

सर्क

Cirq Google का एक क्वांटम प्रोग्रामिंग फ्रेमवर्क है। यह क्वांटम कंप्यूटर या सिम्युलेटेड क्वांटम कंप्यूटर पर क्वांटम सर्किट बनाने, संशोधित करने और लागू करने के लिए सभी बुनियादी संचालन प्रदान करता है - जैसे कि क्वैब, गेट्स, सर्किट और माप। TensorFlow क्वांटम बैच गणना, मॉडल निर्माण और ग्रेडिएंट गणना के लिए TensorFlow का विस्तार करने के लिए इन Cirq प्राइमेटिव का उपयोग करता है। TensorFlow क्वांटम के साथ प्रभावी होने के लिए, Cirq के साथ प्रभावी होना एक अच्छा विचार है।

टेन्सरफ्लो क्वांटम आदिम

TensorFlow क्वांटम, क्वांटम कंप्यूटिंग हार्डवेयर के साथ TensorFlow को एकीकृत करने के लिए आवश्यक घटकों को लागू करता है। उस अंत तक, टीएफक्यू दो डेटाटाइप प्राइमेटिव पेश करता है:

  • क्वांटम सर्किट : यह टेन्सरफ्लो के भीतर सर्क -परिभाषित क्वांटम सर्किट ( cirq.Circuit ) का प्रतिनिधित्व करता है। अलग-अलग वास्तविक-मूल्य वाले डेटापॉइंट के बैच के समान, अलग-अलग आकार के सर्किट के बैच बनाएं।
  • पाउली योग : Cirq ( cirq.PauliSum ) में परिभाषित पाउली ऑपरेटरों के टेंसर उत्पादों के रैखिक संयोजनों का प्रतिनिधित्व करता है। सर्किट की तरह, विभिन्न आकार के ऑपरेटरों के बैच बनाएं।

मौलिक ऑप्स

tf.Tensor के भीतर क्वांटम सर्किट प्राइमेटिव्स का उपयोग करते हुए, TensorFlow क्वांटम उन ऑप्स को लागू करता है जो इन सर्किटों को संसाधित करते हैं और सार्थक आउटपुट उत्पन्न करते हैं।

TensorFlow ऑप्स अनुकूलित C++ में लिखे गए हैं। ये ऑप्स सर्किट से नमूना लेते हैं, अपेक्षा मूल्यों की गणना करते हैं, और दिए गए सर्किट द्वारा उत्पादित स्थिति को आउटपुट करते हैं। लचीले और प्रभावी लेखन कार्यों में कुछ चुनौतियाँ होती हैं:

  1. सर्किट समान आकार के नहीं होते. सिम्युलेटेड सर्किट के लिए, आप स्थिर संचालन (जैसे tf.matmul या tf.add ) बनाने में असमर्थ हैं और फिर विभिन्न आकारों के सर्किट के लिए अलग-अलग संख्याएँ प्रतिस्थापित कर सकते हैं। इन ऑप्स को उन गतिशील आकारों की अनुमति देनी चाहिए जिनकी स्थिर आकार वाले TensorFlow कंप्यूट ग्राफ़ अनुमति नहीं देता है।
  2. क्वांटम डेटा पूरी तरह से एक अलग सर्किट संरचना को प्रेरित कर सकता है। यह टीएफक्यू ऑप्स में गतिशील आकारों का समर्थन करने का एक और कारण है। क्वांटम डेटा अंतर्निहित क्वांटम स्थिति में एक संरचनात्मक परिवर्तन का प्रतिनिधित्व कर सकता है जिसे मूल सर्किट में संशोधनों द्वारा दर्शाया जाता है। चूँकि नए डेटापॉइंट्स को रनटाइम के दौरान अंदर और बाहर स्वैप किया जाता है, इसलिए TensorFlow कंप्यूट ग्राफ़ को बनने के बाद संशोधित नहीं किया जा सकता है, इसलिए इन अलग-अलग संरचनाओं के लिए समर्थन की आवश्यकता होती है।
  3. cirq.Circuits गणना ग्राफ़ के समान हैं क्योंकि वे संचालन की एक श्रृंखला हैं - और कुछ में प्रतीक/प्लेसहोल्डर हो सकते हैं। इसे यथासंभव TensorFlow के साथ संगत बनाना महत्वपूर्ण है।

प्रदर्शन कारणों से, Eigen (कई TensorFlow ऑप्स में प्रयुक्त C++ लाइब्रेरी) क्वांटम सर्किट सिमुलेशन के लिए उपयुक्त नहीं है। इसके बजाय, क्वांटम परे-शास्त्रीय प्रयोग में उपयोग किए जाने वाले सर्किट सिमुलेटर को सत्यापनकर्ता के रूप में उपयोग किया जाता है और टीएफक्यू ऑप्स की नींव के रूप में विस्तारित किया जाता है (सभी एवीएक्स 2 और एसएसई निर्देशों के साथ लिखे गए हैं)। समान कार्यात्मक हस्ताक्षर वाले ऑप्स बनाए गए जो भौतिक क्वांटम कंप्यूटर का उपयोग करते हैं। सिम्युलेटेड और भौतिक क्वांटम कंप्यूटर के बीच स्विच करना कोड की एक पंक्ति को बदलने जितना आसान है। ये ऑप्स 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 समस्या खोलें।