Delen via


Azure Quantum Jobs-clientbibliotheek voor JavaScript - versie 1.0.0-beta.1

Dit pakket bevat een isomorf-SDK voor QuantumJobClient.

Azure Quantum is een Microsoft Azure-service die u kunt gebruiken om kwantumcomputingprogramma's uit te voeren of optimalisatieproblemen in de cloud op te lossen. Met behulp van de Azure Quantum-hulpprogramma's en SDK's kunt u kwantumprogramma's maken en deze uitvoeren op verschillende kwantumsimulators en -machines. U kunt de clientbibliotheek gebruiken voor het @azure/quantum-jobs volgende:

Aan de slag

Deze sectie bevat alles wat een ontwikkelaar nodig heeft om de eerste clientverbinding zeer snel te installeren en tot stand te brengen.

Het pakket installeren

Installeer de Azure Quantum Jobs-clientbibliotheek voor Javascript met npm:

npm install @azure/quantum-jobs

Vereisten

De client verifiëren

Als u zich wilt verifiëren bij de service, kunt u DefaultAzureCredential gebruiken vanuit de @azure/identity bibliotheek. Dit zal verschillende verificatiemechanismen proberen op basis van de omgeving (bijvoorbeeld Omgevingsvariabelen, ManagedIdentity, CachedTokens) en ten slotte zal het terugvallen op InteractiveBrowserCredential.

De client staat de gebruiker ook toe om het bovenstaande gedrag te overschrijven door hun eigen implementaties van de TokenCredential door te geven.

TokenCredential is het standaardverificatiemechanisme dat wordt gebruikt door Azure SDK's.

Belangrijkste concepten

QuantumJobClient is de hoofdklasse die moet worden gebruikt om taken te verifiëren en te maken, op te sommen en te annuleren.

JobDetails bevat alle eigenschappen van een taak.

ProviderStatus bevat statusinformatie voor een provider.

QuantumJobQuota bevat quotumeigenschappen.

Voorbeelden

De client maken

Maak een exemplaar van de QuantumJobClient door deze parameters door te geven:

  • Abonnements-id : ziet eruit als XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXX en is te vinden in uw lijst met abonnementen op Azure
  • Naam van resourcegroep : een container met gerelateerde resources voor een Azure-oplossing
  • Werkruimtenaam : een verzameling assets die zijn gekoppeld aan het uitvoeren van kwantum- of optimalisatietoepassingen
  • Locatie : kies het beste datacenter per geografische regio
  • Naam van opslagcontainer - uw blobopslag
  • Referentie - gebruikt voor verificatie
    const credential = new DefaultAzureCredential();

    // Create a QuantumJobClient
    const subscriptionId = "your_subscription_id";
    const resourceGroupName = "your_resource_group_name";
    const workspaceName = "your_quantum_workspace_name";
    const storageContainerName = "mycontainer";
    const location = "westus"; //"your_location";
    const endpoint = "https://" + location + ".quantum.azure.com";

    const quantumJobClient = new QuantumJobClient(
      credential,
      subscriptionId,
      resourceGroupName,
      workspaceName,
      {
        endpoint: endpoint,
        credentialScopes: "https://quantum.microsoft.com/.default"
      }
    );

Sas-URI voor containers ophalen

Maak een opslagcontainer om uw gegevens op te slaan.

    // Get container Uri with SAS key
    const containerUri = (
      await quantumJobClient.storage.sasUri({
        containerName: storageContainerName
      })
    ).sasUri;

    // Create container if not exists
    const containerClient = new ContainerClient(containerUri);
    await containerClient.createIfNotExists();

Invoergegevens uploaden

Upload de json-invoergegevens met behulp van de SAS-URI naar de blob-client. Dit bevat de parameters die moeten worden gebruikt met door Quantum geïnspireerde optimalisaties

    // Get input data blob Uri with SAS key
    const blobName = "myjobinput.json";
    const inputDataUri = (
      await quantumJobClient.storage.sasUri({
        containerName: storageContainerName,
        blobName: blobName
      })
    ).sasUri;

    // Upload input data to blob
    const blobClient = new BlockBlobClient(inputDataUri);
    const problemFilename = "problem.json";
    const fileContent = fs.readFileSync(problemFilename, "utf8");
    await blobClient.upload(fileContent, Buffer.byteLength(fileContent));

De taak maken

Nu u de probleemdefinitie hebt geüpload naar Azure Storage, kunt u gebruiken jobs.create om een Azure Quantum-taak te definiëren.

    const randomId = `${Math.floor(Math.random() * 10000 + 1)}`;

    // Submit job
    const jobId = `job-${randomId}`;
    const jobName = `jobName-${randomId}`;
    const inputDataFormat = "microsoft.qio.v2";
    const outputDataFormat = "microsoft.qio-results.v2";
    const providerId = "microsoft";
    const target = "microsoft.paralleltempering-parameterfree.cpu";
    const createJobDetails = {
      containerUri: containerUri,
      inputDataFormat: inputDataFormat,
      providerId: providerId,
      target: target,
      id: jobId,
      inputDataUri: inputDataUri,
      name: jobName,
      outputDataFormat: outputDataFormat
    };
    const createdJob = await quantumJobClient.jobs.create(jobId, createJobDetails);

Taak ophalen

GetJob haalt een specifieke taak op met de bijbehorende id.

    // Get the job that we've just created based on its jobId
    const myJob = await quantumJobClient.jobs.get(jobId);

Taken ophalen

Gebruik de methode om alle taken in de werkruimte op te jobs.list sommen.

    let jobListResult = await quantumJobClient.jobs.list();
    let listOfJobs = await jobListResult.next();
    while (!listOfJobs.done) {
      let job = listOfJobs.value;
      console.log(`  ${job.name}`);
      listOfJobs = await jobListResult.next();
    }

Volgende stappen

Bijdragen

Zie de CONTRIBUTING.md voor meer informatie over het bouwen, testen en bijdragen aan deze bibliotheek.

Wij verwelkomen bijdragen en suggesties voor dit project. Voor de meeste bijdragen moet u instemmen met een licentieovereenkomst voor bijdragers (CLA: Contributor License Agreement) waarin u verklaart dat u gerechtigd bent ons het recht te geven uw bijdrage te gebruiken, en dat u dit ook doet. Ga naar cla.microsoft.com voor meer informatie.

Op dit project is de Microsoft Open Source Code of Conduct (Microsoft Open Source-gedragscode) van toepassing. Zie de Veelgestelde vragen over de gedragscode voor meer informatie of neem contact op opencode@microsoft.com met eventuele aanvullende vragen of opmerkingen.

Problemen oplossen

Alle bewerkingen van de Quantum-takenservice genereren een RequestFailedException bij een fout met nuttige Foutcodes. Veel van deze fouten kunnen worden hersteld.

Weergaven