Partager via


Bibliothèque cliente de travaux Azure Quantum pour JavaScript - version 1.0.0-beta.1

Ce package contient un KIT de développement logiciel (SDK) isomorphe pour QuantumJobClient.

Azure Quantum est un service Microsoft Azure que vous pouvez utiliser pour exécuter des programmes d’informatique quantique ou résoudre des problèmes d’optimisation dans le cloud. À l’aide des outils et kits SDK Azure Quantum, vous pouvez créer des programmes quantiques et les exécuter sur différents simulateurs et ordinateurs quantiques. Vous pouvez utiliser la @azure/quantum-jobs bibliothèque cliente pour :

Prise en main

Cette section inclut tout ce dont un développeur a besoin pour installer et créer sa première connexion cliente très rapidement.

Installer le package

Installez la bibliothèque de client Travaux Azure Quantum pour Javascript avec npm:

npm install @azure/quantum-jobs

Prérequis

Authentifier le client

Pour vous authentifier auprès du service, vous pouvez utiliser DefaultAzureCredential à partir de la @azure/identity bibliothèque. Cela va essayer différents mécanismes d’authentification en fonction de l’environnement (par exemple, Variables d’environnement, ManagedIdentity, CachedTokens) et enfin, il sera de secours vers InteractiveBrowserCredential.

Le client permet également à l’utilisateur de remplacer le comportement ci-dessus en passant ses propres implémentations de TokenCredential.

TokenCredential est le mécanisme d’authentification par défaut utilisé par les sdk Azure.

Concepts clés

QuantumJobClient est la classe racine à utiliser pour authentifier et créer, énumérer et annuler des travaux.

JobDetails contient toutes les propriétés d’un travail.

ProviderStatuscontient status informations pour un fournisseur.

QuantumJobQuota contient des propriétés de quota.

Exemples

Création du client

Créez un instance de QuantumJobClient en transmettant ces paramètres :

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

Obtenir l’URI SAS du conteneur

Créez un conteneur de stockage pour placer vos données.

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

Charger des données d’entrée

À l’aide de l’URI SAS, chargez les données d’entrée json sur le client blob. Contient les paramètres à utiliser avec les optimisations inspirées quantiques

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

Créer le travail

Maintenant que vous avez chargé votre définition de problème dans stockage Azure, vous pouvez utiliser jobs.create pour définir un travail Azure Quantum.

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

Obtention de travail

GetJob récupère un travail spécifique par son ID.

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

Obtenir les travaux

Pour énumérer tous les travaux de l’espace de travail, utilisez la jobs.list méthode .

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

Étapes suivantes

Contribution

Consultez la CONTRIBUTING.md pour plus d’informations sur la création, le test et la contribution à cette bibliothèque.

Ce projet accepte les contributions et les suggestions. La plupart des contributions vous demandent d’accepter un contrat de licence de contribution (CLA) déclarant que vous avez le droit de nous accorder, et que vous nous accordez réellement, les droits d’utilisation de votre contribution. Pour plus d’informations, visitez cla.microsoft.com.

Ce projet a adopté le Code de conduite Open Source de Microsoft. Pour plus d’informations, consultez les Questions fréquentes (FAQ) sur le code de conduite ou envoyez vos questions ou vos commentaires à opencode@microsoft.com.

Résolution des problèmes

Toutes les opérations de service de travaux quantiques lèvent une exception RequestFailedException en cas d’échec avec des ErrorCodes utiles. La plupart de ces erreurs peuvent être récupérées.

Impressions