sequence-ai 0.7.2__tar.gz → 0.7.3__tar.gz
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.
- {sequence_ai-0.7.2 → sequence_ai-0.7.3}/PKG-INFO +17 -9
- {sequence_ai-0.7.2 → sequence_ai-0.7.3}/README.md +16 -8
- {sequence_ai-0.7.2 → sequence_ai-0.7.3}/pyproject.toml +10 -1
- {sequence_ai-0.7.2 → sequence_ai-0.7.3}/.gitignore +0 -0
- {sequence_ai-0.7.2 → sequence_ai-0.7.3}/LICENSE +0 -0
- {sequence_ai-0.7.2 → sequence_ai-0.7.3}/sequence_ai/__init__.py +0 -0
- {sequence_ai-0.7.2 → sequence_ai-0.7.3}/sequence_ai/_internal/__init__.py +0 -0
- {sequence_ai-0.7.2 → sequence_ai-0.7.3}/sequence_ai/_internal/_actions.py +0 -0
- {sequence_ai-0.7.2 → sequence_ai-0.7.3}/sequence_ai/_internal/_observation.py +0 -0
- {sequence_ai-0.7.2 → sequence_ai-0.7.3}/sequence_ai/_internal/_policy.py +0 -0
- {sequence_ai-0.7.2 → sequence_ai-0.7.3}/sequence_ai/_internal/_transport.py +0 -0
- {sequence_ai-0.7.2 → sequence_ai-0.7.3}/sequence_ai/cli.py +0 -0
- {sequence_ai-0.7.2 → sequence_ai-0.7.3}/sequence_ai/errors.py +0 -0
- {sequence_ai-0.7.2 → sequence_ai-0.7.3}/sequence_ai/py.typed +0 -0
- {sequence_ai-0.7.2 → sequence_ai-0.7.3}/sequence_ai/recipes/__init__.py +0 -0
- {sequence_ai-0.7.2 → sequence_ai-0.7.3}/sequence_ai/recipes/cosmos3_edge_policy_droid.py +0 -0
- {sequence_ai-0.7.2 → sequence_ai-0.7.3}/sequence_ai/recipes/pi05_droid.py +0 -0
- {sequence_ai-0.7.2 → sequence_ai-0.7.3}/sequence_ai/training.py +0 -0
- {sequence_ai-0.7.2 → sequence_ai-0.7.3}/sequence_ai/types.py +0 -0
- {sequence_ai-0.7.2 → sequence_ai-0.7.3}/smoke_production.py +0 -0
- {sequence_ai-0.7.2 → sequence_ai-0.7.3}/tests/conftest.py +0 -0
- {sequence_ai-0.7.2 → sequence_ai-0.7.3}/tests/test_camera_views.py +0 -0
- {sequence_ai-0.7.2 → sequence_ai-0.7.3}/tests/test_chunk_repr.py +0 -0
- {sequence_ai-0.7.2 → sequence_ai-0.7.3}/tests/test_cli.py +0 -0
- {sequence_ai-0.7.2 → sequence_ai-0.7.3}/tests/test_commands_entrance.py +0 -0
- {sequence_ai-0.7.2 → sequence_ai-0.7.3}/tests/test_encode_target.py +0 -0
- {sequence_ai-0.7.2 → sequence_ai-0.7.3}/tests/test_observation.py +0 -0
- {sequence_ai-0.7.2 → sequence_ai-0.7.3}/tests/test_open_loop_horizon.py +0 -0
- {sequence_ai-0.7.2 → sequence_ai-0.7.3}/tests/test_sdk.py +0 -0
- {sequence_ai-0.7.2 → sequence_ai-0.7.3}/tests/test_training.py +0 -0
- {sequence_ai-0.7.2 → sequence_ai-0.7.3}/tests/test_warmup_accounting.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: sequence-ai
|
|
3
|
-
Version: 0.7.
|
|
3
|
+
Version: 0.7.3
|
|
4
4
|
Summary: Cloud inference for robot policies — a control loop that keeps the connection open and the action buffer full.
|
|
5
5
|
Project-URL: Homepage, https://generalsequences.com
|
|
6
6
|
Project-URL: Documentation, https://generalsequences.com/docs/
|
|
@@ -280,26 +280,34 @@ Measured end to end, request to first action:
|
|
|
280
280
|
| `groot-n1-7-3b` | ~299 s | ~400 ms |
|
|
281
281
|
| `cosmos3-edge-policy-droid` | ~346 s | 950–1200 ms |
|
|
282
282
|
|
|
283
|
-
### The worker stays warm for
|
|
283
|
+
### The worker stays warm for 10 minutes
|
|
284
284
|
|
|
285
285
|
**This is the number that decides how you structure a session.** After it becomes ready, a
|
|
286
|
-
worker is held for **
|
|
286
|
+
worker is held for **10 minutes past its last request**. Every call inside that window is warm —
|
|
287
287
|
the table's right-hand column. The clock restarts on each request, so a loop that calls even
|
|
288
|
-
once
|
|
288
|
+
once a minute never goes cold.
|
|
289
289
|
|
|
290
|
-
Cross that
|
|
290
|
+
Cross that 10-minute gap with no calls and the worker is released, and the next request pays the
|
|
291
291
|
full cold start again.
|
|
292
292
|
|
|
293
293
|
```
|
|
294
|
-
call ──► 180-215 s cold start ──► warm ◄────────
|
|
294
|
+
call ──► 180-215 s cold start ──► warm ◄──────── 10 min idle window ────────► released
|
|
295
295
|
▲ │
|
|
296
|
-
└────── any call restarts the
|
|
296
|
+
└────── any call restarts the 10 min ────────┘
|
|
297
297
|
```
|
|
298
298
|
|
|
299
|
+
**Why ten and not thirty.** A held GPU bills whether or not you call it, and the shape of that
|
|
300
|
+
bill is brutal for a session with thinking time in it: over one real day of use, inference was
|
|
301
|
+
3% of the GPU seconds paid for, cold starts 19%, and idle holding 77%. Thirty minutes made the
|
|
302
|
+
worst case a session that calls once every twenty-five minutes — never cold, almost never
|
|
303
|
+
working, and billed for all of it. Ten covers a loop and a short pause between runs without
|
|
304
|
+
paying for a coffee break.
|
|
305
|
+
{measured 2026-09-16 across 2,147 calls: 322 s of inference against 7,200 s of idle holding}
|
|
306
|
+
|
|
299
307
|
The practical consequence, if you are running a batch of experiments: **the gap between them is
|
|
300
308
|
what costs you, not the number of them.** Ten tasks run back to back pay one cold start. The
|
|
301
|
-
same ten with a
|
|
302
|
-
that looks like the model being slow and is actually the fleet being released and rebuilt.
|
|
309
|
+
same ten with a 20-minute analysis gap between each pay ten — that is up to half an hour of
|
|
310
|
+
waiting that looks like the model being slow and is actually the fleet being released and rebuilt.
|
|
303
311
|
|
|
304
312
|
If a gap is unavoidable and you want the worker held, keep it alive with a cheap call inside the
|
|
305
313
|
window; `wait_until_ready()` is the right one, because it touches no GPU and is not billed.
|
|
@@ -246,26 +246,34 @@ Measured end to end, request to first action:
|
|
|
246
246
|
| `groot-n1-7-3b` | ~299 s | ~400 ms |
|
|
247
247
|
| `cosmos3-edge-policy-droid` | ~346 s | 950–1200 ms |
|
|
248
248
|
|
|
249
|
-
### The worker stays warm for
|
|
249
|
+
### The worker stays warm for 10 minutes
|
|
250
250
|
|
|
251
251
|
**This is the number that decides how you structure a session.** After it becomes ready, a
|
|
252
|
-
worker is held for **
|
|
252
|
+
worker is held for **10 minutes past its last request**. Every call inside that window is warm —
|
|
253
253
|
the table's right-hand column. The clock restarts on each request, so a loop that calls even
|
|
254
|
-
once
|
|
254
|
+
once a minute never goes cold.
|
|
255
255
|
|
|
256
|
-
Cross that
|
|
256
|
+
Cross that 10-minute gap with no calls and the worker is released, and the next request pays the
|
|
257
257
|
full cold start again.
|
|
258
258
|
|
|
259
259
|
```
|
|
260
|
-
call ──► 180-215 s cold start ──► warm ◄────────
|
|
260
|
+
call ──► 180-215 s cold start ──► warm ◄──────── 10 min idle window ────────► released
|
|
261
261
|
▲ │
|
|
262
|
-
└────── any call restarts the
|
|
262
|
+
└────── any call restarts the 10 min ────────┘
|
|
263
263
|
```
|
|
264
264
|
|
|
265
|
+
**Why ten and not thirty.** A held GPU bills whether or not you call it, and the shape of that
|
|
266
|
+
bill is brutal for a session with thinking time in it: over one real day of use, inference was
|
|
267
|
+
3% of the GPU seconds paid for, cold starts 19%, and idle holding 77%. Thirty minutes made the
|
|
268
|
+
worst case a session that calls once every twenty-five minutes — never cold, almost never
|
|
269
|
+
working, and billed for all of it. Ten covers a loop and a short pause between runs without
|
|
270
|
+
paying for a coffee break.
|
|
271
|
+
{measured 2026-09-16 across 2,147 calls: 322 s of inference against 7,200 s of idle holding}
|
|
272
|
+
|
|
265
273
|
The practical consequence, if you are running a batch of experiments: **the gap between them is
|
|
266
274
|
what costs you, not the number of them.** Ten tasks run back to back pay one cold start. The
|
|
267
|
-
same ten with a
|
|
268
|
-
that looks like the model being slow and is actually the fleet being released and rebuilt.
|
|
275
|
+
same ten with a 20-minute analysis gap between each pay ten — that is up to half an hour of
|
|
276
|
+
waiting that looks like the model being slow and is actually the fleet being released and rebuilt.
|
|
269
277
|
|
|
270
278
|
If a gap is unavoidable and you want the worker held, keep it alive with a cheap call inside the
|
|
271
279
|
window; `wait_until_ready()` is the right one, because it touches no GPU and is not billed.
|
|
@@ -90,7 +90,16 @@ name = "sequence-ai"
|
|
|
90
90
|
# [CONFIDENCE: CONFIRMED 100% -- read from upstream. The earlier claim of bit-identity came from
|
|
91
91
|
# a local simulation that used LANCZOS on both sides, so it agreed with itself rather than with
|
|
92
92
|
# the server.]
|
|
93
|
-
|
|
93
|
+
#
|
|
94
|
+
# 0.7.3: the warm window is 10 minutes, not 30. Raising it to 1800 s the day before fixed a real
|
|
95
|
+
# race between two timers, and then cost more than it saved: over 2,147 real calls the GPU
|
|
96
|
+
# seconds split 3% inference, 19% cold start, 77% idle holding, and that day billed $5.11 against
|
|
97
|
+
# $0.745 earned. Ten minutes still covers a control loop and a pause between runs.
|
|
98
|
+
# {USER 2026-09-16 "CHANGE TO 10 MINS"}
|
|
99
|
+
# {MEASURED 2026-09-16: usage_records against the RunPod balance delta}
|
|
100
|
+
# [CONFIDENCE: CONFIRMED 100% -- both sides read from their own systems. Documentation only in
|
|
101
|
+
# this package; the number itself lives on the endpoints.]
|
|
102
|
+
version = "0.7.3"
|
|
94
103
|
# The one line PyPI shows in search results. It used to read "A thin client over a public HTTP
|
|
95
104
|
# API — everything it does, curl can do." That was true and it was the wrong sentence to spend
|
|
96
105
|
# the slot on: it described the package by what it does not add, so the summary a reader saw
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|