Snabbstart: Skapa en kvantbaserad slumptalsgenerator i Azure Quantum

Lär dig hur du använder Azure Quantum för att skapa en enkel kvantbaserad slumptalsgenerator.

Förutsättningar

  • För att slutföra den här självstudien behöver du en Azure-prenumeration. Om du inte har någon Azure-prenumeration kan du skapa ett kostnadsfritt konto innan du börjar.
  • I den här guiden använder vi Visual Studio Code som du kan ladda ned och använda kostnadsfritt.

Installera Quantum Development Kit och andra resurser

Innan du kan skriva ett Q#-program och köra det med någon av kvantberäkningsleverantörerna måste du installera några resurser:

  1. Installera Microsoft QDK för VS Code-tillägget.

  2. Installera Azure CLI.

  3. Installera quantum CLI-tillägget för Azure CLI.

    az extension add -n quantum
    

Skapa en Azure Quantum arbetsyta

Du använder tjänsten Azure Quantum genom att lägga till en Azure Quantum arbetsyteresurs till din Azure-prenumeration i Azure Portal. En Azure Quantum arbetsyteresurs, eller arbetsyta, är en samling tillgångar som är associerade med att köra kvant- eller optimeringsprogram.

Öppna Azure Portal genom att gå till https://portal.azure.com och sedan följa dessa steg:

  1. Klicka på Skapa en resurs och sök sedan efter Azure Quantum. På resultatsidan bör du se en panel för Azure Quantum (förhandsversion).

    Panel för Azure Quantum (förhandsversion)

  2. Klicka Azure Quantum (förhandsversion) och sedan på Skapa. Då öppnas ett formulär för att skapa en arbetsyta.

    Skapa resurs för Azure Quantum (förhandsversion)

  3. Fyll i informationen om din arbetsyta:

    • Prenumeration: Den prenumeration som du vill associera med den här arbetsytan.
    • Resursgrupp: Den resursgrupp som du vill tilldela den här arbetsytan till.
    • Namn: Namnet på din arbetsyta.
    • Region: Arbetsytans region.
    • Storage konto: Azure Storage-kontot för att lagra jobb och resultat. Om du inte har ett befintligt lagringskonto klickar du på Skapa ett nytt lagringskonto och fyller i de fält som krävs. För den här förhandsversionen rekommenderar vi att du använder standardvärdena.

    Egenskaper för Azure Quantum arbetsyta

    Anteckning

    Du måste vara ägare till den valda resursgruppen för att kunna skapa ett nytt lagringskonto. Mer information om hur resursgrupper fungerar i Azure finns i Kontrollera och organisera Azure-resurser med Azure Resource Manager.

  4. När du har slutfört informationen klickar du på fliken Providers (Leverantörer) för att lägga till providers på din arbetsyta. En leverantör ger dig åtkomst till en kvanttjänst som kan vara kvantmaskinvara, en kvantsimulator eller en optimeringstjänst.

    Leverantörer för Azure Quantum

    Anteckning

    Som standard lägger tjänsten Azure Quantum Microsoft QIO-providern till varje arbetsyta.

  5. Lägg till minst IonQ-providern och klicka sedan på Granska + skapa.

  6. Granska inställningarna och godkänn användningsvillkoren för de valda leverantörerna. Om allt är korrekt klickar du på Skapa för att skapa din arbetsyta.

    Granska och skapa arbetsytan

Anteckning

Prissättningen för Azure Quantum varierar beroende på leverantör. Läs informationen på fliken Providers (Leverantörer) på Azure Quantum-arbetsytan i Azure Portal för att få den senaste prisinformationen.

Skapa ett Q#-projekt i Visual Studio Code

  1. I VS Code öppnar du menyn Visa och väljer Kommandopalett.

  2. Skriv Q#: Create New Project.

  3. Välj Fristående konsolprogram.

  4. Välj en katalog som ska innehålla projektet, till exempel din hemkatalog. Ange QuantumRNG som projektnamn och välj sedan Skapa projekt.

  5. I det fönster som visas längst ned väljer du Öppna nytt projekt.

  6. Du bör se två filer: projektfilen och Program.qs, som innehåller startkod. Öppna Program.qs.

  7. Börja med att öppna filen QuantumRNG.csproj och lägg till egenskapen , vilket ger dig feedback om programmets kompatibilitet för ExecutionTarget IonQ-maskinvaran.

<Project Sdk="Microsoft.Quantum.Sdk/0.17.2105143879">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <ExecutionTarget>ionq.qpu</ExecutionTarget>
  </PropertyGroup>
</Project>
  1. Ersätt innehållet i Program.qs med programmet:
namespace QuantumRNG {
    open Microsoft.Quantum.Intrinsic;
    open Microsoft.Quantum.Measurement;
    open Microsoft.Quantum.Canon;

    @EntryPoint()
    operation GenerateRandomBits() : Result[] {
        use qubits = Qubit[4];
        ApplyToEach(H, qubits);
        return MultiM(qubits);
    }
}

Anteckning

Om du vill veta mer om den här programkoden kan du läsa Skapa ditt första Q#-program med hjälp av Quantum Development Kit.

Förbereda AZ CLI

Nu ska vi förbereda din miljö för att köra programmet mot arbetsytan som du skapade.

  1. Logga in på Azure med dina autentiseringsuppgifter. Du får en lista över prenumerationer som är kopplade till ditt konto.

    az login
    
  2. Ange den prenumeration som du vill använda från de som är kopplade till ditt Azure-konto. Du hittar även ditt prenumerations-ID i översikten över din arbetsyta i Azure-portalen.

    az account set -s <Your subscription ID>
    
  3. Använd quantum workspace set för att välja den arbetsyta som du skapade ovan som standardarbetsyta. Observera att du även måste ange resursgruppen och den plats där du skapade den:

    az quantum workspace set -g MyResourceGroup -w MyWorkspace -l MyLocation -o table
    
     Location    Name         ProvisioningState    ResourceGroup    StorageAccount      Usable
     ----------  -----------  -------------------  ---------------  ------------------  --------
     MyLocation  MyWorkspace  Succeeded            MyResourceGroup  /subscriptions/...  Yes
    
    
  4. På din arbetsyta finns det olika mål som är tillgängliga från leverantörerna som du lade till när du skapade arbetsytan. Du kan visa en lista över alla tillgängliga mål med kommandot az quantum target list -o table :

    az quantum target list -o table
    

    Beroende på vilken provider du har valt visas följande:

     Provider    Target-id                                       Status     Average Queue Time
     ----------  ----------------------------------------------  ---------  --------------------
     ionq        ionq.qpu                                        Available  0
     ionq        ionq.simulator                                  Available  0
    

    Anteckning

    När du skickar ett jobb i Azure Quantum väntar det i en kö tills providern är redo att köra programmet. Kolumnen Genomsnittlig kötid i kommandot i mållistan visar hur många sekunder nyligen körda jobb som väntade i kön. Detta kan ge dig en uppfattning om hur länge du kan behöva vänta.

Simulera programmet i IonQ-providern

Innan du kör ett program mot verklig maskinvara rekommenderar vi att du simulerar det först (om möjligt baserat på antalet qubitar som krävs) för att säkerställa att algoritmen gör det du vill. Lyckligtvis tillhandahåller IonQ en idealiserad simulator som du kan använda.

Anteckning

Du kan också simulera Q#-program lokalt med hjälp av simulatorn för fullständigt tillstånd.

Kör programmet med az quantum execute --target-id ionq.simulator -o table . Det här kommandot kompilerar programmet, skickar det till Azure Quantum och väntar tills IonQ har simulerat programmet. När det är klart matas ett histogram ut som bör se ut som det nedan:

az quantum execute --target-id ionq.simulator -o table
Result     Frequency
---------  -----------  -------------------------
[0,0,0,0]  0.06250000   ▐█                      |
[1,0,0,0]  0.06250000   ▐█                      |
[0,1,0,0]  0.06250000   ▐█                      |
[1,1,0,0]  0.06250000   ▐█                      |
[0,0,1,0]  0.06250000   ▐█                      |
[1,0,1,0]  0.06250000   ▐█                      |
[0,1,1,0]  0.06250000   ▐█                      |
[1,1,1,0]  0.06250000   ▐█                      |
[0,0,0,1]  0.06250000   ▐█                      |
[1,0,0,1]  0.06250000   ▐█                      |
[0,1,0,1]  0.06250000   ▐█                      |
[1,1,0,1]  0.06250000   ▐█                      |
[0,0,1,1]  0.06250000   ▐█                      |
[1,0,1,1]  0.06250000   ▐█                      |
[0,1,1,1]  0.06250000   ▐█                      |
[1,1,1,1]  0.06250000   ▐█                      |

Detta visar en lika hög frekvens för var och en av de 16 möjliga tillstånden för att mäta 4 qubitar, vilket är vad vi förväntar oss från en idealiserad simulator! Det innebär att vi är redo att köra den på QPU:n.

Köra programmet på maskinvara

Om du vill köra programmet på maskinvaran använder vi det asynkrona jobbinskickade kommandot az quantum job submit . Precis som execute kommandot kompileras och skickas programmet, men det väntar inte tills körningen är klar. Vi rekommenderar det här mönstret för att köra mot maskinvara, eftersom du kan behöva vänta en stund tills jobbet har avslutats. För att få en uppfattning om hur lång tid det kan ta kan du köra az quantum target list -o table enligt beskrivningen ovan. Beroende på vilken provider du har valt visas följande:

az quantum job submit --target-id ionq.qpu -o table
 Name        Id                                    Status    Target    Submission time
 ----------  ------------------------------------  --------  --------  ---------------------------------
 QuantumRNG  5aa8ce7a-25d2-44db-bbc3-87e48a97249c  Waiting   ionq.qpu  2020-10-22T22:41:27.8855301+00:00

Tabellerna ovan visar att jobbet har skickats och väntar på att jobbet ska köras. Om du vill kontrollera statusen använder du kommandot och ersätter parametern med ID-utdata med az quantum job show job-id föregående kommando, till exempel:

 az quantum job show -o table --job-id 5aa8ce7a-25d2-44db-bbc3-87e48a97249c 
 Name        Id                                    Status    Target    Submission time
 ----------  ------------------------------------  --------  --------  ---------------------------------
 QuantumRNG  5aa8ce7a-25d2-44db-bbc3-87e48a97249c  Waiting   ionq.qpu  2020-10-22T22:41:27.8855301+00:00

Så småningom kommer du att se Status att i tabellen ovan ändras till Succeeded . När det är klart kan du hämta resultatet från jobbet genom att köra az quantum job output :

az quantum job output -o table --job-id 5aa8ce7a-25d2-44db-bbc3-87e48a97249c 
Result     Frequency
---------  -----------  -------------------------
[0,0,0,0]  0.05200000   ▐█                      |
[1,0,0,0]  0.07200000   ▐█                      |
[0,1,0,0]  0.05000000   ▐█                      |
[1,1,0,0]  0.06800000   ▐█                      |
[0,0,1,0]  0.04600000   ▐█                      |
[1,0,1,0]  0.06000000   ▐█                      |
[0,1,1,0]  0.06400000   ▐█                      |
[1,1,1,0]  0.07600000   ▐██                     |
[0,0,0,1]  0.04800000   ▐█                      |
[1,0,0,1]  0.06200000   ▐█                      |
[0,1,0,1]  0.07400000   ▐█                      |
[1,1,0,1]  0.08000000   ▐██                     |
[0,0,1,1]  0.05800000   ▐█                      |
[1,0,1,1]  0.06800000   ▐█                      |
[0,1,1,1]  0.05200000   ▐█                      |
[1,1,1,1]  0.07000000   ▐█                      |

Histogrammet du får kan vara något annorlunda än det som visas ovan, men du bör se att tillstånden vanligtvis observeras med samma frekvens.

Förutsättningar

  • För att slutföra den här självstudien behöver du en Azure-prenumeration. Om du inte har någon Azure-prenumeration kan du skapa ett kostnadsfritt konto innan du börjar.
  • I den här guiden använder vi Visual Studio Code som du kan ladda ned och använda kostnadsfritt.

Installera Quantum Development Kit och andra resurser

Innan du kan skriva ett Q#-program och köra det med någon av kvantberäkningsleverantörerna måste du installera några resurser:

  1. Installera Microsoft QDK för VS Code-tillägget.

  2. Installera Azure CLI.

  3. Installera quantum CLI-tillägget för Azure CLI.

    az extension add -n quantum
    

Skapa en Azure Quantum arbetsyta

Du använder tjänsten Azure Quantum genom att lägga till en Azure Quantum arbetsyteresurs till din Azure-prenumeration i Azure Portal. En Azure Quantum arbetsyteresurs, eller arbetsyta, är en samling tillgångar som är associerade med att köra kvant- eller optimeringsprogram.

Öppna Azure Portal genom att gå till https://portal.azure.com och sedan följa dessa steg:

  1. Klicka på Skapa en resurs och sök sedan efter Azure Quantum. På resultatsidan bör du se en panel för Azure Quantum (förhandsversion).

    Panel för Azure Quantum (förhandsversion)

  2. Klicka Azure Quantum (förhandsversion) och klicka sedan på Skapa. Då öppnas ett formulär för att skapa en arbetsyta.

    Skapa resurs för Azure Quantum (förhandsversion)

  3. Fyll i informationen om din arbetsyta:

    • Prenumeration: Den prenumeration som du vill associera med den här arbetsytan.
    • Resursgrupp: Den resursgrupp som du vill tilldela den här arbetsytan till.
    • Namn: Namnet på din arbetsyta.
    • Region: Arbetsytans region.
    • Storage konto: Azure Storage-kontot för att lagra dina jobb och resultat. Om du inte har något befintligt lagringskonto klickar du på Skapa ett nytt lagringskonto och fyller i de obligatoriska fälten. För den här förhandsversionen rekommenderar vi att du använder standardvärdena.

    Egenskaper för Azure Quantum arbetsytan

    Anteckning

    Du måste vara ägare till den valda resursgruppen för att skapa ett nytt lagringskonto. Mer information om hur resursgrupper fungerar i Azure finns i Kontrollera och organisera Azure-resurser med hjälp Azure Resource Manager.

  4. När du har slutfört informationen klickar du på fliken Providers (Leverantörer) för att lägga till providers på din arbetsyta. En leverantör ger dig tillgång till en kvanttjänst, som kan vara kvantmaskinvara, kvantsimulator eller en optimeringstjänst.

    Leverantörer för Azure Quantum

    Anteckning

    Som standard lägger Azure Quantum Microsoft QIO-providern till varje arbetsyta.

  5. Lägg till minst Honeywell-providern och klicka sedan på Granska + skapa.

  6. Granska inställningarna och godkänn användningsvillkoren för de valda leverantörerna. Om allt är korrekt klickar du på Skapa för att skapa din arbetsyta.

    Granska och skapa arbetsytan

Anteckning

Prissättningen för Azure Quantum varierar beroende på leverantör. Läs informationen på fliken Providers på din Azure Quantum i Azure Portal för att få den senaste prisinformationen.

Skapa ett Q#-projekt i Visual Studio Code

  1. I VS Code öppnar du menyn Visa och väljer Kommandopalett.

  2. Skriv Q#: Create New Project.

  3. Välj Fristående konsolprogram.

  4. Välj en katalog som ska innehålla projektet, till exempel din hemkatalog. Ange QuantumRNG som projektnamn och välj sedan Skapa projekt.

  5. I det fönster som visas längst ned väljer du Öppna nytt projekt.

  6. Du bör se två filer: projektfilen och Program.qs, som innehåller startkod. Öppna Program.qs.

  7. Börja med att öppna filen QuantumRNG.csproj och lägga till egenskapen , vilket ger dig feedback om programmets kompatibilitet för ExecutionTarget Honeywells maskinvara.

<Project Sdk="Microsoft.Quantum.Sdk/0.17.2105143879">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <ExecutionTarget>honeywell.hqs-lt-1.0</ExecutionTarget>
  </PropertyGroup>
</Project>
  1. Ersätt innehållet i Program.qs med programmet:
namespace QuantumRNG {
    open Microsoft.Quantum.Intrinsic;
    open Microsoft.Quantum.Measurement;
    open Microsoft.Quantum.Canon;

    @EntryPoint()
    operation GenerateRandomBits() : Result[] {
        use qubits = Qubit[4];
        ApplyToEach(H, qubits);
        return MultiM(qubits);
    }
}

Anteckning

Om du vill veta mer om den här programkoden kan du läsa Skapa ditt första Q#-program med hjälp av Quantum Development Kit.

Förbereda AZ CLI

Nu ska vi förbereda din miljö för att köra programmet mot arbetsytan som du skapade.

  1. Logga in på Azure med dina autentiseringsuppgifter. Du får en lista över prenumerationer som är kopplade till ditt konto.

    az login
    
  2. Ange den prenumeration som du vill använda från de som är associerade med ditt Azure-konto. Du hittar även ditt prenumerations-ID i översikten över din arbetsyta i Azure Portal.

    az account set -s <Your subscription ID>
    
  3. Använd quantum workspace set för att välja den arbetsyta som du skapade ovan som standardarbetsyta. Observera att du även måste ange resursgruppen och den plats där du skapade den:

    az quantum workspace set -g MyResourceGroup -w MyWorkspace -l MyLocation -o table
    
     Location    Name         ProvisioningState    ResourceGroup    StorageAccount      Usable
     ----------  -----------  -------------------  ---------------  ------------------  --------
     MyLocation  MyWorkspace  Succeeded            MyResourceGroup  /subscriptions/...  Yes
    
    
  4. På din arbetsyta finns det olika mål tillgängliga från leverantörerna som du lade till när du skapade arbetsytan. Du kan visa en lista över alla tillgängliga mål med kommandot az quantum target list -o table :

    az quantum target list -o table
    

    som ger dig utdata

    Provider    Target-id                                       Current Availability  Average Queue Time
    ----------  ----------------------------------------------  --------------------  --------------------
    honeywell   honeywell.hqs-lt-1.0                            Available             0
    honeywell   honeywell.hqs-lt-1.0-apival                     Available             0
    

    Anteckning

    När du skickar ett jobb Azure Quantum väntar det i en kö tills providern är redo att köra programmet. Kolumnen Genomsnittlig kötid i kommandot för mållistan visar hur många sekunder jobb som nyligen körts i kön. Detta kan ge dig en uppfattning om hur länge du kan behöva vänta.

Köra programmet på maskinvara

Om du vill köra programmet på maskinvaran använder vi det asynkrona jobbinskickade kommandot az quantum job submit . Precis som execute kommandot kompileras och skickas programmet, men det väntar inte tills körningen är klar. Vi rekommenderar det här mönstret för körning mot maskinvara, eftersom du kan behöva vänta en stund tills jobbet har avslutats. För att få en uppfattning om hur lång tid det kan ta kan du köra az quantum target list -o table enligt beskrivningen ovan. Beroende på vilken provider du har valt visas följande:

az quantum job submit --target-id honeywell.hqs-lt-1.0 -o table
 Name        Id                                    Status    Target                Submission time
 ----------  ------------------------------------  --------  --------              ---------------------------------
 QuantumRNG  b4d17c63-2119-4d92-91d9-c18d1a07e08f  Waiting   honeywell.hqs-lt-1.0  2020-01-12T22:41:27.8855301+00:00

Tabellerna ovan visar att jobbet har skickats och väntar på att jobbet ska köras. Om du vill kontrollera statusen använder du kommandot och ersätter parametern med ID-utdata az quantum job show job-id med föregående kommando, till exempel:

 az quantum job show -o table --job-id b4d17c63-2119-4d92-91d9-c18d1a07e08f 
 Name        Id                                    Status    Target    Submission time
 ----------  ------------------------------------  --------  --------  ---------------------------------
 QuantumRNG  b4d17c63-2119-4d92-91d9-c18d1a07e08f  Waiting   honeywell.hqs-lt-1.0  2020-10-22T22:41:27.8855301+00:00

Eventually, you will see the `Status` in the above table change to `Succeeded`. Once that's done you can get the results from the job by running `az quantum job output`:

```azurecli
az quantum job output -o table --job-id b4d17c63-2119-4d92-91d9-c18d1a07e08f 
Result     Frequency
---------  -----------  -------------------------
[0,0,0,0]  0.05200000   ▐█                      |
[1,0,0,0]  0.07200000   ▐█                      |
[0,1,0,0]  0.05000000   ▐█                      |
[1,1,0,0]  0.06800000   ▐█                      |
[0,0,1,0]  0.04600000   ▐█                      |
[1,0,1,0]  0.06000000   ▐█                      |
[0,1,1,0]  0.06400000   ▐█                      |
[1,1,1,0]  0.07600000   ▐██                     |
[0,0,0,1]  0.04800000   ▐█                      |
[1,0,0,1]  0.06200000   ▐█                      |
[0,1,0,1]  0.07400000   ▐█                      |
[1,1,0,1]  0.08000000   ▐██                     |
[0,0,1,1]  0.05800000   ▐█                      |
[1,0,1,1]  0.06800000   ▐█                      |
[0,1,1,1]  0.05200000   ▐█                      |
[1,1,1,1]  0.07000000   ▐█                      |

Histogrammet du får kan vara något annorlunda än det som visas ovan, men du bör se att tillstånden vanligtvis observeras med samma frekvens.

Anteckning

Om du får ett fel när du arbetar med Azure Quantum kan du kontrollera vår lista över vanliga problem.

Nästa steg

Den här snabbstarten visade hur du kommer igång med att köra Q#-program mot olika kvantberäkningssimulatorer och QPU:er. Mer information om tillgängliga leverantörer finns i översiktsdokumentationen för kvantberäkningsprovidern.

Vi rekommenderar att du fortsätter din resa genom att lära dig mer om de olika typerna av mål i Azure Quantum, vilket avgör vilka Q#-program du kan köra mot en viss leverantör. Du kanske också vill lära dig hur du skickar Q#-jobb med Python, Jupyter Notebooks eller Azure CLI.

Letar du efter fler exempel att köra? Kolla in exempelkatalogen för Azure Quantum.

Slutligen kan du läsa mer om att skriva Q#-program i användarhandboken för programmeringsspråket Q#.