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.
Ç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.
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.
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.
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))
İ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.
- Cihaz sistemi — yürütüm bağlamı, gürültü ve uzaktan çalıştırma sınırı.
- Kuantum fonksiyonları — gövde yazımı ve kuantum tarafın okunabilirliği.
- Devre kaydı ve tape sistemi — soyut iş listesi ve ara temsil.
- Yürütüm akışı — kayıt → dönüşüm → yürütme zaman çizelgesi.
- Ölçüm süreci — dönüş tipleri ile örnekleme istatistiği.