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

QNode — çağrılabilir sınır ve yürütme sözleşmesi

PennyLane’de kuantum tarafını kullanıcı kodundan ayıran ana nesne QNode’dur. Bir Python fonksiyonunu, seçilen cihaz üzerinde çalıştırılabilen deterministik bir arayüze dönüştürür; içeride kayıt (tape), dönüşüm ve yürütme hattı devreye girse de dışarıdan bakıldığında bu nesne “klasik girdiler → klasik çıktılar” üreten bir çağrılabilir sınırdır. Bu sayfa mimariyi anlatır: hangi sorumlulukların QNode’da toplandığı, hangilerinin komşu başlıklara (kayıt, cihaz, ölçüm, kablo sırası) bırakıldığı ve Qiskit’teki QuantumCircuit merkezli programlama modelinden nasıl bilinçli biçimde ayrıldığı burada netleşir.

  • Sınır: @qml.qnode(dev) ile paketlenmiş çağrı
  • Sözleşme: dönüş satırı qml.expval · qml.probs · örnekleme API’leri
  • Türev: diff_method seçimi ile otomatik diferansiyasyon yüzeyi

Çağrılabilir Sınır: Ne QNode’dadır, Ne Değildir

QNode, kuantum programınızı “bir kez yaz, her çalıştırmada aynı sözleşmeyle çağır” ilkesine oturtur. Dekoratör @qml.qnode(dev) ile işaretlenen fonksiyon gövdesi, yürütme anında doğrudan “ham Python” olarak serbest bırakılmaz; PennyLane bu gövdeyi kayıt modunda yorumlayarak cihaza iletilecek soyut bir iş listesi üretir ve ardından cihazın beklediği biçimde sonuçları toplar. Bu yüzden QNode mimarisi, önce programın kaydı, sonra çalıştırma diye iki fazlı bir düşünceyi zorunlu kılar; siz ise çoğu zaman yalnızca çağrılabilir nesneyi ve onun dönüşünü görürsünüz.

Sorumlulukların ayrımı

QNode katmanında toplananlar: fonksiyon imzası ile girdi–çıktı sözleşmesi, dönüş satırında hangi ölçülebilirlerin istendiği, örnekleme ve gürültü seçenekleri, otomatik türev için hangi diferansiyasyon yolunun seçildiği ve (varsa) klasik arayüz köprüsü (interface=) ile tensörlerin nasıl aktarılacağının çerçevesi. Cihazın kendisinin kablo sayısı, yerel kapı kümesi, gürültü modeli veya uzaktan kuyruk mantığı cihaz sistemi başlığında ele alınır; kayıt nesnesinin iç yapısı ve dönüşümleri tape sistemi ile devre kaydı sayfalarına bırakılmıştır. Böylece bu dosya, Qiskit’te devre metnini doğrudan manipüle ettiğiniz katmandan farklı olarak, fonksiyonel bir çağrı yüzeyi üzerinden kuantumu konumlandırır.

Ayırt edici nokta QNode bir QuantumCircuit nesnesi değildir; devre metnini elle kurmak zorunda değilsiniz. PennyLane gövdeyi kayda çevirerek soyut işlemler üretir; bu iş listesi cihaza özgü bir yürütücüye gider. Qiskit tarafında merkezî taşıyıcı ve talimat akışı için QuantumCircuit yapısı sayfasına bakın — burada tekrar etmiyoruz.

Kapanış ve Kuantum Alt-program Metaforu

Bir QNode, seçilen cihaz ve kablo envanteri üzerinde kapanmış bir kuantum hesaplamayı temsil eder: dış dünyadan gelen klasik parametreler (veya tensör parçaları) içeri girer; kuantum evrimi kapılar ve ölçülebilirlerle tanımlanır; en sonda dönüş satırındaki istatistikler veya örnekler dışarı çıkar. Bu kapanış, iki pratik sonuç doğurur: aynı QNode örneği üzerinde yapılandırma (cihaz, shots, diff_method) tutarlı kalır; fonksiyon gövdesi ise bu çerçevede tekrar tekrar değerlendirilebilir.

Neden “fonksiyon” vurgusu?

Varyasyonel ve hibrit iş akışlarında maliyet eğrisi, parametre vektörünün küçük oynamalarına duyarlıdır. QNode’u fonksiyon gibi düşünmek, hem otomatik türev zincirlerinde hem de optimizasyon döngüsünde zihinsel yükü azaltır: “parametre uzayında bir nokta seç → QNode’u çağır → skalar veya tensör maliyet al”. Kuantum tarafın nasıl çizildiği (hangi kapı sırası, hangi kablo eşlemesi) bu sayfada ikinci planda kalır; onu kuantum fonksiyonları ve kablo yönetimi ayrıntılandırır.

Fiziksel ölçüm ve Born olasılıkları için sitedeki ölçüm ve çökme sayfasına dönün; burada yalnızca API’nin bu fiziği hangi dönüş tipleriyle sayıya çevirdiği özetlenir.

Türevlenebilirlik Yüzeyi ve diff_method

QNode’un mimari açıdan en ayırt edici yüzeylerinden biri, kuantum çağrısını klasik optimizasyon veya derin öğrenme ile birleştirirken gradiyan üretilebilmesidir. PennyLane, seçilen yönteme göre kaydı genişleterek ekstra değerlendirmeler yapabilir (örneğin parametre kayması) veya simülatörden kesin türev bilgisi isteyebilir. Bu mekanizmaların tam akışı yürütüm akışı başlığında toplanır; burada yalnızca sözleşme düzeyinde şunu bilin: diff_method seçimi, QNode’un dışarıdan görünen maliyetinin yanında gizli çağrı maliyetini de belirler.

Yöntem ailesi: sezgisel çerçeve

Parametre kaydırma ailesi, gözlemlenebilirlerin belirli yapılarında kapı gradyanlarını sınırlı sayıda ek değerlendirme ile tahmin etmeye dayanır. Hadamard testi veya sonlu fark gibi seçenekler farklı gürültü ve örnek sayısı rejimlerinde tercih edilir. Simülatörde geri yayılım benzeri yollar, durum vektörü veya tam genlik bilgisinin erişilebilir olduğu varsayımlarla çalışır. Hangi yolun cihazınız için anlamlı olduğunu seçerken yalnızca matematiksel doğruluğu değil, örnek başına maliyeti de tartın; aksi halde eğitim döngüsü sessizce şişer.

Kapsam notu Torch, JAX veya TensorFlow ile köprü kurulduğunda gradyanlar bu ekosistemlerin kurallarına uygun tensörler olarak akar. Bu sayfa arayüz ayrıntılarına girmez; odak QNode’un çağrılabilir sınır olarak nasıl konumlandığıdır.

Dönüş Sözleşmesi: Beklenenler, Şekiller ve Örnekleme

Dönüş satırı, QNode’un “kuantumdan klasik dünyaya” çıkış gümrüğüdür. Tek bir qml.expval skalar bir maliyet için uygunken; çoklu gözlemlenebilir demetleri, olasılık vektörleri veya ham örnekler üst düzey algoritmaların ihtiyaç duyduğu şekillerde paketlenir. Örnekleme (shots) açıkken, beklenen değer tahminlerinin varyansı ve tekrarlanabilirlik davranışı değişir; bu konu ölçüm süreci sayfasında derinleşir. Burada mimari mesaj şudur: dönüş türü, hem klasik kodunuzun ne bekleyeceğini hem de otomatik türev motorunun hangi grafikleri kuracağını kilitleyen bir parçadır.

Çoklu dönüş ve demet yapıları

Python demetleri kullanıldığında, çağıran tarafın sırayı ve iç içe yapıları bilmesi gerekir. Bu, derin öğrenme kafalarında “tek tensör” beklentisiyle çakışabilir; çözüm genelde ya yardımcı bir sarmalayıcı yazmak ya da arayüz katmanında birleştirmektir. QNode mimarisi açısından önemli olan, dönüşün deterministik olarak tarif edilebilir olması ve cihazın desteklediği ölçülebilir ailesiyle uyumlu olmasıdır.

Girdi Hattı: Tensörler, Yayın ve Arayüzler

QNode çağrıları klasik girdileri kablolara ve kapı açılarına taşır. NumPy benzeri pennylane.numpy ile yazılan kodda yayın kuralları (broadcasting) beklediğiniz gibi davranır; Torch veya JAX köprülendiğinde ise bu girdiler ilgili tensör grafiklerine bağlanır. Mimari açıdan kritik olan, girdinin hangi aşamada sabitlendiğidir: kayıt sırasında mı, yürütme öncesinde mi? Bu ayrım hibrit programlarda hata ayıklamayı kolaylaştırır ve performansı etkiler.

Parametre kaynağı ve yeniden kullanım

Aynı QNode örneği farklı parametrelerle çağrılabilir; iç durumun (örneğin rastgele tohumların) nasıl yönetildiği cihaz ve yürütüm seçeneklerine bağlıdır. Uzun eğitim koşularında, tekrarlanabilirlik ve örnekleme maliyetini birlikte düşünmek gerekir — ayrıntılar yine yürütüm akışı ve cihaz sistemi dosyalarında toplanır.

Kayıt ve JIT: Mimarideki Yer, Sınırlar

QNode’un “görünmez” motoru, fonksiyon gövdesini soyut işlemlere çeviren kayıt sistemidir. Bu sistem, aynı kod yolunun tekrar tekrar çalıştırılacağı senaryolarda JIT ile birleştirilerek orta temsilin önbelleğe alınmasına ve yürütümün hızlanmasına izin verir. Bu başlıkta derinleşmek, iç temsilin yaşam döngüsünü anlatmayı gerektirir; bu yüzden burada yalnızca mimari rolü netleştirilir: QNode, kayıt ve JIT katmanlarını orkestre eden üst seviye çağrılabilir nesnedir.

Komşu dosyalara yönlendirme

Kayıt oluşturma ayrıntıları için devre kaydı, ara temsil ve dönüşümler için tape sistemi, uçtan uca zaman çizelgesi için yürütüm akışı sayfalarına geçin. Bu ayrım, Qiskit dokümantasyonunda sıkça vurgulanan “devre nesnesini elle kur ve job gönder” akışından farklı bir fonksiyon merkezli yol sunar.

Qiskit Merkezli Modele Kısa Köprü

PennyLane, IBM donanımına veya Qiskit tabanlı simülatörlere köprü kurabildiğinde, altta yine bir Qiskit yürütme yolu işler; fakat programlama merkezi artık doğrudan QuantumCircuit değil, QNode ile sarılmış fonksiyonunuzdur. Bu geçişte iki zihinsel kaydırma gerekir: birincisi, talimat listesini sizin elle yönetmek yerine PennyLane’in kayıt çıktısına güvenmek; ikincisi, maliyet ve gradyanın çoğu zaman gözlemlenebilir beklentileri üzerinden tanımlanması.

Qiskit tarafında devre modeli, kayıtlar ve transpilasyon hattı için QuantumCircuit yapısı ve backend mimarisi sayfaları ayrılmıştır; burada yalnızca eşleştirme düzeyinde hatırlatıyoruz. Böylece iki kütüphane aynı kelime dağarcığıyla çifte anlatım üretmeden yan yana durur.

Teşhis: Sık Karışan Noktalar

QNode mimarisini okurken en sık görülen karışıklıklar, “fonksiyon = devre” özdeşliğinden ve “tek çağrı = tek yürütüm” varsayımlarından kaynaklanır. Aşağıdaki maddeler kısa bir kontrol listesi sunar; ayrıntılı akış yürütüm akışı dosyasındadır.

  • Cihaz–kablo uyumsuzluğu: gövdede kullanılan kablo kimlikleri, cihazın bildirdiği kablo sayısı ve sırası ile çakışıyor mu?
  • Dönüş–türev uyumsuzluğu: örnekleme veya gürültülü yürütüm altında seçilen diff_method hâlâ anlamlı mı?
  • Yeniden kullanım yanlışlığı: aynı QNode örneği paralel iş parçacıkları arasında güvenli biçimde paylaşılıyor mu, iç durum sızıntısı var mı?
  • Klasik kontrol karışıklığı: Python if dalları kayıt ile nasıl etkileşiyor? Dinamik grafikler için kuantum betikleri başlığına bakın.

İlk QNode: Minimal İskelet ve Türev Seçimi

Aşağıdaki örnek yalnızca mimariyi gösterir: cihaz seçimi, dekoratör, parametreli kapı ve beklenen değer dönüşü. Sürüm numarası veya ek optimizasyon bayrakları bilinçli olarak dışarıda bırakılmıştır; amaç QNode’un çağrılabilir sınır olarak nasıl paketlendiğini göstermektir.

qnode_skeleton.py Python
import pennylane as qml
from pennylane import numpy as np

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

@qml.qnode(dev, diff_method="parameter-shift")
def circuit(theta):
    qml.RX(theta, wires=0)
    qml.CNOT(wires=[0, 1])
    return qml.expval(qml.PauliZ(0))

# Çağrılabilir sınır: klasik skalar girer, klasik skalar döner.
print(circuit(np.pi / 4))
pennylane Mimari iskelet · cihaz ayrıntıları dışarıda UTF-8 · LF

İkinci bir örnek olarak aynı gövdeyi farklı diff_method veya farklı cihazla yeniden sarmalamak mümkündür; bu, QNode’u “aynı kuantum tarif, farklı yürütüm bağlamı” olarak düşünmenin pratik yoludur. Cihaz nesnesinin kendisi ve kablo sözleşmesi için sırasıyla cihaz sistemi ve kablo yönetimi sayfalarına geçin.

İleride ve Yan Sayfalarda Ne Var?

Bu sayfa QNode’un mimari sınırını ve sorumluluk ayrımını tanımlar; aşağıdaki başlıklar aynı PennyLane biriminde derinleşen komşu konulardır. Resmî API ayrıntıları için PennyLane belgelerindeki QNode sayfasına başvurun — burada eğitim amaçlı kavramsal çerçeve ve site içi yönlendirme önceliklidir.

Özet QNode, kuantum fonksiyonunu cihaza bağlı, tekrar çağrılabilir ve (yapılandırıldığında) türevlenebilir bir arayüze dönüştüren üst seviye sınır nesnesidir; devre metninin kendisi değildir. Kayıt, JIT ve cihaz ayrıntıları komşu sayfalarda toplanır; Qiskit devre ve backend modeli ise ilgili Qiskit birimlerinde anlatılır.