This commit is contained in:
parent
4d896e6d2b
commit
b130f9e682
|
|
@ -2,23 +2,39 @@ export WB_ENTITY=hailin
|
||||||
export WANDB_BASE_URL=https://wandb.szaiai.com
|
export WANDB_BASE_URL=https://wandb.szaiai.com
|
||||||
export WANDB_API_KEY=local-701636f51b4741d3862007df5cf7f12cca53d8d1
|
export WANDB_API_KEY=local-701636f51b4741d3862007df5cf7f12cca53d8d1
|
||||||
export WANDB_PROJECT=ds-qwen3
|
export WANDB_PROJECT=ds-qwen3
|
||||||
export WANDB_GROUP=q3-32b-ds4-2025-09-04
|
export WANDB_GROUP=q3-32b-ds4-2025-09-04 # 如果训练时没用 WANDB_RUN_GROUP,这里只是“期望值”
|
||||||
|
export MATCH_NAME_REGEX='q3-32b-ds4($|/|-)' # 回退方案:按名字匹配
|
||||||
|
|
||||||
python3 - <<'PY'
|
python3 - <<'PY'
|
||||||
import os, wandb, sys
|
import os, re, wandb
|
||||||
api = wandb.Api(overrides={"base_url": os.environ["WANDB_BASE_URL"]})
|
api = wandb.Api(overrides={"base_url": os.environ["WANDB_BASE_URL"]})
|
||||||
path = f'{os.environ["WB_ENTITY"]}/{os.environ["WANDB_PROJECT"]}'
|
path = f'{os.environ["WB_ENTITY"]}/{os.environ["WANDB_PROJECT"]}'
|
||||||
group = os.environ["WANDB_GROUP"]
|
group = os.environ.get("WANDB_GROUP","").strip()
|
||||||
|
name_pat = os.environ.get("MATCH_NAME_REGEX","").strip()
|
||||||
|
name_rx = re.compile(name_pat) if name_pat else None
|
||||||
|
|
||||||
runs = api.runs(path=path, filters={"group": group})
|
runs = list(api.runs(path=path))
|
||||||
cnt = 0
|
cand = []
|
||||||
for r in runs:
|
|
||||||
print("Deleting:", r.name, r.id)
|
# 1) 优先按 group
|
||||||
try:
|
if group:
|
||||||
r.delete(delete_artifacts=True)
|
cand = [r for r in runs if (getattr(r, "group", None) == group)]
|
||||||
except TypeError:
|
|
||||||
# 旧版本没有 delete_artifacts 参数
|
# 2) 回退:按名字正则
|
||||||
r.delete()
|
if not cand and name_rx:
|
||||||
cnt += 1
|
cand = [r for r in runs if (r.name and name_rx.search(r.name))]
|
||||||
print(f"Deleted {cnt} runs in group '{group}'.")
|
|
||||||
|
print(f"Matched {len(cand)} runs to delete:")
|
||||||
|
for r in cand:
|
||||||
|
print(" -", r.id, r.name, "group=", getattr(r, "group", None))
|
||||||
|
|
||||||
|
# 安全起见:把下面的 True 改成 False 可以先 dry-run
|
||||||
|
DO_DELETE = True
|
||||||
|
if DO_DELETE:
|
||||||
|
for r in cand:
|
||||||
|
try:
|
||||||
|
r.delete(delete_artifacts=True)
|
||||||
|
except TypeError:
|
||||||
|
r.delete()
|
||||||
|
print("Done.")
|
||||||
PY
|
PY
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue