truss 0.11.12rc506__py3-none-any.whl → 0.11.13__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of truss might be problematic. Click here for more details.
- truss/base/trt_llm_config.py +4 -1
- truss/base/truss_config.py +1 -10
- truss/contexts/image_builder/serving_image_builder.py +1 -9
- truss/templates/base.Dockerfile.jinja +3 -1
- truss/templates/server/requirements.txt +1 -1
- truss/templates/server.Dockerfile.jinja +1 -3
- truss/templates/shared/lazy_data_resolver.py +214 -2
- truss/tests/test_data/server.Dockerfile +1 -0
- {truss-0.11.12rc506.dist-info → truss-0.11.13.dist-info}/METADATA +2 -2
- {truss-0.11.12rc506.dist-info → truss-0.11.13.dist-info}/RECORD +13 -13
- {truss-0.11.12rc506.dist-info → truss-0.11.13.dist-info}/WHEEL +0 -0
- {truss-0.11.12rc506.dist-info → truss-0.11.13.dist-info}/entry_points.txt +0 -0
- {truss-0.11.12rc506.dist-info → truss-0.11.13.dist-info}/licenses/LICENSE +0 -0
truss/base/trt_llm_config.py
CHANGED
|
@@ -68,6 +68,7 @@ class TrussTRTLLMQuantizationType(str, Enum):
|
|
|
68
68
|
FP8_KV = "fp8_kv"
|
|
69
69
|
FP4 = "fp4"
|
|
70
70
|
FP4_KV = "fp4_kv"
|
|
71
|
+
FP4_MLP_ONLY = "fp4_mlp_only"
|
|
71
72
|
|
|
72
73
|
|
|
73
74
|
class TrussTRTLLMPluginConfiguration(PydanticTrTBaseModel):
|
|
@@ -713,7 +714,9 @@ def trt_llm_common_validation(config: "TrussConfig"):
|
|
|
713
714
|
"accelerators or newer (CUDA_COMPUTE>=89)"
|
|
714
715
|
)
|
|
715
716
|
elif trt_llm_config.build.quantization_type in [
|
|
716
|
-
TrussTRTLLMQuantizationType.FP4
|
|
717
|
+
TrussTRTLLMQuantizationType.FP4,
|
|
718
|
+
TrussTRTLLMQuantizationType.FP4_KV,
|
|
719
|
+
TrussTRTLLMQuantizationType.FP4_MLP_ONLY,
|
|
717
720
|
] and config.resources.accelerator.accelerator in [
|
|
718
721
|
truss_config.Accelerator.H100,
|
|
719
722
|
truss_config.Accelerator.L4,
|
truss/base/truss_config.py
CHANGED
|
@@ -541,20 +541,11 @@ class BaseImage(custom_types.ConfigModel):
|
|
|
541
541
|
|
|
542
542
|
|
|
543
543
|
class DockerServer(custom_types.ConfigModel):
|
|
544
|
-
start_command:
|
|
544
|
+
start_command: str
|
|
545
545
|
server_port: int
|
|
546
546
|
predict_endpoint: str
|
|
547
547
|
readiness_endpoint: str
|
|
548
548
|
liveness_endpoint: str
|
|
549
|
-
as_is: Optional[bool] = None
|
|
550
|
-
|
|
551
|
-
@pydantic.model_validator(mode="after")
|
|
552
|
-
def _validate_start_command(self) -> "DockerServer":
|
|
553
|
-
if not self.as_is and self.start_command is None:
|
|
554
|
-
raise ValueError(
|
|
555
|
-
"start_command is required when as_is is not true"
|
|
556
|
-
)
|
|
557
|
-
return self
|
|
558
549
|
|
|
559
550
|
|
|
560
551
|
class TrainingArtifactReference(custom_types.ConfigModel):
|
|
@@ -577,7 +577,7 @@ class ServingImageBuilder(ImageBuilder):
|
|
|
577
577
|
else:
|
|
578
578
|
self.prepare_trtllm_decoder_build_dir(build_dir=build_dir)
|
|
579
579
|
|
|
580
|
-
if config.docker_server is not None
|
|
580
|
+
if config.docker_server is not None:
|
|
581
581
|
self._copy_into_build_dir(
|
|
582
582
|
TEMPLATES_DIR / "docker_server_requirements.txt",
|
|
583
583
|
build_dir,
|
|
@@ -750,14 +750,6 @@ class ServingImageBuilder(ImageBuilder):
|
|
|
750
750
|
build_commands: List[str],
|
|
751
751
|
):
|
|
752
752
|
config = self._spec.config
|
|
753
|
-
ff_as_is = os.getenv("BT_AS_IS_DEPLOYMENT", False)
|
|
754
|
-
# Escape hatch for as-is deployments
|
|
755
|
-
if ff_as_is and config.docker_server and config.docker_server.as_is:
|
|
756
|
-
dockerfile_contents = f"FROM {config.base_image.image}"
|
|
757
|
-
docker_file_path = build_dir / MODEL_DOCKERFILE_NAME
|
|
758
|
-
docker_file_path.write_text(dockerfile_contents)
|
|
759
|
-
return
|
|
760
|
-
|
|
761
753
|
data_dir = build_dir / config.data_dir
|
|
762
754
|
model_dir = build_dir / config.model_module_dir
|
|
763
755
|
bundled_packages_dir = build_dir / config.bundled_packages_dir
|
|
@@ -115,9 +115,11 @@ WORKDIR $APP_HOME
|
|
|
115
115
|
{% endblock %}
|
|
116
116
|
|
|
117
117
|
|
|
118
|
+
{% set packages_dir = "/packages" %}
|
|
119
|
+
RUN mkdir -p {{ packages_dir }}
|
|
118
120
|
{% block bundled_packages_copy %}
|
|
119
121
|
{%- if bundled_packages_dir_exists %}
|
|
120
|
-
COPY --chown={{ default_owner }} ./{{ config.bundled_packages_dir }}
|
|
122
|
+
COPY --chown={{ default_owner }} ./{{ config.bundled_packages_dir }} {{ packages_dir }}
|
|
121
123
|
{%- endif %}
|
|
122
124
|
{% endblock %}
|
|
123
125
|
|
|
@@ -69,7 +69,7 @@ COPY --chown={{ default_owner }} ./{{ config.data_dir }} ${APP_HOME}/data
|
|
|
69
69
|
|
|
70
70
|
{%- if model_cache_v2 %}
|
|
71
71
|
{# v0.0.9, keep synced with server_requirements.txt #}
|
|
72
|
-
RUN curl -sSL --fail --retry 5 --retry-delay 2 -o /usr/local/bin/truss-transfer-cli https://github.com/basetenlabs/truss/releases/download/v0.11.
|
|
72
|
+
RUN curl -sSL --fail --retry 5 --retry-delay 2 -o /usr/local/bin/truss-transfer-cli https://github.com/basetenlabs/truss/releases/download/v0.11.13rc3/truss-transfer-cli-v0.11.13rc3-linux-x86_64-unknown-linux-musl
|
|
73
73
|
RUN chmod +x /usr/local/bin/truss-transfer-cli
|
|
74
74
|
RUN mkdir /static-bptr
|
|
75
75
|
RUN echo "hash {{model_cache_hash}}"
|
|
@@ -104,8 +104,6 @@ COPY --chown={{ default_owner }} ./{{ config.model_module_dir }} ${APP_HOME}/mod
|
|
|
104
104
|
{# Macro to change ownership of directories and switch to regular user #}
|
|
105
105
|
{%- macro chown_and_switch_to_regular_user_if_enabled(additional_chown_dirs=[]) -%}
|
|
106
106
|
{%- if non_root_user %}
|
|
107
|
-
{% set packages_dir = "/packages" %}
|
|
108
|
-
RUN mkdir -p {{ packages_dir }}
|
|
109
107
|
RUN chown -R {{ app_username }}:{{ app_username }} ${HOME} ${APP_HOME} {{ packages_dir }} {% for dir in additional_chown_dirs %}{{ dir }} {% endfor %}
|
|
110
108
|
USER {{ app_username }}
|
|
111
109
|
{%- endif %} {#- endif non_root_user #}
|
|
@@ -1,10 +1,207 @@
|
|
|
1
1
|
import atexit
|
|
2
|
+
import json
|
|
2
3
|
import logging
|
|
3
4
|
import time
|
|
5
|
+
from dataclasses import dataclass
|
|
4
6
|
from functools import lru_cache
|
|
5
7
|
from pathlib import Path
|
|
6
8
|
from threading import Lock, Thread
|
|
7
|
-
from typing import Optional, Union
|
|
9
|
+
from typing import List, Optional, Union
|
|
10
|
+
|
|
11
|
+
try:
|
|
12
|
+
from prometheus_client import Counter, Gauge, Histogram
|
|
13
|
+
|
|
14
|
+
PROMETHEUS_AVAILABLE = True
|
|
15
|
+
except ImportError:
|
|
16
|
+
PROMETHEUS_AVAILABLE = False
|
|
17
|
+
METRICS_REGISTERED = False
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
@dataclass(frozen=True)
|
|
21
|
+
class FileDownloadMetric:
|
|
22
|
+
file_name: str
|
|
23
|
+
file_size_bytes: int
|
|
24
|
+
download_time_secs: float
|
|
25
|
+
download_speed_mb_s: float
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
@dataclass(frozen=True)
|
|
29
|
+
class TrussTransferStats:
|
|
30
|
+
total_manifest_size_bytes: int
|
|
31
|
+
total_download_time_secs: float
|
|
32
|
+
total_aggregated_mb_s: Optional[float]
|
|
33
|
+
file_downloads: List[FileDownloadMetric]
|
|
34
|
+
b10fs_read_speed_mbps: Optional[float]
|
|
35
|
+
b10fs_decision_to_use: bool
|
|
36
|
+
b10fs_enabled: bool
|
|
37
|
+
b10fs_hot_starts_files: int
|
|
38
|
+
b10fs_hot_starts_bytes: int
|
|
39
|
+
b10fs_cold_starts_files: int
|
|
40
|
+
b10fs_cold_starts_bytes: int
|
|
41
|
+
success: bool
|
|
42
|
+
timestamp: int
|
|
43
|
+
|
|
44
|
+
@classmethod
|
|
45
|
+
def from_json_file(cls, path: Path) -> Optional["TrussTransferStats"]:
|
|
46
|
+
if not path.exists():
|
|
47
|
+
return None
|
|
48
|
+
try:
|
|
49
|
+
with open(path) as f:
|
|
50
|
+
data = json.load(f)
|
|
51
|
+
file_downloads = [
|
|
52
|
+
FileDownloadMetric(**fd) for fd in data.get("file_downloads", [])
|
|
53
|
+
]
|
|
54
|
+
return cls(
|
|
55
|
+
total_manifest_size_bytes=data["total_manifest_size_bytes"],
|
|
56
|
+
total_download_time_secs=data["total_download_time_secs"],
|
|
57
|
+
total_aggregated_mb_s=data.get("total_aggregated_mb_s"),
|
|
58
|
+
file_downloads=file_downloads,
|
|
59
|
+
b10fs_read_speed_mbps=data.get("b10fs_read_speed_mbps"),
|
|
60
|
+
b10fs_decision_to_use=data["b10fs_decision_to_use"],
|
|
61
|
+
b10fs_enabled=data["b10fs_enabled"],
|
|
62
|
+
b10fs_hot_starts_files=data["b10fs_hot_starts_files"],
|
|
63
|
+
b10fs_hot_starts_bytes=data["b10fs_hot_starts_bytes"],
|
|
64
|
+
b10fs_cold_starts_files=data["b10fs_cold_starts_files"],
|
|
65
|
+
b10fs_cold_starts_bytes=data["b10fs_cold_starts_bytes"],
|
|
66
|
+
success=data["success"],
|
|
67
|
+
timestamp=data["timestamp"],
|
|
68
|
+
)
|
|
69
|
+
except Exception:
|
|
70
|
+
return None
|
|
71
|
+
|
|
72
|
+
def publish_to_prometheus(self, hidden_time: float = 0.0):
|
|
73
|
+
"""Publish transfer stats to Prometheus metrics. Only runs once."""
|
|
74
|
+
if not PROMETHEUS_AVAILABLE:
|
|
75
|
+
return
|
|
76
|
+
global METRICS_REGISTERED
|
|
77
|
+
|
|
78
|
+
if METRICS_REGISTERED:
|
|
79
|
+
logging.info(
|
|
80
|
+
"Model cache metrics already registered, skipping."
|
|
81
|
+
) # this should never happen
|
|
82
|
+
return
|
|
83
|
+
else:
|
|
84
|
+
# Ensure metrics are only registered once
|
|
85
|
+
METRICS_REGISTERED = True
|
|
86
|
+
|
|
87
|
+
# Define metrics with model_cache prefix
|
|
88
|
+
manifest_size_gauge = Gauge(
|
|
89
|
+
"model_cache_manifest_size_bytes", "Total manifest size in bytes"
|
|
90
|
+
)
|
|
91
|
+
# histograms have intentially wide buckets to capture a variety of download times
|
|
92
|
+
download_time_histogram = Histogram(
|
|
93
|
+
"model_cache_download_time_seconds",
|
|
94
|
+
"Total download time in seconds",
|
|
95
|
+
buckets=[0]
|
|
96
|
+
+ [
|
|
97
|
+
2**i
|
|
98
|
+
for i in range(-3, 11) # = [0.125, .. 2048] seconds
|
|
99
|
+
]
|
|
100
|
+
+ [float("inf")],
|
|
101
|
+
)
|
|
102
|
+
download_speed_gauge = Gauge(
|
|
103
|
+
"model_cache_download_speed_mbps", "Aggregated download speed in MB/s"
|
|
104
|
+
)
|
|
105
|
+
|
|
106
|
+
# File download metrics (aggregated)
|
|
107
|
+
files_downloaded_counter = Counter(
|
|
108
|
+
"model_cache_files_downloaded_total", "Total number of files downloaded"
|
|
109
|
+
)
|
|
110
|
+
total_file_size_counter = Counter(
|
|
111
|
+
"model_cache_file_size_bytes_total",
|
|
112
|
+
"Total size of downloaded files in bytes",
|
|
113
|
+
)
|
|
114
|
+
file_download_hidden_time_gauge = Gauge(
|
|
115
|
+
"model_cache_file_download_hidden_time_seconds",
|
|
116
|
+
"Total time hidden from user by starting the import before user code (seconds)",
|
|
117
|
+
)
|
|
118
|
+
file_download_time_histogram = Histogram(
|
|
119
|
+
"model_cache_file_download_time_seconds",
|
|
120
|
+
"File download time distribution",
|
|
121
|
+
buckets=[0]
|
|
122
|
+
+ [
|
|
123
|
+
2**i
|
|
124
|
+
for i in range(-3, 11) # = [0.125, .. 2048] seconds
|
|
125
|
+
]
|
|
126
|
+
+ [float("inf")],
|
|
127
|
+
)
|
|
128
|
+
file_download_speed_histogram = Histogram(
|
|
129
|
+
"model_cache_file_download_speed_mbps",
|
|
130
|
+
"File download speed distribution",
|
|
131
|
+
buckets=[0]
|
|
132
|
+
+ [
|
|
133
|
+
2**i
|
|
134
|
+
for i in range(-1, 12) # = [0.5, .. 4096] MB/s
|
|
135
|
+
]
|
|
136
|
+
+ [float("inf")],
|
|
137
|
+
)
|
|
138
|
+
|
|
139
|
+
# B10FS specific metrics
|
|
140
|
+
b10fs_enabled_gauge = Gauge(
|
|
141
|
+
"model_cache_b10fs_enabled", "Whether B10FS is enabled"
|
|
142
|
+
)
|
|
143
|
+
b10fs_decision_gauge = Gauge(
|
|
144
|
+
"model_cache_b10fs_decision_to_use", "Whether B10FS was chosen for use"
|
|
145
|
+
)
|
|
146
|
+
b10fs_read_speed_gauge = Gauge(
|
|
147
|
+
"model_cache_b10fs_read_speed_mbps", "B10FS read speed in Mbps"
|
|
148
|
+
)
|
|
149
|
+
b10fs_hot_files_gauge = Gauge(
|
|
150
|
+
"model_cache_b10fs_hot_starts_files", "Number of hot start files"
|
|
151
|
+
)
|
|
152
|
+
b10fs_hot_bytes_gauge = Gauge(
|
|
153
|
+
"model_cache_b10fs_hot_starts_bytes", "Number of hot start bytes"
|
|
154
|
+
)
|
|
155
|
+
b10fs_cold_files_gauge = Gauge(
|
|
156
|
+
"model_cache_b10fs_cold_starts_files", "Number of cold start files"
|
|
157
|
+
)
|
|
158
|
+
b10fs_cold_bytes_gauge = Gauge(
|
|
159
|
+
"model_cache_b10fs_cold_starts_bytes", "Number of cold start bytes"
|
|
160
|
+
)
|
|
161
|
+
|
|
162
|
+
# Transfer success metric
|
|
163
|
+
transfer_success_counter = Counter(
|
|
164
|
+
"model_cache_transfer_success_total",
|
|
165
|
+
"Total successful transfers",
|
|
166
|
+
["success"],
|
|
167
|
+
)
|
|
168
|
+
|
|
169
|
+
# Set main transfer metrics
|
|
170
|
+
manifest_size_gauge.set(self.total_manifest_size_bytes)
|
|
171
|
+
download_time_histogram.observe(self.total_download_time_secs)
|
|
172
|
+
file_download_hidden_time_gauge.set(hidden_time)
|
|
173
|
+
|
|
174
|
+
if self.total_aggregated_mb_s is not None:
|
|
175
|
+
download_speed_gauge.set(self.total_aggregated_mb_s)
|
|
176
|
+
|
|
177
|
+
# Aggregate file download metrics
|
|
178
|
+
total_files = len(self.file_downloads)
|
|
179
|
+
total_file_bytes = sum(fd.file_size_bytes for fd in self.file_downloads)
|
|
180
|
+
|
|
181
|
+
files_downloaded_counter.inc(total_files)
|
|
182
|
+
total_file_size_counter.inc(total_file_bytes)
|
|
183
|
+
|
|
184
|
+
# Record individual file metrics for distribution
|
|
185
|
+
for fd in self.file_downloads:
|
|
186
|
+
if fd.file_size_bytes > 1 * 1024 * 1024: # Only log files larger than 1MB
|
|
187
|
+
file_download_time_histogram.observe(fd.download_time_secs)
|
|
188
|
+
file_download_speed_histogram.observe(fd.download_speed_mb_s)
|
|
189
|
+
|
|
190
|
+
# B10FS metrics
|
|
191
|
+
b10fs_enabled_gauge.set(1 if self.b10fs_enabled else 0)
|
|
192
|
+
b10fs_decision_gauge.set(1 if self.b10fs_decision_to_use else 0)
|
|
193
|
+
|
|
194
|
+
if self.b10fs_read_speed_mbps is not None:
|
|
195
|
+
b10fs_read_speed_gauge.set(self.b10fs_read_speed_mbps)
|
|
196
|
+
|
|
197
|
+
b10fs_hot_files_gauge.set(self.b10fs_hot_starts_files)
|
|
198
|
+
b10fs_hot_bytes_gauge.set(self.b10fs_hot_starts_bytes)
|
|
199
|
+
b10fs_cold_files_gauge.set(self.b10fs_cold_starts_files)
|
|
200
|
+
b10fs_cold_bytes_gauge.set(self.b10fs_cold_starts_bytes)
|
|
201
|
+
|
|
202
|
+
# Success metric
|
|
203
|
+
transfer_success_counter.labels(success=str(self.success)).inc()
|
|
204
|
+
|
|
8
205
|
|
|
9
206
|
LAZY_DATA_RESOLVER_PATH = [
|
|
10
207
|
# synced with pub static LAZY_DATA_RESOLVER_PATHS: &[&str]
|
|
@@ -129,6 +326,9 @@ class LazyDataResolverV2:
|
|
|
129
326
|
|
|
130
327
|
"""
|
|
131
328
|
start_lock = time.time()
|
|
329
|
+
publish_stats = (
|
|
330
|
+
log_stats and not self._is_collected_by_user
|
|
331
|
+
) # only publish results once per resolver
|
|
132
332
|
self._is_collected_by_user = issue_collect or self._is_collected_by_user
|
|
133
333
|
with self._lock:
|
|
134
334
|
result = self._fetch()
|
|
@@ -137,8 +337,20 @@ class LazyDataResolverV2:
|
|
|
137
337
|
f"Error occurred while fetching data: {result}"
|
|
138
338
|
) from result
|
|
139
339
|
if log_stats and result:
|
|
340
|
+
# TODO: instument the stats, which are written to /tmp/truss_transfer_stats.json
|
|
341
|
+
# also add fetch time, and blocking time
|
|
342
|
+
# TrussTransferStats
|
|
343
|
+
fetch_t = time.time() - self._start_time
|
|
344
|
+
start_lock_t = time.time() - start_lock
|
|
345
|
+
stats = TrussTransferStats.from_json_file(
|
|
346
|
+
Path("/tmp/truss_transfer_stats.json")
|
|
347
|
+
)
|
|
348
|
+
if stats and publish_stats:
|
|
349
|
+
self.logger.info(f"model_cache: {stats}")
|
|
350
|
+
# Publish stats to Prometheus
|
|
351
|
+
stats.publish_to_prometheus()
|
|
140
352
|
self.logger.info(
|
|
141
|
-
f"model_cache: Fetch took {
|
|
353
|
+
f"model_cache: Fetch took {fetch_t:.2f} seconds, of which {start_lock_t:.2f} seconds were spent blocking."
|
|
142
354
|
)
|
|
143
355
|
return result
|
|
144
356
|
|
|
@@ -36,6 +36,7 @@ COPY --chown= ./data ${APP_HOME}/data
|
|
|
36
36
|
COPY --chown= ./server ${APP_HOME}
|
|
37
37
|
COPY --chown= ./config.yaml ${APP_HOME}/config.yaml
|
|
38
38
|
COPY --chown= ./model ${APP_HOME}/model
|
|
39
|
+
RUN mkdir -p /packages
|
|
39
40
|
COPY --chown= ./packages /packages
|
|
40
41
|
ENV INFERENCE_SERVER_PORT="8080"
|
|
41
42
|
ENV SERVER_START_CMD="/usr/local/bin/python3 /app/main.py"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: truss
|
|
3
|
-
Version: 0.11.
|
|
3
|
+
Version: 0.11.13
|
|
4
4
|
Summary: A seamless bridge from model development to model delivery
|
|
5
5
|
Project-URL: Repository, https://github.com/basetenlabs/truss
|
|
6
6
|
Project-URL: Homepage, https://truss.baseten.co
|
|
@@ -37,7 +37,7 @@ Requires-Dist: rich<14,>=13.4.2
|
|
|
37
37
|
Requires-Dist: ruff>=0.4.8
|
|
38
38
|
Requires-Dist: tenacity>=8.0.1
|
|
39
39
|
Requires-Dist: tomlkit>=0.13.2
|
|
40
|
-
Requires-Dist: truss-transfer<0.0.
|
|
40
|
+
Requires-Dist: truss-transfer<0.0.40,>=0.0.37
|
|
41
41
|
Requires-Dist: watchfiles<0.20,>=0.19.0
|
|
42
42
|
Description-Content-Type: text/markdown
|
|
43
43
|
|
|
@@ -5,8 +5,8 @@ truss/base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
|
5
5
|
truss/base/constants.py,sha256=sExArdnuGg83z83XMgaQ4b8SS3V_j_bJEpOATDGJzpE,3600
|
|
6
6
|
truss/base/custom_types.py,sha256=FUSIT2lPOQb6gfg6IzT63YBV8r8L6NIZ0D74Fp3e_jQ,2835
|
|
7
7
|
truss/base/errors.py,sha256=zDVLEvseTChdPP0oNhBBQCtQUtZJUaof5zeWMIjqz6o,691
|
|
8
|
-
truss/base/trt_llm_config.py,sha256=
|
|
9
|
-
truss/base/truss_config.py,sha256=
|
|
8
|
+
truss/base/trt_llm_config.py,sha256=rEtBVFg2QnNMxnaz11s5Z69dJB1w7Bpt48Wf6jSsVZI,33087
|
|
9
|
+
truss/base/truss_config.py,sha256=7CtiJIwMHtDU8Wzn8UTJUVVunD0pWFl4QUVycK2aIpY,28055
|
|
10
10
|
truss/base/truss_spec.py,sha256=jFVF79CXoEEspl2kXBAPyi-rwISReIGTdobGpaIhwJw,5979
|
|
11
11
|
truss/cli/chains_commands.py,sha256=Kpa5mCg6URAJQE2ZmZfVQFhjBHEitKT28tKiW0H6XAI,17406
|
|
12
12
|
truss/cli/cli.py,sha256=PaMkuwXZflkU7sa1tEoT_Zmy-iBkEZs1m4IVqcieaeo,30367
|
|
@@ -36,7 +36,7 @@ truss/contexts/docker_build_setup.py,sha256=cF4ExZgtYvrWxvyCAaUZUvV_DB_7__MqVomU
|
|
|
36
36
|
truss/contexts/truss_context.py,sha256=uS6L-ACHxNk0BsJwESOHh1lA0OGGw0pb33aFKGsASj4,436
|
|
37
37
|
truss/contexts/image_builder/cache_warmer.py,sha256=TGMV1Mh87n2e_dSowH0sf0rZhZraDOR-LVapZL3a5r8,7377
|
|
38
38
|
truss/contexts/image_builder/image_builder.py,sha256=IuRgDeeoHVLzIkJvKtX3807eeqEyaroCs_KWDcIHZUg,1461
|
|
39
|
-
truss/contexts/image_builder/serving_image_builder.py,sha256=
|
|
39
|
+
truss/contexts/image_builder/serving_image_builder.py,sha256=n6MTHMZsANSTGXPfkKDJ1Ch4fEc6HIjbOXA_1B9zt9Q,33438
|
|
40
40
|
truss/contexts/image_builder/util.py,sha256=y2-CjUKv0XV-0w2sr1fUCflysDJLsoU4oPp6tvvoFnk,1203
|
|
41
41
|
truss/contexts/local_loader/docker_build_emulator.py,sha256=3n0eIlJblz_sldh4AN8AHQDyfjQGdYyld5FabBdd9wE,3563
|
|
42
42
|
truss/contexts/local_loader/dockerfile_parser.py,sha256=GoRJ0Af_3ILyLhjovK5lrCGn1rMxz6W3l681ro17ZzI,1344
|
|
@@ -66,12 +66,12 @@ truss/remote/baseten/utils/time.py,sha256=Ry9GMjYnbIGYVIGwtmv4V8ljWjvdcaCf5NOQzl
|
|
|
66
66
|
truss/remote/baseten/utils/transfer.py,sha256=d3VptuQb6M1nyS6kz0BAfeOYDLkMKUjatJXpY-mp-As,1548
|
|
67
67
|
truss/templates/README.md.jinja,sha256=N7CJdyldZuJamj5jLh47le0hFBdu9irVsTBqoxhPNPQ,2476
|
|
68
68
|
truss/templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
69
|
-
truss/templates/base.Dockerfile.jinja,sha256=
|
|
69
|
+
truss/templates/base.Dockerfile.jinja,sha256=tdMmK5TeiQuYbz4gqbACM3R-l-mazqL9tAZtJ4sxC4g,5331
|
|
70
70
|
truss/templates/cache.Dockerfile.jinja,sha256=1qZqDo1phrcqi-Vwol-VafYJkADsBbQWU6huQ-_1x00,1146
|
|
71
71
|
truss/templates/cache_requirements.txt,sha256=xoPoJ-OVnf1z6oq_RVM3vCr3ionByyqMLj7wGs61nUs,87
|
|
72
72
|
truss/templates/copy_cache_files.Dockerfile.jinja,sha256=Os5zFdYLZ_AfCRGq4RcpVTObOTwL7zvmwYcvOzd_Zqo,126
|
|
73
73
|
truss/templates/docker_server_requirements.txt,sha256=PyhOPKAmKW1N2vLvTfLMwsEtuGpoRrbWuNo7tT6v2Mc,18
|
|
74
|
-
truss/templates/server.Dockerfile.jinja,sha256=
|
|
74
|
+
truss/templates/server.Dockerfile.jinja,sha256=Mu5_ZxuAknwaEOsF0l-XssA9pDg3pD3eLl6JBzNJ4rg,7091
|
|
75
75
|
truss/templates/control/requirements.txt,sha256=tJGr83WoE0CZm2FrloZ9VScK84q-_FTuVXjDYrexhW0,250
|
|
76
76
|
truss/templates/control/control/application.py,sha256=5Kam6M-XtfKGaXQz8cc3d0bwDkB80o2MskABWROx1gk,5321
|
|
77
77
|
truss/templates/control/control/endpoints.py,sha256=KzqsLVNJE6r6TCPW8D5FMCtsfHadTwR15A3z_viGxmM,11782
|
|
@@ -96,7 +96,7 @@ truss/templates/docker_server/supervisord.conf.jinja,sha256=dd37fwZE--cutrvOUCqE
|
|
|
96
96
|
truss/templates/server/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
97
97
|
truss/templates/server/main.py,sha256=kWXrdD8z8IpamyWxc8qcvd5ck9gM1Kz2QH5qHJCnmOQ,222
|
|
98
98
|
truss/templates/server/model_wrapper.py,sha256=k75VVISwwlsx5EGb82UZsu8kCM_i6Yi3-Hd0-Kpm1yo,42055
|
|
99
|
-
truss/templates/server/requirements.txt,sha256=
|
|
99
|
+
truss/templates/server/requirements.txt,sha256=ZRnawwwAMkf88-S5GhXdjkLzB36IRg11AKUvIOV8kxg,672
|
|
100
100
|
truss/templates/server/truss_server.py,sha256=YKcG7Sr0T_8XjIC3GK9vBwoNb8oxVgwic3-3Ikzpmgw,19781
|
|
101
101
|
truss/templates/server/common/__init__.py,sha256=qHIqr68L5Tn4mV6S-PbORpcuJ4jmtBR8aCuRTIWDvNo,85
|
|
102
102
|
truss/templates/server/common/errors.py,sha256=My0P6-Y7imVTICIhazHT0vlSu3XJDH7As06OyVzu4Do,8589
|
|
@@ -107,7 +107,7 @@ truss/templates/server/common/tracing.py,sha256=XSTXNoRtV8vXwveJoX3H32go0JKnLmzn
|
|
|
107
107
|
truss/templates/server/common/patches/whisper/patch.py,sha256=kDECQ-wmEpeAZFhUTQP457ofueeMsm7DgNy9tqinhJQ,2383
|
|
108
108
|
truss/templates/shared/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
109
109
|
truss/templates/shared/dynamic_config_resolver.py,sha256=75s42NFhQI5jL7BqlJH_UkuQS7ptbtFh13f2nh6X5Wo,920
|
|
110
|
-
truss/templates/shared/lazy_data_resolver.py,sha256=
|
|
110
|
+
truss/templates/shared/lazy_data_resolver.py,sha256=HxrZz6X30j2LbsExYSqhuOGoYEffGpd7FPBtJexI7TQ,14064
|
|
111
111
|
truss/templates/shared/log_config.py,sha256=l9udyu4VKHZePlfK9LQEd5TOUUodPuehypsXRSUL4Ac,5411
|
|
112
112
|
truss/templates/shared/secrets_resolver.py,sha256=3prDe3Q06NTmUEe7KCW-W4TD1CzGck9lpDG789209z4,2110
|
|
113
113
|
truss/templates/shared/serialization.py,sha256=_WC_2PPkRi-MdTwxwjG8LKQptnHi4sANfpOlKWevqWc,3736
|
|
@@ -185,7 +185,7 @@ truss/tests/test_data/pima-indians-diabetes.csv,sha256=BvW3ws17ymhv2k-S6rX2Hn_2Q
|
|
|
185
185
|
truss/tests/test_data/readme_int_example.md,sha256=fuHvpLtdkJy1f4NAR_djotVBdzusHYNXc-Fwh588XAE,1586
|
|
186
186
|
truss/tests/test_data/readme_no_example.md,sha256=T2CzFMRvICXeX3_5XbFoqhHchcHGot-xM7izx34B3aQ,1607
|
|
187
187
|
truss/tests/test_data/readme_str_example.md,sha256=fP4pvMqgLdIapaOf_BgRiV0H7pw4so0RNxrlq5lbROE,1726
|
|
188
|
-
truss/tests/test_data/server.Dockerfile,sha256=
|
|
188
|
+
truss/tests/test_data/server.Dockerfile,sha256=KoQN5qBpiXL93qbjbG76kfRVapwfV5CNJzQcpjPocz0,2047
|
|
189
189
|
truss/tests/test_data/annotated_types_truss/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
190
190
|
truss/tests/test_data/annotated_types_truss/config.yaml,sha256=B-ZyyjLLqtxGfXj2tkH68Hy7NOMB_coYvoWyWom61g0,147
|
|
191
191
|
truss/tests/test_data/annotated_types_truss/model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -370,8 +370,8 @@ truss_train/deployment.py,sha256=lWWANSuzBWu2M4oK4qD7n-oVR1JKdmw2Pn5BJQHg-Ck,307
|
|
|
370
370
|
truss_train/loader.py,sha256=0o66EjBaHc2YY4syxxHVR4ordJWs13lNXnKjKq2wq0U,1630
|
|
371
371
|
truss_train/public_api.py,sha256=9N_NstiUlmBuLUwH_fNG_1x7OhGCytZLNvqKXBlStrM,1220
|
|
372
372
|
truss_train/restore_from_checkpoint.py,sha256=8hdPm-WSgkt74HDPjvCjZMBpvA9MwtoYsxVjOoa7BaM,1176
|
|
373
|
-
truss-0.11.
|
|
374
|
-
truss-0.11.
|
|
375
|
-
truss-0.11.
|
|
376
|
-
truss-0.11.
|
|
377
|
-
truss-0.11.
|
|
373
|
+
truss-0.11.13.dist-info/METADATA,sha256=dGMoaajfz_CT6Qahy4wpnsHYBcL5QvjuiWlvkmPm1T8,6678
|
|
374
|
+
truss-0.11.13.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
375
|
+
truss-0.11.13.dist-info/entry_points.txt,sha256=-MwKfHHQHQ6j0HqIgvxrz3CehCmczDLTD-OsRHnjjuU,130
|
|
376
|
+
truss-0.11.13.dist-info/licenses/LICENSE,sha256=FTqGzu85i-uw1Gi8E_o0oD60bH9yQ_XIGtZbA1QUYiw,1064
|
|
377
|
+
truss-0.11.13.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|