Aracılığıyla paylaş


Öğ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

  1. Azure portalında oturum açın ve Azure Quantum çalışma alanınızı seçin.
  2. İşlemler'in altında Not Defterleri'ni seçin
  3. Not defterlerim'e tıklayın ve Yeni Ekle'ye tıklayın
  4. Çekirdek Türü'nde IPython'u seçin.
  5. 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.quantumqiskitbazı Python sınıflarını ve pyqiriş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çesi
  • qecScheme - kuantum hata düzeltmesi (QEC) şeması
  • qubitParams - fiziksel kubit parametreleri
  • constraints - 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.

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.