truss 0.11.12rc501__py3-none-any.whl → 0.11.13rc2__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.

@@ -18,7 +18,7 @@ psutil>=5.9.4
18
18
  python-json-logger>=2.0.2
19
19
  pyyaml>=6.0.0
20
20
  requests>=2.31.0
21
- truss-transfer==0.0.36
21
+ truss-transfer==0.0.37
22
22
  uvicorn>=0.24.0
23
23
  uvloop>=0.19.0
24
24
  websockets>=10.0
@@ -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 }} {% for dir in additional_chown_dirs %}{{ dir }} {% endfor %}${HOME} ${APP_HOME}
110
108
  USER {{ app_username }}
111
109
  {%- endif %} {#- endif non_root_user #}
@@ -1,11 +1,67 @@
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
9
  from typing import Optional, Union
8
10
 
11
+
12
+ @dataclass(frozen=True)
13
+ class FileDownloadMetric:
14
+ file_name: str
15
+ file_size_bytes: int
16
+ download_time_secs: float
17
+ download_speed_mb_s: float
18
+
19
+
20
+ @dataclass(frozen=True)
21
+ class TrussTransferStats:
22
+ total_manifest_size_bytes: int
23
+ total_download_time_secs: float
24
+ total_aggregated_mb_s: Optional[float]
25
+ file_downloads: list[FileDownloadMetric]
26
+ b10fs_read_speed_mbps: Optional[float]
27
+ b10fs_decision_to_use: bool
28
+ b10fs_enabled: bool
29
+ b10fs_hot_starts_files: int
30
+ b10fs_hot_starts_bytes: int
31
+ b10fs_cold_starts_files: int
32
+ b10fs_cold_starts_bytes: int
33
+ success: bool
34
+ timestamp: int
35
+
36
+ @classmethod
37
+ def from_json_file(cls, path: Path) -> Optional["TrussTransferStats"]:
38
+ if not path.exists():
39
+ return None
40
+ try:
41
+ with open(path) as f:
42
+ data = json.load(f)
43
+ file_downloads = [
44
+ FileDownloadMetric(**fd) for fd in data.get("file_downloads", [])
45
+ ]
46
+ return cls(
47
+ total_manifest_size_bytes=data["total_manifest_size_bytes"],
48
+ total_download_time_secs=data["total_download_time_secs"],
49
+ total_aggregated_mb_s=data.get("total_aggregated_mb_s"),
50
+ file_downloads=file_downloads,
51
+ b10fs_read_speed_mbps=data.get("b10fs_read_speed_mbps"),
52
+ b10fs_decision_to_use=data["b10fs_decision_to_use"],
53
+ b10fs_enabled=data["b10fs_enabled"],
54
+ b10fs_hot_starts_files=data["b10fs_hot_starts_files"],
55
+ b10fs_hot_starts_bytes=data["b10fs_hot_starts_bytes"],
56
+ b10fs_cold_starts_files=data["b10fs_cold_starts_files"],
57
+ b10fs_cold_starts_bytes=data["b10fs_cold_starts_bytes"],
58
+ success=data["success"],
59
+ timestamp=data["timestamp"],
60
+ )
61
+ except Exception:
62
+ return None
63
+
64
+
9
65
  LAZY_DATA_RESOLVER_PATH = [
10
66
  # synced with pub static LAZY_DATA_RESOLVER_PATHS: &[&str]
11
67
  Path("/bptr/bptr-manifest"),
@@ -137,6 +193,14 @@ class LazyDataResolverV2:
137
193
  f"Error occurred while fetching data: {result}"
138
194
  ) from result
139
195
  if log_stats and result:
196
+ # TODO: instument the stats, which are written to /tmp/truss_transfer_stats.json
197
+ # also add fetch time, and blocking time
198
+ # TrussTransferStats
199
+ stats = TrussTransferStats.from_json_file(
200
+ Path("/tmp/truss_transfer_stats.json")
201
+ )
202
+ if stats is None:
203
+ self.logger.info(f"model_cache: {stats}")
140
204
  self.logger.info(
141
205
  f"model_cache: Fetch took {time.time() - self._start_time:.2f} seconds, of which {time.time() - start_lock:.2f} seconds were spent blocking."
142
206
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: truss
3
- Version: 0.11.12rc501
3
+ Version: 0.11.13rc2
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.37,>=0.0.32
40
+ Requires-Dist: truss-transfer<0.0.40,>=0.0.36
41
41
  Requires-Dist: watchfiles<0.20,>=0.19.0
42
42
  Description-Content-Type: text/markdown
43
43
 
@@ -71,7 +71,7 @@ truss/templates/cache.Dockerfile.jinja,sha256=1qZqDo1phrcqi-Vwol-VafYJkADsBbQWU6
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=9jJPAoW1_rqomCDfllaKAz7VgFhj0QDBNxyxCkg0buQ,7140
74
+ truss/templates/server.Dockerfile.jinja,sha256=BQpo2Mt_fBrdin1qD8HBKBo2N3Yr2lXrvV_a7J5WSzE,7071
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=WOUr8FmgdcmKS3c4Ra0YyHLFgDt5FdQ_mBZ_ByLSt6E,672
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=SMw3L24R_UkNXuL0fO-AN02rUTHfy0Aiz3JTyS0PAEc,5978
110
+ truss/templates/shared/lazy_data_resolver.py,sha256=eOq7Fgr9QkAWpsxyDWkeZic1Z2S4Mt-drB1A7zNEkYE,8368
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
@@ -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.12rc501.dist-info/METADATA,sha256=Jcd_ZvVMmL5Pe9EEG2APM4xeaDeip8unrShL05hvENE,6683
374
- truss-0.11.12rc501.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
375
- truss-0.11.12rc501.dist-info/entry_points.txt,sha256=-MwKfHHQHQ6j0HqIgvxrz3CehCmczDLTD-OsRHnjjuU,130
376
- truss-0.11.12rc501.dist-info/licenses/LICENSE,sha256=FTqGzu85i-uw1Gi8E_o0oD60bH9yQ_XIGtZbA1QUYiw,1064
377
- truss-0.11.12rc501.dist-info/RECORD,,
373
+ truss-0.11.13rc2.dist-info/METADATA,sha256=GCadCR-s-rOXbH__XXvO5wFJEp-sPcFjpRC1tlcRBwo,6681
374
+ truss-0.11.13rc2.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
375
+ truss-0.11.13rc2.dist-info/entry_points.txt,sha256=-MwKfHHQHQ6j0HqIgvxrz3CehCmczDLTD-OsRHnjjuU,130
376
+ truss-0.11.13rc2.dist-info/licenses/LICENSE,sha256=FTqGzu85i-uw1Gi8E_o0oD60bH9yQ_XIGtZbA1QUYiw,1064
377
+ truss-0.11.13rc2.dist-info/RECORD,,