aws / aws/sagemaker-python-sdk

Importing SageMaker SDK fails with Pydantic v2: "Field name 'json' shadows BaseModel attribute

已关闭
#5,320 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
component: pysdk-team type: bug
主要语言
Python
星标
2.3k
派生
1.3k
平均合并
1 天 22 小时
30 天内合并 PR
35

描述

**Describe the bug**
I ran into the following error when trying to deploy a remote function (training job) with SageMaker using a custom docker container that I built.
Importing from sagemaker.remote_function import remote raises a Pydantic validation error at import time in recent versions of the SageMaker Python SDK. The error occurs even before any code using remote is executed.

The issue stems from models inside sagemaker_core (imported transitively by the SDK) that define fields named json, which raise the following exception under Pydantic v2:

```console
NameError: Field name "json" shadows a BaseModel attribute; use a different field name with "alias='json'"
```
The result is that the SageMaker SDK becomes unusable with Pydantic v2 due to this import-time crash

**To reproduce**
I ran into this error when trying to run a remote sagemaker training job in a custom docker container
```bash
# Create a fresh virtual environment
python -m venv venv
source venv/bin/activate

# Install SageMaker SDK and Pydantic v2
pip install "sagemaker==2.254.1" "pydantic"

# Try importing `remote` from `sagemaker.remote_function`
python - << 'EOF'
from sagemaker.remote_function import remote
EOF
```

**Expected behavior**
The import should succeed without errors, allowing use of the remote function and other SageMaker SDK components.

**Screenshots or logs**
```console
File "/usr/local/lib/python3.9/site-packages/sagemaker/jumpstart/types.py", line 20, in
from sagemaker_core.shapes import ModelAccessConfig as CoreModelAccessConfig
File "/usr/local/lib/python3.9/site-packages/sagemaker_core/main/shapes.py", line 2509, in
class MonitoringDatasetFormat(Base):
NameError: Field name "json" shadows a BaseModel attribute; use a different field name with "alias='json'".
```

**System information**
A description of your system. Please provide:
- **SageMaker Python SDK version**: 2.254.1
- **Framework version**: Pydantic V2
- **Python version**: 3.9.13
- **CPU or GPU**: CPU
- **Custom Docker image (Y/N)**: YES

**Additional context**
I resolved the issue by downgrading my SageMaker sdk version... the issue appears to be rooted in `sagemaker_core` model definitions being incompatible with the Pydantic v2 API.

Here are the other dependencies that I installed on the docker image:
```text
gensim==4.3.2
joblib==1.5.1
imbalanced-learn==0.11.0
nltk==3.8.1
numpy==1.21.5
pandas==1.4.2
psycopg2-binary==2.9.10
regex==2022.3.15
scikit-learn==1.0.2
SQLAlchemy==2.0.30
vaderSentiment==3.3.2
sagemaker==2.243.2
spacy==3.7.5
pyarrow
boto3
```

贡献指南

打开贡献指南

调研方向

从 sagemaker/jumpstart/types.py 中的导入路径以及 sagemaker_core/main/shapes.py 中失败的模型定义入手,尤其是 MonitoringDatasetFormat。使用提供的 Python 3.9 和 Pydantic v2 安装环境重现崩溃,然后验证导入 sagemaker.remote_function.remote 能够成功,并且受影响的 JSON 字段仍然可用。

由索引模型根据 Issue 内容生成。

评估

技术栈
python
领域
machine-learning
Issue 类型
缺陷
难度
3/5
预计耗时
1-2 天
活跃度
停滞
描述清晰度
基本清楚
新手友好度
45/100

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。