AdmiralTaco's picture
Polish: cold-start feedback, Off-Brand custom UI, Well-Tuned finetune pipeline
61fe53a
Raw
History Blame Contribute Delete
1.89 kB
"""Keep the Modal ttw-serve endpoint warm so the live Space has no cold start.
The Engine scales down 300s after the last call (serve.py). This pings it with a
tiny batch every PING_EVERY seconds so a judge clicking Step, or you recording the
demo, never waits on a cold start.
CREDIT NOTE: this holds an L4 GPU warm and burns Modal credits the whole time it
runs. Run it only while recording the demo or during the final judging window, and
stop it (Ctrl-C) when done. Do NOT leave it running for days.
Usage:
PYTHONUTF8=1 PYTHONIOENCODING=utf-8 python scripts/keep_warm.py
# custom cadence (default 240s, must stay under the 300s scaledown window):
PYTHONUTF8=1 PYTHONIOENCODING=utf-8 python scripts/keep_warm.py --every 200
"""
from __future__ import annotations
import argparse
import time
from datetime import datetime
from ttw.llm import ModalLLM
PING_EVERY = 240 # seconds; under serve.py's 300s scaledown_window
_PING = [[{"role": "user", "content": "ping"}]]
def main() -> None:
parser = argparse.ArgumentParser(description="Keep the Modal endpoint warm.")
parser.add_argument(
"--every", type=int, default=PING_EVERY,
help="seconds between pings (keep under 300)",
)
args = parser.parse_args()
llm = ModalLLM()
print(f"Keeping ttw-serve warm: ping every {args.every}s. Ctrl-C to stop.")
print("Credits burn while this runs; stop it when you're done.\n")
try:
while True:
t0 = time.time()
llm.chat_batch(_PING, max_tokens=1, temperature=0.0)
dt = time.time() - t0
stamp = datetime.now().strftime("%H:%M:%S")
print(f"[{stamp}] warm (round trip {dt:.1f}s)")
time.sleep(max(1, args.every))
except KeyboardInterrupt:
print("\nStopped. The endpoint will scale down on its own.")
if __name__ == "__main__":
main()