Skip to content

Commit e0a8d45

Browse files
committed
add: diffusers package to the hf stack
change: pinned and upgraded packages from hf stack fix: telemetry test Signed-off-by: DWarez <dario.salvati@huggingface.co>
1 parent a8ce68f commit e0a8d45

2 files changed

Lines changed: 42 additions & 12 deletions

File tree

docker/huggingface/pytorch/Dockerfile

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,17 @@ ARG DLC_MAJOR_VERSION=1
1212
LABEL maintainer="Hugging Face"
1313
LABEL dlc_major_version="${DLC_MAJOR_VERSION}"
1414

15-
ARG TRANSFORMERS_VERSION=5.10.2
16-
ARG HUGGINGFACE_HUB_VERSION=1.17.0
17-
ARG HF_XET_VERSION=1.5.0
15+
ARG TRANSFORMERS_VERSION=5.13.1
16+
ARG HUGGINGFACE_HUB_VERSION=1.23.0
17+
ARG HF_XET_VERSION=1.5.1
1818
ARG TRL_VERSION=1.8.0
19+
ARG DIFFUSERS_VERSION=0.39.0
20+
ARG HF_TRANSFER_VERSION=0.1.9
21+
ARG DATASETS_VERSION=5.0.0
22+
ARG ACCELERATE_VERSION=1.14.0
23+
ARG PEFT_VERSION=0.19.1
24+
ARG EVALUATE_VERSION=0.4.6
25+
ARG MATH_VERIFY_VERSION=0.9.0
1926
# vllm >= 0.24 required: earlier versions ship CVE-affected deps (mooncake
2027
# etc.). trl's [vllm] extra caps vllm at 0.23, so trl is installed without it —
2128
# vllm itself provides the extra's remaining deps (fastapi, pydantic, uvicorn).
@@ -36,11 +43,15 @@ RUN uv pip install --python ${VENV_PYTHON} \
3643
transformers==${TRANSFORMERS_VERSION} \
3744
huggingface-hub==${HUGGINGFACE_HUB_VERSION} \
3845
hf-xet==${HF_XET_VERSION} \
39-
hf-transfer \
40-
datasets accelerate peft evaluate \
46+
"hf-transfer==${HF_TRANSFER_VERSION}" \
47+
"datasets==${DATASETS_VERSION}" \
48+
"accelerate==${ACCELERATE_VERSION}" \
49+
"peft==${PEFT_VERSION}" \
50+
"evaluate==${EVALUATE_VERSION}" \
51+
"diffusers==${DIFFUSERS_VERSION}" \
4152
"trl==${TRL_VERSION}" \
4253
"vllm==${VLLM_VERSION}" \
43-
math-verify \
54+
"math-verify==${MATH_VERIFY_VERSION}" \
4455
sentencepiece protobuf einops scipy scikit-learn tensorboard \
4556
"soupsieve>=2.8.4" \
4657
&& uv cache clean

test/telemetry/test_telemetry.py

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
"""
2525

2626
import logging
27+
import time
2728
from urllib.parse import parse_qs, urlparse
2829

2930
import pytest
@@ -40,6 +41,28 @@ def delete_telemetry_tag(aws_session, instance_id):
4041
aws_session.ec2.delete_tags(Resources=[instance_id], Tags=[{"Key": TELEMETRY_TAG_KEY}])
4142

4243

44+
def set_imds_hop_limit(aws_session, instance_id, hop_limit, timeout=120):
45+
"""Set the IMDSv2 hop limit and wait until it is live.
46+
47+
modify_instance_metadata_options is asynchronous (InstanceMetadataOptions.State
48+
goes pending -> applied); launching a container before it applies races the
49+
telemetry script's one-shot IMDS probe and makes the test flaky.
50+
"""
51+
aws_session.ec2.modify_instance_metadata_options(
52+
InstanceId=instance_id, HttpPutResponseHopLimit=hop_limit
53+
)
54+
deadline = time.time() + timeout
55+
while time.time() < deadline:
56+
instance = aws_session.ec2.describe_instances(InstanceIds=[instance_id])["Reservations"][0][
57+
"Instances"
58+
][0]
59+
options = instance["InstanceMetadataOptions"]
60+
if options["State"] == "applied" and options["HttpPutResponseHopLimit"] == hop_limit:
61+
return
62+
time.sleep(5)
63+
raise TimeoutError(f"IMDS hop_limit={hop_limit} not applied within {timeout}s")
64+
65+
4366
def telemetry_file_exists(conn, container):
4467
result = conn.run(f"docker exec {container} test -f /tmp/test_request.txt", warn=True)
4568
return result.return_code == 0
@@ -122,9 +145,7 @@ def test_imds_hop_limit(conn, aws_session, telemetry_container, ec2_instance):
122145

123146
# hop_limit=1: container can't get IMDSv2 token through Docker bridge
124147
delete_telemetry_tag(aws_session, instance_id)
125-
aws_session.ec2.modify_instance_metadata_options(
126-
InstanceId=instance_id, HttpPutResponseHopLimit=1
127-
)
148+
set_imds_hop_limit(aws_session, instance_id, 1)
128149
container_name = telemetry_container("telemetry-hop1", env={"TEST_MODE": "1"})
129150

130151
assert not telemetry_file_exists(conn, container_name), (
@@ -135,9 +156,7 @@ def test_imds_hop_limit(conn, aws_session, telemetry_container, ec2_instance):
135156
assert TELEMETRY_TAG_KEY not in tags, "Tag should not exist with hop_limit=1"
136157

137158
# hop_limit=2: container can get IMDSv2 token
138-
aws_session.ec2.modify_instance_metadata_options(
139-
InstanceId=instance_id, HttpPutResponseHopLimit=2
140-
)
159+
set_imds_hop_limit(aws_session, instance_id, 2)
141160
container_name = telemetry_container("telemetry-hop2", env={"TEST_MODE": "1"})
142161

143162
assert telemetry_file_exists(conn, container_name), "Telemetry should fire with hop_limit=2"

0 commit comments

Comments
 (0)