1. Ana sayfa
  2. İçerik planı
  3. Tape sistemi · PennyLane
PennyLane · QNode ve kuantum iş akışı

Tape sistemi — ara temsil, dönüşüm ve gradyan hattı

PennyLane’de QNode çağrısı arka planda bir tape (kuantum kayıt bandı) üretir: sıralı işlemler, parametreler, ölçümler ve gözlemlenebilirler bu nesnede toplanır. Tape, yürütücüye giden ortak dildir; otomatik türev, batch genişletme ve JIT önbelleği çoğu zaman tape üzerinde tanımlı dönüşümler ile yapılır. Bu sayfa, differentiable quantum programming perspektifinde tape’in eğitim döngüsündeki rolünü anlatır — Qiskit transpiler veya donanım routing burada merkezde değildir.

  • Nesne: işlem listesi · parametre bağları · ölçüm / expval
  • Dönüşüm: gradyan genişletmesi · adjoint · batch / vmap
  • Eğitim: tekrarlı yürütüm · tape önbelleği · cihaz + diff_method

Tape: Ara Temsil ve QNode İlişkisi

Kullanıcı düzeyinde @qml.qnode bir fonksiyon gibi görünür; motor düzeyinde her değerlendirme, kuantum gövdenin bir tape’e kaydı ve bu tape’in seçilen cihazda yürütülmesidir. Tape, Python kaynak kodunun tekrar yorumlanması yerine, yürütülebilir ve dönüştürülebilir bir ara program sunar. Bu ayrım, uzun eğitim döngülerinde kritiktir: aynı tape yapısı yüzlerce kez farklı parametrelerle koşturulabilir.

Qiskit devre nesnesinden fark

Qiskit’te QuantumCircuit hem çizim hem job girdisi olarak yaşar; transpiler doğrudan devre üzerinde çalışır. PennyLane tape’i ise gradyan ve cihaz soyutlaması için tasarlanmıştır: işlemler parametre bağlarıyla gelir, ölçümler gözlemlenebilir cebirine bağlanır, dönüşüm katmanı tape’i genişleterek türev grafiği üretir. Donanım haritalaması tape’ten sonra, cihaz eklentisinin sorumluluğundadır — burada detaylandırılmaz.

Ayırt edici nokta Tape, “devre çizimi”nden daha soyuttur; devre kaydı sayfası kullanıcı gövdesinin nasıl kaydedildiğine odaklanır. Bu sayfa, oluşan tape’in iç yapısı, dönüşümleri ve eğitim hattındaki yeri üzerinedir.

Kayıttan Tape’e: Gövde ve Yürütüm Ayrımı

QNode gövdesi çalıştığında PennyLane, kapı çağrılarını ve dönüş satırındaki ölçümleri sırayla tape’e yazar. Bu kayıt anı, klasik kodun kontrol akışı (döngü, koşul) ile etkileşebilir; sabit şablonda tape yapısı epoch’lar arasında değişmez, dinamik grafiklerde ise çağrı başına yeni tape üretilebilir. Yürütüm ise qml.execute benzeri yollarla tape + cihaz + türev yöntemine verilir.

Hibrit ML’de bu ayrım şu anlama gelir: forward = tape oluştur + cihazda değerlendir; backward = tape üzerinde tanımlı gradyan dönüşümü + klasik otograd. QNode sınırı ve dönüş sözleşmesi QNode mimarisi sayfasında; uçtan uca zaman sırası yürütüm akışı başlığında toplanır — burada tape katmanı vurgulanır.

Tape İçeriği: İşlemler, Parametreler, Ölçümler

Bir tape’in gövdesi, sıralı işlem listesidir: her öğe hangi operatörün hangi kablolara uygulandığını ve (varsa) hangi eğitilebilir parametreye bağlandığını taşır. Dönüş satırındaki qml.expval veya qml.probs ifadeleri, tape sonuna ölçüm / gözlemlenebilir düğümleri olarak eklenir. Parametre tensörleri tape ile birlikte yürütücüye gider; bu yüzden aynı tape iskeleti farklı θ ile tekrar çağrılabilir.

Parametre bağları ve eğitilebilirlik

Varyasyonel katmanlarda açılar Torch/JAX tensörlerine bağlıdır; tape bu bağları koruyarak gradyanın hangi kapıya aktığını bilir. Kablo envanteri tape oluşturulurken sabitlenir — kablo yönetimi ile uyumsuzluk kayıt aşamasında patlar. Ölçüm türleri ve dönüş şekilleri ölçüm süreci sayfasında; tape tarafında yalnızca “ölçüm düğümünün tape’e nasıl yazıldığı” önemlidir.

Dönüşümler ve Gradyan Genişletmesi

Tape üzerinde çalışan transform’lar, differentiable programming’in motorudur: kayıtlı bir tape’i alır, gradyan için genişletilmiş yeni tape’ler veya eşdeğer yürütüm planları üretir. Kullanıcı çoğu zaman yalnızca QNode’u çağırır; arka planda seçilen diff_method hangi transform ailesinin devreye gireceğini belirler — bu seçim cihaz sistemi ile birlikte yapılmalıdır; burada transform mantığı özetlenir.

İleri ve geri geçiş (tape düzeyinde)

İleri geçiş: tape + parametre değerleri → cihazda yürütüm → skalar veya tensör çıktı (maliyet). Geri geçiş: çıktının türevi → transform tape’i genişletir veya adjoint yürütür → parametre gradyanları. Klasik otograd (Torch/JAX) ile birleşim noktası, QNode çıktısının tensöre bağlandığı yerdir; kuantum tarafındaki türev kuralları ise transform katmanında yaşanır. Uçtan uca sıra yürütüm akışı sayfasında toplanır — burada yalnızca “gradiyan nerede üretilir?” sorusu vurgulanır.

Üç yol: sezgisel eşleştirme

Backprop (simülatör): tam vektör bilgisi varsa, tape genişlemesi klasik grafikle birleşir; epoch başına yürütüm sayısı düşük kalabilir. Parameter-shift: örneklemeli veya donanım dostu; parametre başına ek tape yürütümü — maliyet çarpanı büyür. Adjoint / reverse-mode: bazı yapılarda geri yönde tek geçişle gradyan; cihaz ve gözlemlenebilir yapısına bağlıdır. Yanlış yöntem, “eğitim çalışıyor gibi” görünüp gradyanı bozabilir; cihaz değişince yöntemi yeniden seçmek gerekir (§6 önbellek ile birlikte düşünün).

Genişletme maliyeti

Parameter-shift ailesi, tape’i fiziksel olarak çoğaltır: her eğitilebilir kapı için ek değerlendirmeler. Kabaca maliyet ∝ (epoch) × (ileri çağrılar) × (türev çarpanı). Backprop uyumlu simülatörde çarpan küçük kalır; fakat shots açık veya donanım yürütümünde backprop her zaman seçenek değildir. Mimari karar verirken yalnızca “kaç parametre var?” değil, “her optimizasyon adımında kaç tape yürütülüyor?” sorusunu sorun — bu, GPU boşta kalırken kuantum tarafının yavaş olduğu yanılsamasını açıklar.

Batch, Genişletme ve Çoklu Tape

Batch, tape düzeyinde “aynı program, birden çok girdi” demektir. Sabit şekilli bir tape şablonu, farklı parametre vektörleri veya farklı gömme girdileriyle genişletilir (expansion); yürütücü bunları tek pakette veya sıralı bloklar halinde işler. Bu, Python for döngüsüyle tek tek QNode çağırmaktan genelde verimlidir — özellikle JAX vmap ile aynı mantık tek derleme altında toplanır.

Batch ekseni vs parametre ekseni

Karıştırılan iki boyut vardır: (1) mini-batch — aynı ansatz, farklı veri satırları; (2) ansatz içi parametreler — farklı açılar, aynı veri. Tape genişletmesi hangi eksende yapıldığına göre farklı maliyet profili üretir. Klasik ön işleme tensörünüzün şekli (batch × features) ile kablo gömme sözleşmesini kablo yönetimi ile hizalayın; aksi halde genişletme sessizce yanlış boyut üretir.

Çoklu tape ve Hamiltonyen toplamları

Tek maliyet, birden çok tape’ten gelen skalarların toplamı olabilir: her Pauli terimi veya her alt gözlemlenebilir için ayrı tape, sonuçların klasik tarafta ağırlıklı toplanması. Tape katmanı terimleri ayrı yürütür; toplama işlemi klasik grafikte kalır ve differentiable zinciri bozmaz. Bu desen VQE/QAOA tarzı maliyetlerde sıktır; optimizasyon döngüsünün klasik kısmı kuantum fonksiyonları sayfasında; burada yalnızca “maliyet = çoklu tape çıktısının toplamı” yapısı vurgulanır.

Döngü ile tek tek tape yürütmek bazen daha okunaklıdır; genişletme ise throughput için tercih edilir. Prototipte döngü, üretim eğitimde genişletme — geçişte epoch süresindeki sıçramayı benchmark ile doğrulayın.

JIT, Önbellek ve Eğitim Maliyeti

Uzun eğitim koşularında tape’in şekli sabit kalıyorsa, kayıt ve derleme maliyeti amorti edilebilir: JIT veya dahili önbellek, yürütüm planını bir kez kurar, sonraki epoch’larda yalnızca parametre değerleri değişir. Bu, “her adımda Python gövdesini yeniden yorumlama” maliyetinden kurtarır; fakat önbelleğin geçerli kalması için gövde, cihaz ve diff_method’un değişmemesi gerekir.

Önbelleği ne kırar?

Şunlar genelde “soğuk başlangıç” tetikler: kuantum fonksiyonunda Python if ile farklı kayıt yolları; cihaz veya shot rejimi değişimi; diff_method değişimi; kablo sayısı veya şablon derinliğinin epoch ortasında değişmesi. Dinamik grafikler kuantum betikleri başlığında ayrıntılandırılır — burada yalnızca “önbellek = sabit tape şablonu varsayımı” hatırlatılır.

Benchmark ve transform birlikte

İlk epoch yavaş, sonrakiler belirgin hızlıysa JIT/önbellek etkisi olabilir; fakat aynı profil, parameter-shift’in ilk çağrıda plan kurmasından da kaynaklanabilir. Karşılaştırma yaparken aynı tape şablonu ve aynı türev yolunu sabitleyin; yalnızca parametreleri değiştirin. Cihaz veya diff_method değişiminden sonra bir “ısınma” epoch’u atmayın — yoksa yanlışlıkla önbellek etkisini başka bir değişkene yazarsınız.

Pratik not Üretim eğitiminde: (1) sabit şablon + sabit cihaz + sabit türev yolu; (2) ısınma epoch’larını ölçümden hariç tut; (3) epoch süresini tape yürütüm sayısıyla birlikte günlükleyin. Önbellek yoksa bile bu disiplin, transform maliyetini (§4) görünür kılar.

Devre Kaydı ile Ayrım ve Köprü

Devre kaydı, kullanıcının yazdığı kuantum fonksiyonunun nasıl yakalandığını anlatır: hangi Python yapıları kayda girer, hangileri sorun çıkarır. Tape sistemi ise yakalanan bu bilginin yürütülebilir ara temsili ve gradyan motoruna girdiğidir. İkisini karıştırmamak, hata ayıklamayı kolaylaştırır: kayıt garipse önce gövde ve kablolar; yürütüm veya gradyan garipse tape + cihaz + diff_method.

Kod Örnekleri: Tape Oluşturma ve Yürütme

Aşağıdaki örnekler API sürümüne duyarlı olabilir; amaç tape’in elle kurulması ve cihazda yürütülmesi iskeletini göstermektir. Güncel sözdizimi için PennyLane belgelerine bakın.

tape_manual.py Python
import pennylane as qml

dev = qml.device("default.qubit", wires=2)

# Tape: sıralı işlemler + ölçüm düğümü (sürüme göre QuantumTape / QuantumScript)
with qml.tape.QuantumTape() as tape:
    qml.RX(0.4, wires=0)
    qml.CNOT(wires=[0, 1])
    qml.expval(qml.PauliZ(0))

# Tape + cihaz + diff_method birlikte yürütülür
result = qml.execute(tape, dev, diff_method="backprop")
print(result)
pennylane · tape Elle tape · yürütüm iskeleti UTF-8 · LF
tape_via_qnode.py Python
import pennylane as qml

dev = qml.device("default.qubit", wires=1)

@qml.qnode(dev, diff_method="backprop")
def model(x):
    qml.RY(x, wires=0)
    return qml.expval(qml.PauliZ(0))

# Kullanıcı tape görmez; her çağrıda içeride tape üretilir ve yürütülür.
print(model(0.2))
pennylane QNode · gizli tape üretimi UTF-8 · LF

İleride ve Yan Sayfalarda Ne Var?

Tape, kayıt ile yürütüm arasındaki köprüdür. Resmî tape / transform girişi için PennyLane belgelerindeki Circuits ve kayıt bölümüne bakın.

Özet Tape sistemi, PennyLane’de differentiable quantum programming’in ara temsil katmanıdır; gradyan, batch ve JIT çoğu zaman tape dönüşümleri üzerinden yürür. Devre kaydı “nasıl yazılır”, tape “nasıl yürütülür ve türevlenir” sorusunu taşır.