`HyperParameterTuningJob.create` rejects tuner tags on Python 3.14
Mantenedores costumam responder em até 1 dia
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 2/5
- Tempo estimado
- 1-3 horas
- Facilidade para iniciantes
- 72/100
- Tipo de issue
- Bug
- Clareza
- Claramente especificada
- Status de atividade
- Ativa
- Stack de tecnologia
- python
- Domínio
- machine-learning
Direção de pesquisa
Comece pela anotação tags em HyperParameterTuningJob.create no módulo de recursos do sagemaker-core, e pelos objetos Tag criados em HyperparameterTuner.tune(). O bug é que o nome Tag sem qualificação é resolvido para o modelo de recursos no Python 3.14. Está concluído quando uma requisição HPO com tags é validada no Python 3.14 e um teste de regressão cobrindo esse caso passa.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
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.
- Linguagem predominante
- Python
- Estrelas
- 2.3k
- Forks
- 1.3k
- Merge médio
- 1d 14h
- PRs com merge (30d)
- 62
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Sem modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de aws/sagemaker-python-sdk
-
get_base_python_image_uri() returns URIs for unsupported Python versionsTalvez já em andamento @Fire162 assumiu há 5 dias. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 74/100
aws/sagemaker-python-sdk#6539 ·
Mantenedores costumam responder em até 1 dia
-
[Bug] ModelTrainer with no input channels emits InputDataConfig: [], which CreatePipeline rejects (min=1) — v2 omitted the keyTalvez já em andamento @sagemaker-bot assumiu há 34 dias. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
aws/sagemaker-python-sdk#6156 · 2 comentários ·
Mantenedores costumam responder em até 1 dia
-
sagemaker-train should depend on mlflow-skinny, following sagemaker-mlflow 0.5.0Talvez já em andamento @mohamedzeidan2021 assumiu há 35 dias. Aberta
Dificuldade 2/5 Meio dia Facilidade para iniciantes 72/100
aws/sagemaker-python-sdk#6152 ·
Mantenedores costumam responder em até 1 dia
-
`ModelTrainer` bug with method to load hyperparameters from file for Amazon Nova RecipeTalvez já em andamento @sagemaker-bot assumiu há 34 dias. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
aws/sagemaker-python-sdk#5770 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
aws/sagemaker-python-sdk#5588 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
Todas as issues de aws/sagemaker-python-sdk
Issues semelhantes
-
cost:cheap practicality:seen-in-the-wild severity:medium
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
fairagro/m4.2_advanced_middleware_api#620 ·
Mantenedores costumam responder em até 1 dia
-
area:security effort:S priority:P2 provider:local-libvirt status:ready type:docs
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
randomparity/kdive#3495 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
microsoft/markitdown#2820 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
Mantenedores costumam responder em até 2 dias