הרץ את ה-Circuit הראשון שלך על חומרה
Package versions
The code on this page was developed using the following requirements. We recommend using these versions or newer.
qiskit[all]~=2.4.0
qiskit-ibm-runtime~=0.46.1
דוגמה זו מכילה שני חלקים. תחילה תיצור תוכנית קוונטית "Hello world" פשוטה ותריץ אותה על יחידת עיבוד קוונטי (QPU). מכיוון שמחקר קוונטי אמיתי דורש תוכניות מאוד מקיפות, בחלק השני (הרחבה למספרים גדולים של קיוביטים), תרחיב את התוכנית הפשוטה לרמת שימושיות.
# Added by doQumentation — required packages for this notebook
!pip install -q matplotlib qiskit qiskit-ibm-runtime
התקנה ואימות
-
אם עדיין לא התקנת את Qiskit, מצא הוראות במדריך Quickstart.
-
התקן את Qiskit Runtime כדי להריץ משימות על חומרה קוונטית:
pip install qiskit-ibm-runtime -
הגדר סביבה להרצת מחברות Jupyter באופן מקומי:
pip install jupyter
-
-
הגדר את האימות שלך לגישה לחומרה קוונטית דרך ה-Open Plan החינמי.
(אם קיבלת הזמנה בדואר אלקטרוני להצטרף לחשבון, בצע את השלבים למשתמשים מוזמנים במקום.)
-
היכנס ל-IBM Quantum Platform כדי להתחבר או ליצור חשבון.
חשובאם אתה מתחבר דרך שרת פרוקסי, עליך להשתמש ב-Qiskit Runtime גרסה 0.44.0 ומעלה.
-
צור את מפתח ה-API שלך (הידוע גם כ-API token) בלוח הבקרה, ואז העתק אותו למיקום מאובטח.
-
עבור לדף Instances ומצא את ה-instance שברצונך להשתמש בו. רחף מעל ה-CRN שלו ולחץ להעתקה.
-
שמור את פרטי הגישה שלך באופן מקומי עם הקוד הזה:
from qiskit_ibm_runtime import QiskitRuntimeService
QiskitRuntimeService.save_account(
token="<your-api-key>", # Use the 44-character API_KEY you created and saved from the IBM Quantum Platform Home dashboard
instance="<CRN>", # Optional
)
-
-
עכשיו תוכל להשתמש בקוד Python הזה בכל פעם שתרצה לאמת מול Qiskit Runtime Service:
from qiskit_ibm_runtime import QiskitRuntimeService
# Run every time you need the service
service = QiskitRuntimeService()
אם אתה משתמש במחשב ציבורי או בסביבה לא מאובטחת אחרת, בצע את הוראות האימות הידני במקום כדי לשמור על אבטחת פרטי הגישה שלך.
יצירה והרצה של תוכנית קוונטית פשוטה
ארבעת השלבים לכתיבת תוכנית קוונטית באמצעות תבניות Qiskit הם:
-
מיפוי הבעיה לפורמט קוונטי-מקורי.
-
אופטימיזציה של ה-Circuit והאופרטורים.
-
הרצה באמצעות פונקציית primitive קוונטית.
-
ניתוח התוצאות.
שלב 1. מיפוי הבעיה לפורמט קוונטי-מקורי
בתוכנית קוונטית, Circuit קוונטיים הם הפורמט המקורי לייצוג הוראות קוונטיות, ואופרטורים מייצגים את ה-observables שיש למדוד. בעת יצירת Circuit, בדרך כלל תיצור אובייקט QuantumCircuit חדש, ואז תוסיף הוראות ברצף.
תא הקוד הבא יוצר Circuit שמייצר מצב Bell, שהוא מצב שבו שני Qubit שזורים לחלוטין זה בזה.
ה-Qiskit SDK משתמש בספירת ביטים LSb 0, שבה הספרה ה- השווה ל- או . לפרטים נוספים, ראה את הנושא סדר ביטים ב-Qiskit SDK.
# This cell is hidden from users. It hides several unnecessary warnings.
import warnings
import logging
warnings.filterwarnings("ignore", message=".*Instance was not set*")
warnings.filterwarnings("ignore", message=".*loading instance*")
warnings.filterwarnings("ignore", message=".*using instance*")
# This cell is hidden from users. It hides several unnecessary warnings.
class IgnoreSpecificMessages(logging.Filter):
def filter(self, record):
for text in [
"Instance was not set",
"Loading default saved account",
"Loading instance",
"Instance was not set",
"using instance",
]:
if text in record.getMessage():
return False
return True
logger = logging.getLogger("qiskit_ibm_runtime")
logger.addFilter(IgnoreSpecificMessages())
for handler in logger.handlers:
handler.addFilter(IgnoreSpecificMessages())
ראה QuantumCircuit בתיעוד לכל הפעולות הזמינות.
בעת יצירת Circuit קוונטיים, עליך גם לשקול איזה סוג נתונים ברצונך לקבל לאחר הביצוע. Qiskit מספק שתי דרכים להחזרת נתונים: ניתן לקבל פלט דגימה עבור קבוצת Qubit שתבחר למדוד, או לקבל את ערך הציפייה של observable. הכן את העומס שלך למדידת ה-Circuit באחת משתי הדרכים הללו עם primitives של Qiskit (מוסבר בפירוט בשלב 3).
דוגמה זו מודדת ערכי ציפייה באמצעות מודול המשנה qiskit.quantum_info, המצוין באמצעות אופרטורים (אובייקטים מתמטיים המשמשים לייצוג פעולה או תהליך שמשנים מצב קוונטי). תא הקוד הבא יוצר שישה אופרטורי Pauli דו-קיוביטיים: IZ, IX, ZI, XI, ZZ, ו-XX.
from qiskit import QuantumCircuit
from qiskit.quantum_info import SparsePauliOp
from qiskit.transpiler import generate_preset_pass_manager
from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime import EstimatorOptions
from qiskit_ibm_runtime import EstimatorV2 as Estimator
from matplotlib import pyplot as plt
# Uncomment the next line if you want to use a simulator:
# from qiskit_ibm_runtime.fake_provider import FakeBelemV2
# Create a new circuit with two qubits
qc = QuantumCircuit(2)
# Add a Hadamard gate to qubit 0
qc.h(0)
# Perform a controlled-X gate on qubit 1, controlled by qubit 0
qc.cx(0, 1)
# Return a drawing of the circuit using MatPlotLib ("mpl").
# These guides are written by using Jupyter notebooks, which
# display the output of the last line of each cell.
# If you're running this in a script, use `print(qc.draw())` to
# print a text drawing.
qc.draw("mpl")
כאן, משהו כמו האופרטור ZZ הוא קיצור לכפל טנזורי , שמשמעותו מדידת Z על Qubit 1 ו-Z על Qubit 0 יחד, וקבלת מידע על הקורלציה בין Qubit 1 ל-Qubit 0. ערכי ציפייה כאלה נכתבים בדרך כלל גם כ-.
אם המצב שזור, אז מדידת צריכה להיות שונה ממדידת . עבור המצב השזור הספציפי שנוצר על ידי ה-Circuit שלנו המתואר לעיל, מדידת צריכה להיות 1 ומדידת צריכה להיות אפס.