Freigeben über


Azure Quantum Jobs-Clientbibliothek für JavaScript – Version 1.0.0-beta.1

Dieses Paket enthält ein isomorphes SDK für QuantumJobClient.

Azure Quantum ist ein Microsoft Azure-Dienst, mit dem Sie Quantencomputing-Programme ausführen oder Optimierungsprobleme in der Cloud lösen können. Mit den Azure Quantum-Tools und -SDKs können Sie Quantenprogramme erstellen und sie gegen verschiedene Quantensimulatoren und -maschinen laufen lassen. Sie können die @azure/quantum-jobs Clientbibliothek für folgende Zwecke verwenden:

Erste Schritte

Dieser Abschnitt enthält alles, was entwickler benötigen, um ihre erste Clientverbindung sehr schnell zu installieren und zu erstellen.

Installieren des Pakets

Installieren Sie die Azure Quantum Jobs-Clientbibliothek für Javascript mit npm:

npm install @azure/quantum-jobs

Voraussetzungen

Authentifizieren des Clients

Um sich beim Dienst zu authentifizieren, können Sie DefaultAzureCredential aus der @azure/identity Bibliothek verwenden. Dadurch werden verschiedene Authentifizierungsmechanismen basierend auf der Umgebung (z. B. Umgebungsvariablen, ManagedIdentity, CachedTokens) ausprobiert und schließlich auf InteractiveBrowserCredential zurückgesetzt.

Der Client ermöglicht es dem Benutzer auch, das oben genannte Verhalten zu überschreiben, indem er seine eigenen Implementierungen von TokenCredential übergeben.

TokenCredential ist der standardauthentifizierungsmechanismus, der von Azure SDKs verwendet wird.

Wichtige Begriffe

QuantumJobClient ist die Stammklasse, die zum Authentifizieren und Erstellen, Aufzählen und Abbrechen von Aufträgen verwendet werden soll.

JobDetails enthält alle Eigenschaften eines Auftrags.

ProviderStatusenthält status Informationen für einen Anbieter.

QuantumJobQuota enthält Kontingenteigenschaften.

Beispiele

Erstellen des Clients

Erstellen Sie eine instance des QuantumJobClient, indem Sie die folgenden Parameter übergeben:

  • Abonnement-ID : sieht wie XXXXXXXX-XXXX-XXXX-XXXX-XXXX-XXXXXXXXXX aus und finden Sie in Ihrer Abonnementliste in Azure.
  • Ressourcengruppenname : Ein Container mit zugehörigen Ressourcen für eine Azure-Lösung
  • Arbeitsbereichsname : Eine Sammlung von Ressourcen, die der Ausführung von Quanten- oder Optimierungsanwendungen zugeordnet sind
  • Standort : Wählen Sie das beste Rechenzentrum nach geografischer Region aus.
  • Speichercontainername : Ihr Blobspeicher
  • Anmeldeinformationen : Werden zur Authentifizierung verwendet
    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"
      }
    );

Abrufen des Container-SAS-URI

Erstellen Sie einen Speichercontainer, um Ihre Daten zu speichern.

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

Hochladen von Eingabedaten

Laden Sie mithilfe des SAS-URI die JSON-Eingabedaten auf den Blobclient hoch. Dies enthält die Parameter, die mit quanteninspirierten Optimierungen verwendet werden sollen.

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

Erstellen des Auftrags

Nachdem Sie Ihre Problemdefinition nun in Azure Storage hochgeladen haben, können jobs.create Sie einen Azure Quantum-Auftrag definieren.

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

Get Job

GetJob ruft einen bestimmten Auftrag anhand seiner ID ab.

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

Aufträge abrufen

Verwenden Sie die jobs.list -Methode, um alle Aufträge im Arbeitsbereich aufzulisten.

    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ächste Schritte

Mitwirken

Weitere Informationen zum Erstellen, Testen und Mitwirken zu dieser Bibliothek finden Sie im CONTRIBUTING.md .

Beiträge und Vorschläge für dieses Projekt sind willkommen. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. Weitere Informationen finden Sie unter cla.microsoft.com.

Für dieses Projekt gelten die Microsoft-Verhaltensregeln für Open Source (Microsoft Open Source Code of Conduct). Weitere Informationen finden Sie in den häufig gestellten Fragen zum Verhaltenskodex. Sie können sich auch an opencode@microsoft.com wenden, wenn Sie weitere Fragen oder Anmerkungen haben.

Problembehandlung

Alle Quantum Jobs-Dienstvorgänge lösen eine RequestFailedException bei Einem Fehler mit hilfreichen ErrorCodes aus. Viele dieser Fehler können wiederhergestellt werden.

Aufrufe