⏳ Estimated Reading Time: 3 min
Kuantum hesaplamaya başlarken en kritik adımlardan biri, yazdığınız devreleri nerede çalıştıracağınızı bilmektir. Qiskit, hem simülasyon hem de gerçek kuantum cihazlarına erişim sağlayan esnek bir framework sunar. Bu yazıda, IBM Quantum Lab üzerinden bu backend'leri nasıl kullanacağınızı, simülasyon ile gerçek cihazlar arasındaki farkları örneklerle açıklayacağım.
1. Qiskit Backend Nedir?
Qiskit'te bir kuantum devresi tasarladığınızda, bu devreyi çalıştırmak için bir "backend" seçersiniz. Backend'ler iki kategoriye ayrılır:
- Simülatörler: Klasik bilgisayarlarda kuantum davranışını taklit eder.
- Gerçek Cihazlar: IBM'in fiziksel kuantum işlemcilerine (örneğin ibm_nairobi, ibm_kyoto) bağlanır.
2. Simülasyon ile Gerçek Cihaz Arasındaki Farklar
Özellik | Simülatör | Gerçek Cihaz |
---|---|---|
Hız: | Küçük devrelerde hızlı | Kuyruk nedeniyle yavaş |
Doğruluk: | Mükemmel (gürültüsüz) | Gürültü ve hatalar mevcut |
Kullanım Amacı: | Test ve debug | Gerçek dünya deneyimi |
Qubit Sayısı | 100+ qubit simüle edilebilir | Genellikle 5-1000 qubit (cihaza bağlı) |
Maliyet: | Ücretsiz | IBM Quantum Credits gerekebilir |
3. Simülatör Kullanımı (Örnek Kod)
Qiskit Aer kütüphanesi ile yerel simülasyon yapabilirsiniz, simülasyon üzerinde koşan açıklamalı bir kod örneğini ikinci makalemden inceleyebilirsiniz:
4. Gerçek Cihaz Kullanımı (IBM Quantum Lab)
Adım 1: IBM Quantum Lab’a giriş yapın ve API token’ınızı alın.
Adım 2: Qiskit’te hesabınızı yükleyin:
from qiskit import QuantumCircuit, transpile, QuantumRegister, ClassicalRegister # QuantumRegister eklendifrom qiskit_ibm_runtime import QiskitRuntimeService, Samplerfrom qiskit.visualization import plot_histogram# IBM Quantum hesabına bağlanservice = QiskitRuntimeService(channel="ibm_quantum", token="bb253074cfea8aab13ca797_XYZ")# Kullanılabilir bir backend seçbackend = service.least_busy(operational=True, simulator=False)print(f"Seçilen backend: {backend}"){codeBox}
Benim testleri yaptığım sırada boştaki backend:
Seçilen backend: <IBMBackend('ibm_kyiv')>
Şimdi bir hadamard kapısının gerçek bir quantum bilgisayar backendi üzerinde ne kadar doğru çalıştığına göz atacağız. Daha önceki yazılarımda anlattığım gibi hadamard kağısı bir qubiti süperpozisyona sokar ve 1 ila 0 olma olasılığını %50'ye eşitlemeye çalışır.
# Kuantum ve klasik register’ları açıkça tanımlaqr = QuantumRegister(1, 'q') # 1 kubitlik kuantum register, adı 'q'cr = ClassicalRegister(1, 'c0') # 1 bitlik klasik register, adı 'c0'circuit = QuantumCircuit(qr, cr) # Devreye register’ları eklecircuit.h(0) # Hadamard kapısı ile süperpozisyoncircuit.measure(0, 0) # 0. kubit’i c0’a ölç# Devreyi backend’in ISA’sına uygun hale getir (transpile)isa_circuit = transpile(circuit, backend=backend)# Transpile edilmiş devreyi çiz (isteğe bağlı)isa_circuit.draw(output='mpl')# Sampler’ı oluştursampler = Sampler(mode=backend)# Transpile edilmiş devreyi liste içinde çalıştırjob = sampler.run([isa_circuit], shots=1024)# Sonuçları alresult = job.result()quasi_dist = result[0].data.c0.get_counts() # 'c0' artık tanımlı# Sonuçları histogram olarak görselleştirplot_histogram(quasi_dist){codeBox}
Çıktı:
Bundan sonraki yazılarımda Python kernellerini de paylaşacağım. İlgili kerneli indirmek için:
Sonuç olarak 536 kez 0 ve 488 kez 1 olmuş oldu. Quantum bilgisayarlarında hâlâ çok fazla hata payı olduğunu gerçek bir quantum bilgisayar üzerinde test etmiş olduk. {alertSuccess}
0 Comments
Konuyla ilgili yorum giriniz.