Quickstart: Een op kwantum gebaseerde generator voor willekeurige getallen maken in Azure Quantum

Meer informatie over het gebruik Azure Quantum om een eenvoudige op kwantum gebaseerde generator voor willekeurige getallen te maken.

Vereisten

  • Voor het voltooien van deze zelfstudie hebt u een Azure-abonnement nodig. Als u nog geen abonnement op Azure hebt, maak dan een gratis account aan voordat u begint.
  • In deze handleiding gebruiken we Visual Studio code die u gratis kunt downloaden en gebruiken.

Installeer de Quantum Development Kit en andere resources

Voordat u een Q#-programma kunt schrijven en uitvoeren met een van de kwantumcomputingproviders, moet u enkele resources installeren:

  1. Installeer de Microsoft QDK voor VS Code-extensie.

  2. Installeer de Azure CLI.

  3. Installeer de quantum CLI-extensie voor de Azure CLI.

    az extension add -n quantum
    

Een werkruimte Azure Quantum maken

U gebruikt de Azure Quantum-service door een resource Azure Quantum werkruimte toe te voegen aan uw Azure-abonnement in de Azure Portal. Een Azure Quantum werkruimteresource, kort gezegd, is een verzameling assets die is gekoppeld aan het uitvoeren van kwantum- of optimalisatietoepassingen.

Als u Azure Portal wilt openen, gaat u naar https://portal.azure.com en volgt u deze stappen:

  1. Klik op Een resource maken en zoek naar Azure Quantum. Op de resultatenpagina ziet u een tegel voor de service Azure Quantum (preview).

    Tegel voor de Azure Quantum service (preview)

  2. Klik Azure Quantum (preview) en klik vervolgens op Maken. Hiermee opent u een formulier om een werkruimte te maken.

    Resource maken voor de Azure Quantum (preview)-service

  3. Vul de details van uw werkruimte in:

    • Abonnement: Het abonnement dat u aan deze werkruimte wilt koppelen.
    • Resourcegroep: De resourcegroep aan wie u deze werkruimte wilt toewijzen.
    • Naam: De naam van uw werkruimte.
    • Regio: De regio voor de werkruimte.
    • Storage account: het Azure-opslagaccount voor het opslaan van uw taken en resultaten. Als u geen bestaand opslagaccount hebt, klikt u op Een nieuw opslagaccount maken en vult u de benodigde velden in. Voor deze preview raden we u aan de standaardwaarden te gebruiken.

    Eigenschappen voor de Azure Quantum werkruimte

    Notitie

    U moet een eigenaar van de geselecteerde resourcegroep zijn om een nieuw opslagaccount te kunnen maken. Zie Azure-resources beheren en organiseren met Azure Resource Manager voor meer informatie over hoe resourcegroepen werken in Azure.

  4. Nadat u de informatie hebt invullen, klikt u op het tabblad Providers om providers toe te voegen aan uw werkruimte. Een provider biedt u toegang tot een kwantumservice. Dit kan kwantumhardware, een kwantumsimulator of een optimalisatieservice zijn.

    Providers voor Azure Quantum

    Notitie

    Standaard voegt de Azure Quantum de Microsoft QIO-provider toe aan elke werkruimte.

  5. Voeg ten minste de IonQ-provider toe en klik vervolgens op Controleren + maken.

  6. Controleer de instellingen en keur de gebruiksvoorwaarden van de geselecteerde providers goed. Als alles klopt, klikt u op Maken om uw werkruimte te maken.

    De werkruimte controleren en maken

Notitie

De prijzen voor Azure Quantum variëren per provider. Raadpleeg de informatie op het tabblad Providers van uw Azure Quantum werkruimte in de Azure Portal voor de meest recente prijsinformatie.

Een Q#-project maken in Visual Studio Code

  1. Open in VS Code het menu Weergave en selecteer Opdrachtpalet.

  2. Typ Q#: Create New Project.

  3. Selecteer Zelfstandige consoletoepassing.

  4. Selecteer een map voor uw project, zoals uw basismap. Voer QuantumRNG in als projectnaam en selecteer vervolgens Project maken.

  5. Selecteer in het venster dat onderaan wordt weergegeven Nieuw project openen.

  6. U ziet nu twee bestanden: het projectbestand en Program.qs, dat starterscode bevat. Open Program.qs.

  7. Begin door het bestand QuantumRNG.csproj te openen en de eigenschap toe te voegen, waarmee u feedback over de ontwerptijd krijgt over de compatibiliteit van uw programma voor de hardware van ExecutionTarget IonQ.

<Project Sdk="Microsoft.Quantum.Sdk/0.17.2105143879">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <ExecutionTarget>ionq.qpu</ExecutionTarget>
  </PropertyGroup>
</Project>
  1. Vervang de inhoud van Program.qs door het programma:
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);
    }
}

Notitie

Zie Uw eerste Q#-programma maken met behulp van de Quantum Development Kit voor meer informatie over deze programmacode.

De AZ CLI voorbereiden

Vervolgens bereiden we uw omgeving voor op het uitvoeren van het programma op de werkruimte die u hebt gemaakt.

  1. Meld u aan bij Azure met uw referenties. U krijgt een lijst met abonnementen die zijn gekoppeld aan uw account.

    az login
    
  2. Geef het abonnement op dat u wilt gebruiken in de abonnementen die zijn gekoppeld aan uw Azure-account. U kunt uw abonnements-id ook vinden in het overzicht van uw werkruimte in Azure Portal.

    az account set -s <Your subscription ID>
    
  3. Gebruik quantum workspace set om de werkruimte die u hierboven hebt gemaakt te selecteren als de standaardwerkruimte. U moet ook de resourcegroep en de locatie opgeven waarin u deze hebt gemaakt:

    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. In uw werkruimte zijn verschillende doelen beschikbaar van de providers die u hebt toegevoegd toen u de werkruimte maakte. U kunt een lijst met alle beschikbare doelen weergeven met de opdracht az quantum target list -o table :

    az quantum target list -o table
    

    Afhankelijk van de provider die u hebt geselecteerd, ziet u:

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

    Notitie

    Wanneer u een taak in een Azure Quantum wacht deze in een wachtrij totdat de provider klaar is om uw programma uit te voeren. In de kolom Gemiddelde wachtrijtijd van de doellijstopdracht ziet u hoeveel seconden onlangs uitgevoerde taken in de wachtrij hebben gewacht. Dit kan u een idee geven van hoe lang u mogelijk moet wachten.

Het programma simuleren in de IonQ-provider

Voordat u een programma op echte hardware gaat uitvoeren, raden we u aan dit eerst te simuleren (indien mogelijk op basis van het aantal vereiste qubits) om ervoor te zorgen dat uw algoritme doet wat u wilt. Gelukkig biedt IonQ een ideale simulator die u kunt gebruiken.

Notitie

U kunt Q#-programma's ook lokaal simuleren met behulp van de Full State Simulator.

Voer uw programma uit met az quantum execute --target-id ionq.simulator -o table. Met deze opdracht compileert u uw programma, verstuurt u het naar Azure Quantum wacht u tot IonQ klaar is met het simuleren van het programma. Zodra dit is gebeurd, wordt er een histogram uitgevoerd dat er als het onderstaande uit moet zien:

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   ▐█                      |

Dit toont een gelijke frequentie voor elk van de 16 mogelijke staten voor het meten van 4 qubits, wat we verwachten van een ideale simulator! Dit betekent dat we klaar zijn om deze uit te voeren op de QPU.

Het programma uitvoeren op hardware

Om het programma op hardware uit te voeren, gebruiken we de asynchrone opdracht voor het indienen van een az quantum job submit taak. Net als bij de opdracht wordt hiermee uw programma ge compileerd en verzenden, maar wordt niet gewacht execute tot de uitvoering is voltooid. We raden dit patroon aan voor het uitvoeren op hardware, omdat u mogelijk even moet wachten tot uw taak is uitgevoerd. Als u een idee wilt krijgen van hoe lang dat kan zijn, kunt u uitvoeren az quantum target list -o table zoals hierboven wordt beschreven. Afhankelijk van de provider die u hebt geselecteerd, ziet u:

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

In de bovenstaande tabellen kunt u zien dat uw taak is verzonden en wacht tot de taak is uitgevoerd. Als u de status wilt controleren, gebruikt u de opdracht en vervangt u de parameter door de id-uitvoer door de az quantum job show job-id vorige opdracht, bijvoorbeeld:

 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

Uiteindelijk ziet u dat Status de in de bovenstaande tabel wordt gewijzigd in Succeeded . Als dat is gebeurd, kunt u de resultaten van de taak krijgen door uit te az quantum job output gaan:

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   ▐█                      |

Het histogram dat u ontvangt, kan enigszins afwijken van het histogram hierboven, maar u zou moeten zien dat de staten over het algemeen met gelijke frequentie worden waargenomen.

Vereisten

  • Voor het voltooien van deze zelfstudie hebt u een Azure-abonnement nodig. Als u nog geen abonnement op Azure hebt, maak dan een gratis account aan voordat u begint.
  • In deze handleiding gebruiken we Visual Studio code die u gratis kunt downloaden en gebruiken.

Installeer de Quantum Development Kit en andere resources

Voordat u een Q#-programma kunt schrijven en uitvoeren met een van de kwantumcomputingproviders, moet u enkele resources installeren:

  1. Installeer de Microsoft QDK voor VS Code-extensie.

  2. Installeer de Azure CLI.

  3. Installeer de quantum CLI-extensie voor de Azure CLI.

    az extension add -n quantum
    

Een werkruimte Azure Quantum maken

U gebruikt de Azure Quantum-service door een resource Azure Quantum werkruimte toe te voegen aan uw Azure-abonnement in de Azure Portal. Een Azure Quantum werkruimteresource, kort gezegd, is een verzameling assets die is gekoppeld aan het uitvoeren van kwantum- of optimalisatietoepassingen.

Als u Azure Portal wilt openen, gaat u naar https://portal.azure.com en volgt u deze stappen:

  1. Klik op Een resource maken en zoek naar Azure Quantum. Op de resultatenpagina ziet u een tegel voor de service Azure Quantum (preview).

    Tegel voor de Azure Quantum service (preview)

  2. Klik Azure Quantum (preview) en klik vervolgens op Maken. Hiermee opent u een formulier om een werkruimte te maken.

    Resource maken voor de Azure Quantum (preview)-service

  3. Vul de details van uw werkruimte in:

    • Abonnement: Het abonnement dat u aan deze werkruimte wilt koppelen.
    • Resourcegroep: De resourcegroep aan wie u deze werkruimte wilt toewijzen.
    • Naam: De naam van uw werkruimte.
    • Regio: De regio voor de werkruimte.
    • Storage account: het Azure-opslagaccount voor het opslaan van uw taken en resultaten. Als u geen bestaand opslagaccount hebt, klikt u op Een nieuw opslagaccount maken en vult u de benodigde velden in. Voor deze preview raden we u aan de standaardwaarden te gebruiken.

    Eigenschappen voor de Azure Quantum werkruimte

    Notitie

    U moet een eigenaar van de geselecteerde resourcegroep zijn om een nieuw opslagaccount te kunnen maken. Zie Azure-resources beheren en organiseren met Azure Resource Manager voor meer informatie over hoe resourcegroepen werken in Azure.

  4. Nadat u de informatie hebt invullen, klikt u op het tabblad Providers om providers toe te voegen aan uw werkruimte. Een provider biedt u toegang tot een kwantumservice. Dit kan kwantumhardware, een kwantumsimulator of een optimalisatieservice zijn.

    Providers voor Azure Quantum

    Notitie

    Standaard voegt de Azure Quantum de Microsoft QIO-provider toe aan elke werkruimte.

  5. Voeg ten minste de Provider Toe en klik vervolgens op Controleren en maken.

  6. Controleer de instellingen en keur de gebruiksvoorwaarden van de geselecteerde providers goed. Als alles klopt, klikt u op Maken om uw werkruimte te maken.

    De werkruimte controleren en maken

Notitie

De prijzen voor Azure Quantum variëren per provider. Raadpleeg de informatie op het tabblad Providers van uw Azure Quantum werkruimte in de Azure Portal voor de meest recente prijsinformatie.

Een Q#-project maken in Visual Studio Code

  1. Open in VS Code het menu Weergave en selecteer Opdrachtpalet.

  2. Typ Q#: Create New Project.

  3. Selecteer Zelfstandige consoletoepassing.

  4. Selecteer een map voor uw project, zoals uw basismap. Voer QuantumRNG in als projectnaam en selecteer vervolgens Project maken.

  5. Selecteer in het venster dat onderaan wordt weergegeven Nieuw project openen.

  6. U ziet nu twee bestanden: het projectbestand en Program.qs, dat starterscode bevat. Open Program.qs.

  7. Begin door het bestand QuantumRNG.csproj te openen en de eigenschap toe te voegen, waarmee u feedback over de ontwerptijd krijgt over de compatibiliteit van uw programma voor de hardware van ExecutionTarget Windows.

<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. Vervang de inhoud van Program.qs door het programma:
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);
    }
}

Notitie

Zie Uw eerste Q#-programma maken met behulp van de Quantum Development Kit voor meer informatie over deze programmacode.

De AZ CLI voorbereiden

Vervolgens bereiden we uw omgeving voor op het uitvoeren van het programma op de werkruimte die u hebt gemaakt.

  1. Meld u aan bij Azure met uw referenties. U krijgt een lijst met abonnementen die zijn gekoppeld aan uw account.

    az login
    
  2. Geef het abonnement op dat u wilt gebruiken voor de abonnementen die zijn gekoppeld aan uw Azure-account. U kunt uw abonnements-id ook vinden in het overzicht van uw werkruimte in Azure Portal.

    az account set -s <Your subscription ID>
    
  3. Gebruik quantum workspace set om de werkruimte die u hierboven hebt gemaakt te selecteren als de standaardwerkruimte. U moet ook de resourcegroep en de locatie opgeven waarin u deze hebt gemaakt:

    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. In uw werkruimte zijn verschillende doelen beschikbaar van de providers die u hebt toegevoegd toen u de werkruimte maakte. U kunt een lijst met alle beschikbare doelen weergeven met de opdracht az quantum target list -o table :

    az quantum target list -o table
    

    waarmee u de uitvoer krijgt

    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
    

    Notitie

    Wanneer u een taak in een Azure Quantum wacht deze in een wachtrij totdat de provider klaar is om uw programma uit te voeren. In de kolom Gemiddelde wachtrijtijd van de doellijstopdracht ziet u hoeveel seconden onlangs uitgevoerde taken in de wachtrij hebben gewacht. Dit kan u een idee geven van hoe lang u mogelijk moet wachten.

Het programma uitvoeren op hardware

Om het programma op hardware uit te voeren, gebruiken we de asynchrone opdracht voor het indienen van een az quantum job submit taak. Net als bij de opdracht wordt hiermee uw programma ge compileerd en verzenden, maar wordt niet gewacht execute tot de uitvoering is voltooid. Dit patroon wordt aanbevolen voor het uitvoeren op hardware, omdat u mogelijk even moet wachten tot uw taak is uitgevoerd. Als u een idee wilt krijgen van hoe lang dat kan zijn, kunt u uitvoeren az quantum target list -o table zoals hierboven wordt beschreven. Afhankelijk van de provider die u hebt geselecteerd, ziet u:

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

In de bovenstaande tabellen kunt u zien dat uw taak is verzonden en wacht tot de taak is uitgevoerd. Als u de status wilt controleren, gebruikt u de opdracht en vervangt u de parameter door de id-uitvoer door de az quantum job show job-id vorige opdracht, bijvoorbeeld:

 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   ▐█                      |

Het histogram dat u ontvangt, kan enigszins afwijken van het histogram hierboven, maar u zou moeten zien dat de staten over het algemeen met gelijke frequentie worden waargenomen.

Notitie

Als er een fout is opgetreden tijdens het werken met Azure Quantum, kunt u onze lijst met veelvoorkomende problemen controleren.

Volgende stappen

In deze quickstart werd gedemonstreerd hoe u Q#-programma's kunt uitvoeren op verschillende kwantumcomputingsimulators en QPI's. Zie de overzichtsdocumentatie van de Quantum Computing-provider voor meer informatie over de beschikbare providers.

We raden u aan om uw traject voort te zetten door meer te leren over de verschillende soorten doelen in Azure Quantum,waarmee wordt bepaald welke Q#-programma's u voor een bepaalde provider kunt uitvoeren. Misschien wilt u ook weten hoe u Q#-taken kunt verzenden met Python, Jupyter Notebooks of de Azure CLI.

Zoekt u meer voorbeelden om uit te voeren? Bekijk de map met voorbeelden voor Azure Quantum.

Als u meer wilt weten over het schrijven van Q#-programma's, raadpleegt u de gebruikershandleiding voor de programmeertaal Q#.