Python 3.12 升级疑难解答 - Amazon Braket

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Python 3.12 升级疑难解答

生效日期:2026年1月21日

概述

自 2026 年 1 月 21 日起,Amazon Braket 将所有笔记本实例和托管容器镜像(Base、CU TensorFlow DA-Q 和)的 Python 运行时从 3.10 升级到 3.12。 PyTorch本指南提供了常见兼容性问题的解决方案。

常见错误消息

SDK Python 版本不匹配错误

错误

RuntimeError: Python version must match between local environment and container. Client is running Python 3.10 locally, but container uses Python 3.12.

原因:Braket SDK 检测到你的笔记本正在运行 Python 3.10,但是 Hybrid Job 容器正在运行 Python 3.12。

解决方案:要么将你的笔记本升级到 Python 3.12,要么固定到 Python 3.10 容器。

Cloudpickle 序列化错误

错误

TypeError: code() argument 13 must be str, not int

原因:如果绕过 SDK 验证,则由于 Python 3.12 中的构造函数 CodeType 发生了变化,cloudpickle 将无法序列化 Python 3.10 和 3.12 之间的代码。

解决方案:确保您的笔记本和容器使用相同的 Python 版本。

Braket 托管笔记本电脑

如果你在 Python 3.10 上运行 Braket Notebook 实例并提交混合作业,则会遇到版本不匹配错误,因为任务容器现在默认使用 Python 3.12。

你有两个选择:

  1. [推荐] 使用 Python 3.12 创建新的笔记本实例——参见 Braket 笔记本实例升级

  2. 固定到 Python 3.10 容器——参见 Hy brid J ob Decorator

Hybrid Job 装饰器

要使用@hybrid_job装饰器,您的环境的 Python 版本必须与容器的 Python 版本相匹配。

选项 1:使用 Python 3.12 容器(推荐)

如果您已将环境升级到 Python 3.12,它将使用最新标签(默认行为)。

选项 2:使用 Python 3.10 容器

如果你必须继续使用 Python 3.10,请在@hybrid_job装饰器中明确指定image_uri参数。

Python 3.10 容器标签:

映像名称

Tag

Base

1.0-cpu-py310-ubuntu22.04

CUDA-Q

0.12.0-cpu-py310-0.12.0

PyTorch

2.2.0-gpu-py310-cu121-ubuntu20.04

TensorFlow

2.14.1-gpu-py310-cu118-ubuntu20.04

此示例使用 us-west-2 区域。

完整图片 URIs:

Base: 292282985366.dkr.ecr.us-west-2.amazonaws.com/amazon-braket-base-jobs:1.0-cpu-py310-ubuntu22.04 CUDA-Q: 292282985366.dkr.ecr.us-west-2.amazonaws.com/amazon-braket-cudaq-jobs:0.12.0-cpu-py310-0.12.0 PyTorch: 292282985366.dkr.ecr.us-west-2.amazonaws.com/amazon-braket-pytorch-jobs:2.2.0-gpu-py310-cu121-ubuntu20.04 TensorFlow: 292282985366.dkr.ecr.us-west-2.amazonaws.com/amazon-braket-tensorflow-jobs:2.14.1-gpu-py310-cu118-ubuntu20.04

示例

from braket.jobs.hybrid_job import hybrid_job from braket.devices import Devices device_arn = Devices.Amazon.SV1 @hybrid_job( device=device_arn, image_uri="292282985366.dkr.ecr.us-west-2.amazonaws.com/amazon-braket-base-jobs:1.0-cpu-py310-ubuntu22.04" ) def my_job(): pass
注意

Bring-Your-Own-Container (BYOC)

如果你的 Dockerfile 使用带有最新标签的 Braket 托管镜像,那么在 2026 年 1 月 21 日之后进行重建将提取支持 Python 3.12 的镜像。

要继续使用支持 Python 3.10 的 Braket 托管镜像,请更新你的 Dockerfile:

之前(升级后获得 Python 3.12):

FROM 292282985366.dkr.ecr.us-west-2.amazonaws.com/amazon-braket-base-jobs:latest FROM 292282985366.dkr.ecr.us-west-2.amazonaws.com/amazon-braket-cudaq-jobs:latest FROM 292282985366.dkr.ecr.us-west-2.amazonaws.com/amazon-braket-tensorflow-jobs:latest FROM 292282985366.dkr.ecr.us-west-2.amazonaws.com/amazon-braket-pytorch-jobs:latest

之后(停留在 Python 3.10 上):

FROM 292282985366.dkr.ecr.us-west-2.amazonaws.com/amazon-braket-base-jobs:1.0-cpu-py310-ubuntu22.04 FROM 292282985366.dkr.ecr.us-west-2.amazonaws.com/amazon-braket-cudaq-jobs:0.12.0-cpu-py310-0.12.0 FROM 292282985366.dkr.ecr.us-west-2.amazonaws.com/amazon-braket-pytorch-jobs:2.2.0-gpu-py310-cu121-ubuntu20.04 FROM 292282985366.dkr.ecr.us-west-2.amazonaws.com/amazon-braket-tensorflow-jobs:2.14.1-gpu-py310-cu118-ubuntu20.04

Braket 笔记本实例升级

按照以下步骤升级到 Python 3.12:

重要

在删除笔记本实例之前,请确保已下载所有要保留的笔记本和文件。这些数据在删除后无法恢复。

  1. 将您创建或修改的所有 Notebook 下载到本地驱动器。

  2. 停用您的 Notebook 实例。

  3. 删除您的 Notebook 实例。

  4. 使用不同的名称创建一个新的笔记本实例。

  5. 将您的笔记本上传到新实例。