共用方式為


適用于 JavaScript 的 Azure Quantum Jobs 用戶端程式庫 - 1.0.0-Beta.1 版

此套件包含適用于 QuantumJobClient 的同型 SDK。

Azure Quantum 是可用來執行量子運算程式,或解決雲端最佳化問題的 Microsoft Azure 服務。 您可以使用 Azure Quantum 工具和 SDK 來建立量副程式,並針對不同的量子模擬器和機器執行它們。 您可以使用 @azure/quantum-jobs 用戶端程式庫來:

開始使用

本節包含開發人員 安裝並快速建立其第一個用戶端連線所需的所有專案。

安裝套件

使用 安裝適用于 JAVAscript npm 的 Azure Quantum Jobs 用戶端程式庫:

npm install @azure/quantum-jobs

必要條件

驗證用戶端

若要向服務進行驗證,您可以從程式庫使用 DefaultAzureCredential@azure/identity 。 這會根據環境嘗試不同的驗證機制 (例如環境變數、ManagedIdentity、CachedTokens) ,最後,它會回復為 InteractiveBrowserCredential。

用戶端也允許使用者透過傳遞自己的 TokenCredential實作來覆寫上述行為。

TokenCredential 是 Azure SDK 所使用的預設驗證機制。

重要概念

QuantumJobClient 是用來驗證、建立、列舉和取消作業的根類別。

JobDetails 包含作業的所有屬性。

ProviderStatus 包含提供者的狀態資訊。

QuantumJobQuota 包含配額屬性。

範例

建立用戶端

傳入下列參數,以建立 QuantumJobClient 的實例:

  • 用帳戶識別碼 - 看起來像 XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXXXX,您可以在 Azure 上的訂用帳戶清單中找到
  • 資源組名 - 保留 Azure 解決方案相關資源的容器
  • 工作區名稱 - 與執行量子或優化應用程式相關聯的資產集合
  • 位置 - 依地理區域選擇最佳資料中心
  • 儲存體容器名稱 - 您的 Blob 儲存體
  • 認證 - 用來驗證
    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

建立儲存體容器來放置您的資料。

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

上傳輸入資料

使用 SAS URI,將 json 輸入資料上傳至 Blob 用戶端。 這包括要與Quantum Inspired Optimization搭配使用的參數

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

建立作業

既然您已將問題定義上傳至 Azure 儲存體,您可以使用 jobs.create 來定義 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);

取得工作

GetJob 依識別碼擷取特定作業。

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

取得作業

若要列舉工作區中的所有作業,請使用 jobs.list 方法。

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

下一步

  • 請流覽我們的 產品檔 以深入瞭解 Azure Quantum。

參與

如需建 、測試和參與此程式庫的詳細資訊,請參閱 CONTRIBUTING.md。

此專案歡迎參與和提供建議。 大部分的參與都要求您同意「參與者授權合約 (CLA)」,宣告您有權且確實授與我們使用投稿的權利。 如需詳細資訊,請造訪 cla.microsoft.com

此專案採用 Microsoft Open Source Code of Conduct (Microsoft 開放原始碼管理辦法)。 如需詳細資訊,請參閱管理辦法常見問題集,如有任何其他問題或意見請連絡 opencode@microsoft.com

疑難排解

所有 Quantum 作業服務作業都會在失敗時擲回 RequestFailedException,並提供實用的 ErrorCodes。 這些錯誤有許多是可復原的。

曝光數