你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

适用于 JavaScript 的 Azure Quantum 作业客户端库 - 版本 1.0.0-beta.1

此包包含 QuantumJobClient 的同构 SDK。

Azure Quantum 是一项 Microsoft Azure 服务,可用于在云中运行量子计算程序或解决优化问题。 使用 Azure Quantum 工具和 SDK,你可以创建量子程序,并针对不同的量子模拟器和计算机运行它们。 可以使用 @azure/quantum-jobs 客户端库来:

入门

本部分包括开发人员 非常快速地安装和创建其第一个客户端连接所需的所有内容。

安装包

使用 npm安装适用于 Javascript 的 Azure Quantum Jobs 客户端库:

npm install @azure/quantum-jobs

先决条件

验证客户端

若要使用服务进行身份验证,可以从库中使用 DefaultAzureCredential@azure/identity。 这将根据环境 (尝试不同的身份验证机制,例如环境变量、ManagedIdentity、CachedTokens) 最后,它将回退到 InteractiveBrowserCredential。

客户端还允许用户通过传递自己的 TokenCredential 实现来替代上述行为。

TokenCredential 是 Azure SDK 使用的默认身份验证机制。

关键概念

QuantumJobClient 是用于进行身份验证以及创建、枚举和取消作业的根类。

JobDetails 包含作业的所有属性。

ProviderStatus 包含提供程序的状态信息。

QuantumJobQuota 包含配额属性。

示例

创建客户端

通过传入以下参数创建 QuantumJobClient 的实例:

  • 订阅 ID - 类似于 XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX,可在 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 Optimizations 配合使用的参数

    // 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 按 ID 检索特定作业。

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

后续步骤

贡献

有关构建、测试和参与此库的详细信息,请参阅 CONTRIBUTING.md

本项目欢迎贡献和建议。 大多数贡献要求你同意贡献者许可协议 (CLA),并声明你有权(并且确实有权)授予我们使用你的贡献的权利。 有关详细信息,请访问 cla.microsoft.com

此项目采用了 Microsoft 开放源代码行为准则。 有关详细信息,请参阅行为准则常见问题解答,或如果有任何其他问题或意见,请与 联系。

故障排除

所有 Quantum 作业服务操作都会在失败时引发 RequestFailedException,并显示有用的 ErrorCode。 其中许多错误是可恢复的。

曝光数