通过


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

排查 Azure Quantum 中的问题

使用 Azure Quantum 服务时,可能会遇到连接或作业相关问题。 本文介绍如何排查这些问题。

工作区连接问题

问题:无法使用 pytket-azure 对Azure Quantum进行身份验证

当您在 CI 环境中尝试使用环境变量 "AZURE_TENANT_ID""AZURE_CLIENT_ID""AZURE_CLIENT_SECRET" 以及 pytket-azure 包对 Azure Quantum 进行身份验证时,可能会遇到以下错误:

Code: InsufficientPermissions
Message: There are not enough permissions to perform this operation.

若要解决此问题,请改用 连接字符串 和环境变量 "AZURE_QUANTUM_CONNECTION_STRING" 进行身份验证。 有关详细信息,请参阅 连接配合连接字符串

connection_string = "" # Add your connection string

import os 

os.environ["AZURE_QUANTUM_CONNECTION_STRING"] = connection_string 

作业提交问题

问题:我找不到想要提交工作的 target

如果要在其中运行作业的 Azure Quantum target 不在可用的 target 列表中,请更新到最新版本的 Quantum 开发工具包 (QDK)Visual Studio Code (VS Code)。 有关详细信息,请参阅 更新 QDK

问题:操作返回无效的状态代码“未授权”

若要解决此问题,请执行以下步骤:

  1. 登录到 Azure 门户并验证帐户。
  2. 转到你想将作业提交到的 Quantum 工作区。
  3. 在工作区导航窗格中,选择“访问控制”(IAM)。
  4. 选择“ 查看我的访问 ”按钮。 此时会打开 “工作分配 ”窗格。
  5. “角色分配”表的“角色”列中,检查你是否具有“所有者”或“参与者”角色。
  6. 如果没有任一角色,请让订阅管理员为此工作区分配 “所有者 ”或 “参与者” 角色。

问题:“授权失败 - 此请求无权执行此操作”

如果即使与Azure Quantum服务建立有效的连接,也会收到此消息,则可以将存储帐户配置为阻止公共网络访问。 Azure Quantum服务仅支持具有公共 Internet 访问权限的存储帐户。

若要检查存储帐户设置,请执行以下步骤:

  1. 登录到 Azure 门户
  2. 进入 Quantum 工作区。
  3. 在“ 概述 ”页中,选择 存储帐户
  4. 在导航窗格中,展开 “安全性 + 网络 ”下拉列表,然后选择“ 网络”。
  5. “公共访问”选项卡的“公用网络访问”部分中,选择“管理”按钮。
  6. 对于 公用网络访问 设置,请选择“ 启用”。 对于 “公共网络访问范围 ”设置,请选择“ 从所有网络启用”。
  7. 选择“保存”按钮。

问题:从Azure CLI提交 Q# 程序时“无法编译程序”

使用 az quantum submit Azure CLI 命令提交作业时,可能会遇到以下错误消息:

az quantum job submit ...
Failed to compile program.
Command ran in 21.181 seconds (init: 0.457, invoke: 20.724)

当 Q# 程序出现问题导致编译失败时,会发生此错误。 确保 Q# 代码具有正确的语法。

问题:编译器错误“门参数数量不正确”

从本地Jupyter Notebook或 CLI 环境将作业提交到 Quantinuum,并且使用的是旧版 QASM(OPENQASM 2.0)翻译,则可能会遇到此错误:

Job ID <jobId> failed or was cancelled with the message: 1000: Compile error: [<file, line>] Wrong number of gate parameters

当逗号 “,” 或其他非句点字符用作小数分隔符时,将发生此错误。 将所有非句号的小数分隔符替换为句号“.”。 例如:

// replace this line:
rx(1,5707963267948966) q[0];

// with this:
rx(1.5707963267948966) q[0];

问题:编译器错误“不适用于当前编译配置”

在 VS Code 中的Jupyter Notebook中运行 Q# 代码单元时,可能会遇到错误:

<function name> not found. Found a matching item `<function name>' that is not available for the current compilation configuration

此错误指示当函数需要target的配置文件时,将 QIR(量子中间表示形式)配置文件设置为 target。 如果未指定target配置文件类型,编译器会自动将它设置为target“不受限制”。

问题:操作返回了无效的状态代码“禁止”

提交第一个 'forbidden' 作业时,可能会收到错误代码。

在Azure门户中创建新工作区并且Azure Quantum无法完成将工作区链接到指定存储帐户的角色分配时,会出现此问题。 在工作区创建完成后关闭选项卡或 Web 浏览器时,可能会发生这种情况。

若要验证是否遇到此角色分配问题,请执行以下步骤:

  1. 转到 Azure 门户中的 Quantum 工作区。
  2. 在“ 概述 ”页中,选择 存储帐户
  3. 在导航窗格中,选择访问控制 (IAM)
  4. 选择 “角色分配 ”选项卡。
  5. “角色 ”列中,检查工作区的存储帐户是否具有 “存储帐户参与者 ”角色和 “存储 Blob 数据参与者 ”角色。

如果工作区的存储帐户缺少这两个角色,请执行以下操作之一:

  • 创建新的工作区,并确保工作区创建在关闭 Web 浏览器窗口或选项卡之前完成。
  • 存储帐户参与者存储 Blob 数据参与者 角色分配给存储帐户上的工作区。

问题:作业失败并出现错误代码:QIRPreProcessingFailed

将作业提交到 Rigetti target 且作业失败时,可能会在 Azure 门户中 Quantum 工作区的 Job 管理控制台中看到以下错误消息:

Error code: QIRPreProcessingFailed
Error message: No match found for output recording set converter from outputrecordingset.v2.labeled to outputrecordingset.v1.nonlabeled

此错误可能是由于与以前版本的 pyqirqiskit-qir 的依赖项冲突引起的。 卸载本地计算机上的 pyqirpyqir-*qiskit-qir 的所有版本,然后使用 qdkazure 额外功能安装或更新 qiskit Python 库:

pip install --upgrade "qdk[azure,qiskit]"

问题:检索有关失败的工作的基本信息

将作业提交到硬件 target时,作业可能在作业失败前数小时或几天处于队列中。

若要检索有关作业失败的详细信息,请执行以下操作之一:

  • 若要查看作业输出或错误消息,请使用 get_results() Python 模块中的 qdk.azure 方法:

    job.get_results()
    
  • 在 Azure 门户中的 Quantum 工作区中,从 Operations 下拉列表转到 Job Management 窗格, 然后选择作业Name打开Job 详细信息窗格。

  • 在 Azure 门户中的 Quantum 工作区中,从 Operations 下拉列表转到 Providers 窗格。 验证硬件target是否可用。 target如果状态为已降级,则作业在队列中停留的时间可能比平时长。 有时作业会被处理,但有时它们会超时并返回target不可用错误。

问题:Azure Quantum以编程方式连接到工作区时要求我进行身份验证

如果您使用的是 Azure Quantum Python SDK,并且使用 AzureQuantumProvider 类连接到工作区,那么每次运行脚本时,可能都会弹出一个窗口,以便对 Azure 进行身份验证。

之所以出现此弹出窗口,是因为每次运行脚本时,安全令牌都会重置。

若要解决此问题,请从Azure CLI运行 az login。 有关详细信息,请参阅 az login

Microsoft Quantum 资源估算器问题

以下问题可能会导致资源估算作业失败。

问题:量子算法必须至少包含一个 T 状态或度量

为了考虑将任意量子程序映射到逻辑量子比特的 2D 数组,资源估算器假定并行合成顺序 Pauli 计算(PSSPC)在输入程序上执行。 在这种方法中,所有 Clifford 操作都通过所有 T 门、旋转门和测量操作进行转换,留下一个可以有效地进行经典评估的 Clifford 操作。 因此,一个不包含 T 状态的量子程序,例如由 T 门、旋转门或测量操作生成的量子程序,不需要任何物理量子计算资源。 有关并行合成顺序 Pauli 计算的详细信息,请参阅 arXiv:2211.07629,附录 D

Error message: Algorithm requires at least one T state or measurement to estimate resources

问题:物理 T 门错误率过高

逻辑 T 状态错误率取决于错误预算和量子程序中的 T 状态数。 T 工厂 用于利用物理 T 门(具有物理 T 门误差率)生成具有所需逻辑 T 状态误差率的 T 状态。 通常,物理 T 门错误率高于所需的逻辑 T 门错误率。 在某些情况下,与所需的逻辑 T 状态误差率相比,物理 T 门误差率明显较高,因此无法发现 T 工厂能够产生足够质量的逻辑 T 状态。

Error message: No T factory can be found, because the required logical T state error rate is too low

要解决此问题,请执行以下操作之一:

  • 增加错误预算,可以是总预算或T状态的部分预算。
  • 减少量子比特参数中的物理 T 门错误率。
  • 通过减少 T 门、旋转门和 Toffoli 门来减少量子程序中的 T 状态数。

问题:物理 T 门错误率过低

当物理 T 门错误率低于所需的逻辑 T 状态错误率时,不需要 T 工厂,因为物理 T 门错误率足够。 但是,仍需要考虑传输单元的影响,这些传输单元将物理 T 状态从代码距离 1 传输到算法的代码距离(请参阅 arXiv:2211.07629,附录 C)。 一般来说,在T工厂的存在下,转移单位的成本是微不足道的。

Error message: No T factory can be found, because the required logical T state error rate is too high; transfer units are necessary to perform a resource estimation accurately. One possibility to circumvent this problem is to increase the physical T gate error rate of the qubit parameters.

要解决此问题,请执行以下操作之一:

  • 将量子比特参数中的物理 T 门错误率提高到所需的逻辑 T 状态错误率。
  • 减少错误预算或仅减少与 T 状态相关的部分。

问题:错误率必须是介于 0 和 1 之间的数字

错误率只能有介于 0 和 1 之间的值。 若要使错误更正有效,入口和度量的物理误差率必须低于一个值,该值取决于错误更正代码的属性和所需的逻辑错误率。

要解决此问题,请执行以下操作之一:

  • 增加错误预算,无论是全部还是部分逻辑错误。
  • 减少量子比特参数中的物理错误率。

问题:最大运行时间和物理量子比特最大数量的限制互不兼容

资源估算器仅接受其中一项 maxDurationmaxPhysicalQubits 约束。 如果为单个任务同时提供maxDurationmaxPhysicalQubits约束,则该任务会返回BothDurationAndPhysicalQubitsProvided错误。

问题:运行 QIR 估计计数容器:未定义的符号 __quantum__rt__result_record_output

使用 qiskit_qir Python 包为 Qiskit 线路生成 QIR 时收到此错误,并且未将 record_output 参数设置为 False

若要避免此错误,请执行以下操作之一:

  • 使用 qdk.azure Python 模块将 Qiskit 线路提交到 Azure Quantum(建议)。
  • 使用 qiskit_qir Python 包时,请在提交线路之前将 record_output 参数设置为 False

Azure Quantum工作区创建问题

在 Azure 门户中创建 Quantum 工作区时,可能会遇到以下问题。

问题:无法在 Azure 门户中访问工作区创建表单,并且系统会要求你改为注册订阅

出现此问题是因为没有活跃的 Azure 订阅。

注册 30 天免费试用版Azure订阅时,可获得免费的Azure额度。 使用所有免费额度或注册后的 30 天后,需要升级到 即用即付订阅才能继续使用Azure Quantum服务。 当您的订阅处于激活状态时,Azure 门户会允许您访问创建工作区的表单。

若要查看订阅和关联角色的列表,请参阅 “检查订阅”。

注意

Azure 30 天免费试用订阅中的额度不可用于量子硬件提供商。

问题:快速创建选项不可用

必须是订阅的 所有者 才能使用 “快速创建 ”选项。 若要查看订阅和关联角色的列表,请参阅 “检查订阅”。 如果你是订阅 参与者,则可以使用 “高级创建 ”选项创建工作区。

问题:无法创建或选择资源组或存储帐户

出现此问题是因为订阅、资源组或存储帐户级别没有所需的授权。 有关所需访问级别的详细信息,请参阅 创建工作区的角色要求。

问题:选择“创建”时出现“部署验证失败”错误消息

此错误消息可能包含更多详细信息,例如“客户端没有执行该操作的授权”。

出现此问题是因为订阅、资源组或存储帐户级别没有所需的授权。 有关所需访问级别的详细信息,请参阅 创建工作区的角色要求。

如果最近被授予访问权限,可能需要刷新页面。 新角色分配最多可能需要一小时才能对堆栈中的缓存权限生效。

问题:在“提供程序”选项卡上看不到特定的量子硬件提供程序

出现此问题的原因是提供商不支持订阅设置的计费区域。 有关提供商列表及其按国家/地区的可用性,请参阅Azure Quantum 提供商的全球可用性

问题:工作区创建或添加/删除提供程序失败,出现“ResourceDeploymentFailure”或“ProviderDeploymentFailure”

此问题可能包括更多详细信息,例如“ResourceDeploymentFailure - 使用终端预配状态”Failed“完成的”AzureAsyncOperationWaiting“资源作,或”ProviderDeploymentFailure - 未能为提供程序创建计划: <提供程序>的名称”。

发生此失败的原因是租户未启用Azure 市场购买。 按照 启用 Azure 市场 购买中的步骤来启用 Azure 市场 的购买。

问题:量子工作区或存储帐户的部署失败

尝试部署 Quantum 工作区或存储帐户时,可能会收到以下错误之一:

  • 工作区:“资源写入操作无法成功完成,因为它达到了终端预配状态”Failed”。
  • 存储帐户:“模板部署因策略冲突而失败”。

如果订阅安全策略阻止创建启用了公共访问权限的存储帐户,则可能会出现此问题。 Azure Quantum服务仅支持具有公共 Internet 访问权限的存储帐户。

若要解决此问题,请与订阅管理员合作,为要使用的存储帐户申请例外。