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

Azure Quantum 故障排除

使用 Azure Quantum 服务时,可能会遇到这些常见问题。 了解如何解决这些问题。

正在提交作业

问题:缺少 targets

target如果可用target列表中缺少运行作业的位置,则可能需要更新到最新版本的 Quantum Development Kit Visual Studio Code。 有关详细信息,请参阅 更新 QDK

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

解决此问题的步骤:

  1. 打开 Azure 门户 (https://portal.azure.com) 并对你的帐户进行身份验证。

  2. “导航”下,选择“ 订阅 ”,然后选择你的订阅。

  3. 选择“访问控制 (IAM)”。

  4. 在“检查访问权限”下,搜索电子邮件地址并选择帐户。

  5. 不应看到列出 “所有者”“参与者” 角色。

  6. 选择“角色分配”选项卡。

    注意

    如果看不到“角色分配”选项卡,可能需要将门户展开为全屏模式或关闭“<your name> 分配”窗格。

  7. 选择 “角色 ”下拉列表,选择“ 所有者 ”或 “参与者”,然后输入电子邮件地址并选择帐户。

  8. 选择“保存” 。

  9. 现在应会看到配置了“所有者”或“参与者”角色的帐户集 。

  10. 重新创建 Azure Quantum 工作区,然后针对这个新的工作区提交作业。

问题:尝试通过 CLI 提交 Q# 程序时出现“无法编译程序”

尝试在命令提示符处使用 az quantum submit 命令提交作业时,可能会遇到以下错误消息:

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

当 Q# 程序出现问题导致编译失败时,会发生此错误。

问题:编译器错误“门参数数错误”

从本地Jupyter Notebook或命令行环境将作业提交到 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];

注意

此问题不会出现在 Azure Quantum 门户的托管笔记本中,而只会在本地开发环境中发生。

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

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

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

此错误指示 QIR target 配置文件设置为 Basic ,并且有问题的函数需要 Unrestrictedtarget 配置文件。 将 target 配置文件设置为 “不受限制”:

  1. 在 VS Code 中的 Q# 程序中,选择底部状态栏上的 Q#: QIR
  2. 从顶部状态栏中显示的选项中,选择“ Q#: 不受限制”。

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

提交第一个作业时,可能会收到“禁止”错误代码。

在创建工作区时出现此问题的原因可能如下:Azure Quantum 未能完成角色分配,无法将新工作区链接到指定的存储帐户。 典型的场景:如果在工作区创建完成之前关闭了选项卡或 Web 浏览器窗口,就会发生这种情况。

可以按照以下步骤验证是否遇到了此角色分配问题:

  • 在 Azure 门户中导航到新的 Quantum 工作区
  • “概述>Essentials>存储帐户”下,选择存储帐户链接
  • 在左侧导航栏中,选择“访问控制(标识和访问管理)”
  • 选择“角色分配”
  • 验证你的工作区是否显示为“参与者”
  • 如果工作区未显示为 参与者 ,你可以:
    • 在关闭 Web 浏览器标签页或窗口之前,创建新的工作区,并确保等待工作区创建完成。
    • 在存储帐户下添加适当的角色分配
      • “访问控制 (IAM)”>“添加角色分配”
      • “角色”>“参与者”
      • “分配访问权限至”>“用户、组或服务主体”
      • “选择”>“[工作区名称]”
      • 保存

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

将作业提交到 Rigetti 提供程序时,作业会失败,并在作业管理控制台Azure 门户中报告:

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 的所有版本,然后使用 [qiskit] 参数安装或更新 azure-quantum Python 包:

pip install --upgrade azure-quantum[qiskit]

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

将作业提交到硬件 target后,作业可能会在队列中停留数小时,甚至一两天,然后才会失败。

若要检索有关失败的详细信息,请执行以下命令:

  • get_results()将 方法与作业对象一起使用,以查看输出或返回的错误消息:
job.get_results()
  • 在 Azure 门户工作区中,选择“ 操作 > 作业管理”,然后选择作业 名称 以打开详细信息窗格。
  • 在 Azure 门户工作区中,selecd 操作 > 提供程序。 验证计算机的可用性 target 。 提交到 targets 状态为 “已降级 ”的作业在队列中的停留时间可能比平常长。 有时作业会得到处理,但有时它们会超时并返回不可用的错误target

问题:以编程方式连接到工作区时,系统一直要求我进行身份验证

如果在 Jupyter 笔记本中使用 Azure Quantum Python SDK ((例如) ),并且使用 AzureQuantumProvider 类连接到工作区,则每次运行脚本时,都可能会遇到一个弹出窗口来向 Azure 进行身份验证。

发生这种情况是因为每次运行脚本时都会重置安全令牌。

可以使用 Azure CLI 运行 az login 来解决此问题。 有关详细信息,请参阅 az login

问题:更新 azure-quantum 包后,监视作业时收到错误“ModuleNotFoundError:没有名为 qiskit.tools 的模块”

从 Qiskit 1.0 开始, qiskit.tools 函数所需的 job_monitor() 模块已弃用。 若要监视作业,请使用 wait_for_final_state()result 函数。

job = MyTarget.run(circuit, shots=100)

# to wait until the job is complete
job.wait_for_final_state() 

# to return the results of the job
result = job.result()

Azure Quantum 资源估算器

以下常见方案可能会阻止资源估算作业完成。 请参阅如何解决这些问题。

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

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

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 之间的值。 此外,为使纠错有效,入口和度量的物理误差率必须低于一个值,该值取决于纠错码的属性和所需的逻辑错误率。

下面是在此类方案中可以执行的操作:

  • 增加错误预算,增加总错误或逻辑错误的部分。
  • 降低量子比特参数中的物理错误率。

问题:约束最大运行时数和最大物理量子比特数互斥

资源估算器当时仅接受 或 maxPhysicalQubits 约束之maxDuration一,但不接受两个约束。 如果为单个作业同时提供 maxDurationmaxPhysicalQubits约束,则返回 BothDurationAndPhysicalQubitsProvided 错误。

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

此错误是由于通过 qiskit_qir Python 包为 Qiskit 线路生成 QIR 而未将 record_output 参数设置为 False

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

  • 使用 azure_quantum Python 包将 Qiskit 线路提交到 Azure Quantum (推荐) 。
  • 使用 qiskit_qir Python 包时,请务必在提交线路之前将 record_output 参数设置为 False

创建 Azure Quantum 工作区

使用Azure 门户创建工作区时,可能会出现以下问题。

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

出现此问题的原因是没有活动订阅。

例如,你可能已注册了 30 天免费试用 Azure 订阅,其中包括 200 美元 (美元) Azure 服务使用的免费 Azure 额度。 请注意,这些 Azure 额度与 Azure Quantum 额度 不同,没有资格在量子硬件提供商上使用。 注册 30 天后或已使用 200 美元的免费 Azure 额度 () , 必须 升级到 即用即付订阅 才能继续使用 Azure Quantum 服务。 拥有活动订阅后,Azure 门户将允许你访问工作区创建表单。

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

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

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

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

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

问题:选择“部署验证失败”错误消息后出现Create

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

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

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

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

出现此问题的原因是提供程序不支持设置订阅的计费区域。 例如,如果你的订阅是在以色列设置的,则“提供商”选项卡不会将 Rigetti 列为可用提供商。 有关按国家/地区列出的提供程序及其可用性的列表,请参阅 Azure Quantum 提供程序的全球可用性

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

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

发生这种情况的原因是租户未启用Azure 市场购买。 按照启用Azure 市场购买中的步骤启用Azure 市场购买。

Azure Quantum 门户

问题:保存的笔记本无法加载

在工作区中选择 “笔记本 ”后,保存的笔记本列表将显示进度栏,但永远不会加载。

发生这种情况的原因有两个:

  1. 如果存储帐户不再存在,则为 。 如果已删除链接到工作区的存储帐户,则可能会发生这种情况。 若要验证,请选择工作区的“ 概述 ”页,然后选择指向存储帐户的链接。 如果存储帐户已被删除,则会看到 “404 - 找不到” 错误。

  2. 如果工作区的托管标识不是存储帐户的 参与者 。 检查使用与工作区同名的工作区标识 () 是否仍具有对存储帐户的 参与者 角色分配。 若要验证,请选择工作区的“ 概述 ”页,然后选择指向存储帐户的链接。 在存储帐户的“ 概述 ”页上,选择“ 访问控制 (IAM) ”,并验证工作区是否在 “参与者”下列出。