1. Ana sayfa
  2. İçerik planı
  3. Backend özellikleri · Qiskit
Qiskit · devre yürütme

Backend özellikleri — cihazın kendisini tarif eden canlı sözlüğü

Bir kuantum donanımı yalnızca "qubit sayısı" ile özetlenemez; aynı çipte hangi kapıların doğal olarak yapılabildiği, hangi qubit çiftlerinin etkileşebildiği, her kapının ne kadar sürdüğü ve ne kadar güvenilir olduğu, ölçümün hata payı, qubit'in coherence süresi gibi onlarca alan vardır. Qiskit bu bilgileri backend özellikleri başlığı altında birleştirir; BackendV2.target nesnesi bu özelliklerin modern hâlidir. Bu sayfa, "özellik" sözcüğünün neyi kapsadığını, hangi bilgilerin nereden okunduğunu, kalibrasyonun zamanla nasıl değiştiğini, raporlamada hangi alanların zorunlu olduğunu uzun uzun anlatır. Qubyt Core bir backend operasyon sitesi değildir; amacımız kavramsal mantığı öğretmektir. Kod örnekleri yerel FakeBackend üzerinde, hesap gerektirmeden çalışır.

  • Kaynak: BackendV2.target
  • İçerik: topoloji + zaman + hata
  • Yerel: FakeBackend ile okuma pratiği

"Backend özelliği" tam olarak nedir?

Bir backend özelliği; cihazın topolojisi ile davranış kalitesi'ni birlikte tarif eden ölçülebilir alanlar kümesidir. Topoloji tarafında "kaç qubit'im var, hangileri komşu, hangi kapıları doğrudan yapabilirim?" sorularına yanıt veririz; davranış kalitesi tarafında ise "her kapı ne kadar sürer, ne kadar hata yapar, ölçüm ne kadar güvenilir, qubit'in coherence'i ne durumda?" sorularına. Bu iki katmanın birleşimi, transpiler için bir "yön levhası", algoritma yazarı için "beklenti çerçevesi" oluşturur.

Neden tek bir nesnede?

Geleneksel kütüphanelerde bu alanlar farklı sınıflara dağılmıştı; Qiskit'in V2 mimarisinde tek bir Target nesnesi etrafında toplanır. Bu birleşim, transpiler kararları için "hepsi aynı kaynaktan akar" disiplinini sağlar. Backend mimarisi sayfasında çizdiğimiz "sözleşme = Target" cümlesinin somut yüzü budur.

Bu sayfanın sınırı

Qubyt Core bir backend operasyon ya da cihaz kıyaslama sitesi değildir. Bu sayfa, "özelliklerin alanları ve okuma mantığı" üzerine kuruludur; herhangi bir cihaza özel "şu cihaz şu kadar iyi" tablosu üretmeyiz. Bu, hem güncel kalmak hem okuyucuyu doğru kaynağa (resmi belge) yönlendirmek için bilinçli bir tercihtir.

Tek cümle Backend özellikleri, cihazın hem haritası hem termometresidir: topoloji ne yapabileceği, kalibrasyon ne kadar iyi yaptığıdır.

Properties · Defaults · Target: nesil farkı

Tarihsel olarak Qiskit, cihaz bilgisini üç ayrı nesnede tutardı: configuration (donanım yapısı), properties (gün içi ölçülen hata ve süre değerleri) ve defaults (puls/komut varsayılanları). V1 backend arayüzü bu üçünü ayrı yöntemlerle açıyordu. Modern BackendV2 ise tüm bu bilgiyi Target adlı bir nesnede topladı; "hangi kapı, hangi qubit'lerde, ne kadar sürede, ne kadar hatayla çalışır?" sorularının cevabı tek bir kaynak hâline geldi. Bu birleşim, transpiler kuralının yazımını kısalttığı gibi okuyucunun zihnindeki haritayı da netleştirir.

Sürüm dikkati

Bazı eski kod örneklerinde backend.properties().gate_error("cx", [0, 1]) gibi V1 çağrılarını görürsünüz; bunlar hâlâ çalışabilir ama V2 hattı yerine kullanmak kodun gelecek sürümlerle hizalanmasını zorlaştırır. Yeni yazılan içerikte target üzerinden okuma — target["cx"][(0, 1)].error — tercih edilir.

Aynı bilgi, farklı arayüz

Hangi sürümü kullanıyor olursanız olun, anlatılan kavram aynıdır: cihazın bir haritası ve bu harita üzerine her kapı için "süre + hata" etiketi iliştirildiği bir tablodur.

Topoloji: qubit, native kapı, coupling

Topoloji üç sayfadan oluşur: (a) qubit sayısı ve hangi indekslerin kullanılabilir olduğu; (b) native kapı seti — donanımın doğrudan uygulayabildiği temel kapılar (örneğin süperiletken cihazlarda sx, x, rz ve iki-qubit için cx ya da ecr); (c) coupling map — iki-qubit etkileşiminin hangi yönlü kenarlar üzerinde mümkün olduğu. Transpiler, devreyi bu üç sayfaya uydurmak için yer değiştirme (SWAP) ve ayrıştırma adımlarını birlikte planlar.

Yön ve simetri

Bazı kapılar yönlüdür: (0, 1) ile (1, 0) aynı qubit çifti olsa da farklı kalibrasyon taşıyabilir, hatta yalnızca tek yön desteklenebilir. Bu nedenle "qubit 0 ve 1 yan yana" ile "cx(0, 1) ucuz" cümleleri her zaman birbirinin yerini tutmaz.

Topoloji ve coupling ile birleşik okuma

Native set + coupling, devre tasarımı sırasında "kaç SWAP ekleneceğini" şekillendirir. Konunun fiziksel arka planı bağlanırlık ve topoloji sayfasında, transpile tarafındaki etkileri ise coupling map sayfasında işlenir.

Zaman alanı: kapı süresi ve dt

Her native kapı, donanım üzerinde belirli bir süre alır. Tek-qubit kapıları tipik olarak onlarca nanosaniye, iki-qubit kapıları yüzlerce nanosaniye düzeyindedir ama bu değerler donanıma, mimariye ve gün içindeki kalibrasyona göre değişir. Süre bilgisi "kaç qubit operasyonu yaparım?" sorusunu "bu operasyon coherence penceremde sığar mı?" sorusuna çevirir.

dt birimi

dt, donanımın puls düzeyindeki zaman örnekleme aralığıdır (typically ~0.22 ns). Süre raporları ya saniye/nanosaniye olarak ham gelir ya da dt birimleri üzerinden ifade edilir. Karşılaştırma yaparken birimin doğruluğunu yazılı tutmak gerekir; "120 dt" ile "27 ns" aynı bilginin farklı yüzleridir ama yan yana yazıldığında karıştırılabilir.

Zamanlama ve scheduling

Süre bilgisi, devrenin scheduling aşamasında somut bir zaman çizgisine yerleşmesini sağlar. Bu sayede "iki-qubit kapısı sırasında 1. qubit ne yapıyor?" sorusu yanıtlanabilir ve dynamical decoupling gibi adımlar planlanabilir.

Hata alanı: kapı, okuma, T1/T2

Hata raporları üç ailede ayrılır. Kapı hatası — tek-qubit ve iki-qubit kapıları için ortalama hata oranları (örn. 10-3–10-2). Okuma hatası — bir qubit'in 0 ya da 1 olarak okunma güvenilirliği; her qubit için ayrı raporlanır. Coherence süreleriT1 (relaksasyon) ve T2 (dephasing); kapı süreleriyle birlikte "kaç kapı sığar?" sorusunu yanıtlar. Bu üç ailenin birlikte okunması, donanımın kalitesini tek bir cümleye indirgenmeden raporlamayı mümkün kılar.

Ortalama vs en kötü

"Bu cihazın kapı hatası X" cümlesi tipik olarak ortalamayı ifade eder; en kötü qubit çiftinin değeri belirgin biçimde daha kötü olabilir. Algoritma tasarımında "ortalama" değil "kullandığım yolun" hatası önemlidir; transpiler seçimleri bunu doğrudan değiştirir.

Hatadan kalibrasyona bağ

Hata sayıları sabit değildir; gün içinde değişir, bakım sonrası iyileşir, sürüklenirken kötüleşir. Bu yüzden "geçen ay 0.005 idi" cümlesi bugünün kararı için sınırlı bir destektir; karar günüyle aynı oturumda alınmış kalibrasyon değeri tercih edilir. Detay kalibrasyon verisi sayfasındadır.

Kalibrasyon penceresi ve "canlı" okuma

Backend özellikleri canlıdır: cihaz yeniden kalibre edildiğinde sayılar değişir. Bu yüzden, raporlamada sayının kendisi kadar okuma zamanı da önemlidir. "X cihazında cx hatası 1.2 × 10⁻²" cümlesi, "14 Mayıs 03:15 itibarıyla X cihazında qubit (0,1) için cx hatası 1.2 × 10⁻²" hâline geldiğinde bilimsel olarak okunabilir. Bu disiplin, ders ile üretim arasındaki temel farklardan biridir.

FakeBackend ile statik fotoğraf

FakeBackend nesneleri, gerçek cihazın belirli bir andaki özelliklerinin donmuş bir kopyasını taşır. Bu nedenle FakeBackend'i okumak, kavramı öğrenmek için iyidir; gerçek cihazın bugünkü durumunu yansıtmaz.

Sürüklenme ve tekrar üretilebilirlik

Aynı algoritmanın aynı backend'de iki farklı günde farklı sonuçlar üretmesi, çoğunlukla algoritma hatası değildir; "özellikler değişti" cümlesinin somut sonucudur. Bilimsel rapor, mümkünse ölçüm sonuçlarıyla beraber o günün özellik özetini taşır.

Raporlama disiplini ve karar yardımı

Bir deneyi makale ya da iç rapor hâline getirirken backend özellikleri başlığı altında tutulması iyi olan alanlar: cihaz adı, sürüm/firmware, qubit ataması, kullanılan kapı seti, qubit başına T1/T2 ve okuma hatası, kullanılan qubit çiftlerinin iki-qubit kapı hataları, kalibrasyonun zaman damgası, transpile için seçilen optimization_level ve seed. Bu liste ezbere değil, "üç ay sonra okuyan biri ne arar?" sorusunun cevabıdır.

Karar yardımı

Bu özellikleri okumak, "iki cihazdan hangisini seçeyim?" sorusunu bilimsel zemine taşır. Karşılaştırma yaparken yalnızca qubit sayısı değil, kullanacağınız belirli qubit yolunun hata bütçesi de incelenir. Bu disiplinin algoritmik tarafı backend seçimi sayfasında.

"En iyi" hangi anlamda?

"En iyi backend" bağlama bağlıdır: az qubit gerektiren ve yüksek doğruluk arayan bir algoritma için tek-qubit kapı hatası baskın etmen olur; çok qubit ve uzun devre için T1/T2 ve transpile sonrası SWAP sayısı öne çıkar. Tek bir metriğe sığdırmak yerine "benim algoritmamın bütçesi nedir?" sorusuyla başlamak gerekir.

Pratik kural Sayının yanına her zaman zaman damgası ve seçilen qubit ataması yaz. "Hangi yolu seçtim?" cevabı, özellik okumasının tamamlayıcısıdır.

Yerel okuma alıştırması

Backend özelliklerini öğrenmek için canlı IBM bağlantısına ihtiyaç yoktur. FakeBackend nesneleri gerçek cihazların donmuş kopyalarını içerir; aynı API ile ad, qubit sayısı, native kapı seti, coupling map, kapı süresi ve hata oranlarını okuyabilirsiniz. Bu yöntem; öğretim, otomatik test ve sürüm uyumluluğu için son derece elverişlidir. Yerel okuma alıştırması, kavramı tek bir cümleye indirgemenin değil, alanlar arasında "hangi soruya hangi alan cevap verir?" haritasını çıkarmanın yoludur.

Karşılaştırmalı okuma

Aynı kodla iki farklı FakeBackend'i okutmak; topoloji ve hata profilinin nasıl değiştiğini somutlaştırır. "Aynı algoritma, farklı target" düşünce egzersizinin zeminidir.

Ürün değil model

Yerelde okuduğunuz değerler, sahte modelin gönderi anındaki sayılarıdır. Gerçek bir cihazın bugünkü kararı için bunlar bağlayıcı değildir; ancak kavramsal okuma için zenginleştirilmiş bir oyun alanıdır.

Kod laboratuvarı

Üç blok da tamamen yereldir: ağ yok, IBM hesabı yok. Birinci blok BackendV2 üzerinden temel alanların okumasını gösterir; ikinci blok bir kapı için süre ve hata özetini çıkartır; üçüncü blok iki farklı FakeBackend'i yan yana okuyarak topoloji ve kalite farklarının karşılaştırmasını yapar. Bulut karşılığı yalnızca yorum hattında durur.

Referans iskelet — çalıştırmayın Aşağıdaki kalıp IBM hesabı ve token gerektirir; statik sayfada çalıştırılması önerilmez. Yalnızca akışı hatırlatmak içindir.
# from qiskit_ibm_runtime import QiskitRuntimeService
# service = QiskitRuntimeService()
# backend = service.backend("ibm_brisbane")     # canlı target çekilir
# target  = backend.target
# print(sorted(target.operation_names))
# print("cx(0,1) error :", target["cx"][(0, 1)].error)
# print("cx(0,1) duration:", target["cx"][(0, 1)].duration)
backend_basic_fields.py Python
from qiskit_ibm_runtime.fake_provider import FakeManilaV2

backend = FakeManilaV2()
target  = backend.target

print("name           :", backend.name)
print("num_qubits     :", backend.num_qubits)
print("operations     :", sorted(target.operation_names))
print("coupling edges :", list(backend.coupling_map.get_edges())[:6], "...")
print("dt (sn)        :", getattr(backend, "dt", "yok"))
qiskit BackendV2 · target üzerinden tek kaynak UTF-8 · LF
gate_duration_and_error.py Python
from qiskit_ibm_runtime.fake_provider import FakeManilaV2

backend = FakeManilaV2()
target  = backend.target

def summarize_gate(name):
    if name not in target.operation_names:
        print(f"{name:>5} : bu cihazda native değil")
        return
    rows = target[name]                    # {qargs_tuple: InstructionProperties}
    print(f"\n{name} → {len(rows)} kayıt")
    for qargs, props in list(rows.items())[:4]:
        dur = props.duration if props and props.duration is not None else None
        err = props.error    if props and props.error    is not None else None
        dur_s = f"{dur*1e9:7.1f} ns" if dur is not None else "    -   "
        err_s = f"{err:.2e}"          if err is not None else "    -   "
        print(f"  qargs={qargs}  duration={dur_s}  error={err_s}")

for g in ("sx", "rz", "x", "cx"):
    summarize_gate(g)
qiskit InstructionProperties · duration + error UTF-8 · LF
compare_two_backends.py Python
from qiskit_ibm_runtime.fake_provider import FakeManilaV2, FakeBelemV2

def avg_cx_error(backend):
    rows = backend.target.get("cx", {}) or {}
    errs = [p.error for p in rows.values() if p and p.error is not None]
    return sum(errs) / len(errs) if errs else float("nan")

def native_set(backend):
    return tuple(sorted(backend.target.operation_names))

for cls in (FakeManilaV2, FakeBelemV2):
    b = cls()
    print(f"{b.name:>14}  qubits={b.num_qubits}  "
          f"avg_cx_err≈{avg_cx_error(b):.3e}  "
          f"native={native_set(b)}")
qiskit Karşılaştırmalı okuma · iki donmuş model UTF-8 · LF

İleri okuma ve özet

Backend özellikleri, cihazın hem haritası hem termometresidir. Topoloji "ne yapabilirim?" diyor, kalibrasyon "ne kadar iyi yapıyorum?". Her sayı tek başına yargı taşımaz; yanına zaman damgası ve qubit yolu eklenince yargıya yaklaşır. Yerelde FakeBackend ile aynı arayüzü okuyarak okuma disiplini kazanmak, kavramı statik bir tablo yerine düşünce alıştırması yapar.

Özet Backend özelliği = topoloji + zaman + hata + canlı kalibrasyon. Yargıyı sayıya değil, sayı + bağlam ikilisine bırakın. Yerel modellerle aynı okuma desenini öğrenmek, buluta taşınmayı zahmetsiz kılar.