1. Ana sayfa
  2. İçerik planı
  3. Snapshot sistemleri · Qiskit
Qiskit · simülasyon ve Aer

Snapshot sistemleri — devre içi durum kaydı ve sonuç ağacı

Snapshot, kuantum devresinde seçtiğiniz anda — ölçüm histogramına indirgenmeden önce — simülatörün elinde tuttuğu kuantum durumunun veya türev istatistiklerin klasik bellekte saklanmasıdır. Modern Aer yolunda bu iş, çoğu zaman save_statevector, save_density_matrix, save_probabilities gibi save_* talimatlarıyla yapılır. Genel Aer çerçevesi Aer simülatörü sayfasında, tam genlik ve yoğunluk yürütmesi sırasıyla statevector ve yoğunluk matrisi başlıklarında; shot döngüsü shot mantığı sayfasında tutulur — burada snapshot’ın semantiği, etiketleme ve bellek maliyeti üzerinde duruyoruz.

  • Araç: save_* talimat ailesi
  • Köprü: ölçüm histogramından farklı okuma
  • Risk: etiket çakışması · üstel bellek

Snapshot kavramı ve kullanım alanı

Simülatör, dalga fonksiyonunu veya yoğunluğu iç temsilde taşır; snapshot ise bu iç temsilin belirli bir devre anında dışarı aktarılmış bir kopyasıdır. Bu çıktı algoritma hata ayıklamasında, ara durum görselleştirmesinde, basit tomografi veya doğrulama hatlarında kullanılır. Donanımda aynı soyutlama her zaman yoktur; çoğu cihazda “devre ortası tam genlik” talebi farklı protokollerle karşılanır — bu yüzden buradaki anlatım Aer ve uyumlu simülatör yürütmesiyle sınırlıdır.

Bu sayfanın sınırı

Her Aer sürümünde sonuç ağacından veri çekme API’sinin tam yolu değişebilir; aşağıdaki kodlar öğretimseldir ve çalıştırmadan önce kullandığınız sürüm belgeleriyle eşleştirme gerekir.

Kapsam uyarısı Snapshot, “ölçüm yapmış gibi” histogram üretmez; ölçüm ve klasik bit akışı için ölçüm mantığı sayfasındaki çerçeveye dönün.

Ölçüm ve snapshot: semantik ayrım

Projektif ölçüm, Born olasılıklarına göre klasik bir sonuç üretir ve çoklu shot ile frekans tablosuna dönüşür. Snapshot ise — doğru yöntem seçildiğinde — henüz o indirgeme yapılmadan önce vektör veya yoğunluk gibi tam bilgiyi (veya olasılık vektörünü) kaydeder. İkisini aynı “klasik çıktı” kutusunda düşünmek, hem performans hem yorum hatalarına yol açar: biri istatistik özet, diğeri ara temsil dökümüdür.

Dinamik devreler

Klasik kontrol akışı içeren devrelerde snapshot’ın nereye oturduğu, hangi dalın yürütüldüğüne bağlıdır. Bu sayfa o dallanma reçetesini vermez; yalnızca “snapshot talimatı hangi ünite bloktan sonra geçerlidir?” sorusunun takip edilmesi gerektiğini vurgular.

save_* talimatları ve miras çizgisi

Qiskit ekosisteminde uzun süre Snapshot adlı ayrı bir talimat sınıfı kullanıldı; Aer ve çekirdek devre modeli olgunlaştıkça bu ihtiyaç, doğrudan devreye eklenen save_statevector vb. ile birleştirildi. Bugün yeni kod yazarken “snapshot” kelimesini düşüncede tutup aracı olarak save_* ailesini seçmek, bakım açısından daha güvenli bir yoldur. Hangi save_* varyantının mevcut olduğu sürüme ve derleme seçeneklerine bağlıdır; tam liste için resmi belgeyi esas alın.

Olasılık ve beklenti

Tam genlik yerine Born olasılıklarını veya belirli observable beklentilerini kaydetmek isteyebilirsiniz; bu, bellek ile bilgi ayrımını hareket ettirir — bazen histograma yaklaşırsınız, bazen hâlâ vektörden daha hafif bir ara temsil elde edersiniz.

Eski API’den kopuş

Eski örneklerde görülen Snapshot çağrılarını kopyalarken çağrı imzası ve sonuç ağacı yollarını güncellemek gerekir; aksi halde eğitim notu “çalışır” görünür ama ürettiği veri yapısı sessizce beklediğinizden farklıdır.

Etiket, sıra ve çoklu kayıt

Her snapshot için anlamlı bir label seçmek, sonradan sonuç ağacında veriyi çekmeyi kolaylaştırır. Aynı etiketi birden fazla kez kullanmak, sürüme göre üzerine yazma veya hata üretme davranışına yol açabilir; bu yüzden üretim kodunda etiketleri devre yapısından türetilen benzersiz dizgilerle yönetmek iyi bir alışkanlıktır. Devredeki sıra, hangi kapılardan sonra durumun okunacağını belirler; transpile sonrası kapı sırası değişirse snapshot konumu da kayar.

Transpile uyarısı

Optimize edilmiş devrede snapshot’ın beklenenden “önce” veya “sonra” görünmesi, yalnızca görsel bir sorun değil, matematiksel olarak farklı bir ara duruma işaret edebilir. Bu yüzden snapshot’lı hatları transpile ederken eşdeğerlik kontrolü ayrı bir adımdır.

Shot döngüsü ve sonuç nesnesi

shots>1 seçildiğinde, her shot bağımsız bir yürütme olarak düşünülebilir; snapshot talimatları da bu yürütmelerin içinde tekrarlanır. Bu, bellek ve süre maliyetini shot ile çarpar. Histogram ile snapshot verisini aynı tabloda birleştirmek istiyorsanız, hangi shot’tan hangi kaydın alındığını açıkça modellemeniz gerekir — Aer’in sunduğu soyutlama sürüme göre değişir.

Shot sayısı seçimi

Ayrıntılı istatistik için shot mantığı sayfasındaki O(1/√N) sezgisi geçerlidir; snapshot ise çoğu zaman her shot’ta üstel boyutlu bir nesne taşır. İkisini birlikte büyütmek, bellek duvarını hızlı getirir.

Yöntem ve arka uç uyumu

Tam genlik snapshot’ı anlamlı kılan yöntem, iç temsilin genlik olmasıdır; yoğunluk snapshot’ı ise CPTP çizgisinde anlam kazanır. Stabilizer / Clifford hızlandırılmış yollarda hangi save_* varyantlarının tanımlı olduğu ayrı bir tablo gerektirir — “her yöntem her snapshot’ı destekler” varsayımı güvenli değildir. Bu yüzden yöntem seçimini Aer simülatörü çerçevesinde okumak, snapshot tasarımının ilk adımıdır.

Gürültü modelleri

Gürültülü yürütmede ara durum karışıktır; yoğunluk tabanlı snapshot doğal bir eşleşme sunabilir. Gürültü simülasyonu ile birlikte düşünüldüğünde, hangi temsilin raporlandığı netleşir.

Bellek maliyeti ve tasarım sınırları

Tek bir save_statevector çağrısı, kübit sayısı n için kabaca O(2ⁿ) karmaşık sayı alanında bellek dokunuşu anlamına gelir. Devre boyunca on kez tam genlik kaydetmek, kavramsal olarak aynı maliyeti tekrarlar; shot ile çarpıldığında tablo sert şekilde büyür. Bu yüzden üretim hattında ya seyrek etiketler ya da daha hafif save_probabilities gibi araçlar tercih edilir.

GPU ile birlikte

Büyük vektörleri GPU’da tutup sık snapshot almak, cihaz belleğini aynı üstel ölçekle zorlar; taşıma maliyeti için GPU ivmelendirmesi sayfasındaki uyarılar geçerlidir.

Klasik kayıt ve ölçüm postulatı: kısa not

John von Neumann’ın kuantum ölçümünü formalize eden çerçevesinde, “ölçüm” kavramı postülat düzeyinde tanımlanır ve klasik kayıt ile ilişkilendirilir. Simülatördeki snapshot ise mühendislik düzeyinde: dalga fonksiyonunun sayısal bir kopyasını klasik bellekte saklarsınız; bu, deneysel ölçüm protokolünün yerini tutmaz. İki dünya arasındaki farkı net tutmak, eğitim metinlerinde sık yapılan “simülatör çıktısı = laboratuvar olayı” yanlış anlamasını önler.

Bağlamda tutmak

Bu paragraf felsefi bir derinlik iddiası taşımaz; yalnızca snapshot’ı doğru zihinsel kutuya koymak içindir.

Kod laboratuvarı

İlk blok, dolanık öncesi tek bir genlik snapshot’ı ekler. İkinci blok, aynı devre üzerinde iki zaman etiketi üretir. Sonuçtan etiketlenmiş veriyi çekme yolu sürüme göre değişir; aşağıdaki çıktı tam nesneyi gösterir — üretimde etiket anahtarını belgelerden doğrulayın.

snapshot_statevector.py Python
from qiskit import QuantumCircuit
from qiskit_aer import AerSimulator

qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0, 1)
qc.save_statevector(label="bell")

backend = AerSimulator(method="statevector")
result = backend.run(qc).result()
print(result)
qiskit-aer Etiket: bell · veri çekme API’si sürüme duyarlı UTF-8 · LF
snapshot_two_labels.py Python
from qiskit import QuantumCircuit
from qiskit_aer import AerSimulator

qc = QuantumCircuit(2)
qc.h(0)
qc.save_statevector(label="step_a")
qc.cx(0, 1)
qc.save_statevector(label="step_b")

result = AerSimulator(method="statevector").run(qc).result()
print(result)
qiskit-aer Çoklu etiket · transpile sonrası sırayı doğrulayın UTF-8 · LF

İleri okuma ve özet

Snapshot sistemleri, simülatörün iç dünyasını dışarı aktaran kontrollü musluklardır; ölçüm histogramından farklı bir sözleşme taşırlar ve bellek maliyeti shot ile birlikte büyür. Doğru etiket, doğru yöntem ve doğru sonuç API’si üçlüsü olmadan üretilen grafikler yanıltıcı olabilir.

Özet Modern Aer’de snapshot ihtiyacı çoğu zaman save_* talimatlarıyla gider; etiket ve devre sırası son veriyi belirler. Ölçümle karıştırmamak, shot maliyetini hesaba katmak ve transpile sonrası eşdeğerliği denetlemek zorunlu mühendislik adımlarıdır.