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

如何在 Azure Quantum 中管理配额

Azure Quantum 配额是提供程序定义的 QCPU targets使用情况限制。 配额有助于防止用户的意外成本超额,同时保留提供程序系统的完整性。 配额基于提供商计划选择,通常可以通过支持票证增加。
配额跟踪的使用量不一定与成本或额度相关,但有可能是关联的。

提示

首次用户会自动获得 500 美元的免费 Azure Quantum 信用额度 ,以便与每个参与的量子硬件提供商一起使用。

配额是如何计算的

在 Azure Quantum 中,硬件和软件提供商会定义并控制其产品/服务的配额。 有关详细的配额信息,请参阅每个提供程序参考页。 如果提供程序未显示在以下列表中,则该提供程序不定义任何配额。

查看剩余配额

Azure Quantum 使用量和配额是根据每家提供商的使用单位来度量的。 某些提供程序未定义任何配额,并且不会显示使用情况信息。

注意

如果使用的是 Azure Quantum 额度计划而不是计费计划,则配额信息将映射到分配的额度。 在这种情况下,配额会列出你已收到的额度总数。

使用 Azure 门户 跟踪配额

  1. 使用 Azure 订阅的凭据登录到 Azure 门户
  2. 选择你的 Azure Quantum 工作区
  3. 在左侧面板中的“操作”下,转到“额度和配额”选项卡,然后选择“配额”边栏选项卡。
  4. 请参阅每个所选提供程序的已使用配额和剩余配额。 请注意,配额信息显示在三列中。
  • 工作区使用量:当前工作区的使用量限制。 每个 Azure Quantum 工作区都有使用限制。
  • Azure 订阅使用量:当前区域和订阅中所有工作区的使用量。 并非所有配额都在此级别进行跟踪。
  • 间隔:续订配额的周期。 如果间隔为按月,则在每月 1 日重置使用量。 如果间隔为一次性,则永远不会重置使用量。

Azure 门户中配额边栏选项卡的屏幕截图。

在此视图中,Azure Quantum 额度是作为配额包含的。 这样,用户就可以查看以提供商跟踪的单位和关联的间隔表示的额度信息。

使用 Azure CLI 跟踪配额

可以使用 Azure 命令行接口 (Azure CLI) 查看配额。 有关详细信息,请参阅如何使用 Azure CLI 管理量子工作区

  1. 安装 Azure CLI quantum 扩展。 打开一个命令提示符并运行以下命令,如果已经安装了旧版本,这也会升级该扩展。

    az extension add --upgrade -n quantum
    
  2. 使用凭据登录到 Azure。 你将看到与你帐户关联的订阅列表。

    az login
    
  3. 指定要使用的订阅

    az account set -s <Your subscription ID>
    
  4. 选择要使用的工作区。 请注意,还需要指定资源组和位置。

    az quantum workspace set \
        -g MyResourceGroup \
        -w MyWorkspace \
        -l MyLocation \
        -o table
    
  5. 使用 az quantum workspace quotas 命令显示所选工作区的配额信息

    az quantum workspace quotas -o table
    
    |Dimension | Holds | Limit   |   Period |   ProviderId | Scope | Utilization|
    |--------- | ----- | --------- | -------- | ----------|  ------------ | -----------|
    |qgs      |  0.0  |  8333334.0 | Infinite | ionq      |  Subscription | 33334.0|
    |hqc      |  0.0  |  800.0     | Infinite | quantinuum  | Subscription | 0.0|
    

请参阅上面的示例输出。 在本例中,qgs 行显示该帐户的 IonQ 限制为 8333334 qgs 个,已使用 33334 qgs 个。 此外,该帐户的 Quantinuum HQC 数限制为 800 个,已使用 0 个。

“范围”列表明了配额指的是当前工作区还是订阅。

  • 工作区:跟踪单个工作区的配额
  • 订阅:跟踪同一订阅/区域中所有工作区的总配额

“周期”列指示续订配额的周期。

  • 按月:在每月 1 日重置使用量
  • 无限:使用永远不会重置(也称为Azure 门户视图中的一次性)。

使用 Python SDK 跟踪配额

  1. 安装最新版本的 azure-quantum Python 包

  2. 打开新的 Python 文件。 实例化一个 Workspace 对象,通过该对象可连接到之前在 Azure 中部署的工作区

    from azure.quantum import Workspace
    
    # Copy the following settings for your workspace
    workspace = Workspace ( 
      resource_id = "", # Add your resource_id 
      location = ""  # Add your workspace location (for example, "westus") 
    )
    
  3. 使用 get_quotas 方法显示所选工作区的配额信息。

    quotas = workspace.get_quotas() 
    
    [{'dimension': 'qgs', 'scope': 'Subscription', 'provider_id': 'ionq', 'utilization': 33334.0, 'holds': 0.0, 'limit': 16666667.0, 'period': 'Infinite'}, 
    
     {'dimension': 'hqc', 'scope': 'Subscription', 'provider_id': 'quantinuum', 'utilization': 0.0, 'holds': 0.0, 'limit': 40.0, 'period': 'Infinite'}, 
    
     {'dimension': 'ehqc', 'scope': 'Subscription', 'provider_id': 'quantinuum', 'utilization': 0.0, 'holds': 0.0, 'limit': 160.0, 'period': 'Infinite'}, 
    
     {'dimension': 'combined_job_hours', 'scope': 'Workspace', 'provider_id': 'Microsoft', 'utilization': 0.0, 'holds': 0.0, 'limit': 20.0, 'period': 'Monthly'}, 
    
     {'dimension': 'combined_job_hours', 'scope': 'Subscription', 'provider_id': 'Microsoft', 'utilization': 0.011701412083333333, 'holds': 0.0, 'limit': 1000.0, 'period': 'Monthly'}]
    

请参阅上面的示例输出。 在本例中,qgs 行显示该帐户的 IonQ 限制为 8333334 qgs 个,已使用 33334 qgs 个。 并发作业数是每次可为每个工作区排队的作业数。

该项 scope 指示配额是引用当前工作区还是订阅。

  • 工作区:跟踪单个工作区的配额
  • 订阅:跟踪同一订阅/区域中所有工作区的总配额

该项 period 指示续订配额的时间段。

  • 按月:在每月 1 日重置使用量
  • 无限:使用永远不会重置(也称为Azure 门户视图中的一次性)。

提示

该方法 get_quotas 以 Python 字典的形式返回结果。 对于更易于阅读的格式,请使用以下代码示例打印订阅和工作区级别的剩余配额摘要 > 。

复制以下代码以跟踪订阅级别的配额

# This gathers usage against quota for the various providers (quota is set at the subscription level).
# Note that a provider may have multiple quotas, such as Quantinuum that limits usage of their Emulator.

rigetti_quota = 0
ionq_quota = 0
quantinuum_hqc_quota = 0
quantinuum_ehqc_quota = 0

rigetti_quota_utilization = 0
ionq_quota_utilization = 0
quantinuum_hqc_quota_utilization = 0
quantinuum_ehqc_quota_utilization = 0

for quota in workspace.get_quotas():
    if (quota['provider_id'] == 'rigetti'):
        rigetti_quota = quota['limit']
        rigetti_quota_utilization = quota['utilization']
    if (quota['provider_id'] == 'ionq'):
        ionq_quota = quota['limit']
        ionq_quota_utilization = quota['utilization']
    if (quota['dimension'] == 'hqc'):
        quantinuum_hqc_quota = quota['limit']
        quantinuum_hqc_quota_utilization = quota['utilization']
    if (quota['dimension'] == 'ehqc'):
        quantinuum_ehqc_quota = quota['limit']
        quantinuum_ehqc_quota_utilization = quota['utilization']

print('Rigetti quota use: ', "{:,}".format(rigetti_quota_utilization), '/', "{:,}".format(rigetti_quota))
print('IonQ quota use:', "{:,}".format(ionq_quota_utilization), '/', "{:,}".format(ionq_quota))
print('Quantinuum HQC quota use:', "{:,}".format(quantinuum_hqc_quota_utilization), '/', "{:,}".format(quantinuum_hqc_quota))
print('Quantinuum eHQC quota use:', "{:,}".format(quantinuum_ehqc_quota_utilization), '/', "{:,}".format(quantinuum_ehqc_quota))

复制以下代码以跟踪工作区级别的配额

# This gathers usage against quota for the various providers for the current workspace
# As there can be multiple workspaces in a subscription, the quota usage for the workspace is less or equal to usage against quota at the subscription level

amount_utilized_rigetti = 0
amount_utilized_ionq = 0
amount_utilized_quantinuum_hqc = 0
amount_utilized_quantinuum_ehqc = 0

for job in workspace.list_jobs():
    if (job.details.cost_estimate != None):
        for event in job.details.cost_estimate.events:
            if (event.amount_consumed > 0):
                #print(event.amount_consumed, event.dimension_name, 'on', job.details.provider_id)
                if (job.details.provider_id == 'rigetti'):
                    amount_utilized_rigetti += event.amount_consumed
                if (job.details.provider_id == 'ionq'):
                    amount_utilized_ionq += event.amount_consumed

                if (job.details.provider_id == 'quantinuum'):
                    #print(event.amount_consumed, event.dimension_name, 'on', job.details.provider_id)
                    #print(event)
                    if (event.dimension_id == 'hqc'):
                        amount_utilized_quantinuum_hqc += event.amount_consumed
                    else:
                        amount_utilized_quantinuum_ehqc += event.amount_consumed
                        print(job.id, event)


print('Rigetti quota use in current workspace: ', "{:,}".format(amount_utilized_rigetti), '/', "{:,}".format(rigetti_quota))
print('IonQ quota use in current workspace:', "{:,}".format(amount_utilized_ionq), '/', "{:,}".format(ionq_quota))
print('Quantinuum HQC quota use in current workspace:', "{:,}".format(amount_utilized_quantinuum_hqc), '/', "{:,}".format(quantinuum_hqc_quota))
print('Quantinuum eHQC quota use in current workspace:', "{:,}".format(amount_utilized_quantinuum_ehqc), '/', "{:,}".format(quantinuum_ehqc_quota))

请求额外配额

如果你使用的不是 Azure Quantum 额度计划,则可以通过提交支持票证来请求提高配额。

  1. 使用 Azure 订阅的凭据登录到 Azure 门户

  2. 选择你的 Azure Quantum 工作区

  3. 在左侧面板中的“操作”下,转到“额度和配额”边栏选项卡,然后选择“配额”选项卡

  4. 按配额页上的“提高”按钮,或选择门户边侧面板上的“新建支持请求”按钮

  5. 此时会打开支持票证。 按照以下步骤填写请求。

    1. 将问题描述为“Azure Quantum 配额替代申请”
    2. 选择“技术”作为“问题类型”
    3. 选择工作区所在的订阅
    4. 选择“所有服务”
    5. 选择“Azure Quantum – 预览”作为“服务类型”
    6. 在“资源”下,选择要更改其配额的工作区
    7. 选择“其他”作为问题类型
    8. 转到“解决方案”,然后再次转到“详细信息”
    9. 填写所有字段。 在“说明”中包含以下内容
    • 要更改其配额的提供商的名称
    • 是要更改订阅范围还是工作区范围的配额
    • 要更改哪些配额,要更改多少
    • 提供提高配额的理由在某些情况下可帮助我们做出决定。