亚马逊AWS官方博客

Amazon Braket – 开始使用量子计算

去年,我向您介绍Amazon Braket,并解释了量子计算的基础知识,从量子位开始,一直发展到量子电路。在预览期间,Enel、Fidelity(使用 Amazon Web Services 探索量子计算)和 Volkswagen 等 AWS 客户一直在使用 Amazon Braket 探索和获取量子计算方面的体验。

我很高兴地宣布, Amazon Braket 现已全面推出,您现在可以使用 D-WaveIonQRigetti 的经典动力电路模拟器和量子计算机。今天,我将向您展示这两个元素,创建和模拟一个简单的电路,然后在真实的硬件(也称为 QPU 或量子处理单元)上运行它。

创建和模拟一个简单的电路
正如我在帖子前文提到的,您可以通过笔记本式界面访问 Amazon Braket。首先,打开 Amazon Braket 控制台,选择所需的区域(稍后详细介绍),然后单击创建笔记本实例

给我的笔记本取一个名字 (amazon-braket-jeff-2),选择一个实例类型,然后选择一个 IAM 角色。在此示例中,我还选择退出 root 用户访问权限并放弃使用加密密钥。我可以选择在 VPC 中运行笔记本,也可以(在其他设置中)更改笔记本的 EBS 卷大小。我做出所有选择,然后单击创建笔记本实例以继续:

我的笔记本在几分钟内准备就绪,然后,我单击进行访问:

笔记本型号基于 Jupyter,我首先浏览示例:

我点击 Superdense Coding 示例将其打开,然后阅读介绍和说明(如果您想了解更多信息,此处解释了该通信协议背后的数学和逻辑):

笔记本可以在 Braket 的模拟器上或任何可用的量子计算机上运行代码:

# 为模拟器选择设备 ARN
device = AwsDevice("arn:aws:braket:::device/quantum-simulator/amazon/sv1")

该代码选择了 SV1 托管模拟器,该模拟器显示了它在较大电路(25 个或更多量子位)以及需要大量计算能力进行模拟的电路上的优势。对于小型电路,我还可以使用 Braket 开发工具包中的本地模拟器,该模拟器在笔记本实例上运行:

device = LocalSimulator()

我浏览笔记本的各个单元,单击运行箭头依次运行每个单元。笔记本中的代码使用 Braket API 从头开始构建量子电路,然后以ASCII形式显示它(q0 q1 是量子位,T 轴表示时间,以时刻表示):

下一个单元格将创建一个任务,该任务在所选设备上运行电路并显示结果:

get_Result 函数在笔记本中定义。它将任务提交给设备、监视任务的状态,然后等待任务完成。然后,它将捕获结果(一组概率),将它们绘制在条形图上,然后返回概率。您可以通过查看函数中的代码来学习,电路运行了 1000 次;每次运行都称为一次“尝试”。 您可以从上面的屏幕截图中看到,任务返回的计数累计为 1000(504 和 496)。Amazon Braket 允许您为每个任务指定 10 至 100000 次尝试(取决于设备);尝试次数越多,准确性就越高。

笔记本电脑中的其余单元格与其他可能的消息一起运行相同的电路,并验证结果是否符合预期。您可以自己运行此实例(以及许多其他示例)以了解更多信息!

在实际硬件上运行
Amazon Braket 提供三家制造商的 QPU 访问权限。我单击控制台中的设备以了解更多信息:

每个 QPU 与特定的 AWS 区域相关联,并且还具有唯一的 ARN。我可以单击设备卡以了解有关设备供电技术的更多信息(这听起来确实很科幻,但我可以向您保证它是真实的),并且还可以看到 ARN:

我在笔记本中创建一个新的单元格,然后复制/粘贴一些代码以在 Rigetti Aspen-8 上运行电路:

device = AwsDevice("arn:aws:braket:::device/qpu/rigetti/Aspen-8")
counts = get_result(device, circ, s3_folder)
print(counts)

这将创建任务并为 QPU 排队。我可以在与 QPU 关联的区域中切换到控制台,然后查看任务:

D-Wave QPU 全天候处理 Braket 任务。其他 QPU 当前在特定时间窗口内处理 Amazon Braket 任务,如果在关闭窗口时创建任务,则这些任务会排队。我的任务完成后,其状态将更改为已完成,并生成一个 CloudWatch 事件:

Amazon Braket API
我使用控制台创建笔记本并管理量子计算任务,但同时也提供 API 和 CLI 支持。以下是几个最重要的 API 函数:

CreateQuantumTask – 创建在模拟器或 QPU 上运行的任务。

GetQuantumTask – 获取有关任务的信息。

SearchDevices – 使用基于属性的搜索来找到合适的 QPU。

GetDevice – 获取有关特定 QPU 的详细信息。

从笔记本中的代码可以看到,您可以编写使用 Amazon Braket 开发工具包的代码,包括 CircuitGatesMomentsAsciiCircuitDiagram 模块。

注意事项
评估 Amazon Braket 时,请记住以下几个重要事项:

新兴技术 – 量子计算是一个新兴领域。尽管你们中的某些人已经是专家,但是我们其他人需要一些时间来理解概念和技术,并弄清楚如何使用它们。

计算范式 – QPU(可以通过 Amazon Braket 访问)支持两种不同的范例。IonQ 和 Rigetti QPU 以及模拟器支持基于电路的量子计算,而 D-Wave QPU 支持量子退火。您不能在支持一个范例的 QPU 上运行针对另一个范例设计的问题,因此需要在探索性旅程的早期选择合适的 QPU。

定价 – 您运行的每个任务都将针对每个任务产生费用并特定于您所使用的 QPU 类型,针对每次尝试产生额外费用。使用模拟器会产生按小时、按秒(最少 15 秒)计费的费用。笔记本的定价与 SageMaker 相同。有关更多信息,请参阅 Amazon Braket 定价页面。

您还可以观看此 新视频 以了解更多信息:

立即尝试!
正如我之前提到的,这是一个新兴且令人兴奋的领域,期待您在有机会使用 Amazon Braket 后提供反馈。

Jeff