Explain suspend semantics, vLLM settings and concurrency performance

This commit is contained in:
2026-10-08 16:49:34 -07:00
parent 082c97b37a
commit aeba840c08
+27 -5
View File
@@ -81,7 +81,7 @@ ax resume task sam-hello # starts it; the first start can take a minute,
# so re-run if it times out
ax ssh sam-hello -- ls /workspace # the repo is cloned into /workspace/<repo-name>
ax ssh sam-hello -- sh -c 'cd /workspace/your-repo && pi -p "explain the build system"'
ax suspend task sam-hello # frees the worker; files and state are kept
ax suspend task sam-hello # frees the worker; /workspace is kept
ax resume task sam-hello # picks up where it left off
ax delete task sam-hello # when done
```
@@ -93,6 +93,9 @@ workspace.
Tasks are immutable: to change one, delete it and apply again.
Suspend saves only `/workspace`. It isn't a RAM snapshot: resume starts a fresh
container with your `/workspace` restored, and everything outside it resets.
## 5. Using pi with Qwen
### The model
@@ -101,11 +104,30 @@ Tasks are immutable: to change one, delete it and apply again.
tool calling and reasoning ("thinking").
- 128K-token context (131,072). Large repos still need the agent to read
selectively, which it does by default.
- Shared: the server runs at most 8 requests at a time across everyone,
including Alex's other work, so responses slow down when it's busy.
- One RTX A6000, shared by everyone including Alex's other work. The weights
are FP8, with an FP8 KV cache, prefix caching and MTP speculative decoding.
- From inside a sandbox it's also a plain OpenAI-compatible API at
`http://vllm.vllm.svc:8000/v1`, if you want to script against it directly.
It isn't reachable from your own machine.
It isn't reachable from your own machine. Read the live settings with
`curl -s http://vllm.vllm.svc:8000/metrics | grep config_info`. They're
read-only: changing them restarts the server for everyone.
### Performance: one long request at a time is best
Decode reads all ~29 GB of weights per token, so concurrent requests share the
GPU's memory bandwidth. Long prompts also prefill in chunks that stall the
other stream. Per-stream decode speed from the server's benchmark:
| Prompt size | 1 request | 2 at once (each) |
|---|---|---|
| 1k tokens | 40 tok/s | 33 tok/s |
| 16k | 35 | 22 |
| 64k | 39 | 6 |
| 120k | 44 | 2 |
pi transcripts grow every turn, so two busy agents slow each other down a lot.
When the server is busy (or for unrelated questions), start fresh with
`--no-session` instead of `-c`, and keep context small.
### pi is preconfigured
@@ -123,7 +145,7 @@ T=sam-hello R=/workspace/your-repo
# one-shot question or task
ax ssh $T -- sh -c "cd $R && pi -p 'find where config is loaded and explain it'"
# keep going in the same conversation (survives suspend/resume)
# keep going in the same conversation (a session file in /workspace/.pi, so it survives suspend)
ax ssh $T -- sh -c "cd $R && pi -p -c 'now add a test for the env-var override'"
# feed it input