Condividi tramite


Libreria client di Processi di Azure Quantum per JavaScript - versione 1.0.0-beta.1

Questo pacchetto contiene un SDK isomorfico per QuantumJobClient.

Azure Quantum è un servizio di Microsoft Azure che può essere usato per eseguire programmi per il calcolo quantistico o risolvere problemi di ottimizzazione sul cloud. Usando gli strumenti e gli SDK di Azure Quantum, è possibile creare programmi quantistici ed eseguirli in diversi simulatori quantistici e computer. È possibile usare la @azure/quantum-jobs libreria client per:

Guida introduttiva

Questa sezione include tutto ciò che uno sviluppatore deve installare e creare la prima connessione client molto rapidamente.

Installare il pacchetto

Installare la libreria client di Processi di Azure Quantum per Javascript con npm:

npm install @azure/quantum-jobs

Prerequisiti

Autenticare il client

Per eseguire l'autenticazione con il servizio, è possibile usare DefaultAzureCredential dalla @azure/identity libreria. In questo modo si proveranno meccanismi di autenticazione diversi in base all'ambiente (ad esempio, variabili di ambiente, ManagedIdentity, CachedTokens) e infine eseguirà il fallback a InteractiveBrowserCredential.

Il client consente inoltre all'utente di eseguire l'override del comportamento precedente passando le proprie implementazioni di TokenCredential.

TokenCredential è il meccanismo di autenticazione predefinito usato dagli SDK di Azure.

Concetti chiave

QuantumJobClient è la classe radice da usare per autenticare e creare, enumerare e annullare i processi.

JobDetails contiene tutte le proprietà di un processo.

ProviderStatus contiene informazioni sullo stato per un provider.

QuantumJobQuota contiene le proprietà della quota.

Esempio

Creare il client

Creare un'istanza di QuantumJobClient passando questi parametri:

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

Ottenere l'URI di firma di accesso condiviso del contenitore

Creare un contenitore di archiviazione per inserire i dati.

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

Caricare i dati di input

Usando l'URI di firma di accesso condiviso, caricare i dati di input JSON nel client BLOB. Contiene i parametri da usare con le ottimizzazioni di ispirazione quantistica

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

Creare il processo

Dopo aver caricato la definizione del problema in Archiviazione di Azure, è possibile usare jobs.create per definire un processo di 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);

Get Job

GetJob recupera un processo specifico in base al relativo ID.

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

Ottenere processi

Per enumerare tutti i processi nell'area di lavoro, usare il jobs.list metodo .

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

Passaggi successivi

Contributo

Per informazioni dettagliate sulla compilazione, il test e il contributo a questa libreria, vedere la CONTRIBUTING.md .

In questo progetto sono benvenuti i contributi e i suggerimenti. Per la maggior parte dei contenuti è necessario sottoscrivere un contratto di licenza di collaborazione (CLA, Contributor License Agreement) che stabilisce che l'utente ha il diritto di concedere, e di fatto concede a Microsoft i diritti d'uso del suo contributo. Per informazioni dettagliate, visitare cla.microsoft.com.

Questo progetto ha adottato il Codice di comportamento di Microsoft per l'open source. Per altre informazioni, vedere Code of Conduct FAQ (Domande frequenti sul Codice di comportamento Open Source di Microsoft) oppure contattare opencode@microsoft.com per eventuali altre domande o commenti.

Risoluzione dei problemi

Tutte le operazioni del servizio Processi quantistici genereranno un'eccezione RequestFailedException in caso di errore con codici di errore utili. Molti di questi errori sono ripristinabili.

Impression