Oturumları kullanmaya başlama
Oturumlar, birden çok kuantum bilgi işlem işini birlikte gruplandırmanıza olanak sağlayan hibrit kuantum bilişiminin önemli bir özelliğidir.
Bu makalede hibrit kuantum bilişimindeki oturumların mimarisi ve yeni bir oturumun nasıl oluşturulacağı açıklanmaktadır.
Önkoşullar
Oturum oluşturmak için aşağıdaki önkoşullara ihtiyacınız vardır:
Etkin aboneliği olan bir Azure hesabı. Azure hesabınız yoksa ücretsiz kaydolun ve kullandıkça öde aboneliğine kaydolun.
Azure Quantum çalışma alanı. Daha fazla bilgi için bkz . Azure Quantum çalışma alanı oluşturma.
Python ve Pip'in yüklü olduğu bir Python ortamı.
Azure Quantum
azure-quantum
paketi. Qiskit veya Cirq kullanmak istiyorsanız paketi [qiskit] veya [cirq] etiketleriyle yüklemenizazure-quantum
gerekir.pip install --upgrade azure-quantum[qiskit]
Oturum nedir?
Oturum, tek targetbir iş için gönderilen bir veya daha fazla işin mantıksal gruplandırılmasıdır. Her oturumun, bu oturumdaki her işe eklenmiş benzersiz bir kimliği vardır.
Oturumlarda istemci işlem kaynağı buluta taşınarak daha düşük gecikme süresine ve kuantum devresinin farklı parametrelerle yürütülmesini tekrarlama olanağına neden olabilir. İşler mantıksal olarak tek bir oturumda gruplandırılabilir ve bu oturumdaki işler, oturum dışı işlere göre önceliklendirilebilir. Kubit durumları işler arasında kalıcı olmasa da oturum, işler için daha kısa kuyruk sürelerine ve daha uzun çalışan sorunlara olanak tanır.
Oturumlar, kuantum işleri arasında klasik kod çalıştırma özelliğiyle birden çok kuantum bilgi işlem işini düzenlemenize olanak tanır. Tek tek kuantum bilişimi işlerinizi daha iyi düzenlemek ve izlemek için karmaşık algoritmalar çalıştırabileceksiniz.
Bir oturumdaki işleri birleştirmek isteyebileceğiniz önemli bir kullanıcı senaryosu, bir kuantum bilgi işlem işinin çıkışının bir sonraki kuantum bilgi işlem işinin parametrelerini bilgilendirdiği parametreleştirilmiş kuantum algoritmalarıdır. Bu algoritma türünün en yaygın örnekleri şunlardır Variational Quantum Eigensolvers : (VQE) ve Quantum Approximate Optimization Algorithms (QAOA).
Desteklenen donanım
Oturumlar tüm kuantum bilgi işlem donanım sağlayıcılarında desteklenir. Bazı durumlarda, bir oturum içinde gönderilen işler, bu kuyruğunda targetönceliklendirilir. Daha fazla bilgi için bkz Target . davranış.
Oturum oluşturma
Oturum oluşturmak için şu adımları izleyin:
Bu örnekte, Visual Studio Code'da Jupyter Not Defteri kullanarak satır içi kodla Q# oturum oluşturma gösterilmektedir. Bitişik bir programı çağıran bir Python programı kullanarak oturumlar Q# da oluşturabilirsiniz.
Not
Oturumlar, satır içi kod çalıştırılırken Q# bile Python ile yönetilir.
VS Code'da Komut paleti Görüntüle'yi > ve ardından Oluştur: Yeni Jupyter Not Defteri'ni seçin.
Sağ üst kısımda VS Code, not defteri için seçilen Python sürümünü ve sanal Python ortamını algılar ve görüntüler. Birden çok Python ortamınız varsa, sağ üstteki çekirdek seçiciyi kullanarak bir çekirdek seçmeniz gerekebilir. Ortam algılanmadıysa kurulum bilgileri için VS Code'da Jupyter Not Defterleri bölümüne bakın.
Not defterinin ilk hücresinde komutunu çalıştırın
import azure.quantum workspace = azure.quantum.Workspace( resource_id = "", # add your resource ID location = "", # add your location, for example "westus" )
Not defterine yeni bir hücre eklemek ve Python SDK'sını içeri aktarmak
qsharp
için + Kod'a tıklayın.import qsharp
İstediğiniz kuantumu target seçin. Bu örnekte IonQ simülatörünü olarak targetkullanıyorsunuz.
target = workspace.get_targets("ionq.simulator")
Profilin
Base
Adaptive_RI
target, veyaUnrestricted
yapılandırmalarını seçin.qsharp.init(target_profile=qsharp.TargetProfile.Base) # or qsharp.TargetProfile.Adaptive_RI, qsharp.TargetProfile.Unrestricted
Not
Adaptive_RI
target profil işleri şu anda Quantinuum üzerinde desteklenmektedir targets. Daha fazla bilgi için bkz . Tümleşik hibrit kuantum bilişimi.Programınızı Q# yazın. Örneğin, aşağıdaki Q# program rastgele bir bit oluşturur. Giriş bağımsız değişkenlerinin kullanımını göstermek için, bu program giriş olarak bir tamsayı,
n
ve bir açıangle
dizisi alır.%%qsharp import Std.Measurement.*; import Std.Arrays.*; operation GenerateRandomBits(n: Int, angle: Double[]) : Result[] { use qubits = Qubit[n]; // n parameter as the size of the qubit array for q in qubits { H(q); } R(PauliZ, angle[0], qubits[0]); // arrays as entry-points parameters R(PauliZ, angle[1], qubits[1]); let results = MeasureEachZ(qubits); ResetAll(qubits); return results; }
Ardından bir oturum oluşturacaksınız. İşlemi üç kez çalıştırmak
GenerateRandomBit
istediğinizi varsayalım; bu nedenle işlemi verilerle birliktetarget
göndermek Q# için kullanırsınıztarget.submit
ve kodu üç kez yinelersiniz. Gerçek bir dünya senaryosunda, aynı kod yerine farklı programlar göndermek isteyebilirsiniz.angle = [0.0, 0.0] with target.open_session(name="Q# session of three jobs") as session: target.submit(input_data=qsharp.compile(f"GenerateRandomBits(2, {angle})"), name="Job 1", shots=100) # First job submission angle[0] += 1 target.submit(input_data=qsharp.compile(f"GenerateRandomBits(2, {angle})"), name="Job 2", shots=100) # Second job submission angle[1] += 1 target.submit(input_data=qsharp.compile(f"GenerateRandomBits(2, {angle})"), name="Job 3", shots=100) # Third job submission session_jobs = session.list_jobs() [session_job.details.name for session_job in session_jobs]
Önemli
Bağımsız değişkenler işe parametre olarak geçirilirken, çağrılırken
qsharp.compile
ifadeye Q# biçimlendirilirler. Bu, bağımsız değişkenlerinizi nesne olarak Q# biçimlendirmeye dikkat etmeniz gerektiği anlamına gelir. Bu örnekte, Python'daki diziler zaten [item0, item1, ...] olarak yazdırıldığından, giriş bağımsız değişkenleri biçimlendirmeyle Q# eşleşir. Diğer Python veri yapılarında, içine eklenen Q# dize değerlerini uyumlu bir şekilde almak için daha fazla işlemeye ihtiyacınız olabilir.Oturum oluşturduktan sonra, oturumdaki tüm işlerin listesini almak için kullanabilirsiniz
workspace.list_session_jobs
. Daha fazla bilgi için bkz . Oturumları yönetme.
Target davranış
Her kuantum donanım sağlayıcısı, bir oturumdaki işlerin öncelik belirlemesini en iyi şekilde yönetmek için kendi buluşsal yöntemlerini tanımlar.
Quantinuum
Bir oturum içindeki işleri Quantinuum'a targetgöndermeyi seçerseniz, işleri birbirlerinden bir dakika içinde kuyruğa eklediğiniz sürece oturumunuzun donanıma özel erişimi olur. Bundan sonra işleriniz kabul edilir ve standart kuyruğa alma ve öncelik belirleme mantığıyla işlenir.