Öğretici: Azure Quantum Kaynak Tahmin Aracı'na bir QIR programı gönderme
Azure Quantum Kaynak Tahmin Aracı, kuantum programları için tam olarak birlikte çalışabilen bir belirtim olan (QIR) üzerine Quantum Intermediate Representation kurulmuştur. QIR, kuantum programlama dilleri ve çerçeveleri ile hedeflenen kuantum hesaplama platformları arasında ortak bir arabirim görevi görür. Kaynak Tahmin Aracı bir QIR programını giriş olarak aldığından, QIR'ye çevrilen tüm dilleri destekler. Örneğin, popüler kuantum SDK'ları ve Q# ve Qiskit gibi diller tarafından kullanılabilir. Bu öğreticide, Kaynak Tahmin Aracı'na bir QIR programı yazacak ve göndereceğiz. Bu öğreticide QIR oluşturmak için PyQIR kullanılır, ancak başka bir QIR kaynağı kullanabilirsiniz.
Bu öğreticide aşağıdakilerin nasıl yapılacağını öğreneceksiniz:
- Azure Quantum hizmetine bağlanın.
- QIR bitcode'dan kaynak tahmin işi oluşturmak için işlev tanımlama
- PyQIR oluşturucu kullanarak QIR bit kodu oluşturma
- Kaynak Tahmin Aracı'na QIR işi gönderme
30 gün boyunca ücretsiz Azure deneme aboneliğine kaydolun.
Önkoşullar
- 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.
- Microsoft Quantum Computing sağlayıcısı çalışma alanınıza eklendi.
Çalışma alanınızda yeni bir not defteri oluşturma
- Azure portalında oturum açın ve Azure Quantum çalışma alanınızı seçin.
- İşlemler'in altında Not Defterleri'ni seçin
- Not defterlerim'e tıklayın ve Yeni Ekle'ye tıklayın
- Çekirdek Türü'nde IPython'u seçin.
- Dosya için bir ad yazın ve Dosya oluştur'a tıklayın.
Yeni not defteriniz açıldığında, aboneliğinize ve çalışma alanı bilgilerinize göre ilk hücrenin kodunu otomatik olarak oluşturur.
from azure.quantum import Workspace
workspace = Workspace (
resource_id = "", # Your resource_id
location = "" # Your workspace location (for example, "westus")
)
Not
Aksi belirtilmediği sürece, derleme sorunlarını önlemek için her hücreyi oluştururken sırayla çalıştırmanız gerekir.
Kodu çalıştırmak için hücrenin solundaki üçgen "oynat" simgesine tıklayın.
Gerekli içeri aktarmaları yükleme
İlk olarak, , ve 'den azure.quantum
qiskit
bazı Python sınıflarını ve pyqir
işlevlerini içeri aktarmanız gerekir. Kuantum devrelerini doğrudan oluşturmak için Qiskit'i kullanmayacaksınız, ancak Qiskit ekosisteminin üzerinde oluşturulan öğesini kullanacaksınız AzureQuantumJob
. Qiskit'in en son sürümünü kullandığınızdan emin olun. Daha fazla bilgi için bkz . Azure-quantum Python paketini güncelleştirme.
from azure.quantum.qiskit import AzureQuantumProvider
from azure.quantum.qiskit.job import AzureQuantumJob
from pyqir.generator import BasicQisBuilder, SimpleModule
Azure Quantum hizmetine bağlanma
Ardından, Azure Quantum çalışma alanınıza bağlanmak için önceki hücredeki nesneyi kullanarak workspace
bir AzureQuantumProvider
nesne oluşturun.
provider = AzureQuantumProvider(workspace)
QIR'den kaynak tahmin işi oluşturmak için işlev tanımlama
Kaynak Tahmin Aracı, Microsoft Quantum Computing sağlayıcısından biridir target . Kaynak Tahmin Aracı'nı kullanmak, Azure Quantum'daki diğer yazılım ve donanım sağlayıcısına targets iş göndermekle tamamen aynıdır. Programınızı tanımlayın, bir targetayarlayın ve işlem için işinizi gönderin.
Programınız için bir kaynak tahmini isteği gönderirken bazı target parametreler belirtebilirsiniz.
errorBudget
- izin verilen genel hata bütçesiqecScheme
- kuantum hata düzeltmesi (QEC) şemasıqubitParams
- fiziksel kubit parametrelericonstraints
- bileşen düzeyindeki kısıtlamalar
Giriş parametreleri hakkında daha fazla bilgi için bkz Target . Kaynak Tahmin Aracı'nın parametreleri.
Bu örnekte, Azure Quantum çalışma alanınıza ve kuantum programının QIR bit koduna bağlanan nesneyi girdi provider
olarak alan genel bir işlev uygulayacaksınız. Sonuç olarak bir Azure Quantum işi döndürür.
Kaynak Tahmin Aracı target parametreleri işleve anahtar sözcük bağımsız değişkenleri aracılığıyla geçirilebilir.
def resource_estimation_job_from_qir(provider: AzureQuantumProvider, bitcode: bytes, **kwargs):
"""A generic function to create a resource estimation job from QIR bitcode"""
# Find the Resource Estimator target from the provider
backend = provider.get_backend('microsoft.estimator')
# You can provide a name for the job via keyword arguments; if not,
# use QIR job as a default name
name = kwargs.pop("name", "QIR job")
# Wxtract some job specific arguments from the backend's configuration
config = backend.configuration()
blob_name = config.azure["blob_name"]
content_type = config.azure["content_type"]
provider_id = config.azure["provider_id"]
output_data_format = config.azure["output_data_format"]
# Finally, create the Azure Quantum jon object and return it
return AzureQuantumJob(
backend=backend,
target=backend.name(),
name=name,
input_data=bitcode,
blob_name=blob_name,
content_type=content_type,
provider_id=provider_id,
input_data_format="qir.v1",
output_data_format=output_data_format,
input_params = kwargs,
metadata={}
)
Örnek kuantum programı çalıştırma
Ardından PyQIR oluşturucuyu kullanarak QIR bit kodu oluşturun. Bu örnek, üç T kapısı ve iki CNOT kapısı kullanarak denetimli bir S kapısı oluşturur.
module = SimpleModule("Controlled S", num_qubits=2, num_results=0)
qis = BasicQisBuilder(module.builder)
[a, b] = module.qubits[0:2]
qis.t(a)
qis.t(b)
qis.cx(a, b)
qis.t_adj(b)
qis.cx(a, b)
Kaynak tahmin işi oluşturmak için yukarıda tanımladığınız işlevi PyQIR işleviyle bitcode()
birlikte kullanabilirsiniz. Kaynak Tahmin Aracı'nın belirli bağımsız değişkenlerini de geçirebilirsiniz. Bu örnek hata oranını %5 olarak ayarlamak için kullanır errorBudget
. Parametreler hakkında target daha fazla bilgi için bkz Target . Kaynak Tahmin Aracı'nın parametreleri.
job = resource_estimation_job_from_qir(provider, module.bitcode(), errorBudget=0.05)
result = job.result()
result
Bu işlev, genel fiziksel kaynak sayılarını gösteren bir tablo oluşturur. Daha fazla bilgi içeren grupları daraltarak maliyet ayrıntılarını daha fazla inceleyebilirsiniz. Örneğin, Mantıksal kubit parametreleri grubunu daraltıyorsanız hata düzeltme kodu uzaklığı değerinin 15 olduğunu daha kolay görebilirsiniz.
Mantıksal kubit parametresi | Değer |
---|---|
QEC düzeni | surface_code |
Kod uzaklığı | 5 |
Fiziksel kubitler | 50 |
Mantıksal döngü süresi | 2us |
Mantıksal kubit hata oranı | 3.00E-5 |
Geçiş ön düzenlemesi | 0.03 |
Hata düzeltme eşiği | 0,01 |
Mantıksal döngü süresi formülü | (4 * twoQubitGateTime + 2 * oneQubitMeasurementTime ) * codeDistance |
Fiziksel kubit formülü | 2 * codeDistance * codeDistance |
Fiziksel kubit parametreleri grubunda, bu tahmin için varsayılan fiziksel kubit özelliklerini görebilirsiniz. Örneğin, tek kubitli ölçüm ve tek kubitli bir kapı gerçekleştirme süresinin sırasıyla 100 ns ve 50 ns olduğu varsayılır.
Fiziksel kubit parametresi | Değer |
---|---|
Kubit adı | qubit_gate_ns_e3 |
Yönerge kümesi | GateBased |
Tek kubitli ölçüm süresi | 100 ns |
T kapısı zamanı | 50 ns |
T kapısı hata oranı | 0.001 |
Tek kubitli ölçüm hata oranı | 0.001 |
Tek kubitli kapı süresi | 50 ns |
Tek kubitli hata oranı | 0.001 |
İki kubitli kapı süresi | 50 ns |
İki kubitli hata oranı | 0.001 |
Daha fazla bilgi için Kaynak Tahmin Aracı'nın çıkış verilerinin tam listesine bakın.
İlgili içerik
Diğer kuantum algoritmalarını ve tekniklerini keşfetmeye devam edin:
- Grover'ın arama algoritmasını uygulama öğreticisi, graf renklendirme sorununu çözmek için Grover'ın arama algoritmasını kullanan bir Q# programının nasıl yazıldığını gösterir.
- Q# ile kuantum dolanıklığını keşfetme öğreticisi , Q# ile kubitlerin durumunu değiştirmek için nasıl çalışabileceklerini gösterir ve süper pozisyon ile dolanıklığın etkilerini gösterir.
- Kuantum Kataları, kuantum bilişiminin ve Q# programlamanın öğelerini aynı anda öğretmeyi amaçlayan Jupyter Notebook tabanlı, kendi hızındaki öğreticiler ve programlama alıştırmalarıdır.