HyperparameterTuner drops content_type when converting InputData to Channel
Los mantenedores suelen responder en 2 días
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 48/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Estancado
- Stack tecnológico
- aws, python
- Área
- machine-learning
Línea de trabajo
Comienza en sagemaker/train/tuner.py, en _create_hyperparameter_tuning_job, especialmente en las líneas 1362-1373, y sigue la conversión de InputData a Channel. Reproduce el caso proporcionado de HyperparameterTuner con XGBoost; el trabajo estará completo cuando el Channel generado conserve content_type y el trabajo de entrenamiento deje de fallar con errores de validate_data_file_path.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
PySDK Version
- PySDK V2 (2.x)
- PySDK V3 (3.x)
Describe the bug
When HyperparameterTuner.tune() receives InputData objects as inputs, it converts them to Channel objects internally but drops the content_type field during conversion. This causes built-in algorithms (e.g., XGBoost) to fail with validate_data_file_path errors because the container doesn't know the data format.
To reproduce
from sagemaker.train.configs import InputData
from sagemaker.train.tuner import HyperparameterTuner
train_input = InputData(
channel_name="train",
data_source="s3://my-bucket/train/train.csv",
content_type="csv", # <-- this gets dropped
)
tuner = HyperparameterTuner(
model_trainer=model_trainer,
objective_metric_name="validation:auc",
hyperparameter_ranges=hyperparameter_ranges,
objective_type="Maximize",
max_jobs=12,
max_parallel_jobs=3,
strategy="Bayesian",
)
tuner.tune(inputs=[train_input])
# All training jobs fail with:
# AlgorithmError: validate_data_file_path(train_path, content_type)
Root Cause
In sagemaker/train/tuner.py, the _create_hyperparameter_tuning_job method converts InputData → Channel without passing content_type:
# tuner.py lines 1362-1373
```python
if isinstance(inp, InputData):
input_data_config.append(Channel(
channel_name=inp.channel_name,
data_source=DataSource(
s3_data_source=S3DataSource(
s3_data_type="S3Prefix",
s3_uri=inp.data_source,
s3_data_distribution_type="FullyReplicated"
)
)
# content_type is missing here!
))
Suggested Fix
if isinstance(inp, InputData):
input_data_config.append(Channel(
channel_name=inp.channel_name,
content_type=inp.content_type, # <-- add this
data_source=DataSource(
s3_data_source=S3DataSource(
s3_data_type="S3Prefix",
s3_uri=inp.data_source,
s3_data_distribution_type="FullyReplicated"
)
)
))
Workaround
Pass Channel objects directly instead of InputData:
from sagemaker.core.shapes import Channel, DataSource, S3DataSource
train_input = Channel(
channel_name="train",
content_type="csv",
data_source=DataSource(
s3_data_source=S3DataSource(
s3_data_type="S3Prefix",
s3_uri="s3://my-bucket/train/train.csv",
s3_data_distribution_type="FullyReplicated",
)
),
)
tuner.tune(inputs=[train_input]) # works correctly
Environment
SageMaker Python SDK version: 3.0.1
Python version: 3.12
Built-in algorithm: XGBoost 1.7-1
- Lenguaje dominante
- Python
- Estrellas
- 2.3k
- Forks
- 1.3k
- Merge medio
- 3 d 10 h
- PR fusionados (30 d)
- 82
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de aws/sagemaker-python-sdk
-
Cannot use spark_event_logs_s3_uri in PySparkProcessor jobPosiblemente ocupada @rsareddy0329 la tomó hace 7 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
aws/sagemaker-python-sdk#6253 ·
Los mantenedores suelen responder en 2 días
-
[Bug] V3 Hyperparameter Tuning Pipeline page labelled "Download Data" in navigation due to missing title cellPosiblemente ocupada @admivsn la tomó hace 35 días. Abierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 93/100
aws/sagemaker-python-sdk#6232 ·
Los mantenedores suelen responder en 2 días
-
[Bug] ModelTrainer with no input channels emits InputDataConfig: [], which CreatePipeline rejects (min=1) — v2 omitted the keyPosiblemente ocupada @sagemaker-bot la tomó hace 7 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
aws/sagemaker-python-sdk#6156 · 2 comentarios ·
Los mantenedores suelen responder en 2 días
-
sagemaker-train should depend on mlflow-skinny, following sagemaker-mlflow 0.5.0Posiblemente ocupada @mohamedzeidan2021 la tomó hace 8 días. Abierto
Dificultad 2/5 Medio día Aptitud para principiantes 72/100
aws/sagemaker-python-sdk#6152 ·
Los mantenedores suelen responder en 2 días
-
ModelTrainer generates sm_train.sh with CRLF line endings on Windows causing training job failurePosiblemente ocupada @MohammedAlkindi la tomó hace 26 días. Abierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
aws/sagemaker-python-sdk#5904 · 1 reacción ·
Los mantenedores suelen responder en 2 días
Todos los issues de aws/sagemaker-python-sdk
Issues similares
-
defect from-review v0.9.2
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
khuisman/mcp-gee-sweet#926 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 Menos de una hora Aptitud para principiantes 84/100
EtanHey/brainlayer#1164 ·
Los mantenedores suelen responder en 1 día
-
bug security
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
yunaremaia/vibeguard#141 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
PrismorSec/prismor#599 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
iii-hq/iii#2278 · 1 comentario ·
Los mantenedores suelen responder en 1 día