`HyperParameterTuningJob.create` rejects tuner tags on Python 3.14
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 2/5
- Thời gian dự kiến
- 1-3 giờ
- Mức phù hợp với người mới
- 72/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Đặc tả rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- python
- Lĩnh vực
- machine-learning
Hướng nghiên cứu
Bắt đầu từ chú thích tags trên HyperParameterTuningJob.create trong mô-đun resources của sagemaker-core, và từ các đối tượng Tag được tạo trong HyperparameterTuner.tune(). Lỗi là tên Tag không đủ đường dẫn được phân giải thành mô hình resources trên Python 3.14. Hoàn thành khi một yêu cầu HPO có gắn thẻ được xác thực trên Python 3.14 và một bài kiểm thử hồi quy bao phủ trường hợp này vượt qua.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
PySDK Version
- PySDK V2 (2.x)
- PySDK V3 (3.x)
Describe the bug
Tagged HyperparameterTuner requests fail validation on Python 3.14.
Equivalent requests succeed on Python 3.12.
The tuner creates request tags as sagemaker.core.shapes.Tag.
On Python 3.14, HyperParameterTuningJob.create() resolves its tags
annotation as list[sagemaker.core.resources.Tag].
Both classes have the same key and value fields. However, they are separate
Pydantic models. Pydantic rejects the shapes model instead of converting it to
the generated resource model.
The failure occurs before the SDK calls SageMaker.
This is not a SageMaker v3.28 regression. The behavior also reproduces with the
v3.27 component set on Python 3.14.
To reproduce
Save this script as reproduce.py. It does not call a live AWS service.
import importlib.metadata
import inspect
import sys
from pydantic import TypeAdapter
from sagemaker.core.resources import HyperParameterTuningJob
from sagemaker.core.shapes import Tag
tags_annotation = inspect.signature(
HyperParameterTuningJob.create
).parameters["tags"].annotation
print("Python:", sys.version)
print("SageMaker:", importlib.metadata.version("sagemaker"))
print("SageMaker Core:", importlib.metadata.version("sagemaker-core"))
print("Resource annotation:", tags_annotation)
validated_tags = TypeAdapter(tags_annotation).validate_python(
[
Tag(
key="project",
value="hpo-tag-reproduction",
)
]
)
print("Validated tags:", validated_tags)
Run it with Python 3.12:
uvx --python 3.12 --from sagemaker==3.28.0 python reproduce.py
The script succeeds. The annotation resolves to
sagemaker.core.shapes.Tag.
Run it with Python 3.14:
uvx --python 3.14 --from sagemaker==3.28.0 python reproduce.py
The script fails. The annotation resolves to
sagemaker.core.resources.Tag.
The same mismatch occurs during HyperparameterTuner.tune(). The tuner creates
its request tags with this code:
from sagemaker.core.shapes import Tag
tag_objects = [
Tag(key=boto_tag["Key"], value=boto_tag["Value"])
for boto_tag in (_to_boto_tag(tag) for tag in self.tags)
]
Expected behavior
HyperParameterTuningJob.create() must accept the tag model produced by
HyperparameterTuner on every supported Python version.
Screenshots or logs
Python 3.14 produces this error:
Resource annotation: typing.List[sagemaker.core.resources.Tag] | None
Traceback (most recent call last):
...
pydantic_core._pydantic_core.ValidationError:
1 validation error for nullable[list[Tag]]
0
Input should be a valid dictionary or instance of Tag
[type=model_type,
input_value=Tag(key='project', value='hpo-tag-reproduction'),
input_type=Tag]
System information
- SageMaker Python SDK version: 3.28.0
- SageMaker Core version: 2.28.0
- SageMaker Train version: 1.28.0
- Framework name (eg. PyTorch) or algorithm (eg. KMeans): Framework-independent
- Framework version: Not applicable
- Python version: 3.14
- CPU or GPU: CPU
- Custom Docker image (Y/N): Reproduces before image selection
Additional context
Python 3.14 uses deferred annotation evaluation. The unqualified Tag name
resolves after sagemaker.core.resources.Tag exists in the module.
Earlier Python versions capture the imported sagemaker.core.shapes.Tag when
the function is defined.
A stable fix can import the public shape with an unambiguous alias:
from sagemaker.core.shapes import Tag as ShapeTag
def create(
# ...
tags: list[ShapeTag] | None = None,
):
...
Tests must exercise tagged HPO request validation on Python 3.14.
- Ngôn ngữ chính
- Python
- Star
- 2.3k
- Fork
- 1.3k
- Merge trung bình
- 1 ngày 14 giờ
- Pull request đã merge (30 ngày)
- 62
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Không có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của aws/sagemaker-python-sdk
-
get_base_python_image_uri() returns URIs for unsupported Python versionsCó thể đã có người làm @Fire162 đã nhận 5 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 74/100
aws/sagemaker-python-sdk#6539 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
[Bug] ModelTrainer with no input channels emits InputDataConfig: [], which CreatePipeline rejects (min=1) — v2 omitted the keyCó thể đã có người làm @sagemaker-bot đã nhận 34 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
aws/sagemaker-python-sdk#6156 · 2 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
sagemaker-train should depend on mlflow-skinny, following sagemaker-mlflow 0.5.0Có thể đã có người làm @mohamedzeidan2021 đã nhận 35 ngày trước. Đang mở
Độ khó 2/5 Nửa ngày Mức phù hợp với người mới 72/100
aws/sagemaker-python-sdk#6152 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
`ModelTrainer` bug with method to load hyperparameters from file for Amazon Nova RecipeCó thể đã có người làm @sagemaker-bot đã nhận 34 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
aws/sagemaker-python-sdk#5770 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
aws/sagemaker-python-sdk#5588 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của aws/sagemaker-python-sdk
Issue tương tự
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 66/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
yt-project/yt#5624 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
NousResearch/hermes-agent#148376 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Analysis
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
SACGF/variantgrid#2615 ·
Maintainer thường phản hồi trong vòng 1 ngày