aws / aws/sagemaker-python-sdk

AsyncPredictor fails if name is None, despite it being the default

Ouverte
#4,774 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub
component: utility apis type: bug
Langage dominant
Python
Étoiles
2.3k
Forks
1.3k
Merge moyen
1 j 22 h
PR mergées (30 j)
35

Description

**Describe the bug**

The `name` argument of the `AsyncPredictor.__init__.py` is optional with default=None

https://github.com/aws/sagemaker-python-sdk/blob/b535ed87ae55fd1020ea1d7c7c9cd7e3a068a683/src/sagemaker/predictor_async.py#L34

But calling `async_predictor.predict(data=...)` requires name to be non-null, i.e.` _upload_data_to_s3 ` calls `name_from_base` on `self.name` which fails if name is None (i.e. the default)

https://github.com/aws/sagemaker-python-sdk/blob/b535ed87ae55fd1020ea1d7c7c9cd7e3a068a683/src/sagemaker/predictor_async.py#L171

**To reproduce**

```
from sagemaker.predictor import Predictor
from sagemaker.predictor_async import AsyncPredictor

predictor = Predictor(endpoint_name=endpoint_name, sagemaker_session=sagemaker_session)
async_predictor = AsyncPredictor(predictor)

result = async_predictor.predict(data=request_body)
```
TypeError: 'NoneType' object is not subscriptable

**Expected behavior**
The name field of `AsyncPredictor` should have a "non-None" default (a guid, or the endpoint name?)

**System information**
A description of your system. Please provide:
- **SageMaker Python SDK version**: '2.224.2'
- **Framework name (eg. PyTorch) or algorithm (eg. KMeans)**: PyTorch / Triton (custom inference container)
- **Framework version**:
- **Python version**:
- **CPU or GPU**:
- **Custom Docker image (Y/N)**: Y

**Additional context**
Add any other context about the problem here.

Guide de contribution

Ouvrir le guide de contribution

Piste de recherche

Commencez dans src/sagemaker/predictor_async.py, en particulier dans AsyncPredictor.__init__ et _upload_data_to_s3 près des lignes référencées. Reproduisez l’échec avec AsyncPredictor(Predictor(...)) et predict(data=...), puis déterminez une valeur par défaut appropriée différente de None pour name. La tâche est terminée lorsque le chemin par défaut documenté ne lève plus le TypeError signalé.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
aws, python
Domaine
machine-learning
Type d'issue
Bug
Difficulté
2/5
Temps estimé
1-3 heures
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.