Share via


Azure Quantum Jobs-klientbibliotek för JavaScript – version 1.0.0-beta.1

Det här paketet innehåller en isomorf SDK för QuantumJobClient.

Azure Quantum är en Microsoft Azure-tjänst som du kan använda för att köra kvantberäkningsprogram eller lösa optimeringsproblem i molnet. Med hjälp av Azure Quantum-verktyg och SDK:er kan du skapa kvantprogram och köra dem mot olika kvantsimulatorer och datorer. Du kan använda @azure/quantum-jobs klientbiblioteket för att:

Komma igång

Det här avsnittet innehåller allt som en utvecklare behöver för att installera och skapa sin första klientanslutning mycket snabbt.

Installera paketet

Installera Azure Quantum Jobs-klientbiblioteket för Javascript med npm:

npm install @azure/quantum-jobs

Förutsättningar

Autentisera klienten

Om du vill autentisera med tjänsten kan du använda DefaultAzureCredential från @azure/identity biblioteket. Då provas olika autentiseringsmekanismer baserat på miljön (t.ex. miljövariabler, ManagedIdentity, CachedTokens) och slutligen återgår det till InteractiveBrowserCredential.

Klienten tillåter också att användaren åsidosätter ovanstående beteende genom att skicka sina egna implementeringar av TokenCredential.

TokenCredential är standardmetoden för autentisering som används av Azure SDK:er.

Viktiga begrepp

QuantumJobClient är den rotklass som ska användas för att autentisera, skapa, räkna upp och avbryta jobb.

JobDetails innehåller alla egenskaper för ett jobb.

ProviderStatus innehåller statusinformation för en provider.

QuantumJobQuota innehåller kvotegenskaper.

Exempel

Skapa klienten

Skapa en instans av QuantumJobClient genom att skicka in följande parametrar:

    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"
      }
    );

Hämta CONTAINER SAS-URI

Skapa en lagringscontainer för att placera dina data.

    // 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();

Ladda upp indata

Använd SAS-URI:n och ladda upp json-indata till blobklienten. Detta innehåller de parametrar som ska användas med kvantinspirerade optimeringar

    // 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));

Skapa jobbet

Nu när du har laddat upp din problemdefinition till Azure Storage kan du använda jobs.create för att definiera ett Azure Quantum-jobb.

    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);

Hämta jobb

GetJob hämtar ett visst jobb med sitt ID.

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

Hämta jobb

Om du vill räkna upp alla jobb på arbetsytan använder du jobs.list metoden .

    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();
    }

Nästa steg

Bidra

Mer information om hur du skapar, testar och bidrar till det här biblioteket finns i CONTRIBUTING.md .

Det här projektet välkomnar bidrag och förslag. Merparten av bidragen kräver att du godkänner ett licensavtal för bidrag, där du deklarerar att du har behörighet att bevilja oss rättigheten att använda ditt bidrag, och att du dessutom uttryckligen gör så. Mer information finns i cla.microsoft.com.

Det här projektet använder sig av Microsofts uppförandekod för öppen källkod. Mer information finns i Vanliga frågor och svar om uppförandekod eller kontakt opencode@microsoft.com med ytterligare frågor eller kommentarer.

Felsökning

Alla Quantum Jobs-tjänståtgärder genererar en RequestFailedException om fel med användbara ErrorCodes. Många av dessa fel kan återställas.

Visningar