ModelBuilder with source_code + DJL LMI: /opt/ml/model becomes read-only, breaking HF Hub model downloads
Maintainer antworten meist innerhalb von 2 Tagen
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 48/100
- Issue-Typ
- Bug
- Klarheit
- Größtenteils klar
- Aktivitätsstatus
- Ruhig
- Tech-Stack
- aws, python
- Bereich
- cloud, machine-learning
Rechercherichtung
Beginne bei ModelBuilder.build() und deploy(), zusammen mit der SourceCode-Paketierung, und reproduziere das Problem mit dem DJL LMI image und der bereitgestellten Modellkonfiguration. Verfolge, wie source_code paketiert wird und wie HF_MODEL_ID und env_vars angewendet werden. Als erledigt gilt die Aufgabe, wenn Downloads des Runtime-Modells an einen beschreibbaren Speicherort schreiben können und eine vom Benutzer bereitgestellte HF_MODEL_ID nicht unerwartet ersetzt wird.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Description
When using ModelBuilder (SDK v3) with a pre-built DJL LMI container image and source_code (via SourceCode) to provide custom requirements.txt, the model directory /opt/ml/model/ becomes read-only at runtime. This prevents the DJL container from downloading models from HuggingFace Hub, which tries to write cache files to /opt/ml/model/.
Additionally, ModelBuilder overrides user-provided HF_MODEL_ID environment variable with the value from the model= parameter, making it impossible to point the container to the local model path (/opt/ml/model) when S3 model artifacts are also provided via s3_model_data_url.
How to Reproduce
from sagemaker.serve import ModelBuilder, ModelServer
from sagemaker.serve.builder.schema_builder import SchemaBuilder
from sagemaker.serve.mode.function_pointers import Mode
from sagemaker.serve.model_builder import SourceCode
source_code = SourceCode(
source_dir="./model_code",
requirements="requirements.txt", # e.g. transformers>=4.55.0
)
mb = ModelBuilder(
model="chromadb/context-1", # HF Hub model ID
role_arn=ROLE,
image_uri="763104351884.dkr.ecr.us-east-1.amazonaws.com/djl-inference:0.36.0-lmi22.0.0-cu129",
model_server=ModelServer.DJL_SERVING,
schema_builder=SchemaBuilder(
{"inputs": "Hello", "parameters": {"max_new_tokens": 64}},
[{"generated_text": "Hi"}],
),
source_code=source_code,
env_vars={"OPTION_TENSOR_PARALLEL_DEGREE": "4", ...},
instance_type="ml.g6e.12xlarge",
mode=Mode.SAGEMAKER_ENDPOINT,
)
model = mb.build()
endpoint = mb.deploy(endpoint_name="test", wait=True)
# FAILS: OSError: [Errno 30] Read-only file system: /opt/ml/model/models--chromadb--context-1
Observed Behavior
ModelBuilder.build()packages thesource_codedirectory into amodel.tar.gzand uploads to S3- At deploy time, SageMaker mounts this tar.gz at
/opt/ml/model/— which becomes read-only ModelBuildersetsHF_MODEL_ID=chromadb/context-1(frommodel=), overriding any user-provided value- DJL LMI container sees
HF_MODEL_ID=chromadb/context-1and tries to download from HF Hub - HF Hub download tries to write cache to
/opt/ml/model/models--chromadb--context-1/ - Fails with
OSError: [Errno 30] Read-only file system
CloudWatch logs confirm:
OSError: [Errno 30] Read-only file system: /opt/ml/model/models--chromadb--context-1
Expected Behavior
Users should be able to use ModelBuilder with:
- A pre-built container image (e.g. DJL LMI)
source_codewith a customrequirements.txtto install additional dependencies at container startup- A HuggingFace Hub model ID that the container downloads at runtime
The requirements.txt installation should not make /opt/ml/model/ read-only, or the HF Hub cache should be redirected to a writable location (e.g. /tmp).
Workaround Attempted
Setting HF_HOME=/tmp/hf_home and HUGGINGFACE_HUB_CACHE=/tmp/hf_home/hub in env_vars — these appear in the container environment but the DJL container still writes to /opt/ml/model/.
Use Case
This is a common pattern for deploying newer models (e.g. OpenAI GPT-OSS based models like chromadb/context-1) that require a newer transformers version than what is bundled in the DJL LMI container. The source_code with requirements.txt is the natural SDK v3 mechanism for this, but it is incompatible with HF Hub model downloads.
Environment
- SageMaker Python SDK: 3.6.0
- Container:
djl-inference:0.36.0-lmi22.0.0-cu129 - Instance:
ml.g6e.12xlarge - Region:
us-east-1
- Vorherrschende Sprache
- Python
- Sterne
- 2.3k
- Forks
- 1.3k
- Ø Merge
- 3 T. 2 Std.
- Gemergte PRs (30 T.)
- 70
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Keine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus aws/sagemaker-python-sdk
-
Cannot use spark_event_logs_s3_uri in PySparkProcessor jobEvtl. vergeben @rsareddy0329 hat das vor 5 Tagen übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
aws/sagemaker-python-sdk#6253 ·
Maintainer antworten meist innerhalb von 2 Tagen
-
[Bug] V3 Hyperparameter Tuning Pipeline page labelled "Download Data" in navigation due to missing title cellEvtl. vergeben @admivsn hat das vor 34 Tagen übernommen. Offen
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 93/100
aws/sagemaker-python-sdk#6232 ·
Maintainer antworten meist innerhalb von 2 Tagen
-
[Bug] ModelTrainer with no input channels emits InputDataConfig: [], which CreatePipeline rejects (min=1) — v2 omitted the keyEvtl. vergeben @sagemaker-bot hat das vor 5 Tagen übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
aws/sagemaker-python-sdk#6156 · 2 Kommentare ·
Maintainer antworten meist innerhalb von 2 Tagen
-
sagemaker-train should depend on mlflow-skinny, following sagemaker-mlflow 0.5.0Evtl. vergeben @mohamedzeidan2021 hat das vor 6 Tagen übernommen. Offen
Schwierigkeit 2/5 Ein halber Tag Anfängerfreundlichkeit 72/100
aws/sagemaker-python-sdk#6152 ·
Maintainer antworten meist innerhalb von 2 Tagen
-
ModelTrainer generates sm_train.sh with CRLF line endings on Windows causing training job failureEvtl. vergeben @MohammedAlkindi hat das vor 24 Tagen übernommen. Offen
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 88/100
aws/sagemaker-python-sdk#5904 · 1 Reaktion ·
Maintainer antworten meist innerhalb von 2 Tagen
Alle Issues in aws/sagemaker-python-sdk
Ähnliche Issues
-
json_params_matcher fails on falsy top-level JSON primitives (0, False, "")Evtl. vergeben @mayureshsonawane17 hat das heute übernommen. OffenWaiting for: Product Owner
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 84/100
Maintainer antworten meist innerhalb von 5 Tagen
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 88/100
bojieli/ai-agent-book#1169 ·
Maintainer antworten meist innerhalb von 1 Tag
-
priority:low ready-for-dev
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
OpenHands/extensions#738 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 85/100
micronaut-projects/micronaut-core#13677 ·
Maintainer antworten meist innerhalb von 1 Tag