Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Alt modülü kullanarak Cirq kuantum devresi gönderme işlemini nasıl yapacağınızı qdk.azure.cirqPython öğrenin. Yerel makinenizden Visual Studio Code'daki (VS Code) Microsoft Quantum Development Kit (QDK) ve Jupyter Notebook'u kullanarak Azure Quantum'a Cirq devreleri gönderebilirsiniz.
Daha fazla bilgi için bkz . Kuantum devreleri.
Önkoşullar
Yükleme ayrıntıları için bkz. QDK uzantısını ayarlama.
Azure aboneliğinizdeki bir Azure Quantum çalışma alanı. Çalışma alanı oluşturmak için bkz Azure Quantum çalışma alanı oluşturma.
qdkPython kitaplığı,azurevecirqekleri ileipykernelpaketi ile birlikte.python -m pip install --upgrade "qdk[azure,cirq]" ipykernelNot
Jupyter Python çekirdeği
ipykernelalgılanmazsa, VS Code bunu yüklemeniz için bir uyarı verir.
Yeni bir Jupyter Notebook oluşturma
- VS Code'da Görünüm menüsünü açın ve Komut Paleti'ni seçin.
- Oluştur: Yeni Jupyter Not Defteri'ni girin ve seçin.
- VS Code, defter için seçilen Python sürümünü ve sanal Python ortamını algılar ve görüntüler. Birden çok Python ortamınız varsa, sağ üstteki çekirdek seçiciyi kullanarak bir çekirdek seçmeniz gerekebilir. Ortam algılanmadıysa kurulum bilgileri için VS Code'da Jupyter Not Defterleri bölümüne bakın.
Gerekli içeri aktarmaları yükleme
Not defterinizin ilk hücresinde, gerekli içeri aktarmaları yüklemek için aşağıdaki kodu çalıştırın:
from qdk.azure import Workspace
from qdk.azure.cirq import AzureQuantumService
Azure Quantum hizmetine bağlanma
Azure Quantum hizmetine bağlanmak için programınızın Azure Quantum çalışma alanınızın kaynak kimliğine ihtiyacı vardır.
- Azure hesabınızda oturum açın, https://portal.azure.com,
- Azure Quantum çalışma alanınızı seçin ve Genel Bakış'a gidin.
- Kaynak Kimliği alanındaki değeri kopyalayın.
Yeni bir hücre ekleyin ve Workspace ve AzureQuantumService nesnelerini oluşturmak için hesap bilgilerinizi kullanarak Azure Quantum çalışma alanınıza bağlanın.
workspace = Workspace(resource_id="") # Add the resource ID of your workspace
service = AzureQuantumService(workspace)
Tümünü listele targets
Çalışma alanınızdaki devrenizi çalıştırabilen tüm targets() bileşenlerini ve onların geçerli kuyruk süresi ile kullanılabilirliğini listelemek için targets yöntemini kullanın.
Not
Çalışma alanınızdakilerin targets tümü listelenmeyebilir; yalnızca targets Cirq veya OpenQASM bağlantı hattını kabul edebilenler burada listelenir.
print(service.targets())
[<Target name="quantinuum.qpu.h2-1", avg. queue time=0 s, Degraded>,
<Target name="quantinuum.sim.h2-1sc", avg. queue time=1 s, Available>,
<Target name="quantinuum.sim.h2-1e", avg. queue time=40 s, Available>,
<Target name="ionq.simulator", avg. queue time=3 s, Available>,
<Target name="ionq.qpu.aria-1", avg. queue time=1136774 s, Available>]
Basit bir devre oluşturma
Ardından, çalıştırmak için basit bir Cirq devresi oluşturun. Bu bağlantı hattı, IonQ donanım sistemine özgü X geçidinin karekökünü kullanır.
import cirq
q0, q1 = cirq.LineQubit.range(2)
circuit = cirq.Circuit(
cirq.X(q0)**0.5, # Square root of X
cirq.CX(q0, q1), # CNOT
cirq.measure(q0, q1, key='b') # Measure both qubits
)
print(circuit)
0: ───X^0.5───@───M────────
│ │
1: ───────────X───M────────
Programınızı çalıştırmak için bir target seçin
IonQ simülatöründe çalıştırma
Artık programı Azure Quantum hizmeti aracılığıyla çalıştırabilir ve sonucu alabilirsiniz. Aşağıdaki hücre, bağlantı hattını 100 çekimle çalıştıran, iş tamamlanana kadar bekleyen ve sonuçları döndüren bir iş (varsayılan IonQ simülatörüne) gönderir.
result = service.run(program=circuit, repetitions=100, target="ionq.simulator")
Bu bir cirq.Result nesne döndürür.
print(result)
b=1001100101100001000011011101000011010100010111100011001000100100010000001110010010101110110000011010, 1001100101100001000011011101000011010100010111100011001000100100010000001110010010101110110000011010
İş maliyetini tahmin
QPU'da bir işi çalıştırmadan önce çalıştırmanın maliyetini tahmin etmelisiniz.
En güncel fiyatlandırma ayrıntıları için IonQ Fiyatlandırması'na bakın veya çalışma alanınızı bulun ve fiyatlandırma seçeneklerini çalışma alanınızın "Sağlayıcı" sekmesinde görüntüleyin: aka.ms/aq/myworkspaces.
IonQ QPU üzerinde çalıştırma
Önceki iş, varsayılan simülatörde çalıştırıldı, "ionq.simulator". Ancak, bunu IonQ'nun donanım işlemcisinde (Kuantum İşlemci Birimi (QPU) da çalıştırabilirsiniz. IonQ QPU üzerinde çalıştırmak için "ionq.qpu.aria-1"'yi target parametresi olarak sağlayın.
result = service.run(
program=circuit,
repetitions=100,
target="ionq.qpu.aria-1",
timeout_seconds=500 # Set timeout to accommodate queue time on QPU
)
Bu da bir cirq.Result nesne döndürür.
print(result)
b=0101011011011111100001011101101011011110100010000000011110111000100100110110101100110001001111101111, 0101011011011111100001011101101011011110100010000000011110111000100100110110101100110001001111101111
Görevler kullanan asenkron model
Uzun süre çalışan devreler için bunları zaman uyumsuz olarak çalıştırmak yararlı olabilir.
service.create_job yöntemi, iş başarıyla çalıştırıldıktan sonra sonuçları almak için kullanabileceğiniz bir Job nesnesi döndürür.
job = service.create_job(
program=circuit,
repetitions=100,
target="ionq.simulator"
)
İş durumunu denetlemek için kullanın job.status():
print(job.status())
'completed'
İşin tamamlanmasını beklemek ve sonuçları almak için engelleme çağrısını job.results()kullanın:
result = job.results()
print(result)
00: 0.5
11: 0.5
Bunun bir cirq.Result nesne döndürmediğini unutmayın. Bunun yerine IonQ simülatörüne özgü bir sonuç nesnesi döndürür ve çekim verileri yerine durum olasılıklarını kullanır.
type(result)
cirq_ionq.results.SimulatorResult
Bunu bir cirq.Result nesneye dönüştürmek için kullanın result.to_cirq_result():
print(result.to_cirq_result())
b=1110101111111110111000011101011111001100010000001011011101001111001111001101100111010000001100011100, 1110101111111110111000011101011111001100010000001011011101001111001111001101100111010000001100011100