synth-ai 0.2.9.dev2__py3-none-any.whl → 0.2.9.dev4__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 synth-ai might be problematic. Click here for more details.
- examples/analyze_semantic_words.sh +17 -0
- examples/common_old/backend.py +21 -0
- examples/crafter_debug_render.py +180 -0
- examples/evals_old/README.md +98 -0
- examples/evals_old/__init__.py +6 -0
- examples/evals_old/compare_models.py +1037 -0
- examples/evals_old/example_log.md +145 -0
- examples/evals_old/run_demo.sh +126 -0
- examples/evals_old/trace_analysis.py +270 -0
- examples/finetuning_old/_backup_synth_qwen/config.toml +29 -0
- examples/finetuning_old/_backup_synth_qwen/example_log.md +324 -0
- examples/finetuning_old/_backup_synth_qwen/filter_traces.py +60 -0
- examples/finetuning_old/_backup_synth_qwen/filter_traces_achievements.py +239 -0
- examples/finetuning_old/_backup_synth_qwen/purge_v3_traces.py +109 -0
- examples/finetuning_old/_backup_synth_qwen/react_agent_lm.py +1924 -0
- examples/finetuning_old/_backup_synth_qwen/readme.md +49 -0
- examples/finetuning_old/_backup_synth_qwen/run_crafter_qwen4b.py +114 -0
- examples/finetuning_old/_backup_synth_qwen/run_demo.sh +195 -0
- examples/finetuning_old/_backup_synth_qwen/sft_kickoff.py +118 -0
- examples/finetuning_old/synth_qwen_v1/README.md +68 -0
- examples/finetuning_old/synth_qwen_v1/filter_traces.py +60 -0
- examples/finetuning_old/synth_qwen_v1/filter_traces_achievements.py +239 -0
- examples/finetuning_old/synth_qwen_v1/finetune.py +46 -0
- examples/finetuning_old/synth_qwen_v1/hello_ft_model.py +71 -0
- examples/finetuning_old/synth_qwen_v1/infer.py +37 -0
- examples/finetuning_old/synth_qwen_v1/poll.py +44 -0
- examples/finetuning_old/synth_qwen_v1/prepare_data.py +35 -0
- examples/finetuning_old/synth_qwen_v1/purge_v3_traces.py +109 -0
- examples/finetuning_old/synth_qwen_v1/react_agent_lm.py +1932 -0
- examples/finetuning_old/synth_qwen_v1/run_crafter_sft_job.py +207 -0
- examples/finetuning_old/synth_qwen_v1/run_ft_job.py +232 -0
- examples/finetuning_old/synth_qwen_v1/upload_data.py +34 -0
- examples/finetuning_old/synth_qwen_v1/util.py +147 -0
- examples/rl/README.md +169 -0
- examples/rl/configs/eval_base_qwen.toml +15 -0
- examples/rl/configs/eval_rl_qwen.toml +11 -0
- examples/rl/configs/rl_from_base_qwen.toml +35 -0
- examples/rl/configs/rl_from_base_qwen17.toml +74 -0
- examples/rl/configs/rl_from_ft_qwen.toml +35 -0
- examples/rl/download_dataset.py +64 -0
- examples/rl/run_eval.py +435 -0
- examples/rl/run_rl_and_save.py +94 -0
- examples/rl/task_app/README.md +22 -0
- {synth_ai/task/apps → examples/rl/task_app}/math_single_step.py +8 -8
- examples/rl/task_app/math_task_app.py +107 -0
- examples/rl_old/task_app.py +962 -0
- examples/run_crafter_demo.sh +10 -0
- examples/warming_up_to_rl/analyze_trace_db.py +420 -0
- examples/warming_up_to_rl/configs/crafter_fft.toml +48 -0
- examples/warming_up_to_rl/configs/crafter_fft_4b.toml +54 -0
- examples/warming_up_to_rl/configs/eval_fft_qwen4b.toml +20 -0
- examples/warming_up_to_rl/configs/eval_groq_qwen32b.toml +13 -0
- examples/warming_up_to_rl/configs/eval_modal_qwen4b.toml +23 -0
- examples/warming_up_to_rl/configs/rl_from_base_qwen4b.toml +73 -0
- examples/warming_up_to_rl/configs/rl_from_ft.toml +56 -0
- examples/warming_up_to_rl/export_trace_sft.py +541 -0
- examples/warming_up_to_rl/groq_test.py +88 -0
- examples/warming_up_to_rl/manage_secrets.py +127 -0
- examples/warming_up_to_rl/old/event_rewards.md +234 -0
- examples/warming_up_to_rl/old/notes.md +73 -0
- examples/warming_up_to_rl/readme.md +172 -0
- examples/warming_up_to_rl/run_eval.py +434 -0
- examples/warming_up_to_rl/run_fft_and_save.py +309 -0
- examples/warming_up_to_rl/run_local_rollout.py +188 -0
- examples/warming_up_to_rl/run_local_rollout_modal.py +160 -0
- examples/warming_up_to_rl/run_local_rollout_parallel.py +342 -0
- examples/warming_up_to_rl/run_local_rollout_traced.py +372 -0
- examples/warming_up_to_rl/run_rl_and_save.py +101 -0
- examples/warming_up_to_rl/run_rollout_remote.py +129 -0
- examples/warming_up_to_rl/task_app/README.md +38 -0
- {synth_ai/task/apps → examples/warming_up_to_rl/task_app}/grpo_crafter.py +7 -7
- examples/warming_up_to_rl/task_app/grpo_crafter_task_app.py +165 -0
- examples/warming_up_to_rl/task_app/synth_envs_hosted/README.md +173 -0
- examples/warming_up_to_rl/task_app/synth_envs_hosted/__init__.py +5 -0
- examples/warming_up_to_rl/task_app/synth_envs_hosted/branching.py +145 -0
- examples/warming_up_to_rl/task_app/synth_envs_hosted/environment_routes.py +1271 -0
- examples/warming_up_to_rl/task_app/synth_envs_hosted/envs/__init__.py +1 -0
- examples/warming_up_to_rl/task_app/synth_envs_hosted/envs/crafter/__init__.py +6 -0
- examples/warming_up_to_rl/task_app/synth_envs_hosted/envs/crafter/app.py +1 -0
- examples/warming_up_to_rl/task_app/synth_envs_hosted/envs/crafter/environment.py +429 -0
- examples/warming_up_to_rl/task_app/synth_envs_hosted/envs/crafter/policy.py +442 -0
- examples/warming_up_to_rl/task_app/synth_envs_hosted/envs/crafter/react_agent.py +96 -0
- examples/warming_up_to_rl/task_app/synth_envs_hosted/envs/crafter/shared.py +302 -0
- examples/warming_up_to_rl/task_app/synth_envs_hosted/envs/crafter/tools.py +47 -0
- examples/warming_up_to_rl/task_app/synth_envs_hosted/hosted_app.py +202 -0
- examples/warming_up_to_rl/task_app/synth_envs_hosted/inference/__init__.py +5 -0
- examples/warming_up_to_rl/task_app/synth_envs_hosted/inference/openai_client.py +512 -0
- examples/warming_up_to_rl/task_app/synth_envs_hosted/main.py +102 -0
- examples/warming_up_to_rl/task_app/synth_envs_hosted/policy_routes.py +985 -0
- examples/warming_up_to_rl/task_app/synth_envs_hosted/registry.py +197 -0
- examples/warming_up_to_rl/task_app/synth_envs_hosted/rollout.py +1749 -0
- examples/warming_up_to_rl/task_app/synth_envs_hosted/storage/__init__.py +5 -0
- examples/warming_up_to_rl/task_app/synth_envs_hosted/storage/volume.py +217 -0
- examples/warming_up_to_rl/task_app/synth_envs_hosted/test_agents.py +160 -0
- examples/warming_up_to_rl/task_app/synth_envs_hosted/test_service.py +146 -0
- examples/warming_up_to_rl/task_app/synth_envs_hosted/test_stepwise_rewards.py +58 -0
- examples/warming_up_to_rl/task_app/synth_envs_hosted/utils.py +61 -0
- synth_ai/api/train/config_finder.py +18 -18
- synth_ai/api/train/env_resolver.py +28 -1
- synth_ai/cli/task_apps.py +264 -55
- synth_ai/demo_registry.py +7 -7
- synth_ai/demos/demo_task_apps/crafter/__init__.py +1 -0
- synth_ai/demos/demo_task_apps/crafter/configs/crafter_fft_4b.toml +54 -0
- synth_ai/demos/demo_task_apps/crafter/configs/rl_from_base_qwen4b.toml +73 -0
- synth_ai/demos/demo_task_apps/crafter/grpo_crafter_task_app.py +165 -0
- synth_ai/task/apps/__init__.py +54 -13
- {synth_ai-0.2.9.dev2.dist-info → synth_ai-0.2.9.dev4.dist-info}/METADATA +1 -1
- {synth_ai-0.2.9.dev2.dist-info → synth_ai-0.2.9.dev4.dist-info}/RECORD +112 -13
- {synth_ai-0.2.9.dev2.dist-info → synth_ai-0.2.9.dev4.dist-info}/top_level.txt +1 -0
- {synth_ai-0.2.9.dev2.dist-info → synth_ai-0.2.9.dev4.dist-info}/WHEEL +0 -0
- {synth_ai-0.2.9.dev2.dist-info → synth_ai-0.2.9.dev4.dist-info}/entry_points.txt +0 -0
- {synth_ai-0.2.9.dev2.dist-info → synth_ai-0.2.9.dev4.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
Purge v3 trace databases:
|
|
4
|
+
- Find all paths matching **/traces_v3_lm_synth/traces.db under the repo
|
|
5
|
+
- If the DB is inside an `old/` path → delete the DB (and -wal/-shm) outright
|
|
6
|
+
- Else → delete records older than 24 hours and VACUUM to reclaim space
|
|
7
|
+
|
|
8
|
+
Run with: uvpm examples.finetuning.synth_qwen.purge_v3_traces
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
import contextlib
|
|
12
|
+
import datetime
|
|
13
|
+
import os
|
|
14
|
+
import shutil
|
|
15
|
+
import sqlite3
|
|
16
|
+
from pathlib import Path
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def find_trace_dbs(repo_root: Path) -> list[Path]:
|
|
20
|
+
return list(repo_root.rglob("traces_v3_lm_synth/traces.db"))
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def delete_db_files(db_path: Path) -> None:
|
|
24
|
+
wal = db_path.with_suffix(".db-wal")
|
|
25
|
+
shm = db_path.with_suffix(".db-shm")
|
|
26
|
+
if db_path.exists():
|
|
27
|
+
os.remove(db_path)
|
|
28
|
+
if wal.exists():
|
|
29
|
+
os.remove(wal)
|
|
30
|
+
if shm.exists():
|
|
31
|
+
os.remove(shm)
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def purge_older_than_24h(db_path: Path) -> None:
|
|
35
|
+
cutoff = (datetime.datetime.utcnow() - datetime.timedelta(hours=24)).strftime(
|
|
36
|
+
"%Y-%m-%d %H:%M:%S"
|
|
37
|
+
)
|
|
38
|
+
con = sqlite3.connect(str(db_path))
|
|
39
|
+
cur = con.cursor()
|
|
40
|
+
|
|
41
|
+
# Collect session_ids to purge
|
|
42
|
+
cur.execute("SELECT session_id FROM session_traces WHERE created_at < ?", (cutoff,))
|
|
43
|
+
session_ids = [row[0] for row in cur.fetchall()]
|
|
44
|
+
|
|
45
|
+
if session_ids:
|
|
46
|
+
placeholders = ",".join(["?"] * len(session_ids))
|
|
47
|
+
cur.execute(f"DELETE FROM events WHERE session_id IN ({placeholders})", session_ids)
|
|
48
|
+
cur.execute(f"DELETE FROM messages WHERE session_id IN ({placeholders})", session_ids)
|
|
49
|
+
cur.execute(
|
|
50
|
+
f"DELETE FROM session_timesteps WHERE session_id IN ({placeholders})", session_ids
|
|
51
|
+
)
|
|
52
|
+
cur.execute(
|
|
53
|
+
f"DELETE FROM session_traces WHERE session_id IN ({placeholders}) AND created_at < ?",
|
|
54
|
+
session_ids + [cutoff],
|
|
55
|
+
)
|
|
56
|
+
|
|
57
|
+
# Commit deletions before VACUUM
|
|
58
|
+
con.commit()
|
|
59
|
+
con.close()
|
|
60
|
+
|
|
61
|
+
# Attempt VACUUM
|
|
62
|
+
try:
|
|
63
|
+
con2 = sqlite3.connect(str(db_path))
|
|
64
|
+
cur2 = con2.cursor()
|
|
65
|
+
cur2.execute("VACUUM")
|
|
66
|
+
con2.commit()
|
|
67
|
+
con2.close()
|
|
68
|
+
return
|
|
69
|
+
except sqlite3.OperationalError:
|
|
70
|
+
with contextlib.suppress(Exception):
|
|
71
|
+
con2.close()
|
|
72
|
+
|
|
73
|
+
# Fallback: VACUUM INTO a temp path (e.g., /tmp) then replace atomically
|
|
74
|
+
tmp_target = Path("/tmp") / f"{db_path.stem}_compacted.db"
|
|
75
|
+
try:
|
|
76
|
+
con3 = sqlite3.connect(str(db_path))
|
|
77
|
+
cur3 = con3.cursor()
|
|
78
|
+
cur3.execute(f"VACUUM INTO '{tmp_target.as_posix()}'")
|
|
79
|
+
con3.commit()
|
|
80
|
+
con3.close()
|
|
81
|
+
|
|
82
|
+
# Replace original DB with compacted copy
|
|
83
|
+
delete_db_files(db_path)
|
|
84
|
+
shutil.move(str(tmp_target), str(db_path))
|
|
85
|
+
finally:
|
|
86
|
+
if tmp_target.exists():
|
|
87
|
+
# Clean up if move failed
|
|
88
|
+
with contextlib.suppress(Exception):
|
|
89
|
+
os.remove(tmp_target)
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
def main() -> None:
|
|
93
|
+
repo_root = Path(__file__).resolve().parents[3]
|
|
94
|
+
dbs = find_trace_dbs(repo_root)
|
|
95
|
+
print(f"🔎 Found {len(dbs)} v3 trace DB(s)")
|
|
96
|
+
|
|
97
|
+
for db in dbs:
|
|
98
|
+
db_str = str(db)
|
|
99
|
+
if "/old/" in db_str or db_str.endswith("/old/traces_v3_lm_synth/traces.db"):
|
|
100
|
+
print(f"🗑️ Deleting DB under old/: {db_str}")
|
|
101
|
+
delete_db_files(db)
|
|
102
|
+
continue
|
|
103
|
+
print(f"🧹 Purging records older than 24h: {db_str}")
|
|
104
|
+
purge_older_than_24h(db)
|
|
105
|
+
print(f"✅ Purged and compacted: {db_str}")
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
if __name__ == "__main__":
|
|
109
|
+
main()
|