Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 251f21ac8f |
89
main.py
89
main.py
@@ -41,11 +41,20 @@ HYGON_SUBMIT_ACCOUNT = "zhoukaile"
|
||||
HYGON_XC_TOKEN = "bd7c52f3b9604ef48a14dd6174513935"
|
||||
|
||||
# ── 本轮开关 ────────────────────────────────────────────────
|
||||
# 纯下载模式:当前 498 个模型的 hygon 和 bi150 都已经在前几轮提前占位完成,
|
||||
# 本轮只用 zhoushasha 跑下载任务,不再提交任何验证任务。
|
||||
# 开启后会【跳过整个占位阶段】,直接下载 ALL_MODEL_IDS 里的全部模型。
|
||||
# 换新模型列表时改回 False,并把下面两个 ENABLE_* 打开。
|
||||
DOWNLOAD_ONLY = True
|
||||
|
||||
# hygon 已经用 zhoukaile 把当前模型列表(498个)从头交到最后一个了,
|
||||
# 再交只会全部撞 60028,所以本轮关掉 hygon,只补 bi150,让两张卡覆盖对齐。
|
||||
# 下次换新模型列表时把它改回 True。
|
||||
# 再交只会全部撞 60028。下次换新模型列表时把它改回 True。
|
||||
ENABLE_HYGON_SUBMIT = False
|
||||
|
||||
# bi150 已由 34 个零积分小号 + zhangyuanxi 兜底占位完成(v2.2.0 补了 436 个)。
|
||||
# 下次换新模型列表时把它改回 True。
|
||||
ENABLE_BI150_SUBMIT = False
|
||||
|
||||
# bi150 兜底账号:零积分小号(每个只占1个)用完之后,
|
||||
# 剩余模型的 bi150 统一用这个账号提交。
|
||||
# 用独立账号而不是 zhoukaile,避免和 hygon 抢同一个账号的额度。
|
||||
@@ -2823,28 +2832,63 @@ def _run_worker():
|
||||
# 对策:把提交挪到下载【之前】。先占位再下载,下载队列即使被爬也没用。
|
||||
# 触发的 adminProxy 代下载很慢无所谓——我方自己的下载会先完成。
|
||||
# ══════════════════════════════════════════════════════
|
||||
_state["phase"] = "reserving"
|
||||
_init_bi150_queue()
|
||||
|
||||
reserved_models = [] # 占位成功、需要下载的模型(按占位顺序)
|
||||
|
||||
print(
|
||||
f"\n🔒 阶段一:占位(bi150 零积分待占位账号 {len(_bi150_pending)} 个,"
|
||||
f"用完后兜底账号={BI150_FALLBACK_ACCOUNT};"
|
||||
f"hygon={'启用' if ENABLE_HYGON_SUBMIT else '本轮关闭'})\n",
|
||||
flush=True,
|
||||
)
|
||||
if DOWNLOAD_ONLY:
|
||||
# 纯下载模式:占位已在前几轮完成,直接下载全部模型
|
||||
reserved_models = list(ALL_MODEL_IDS)
|
||||
print(
|
||||
f"\n⏭️ 纯下载模式(DOWNLOAD_ONLY=True):跳过占位阶段,"
|
||||
f"直接下载全部 {len(reserved_models)} 个模型,不提交任何验证任务\n",
|
||||
flush=True,
|
||||
)
|
||||
else:
|
||||
_state["phase"] = "reserving"
|
||||
_init_bi150_queue()
|
||||
print(
|
||||
f"\n🔒 阶段一:占位(bi150 零积分待占位账号 {len(_bi150_pending)} 个,"
|
||||
f"用完后兜底账号={BI150_FALLBACK_ACCOUNT},"
|
||||
f"bi150={'启用' if ENABLE_BI150_SUBMIT else '关闭'};"
|
||||
f"hygon={'启用' if ENABLE_HYGON_SUBMIT else '关闭'})\n",
|
||||
flush=True,
|
||||
)
|
||||
_reserve_phase(reserved_models)
|
||||
print(
|
||||
f"\n🔒 占位阶段完成:bi150={_state['reserved_bi150']} "
|
||||
f"hygon={_state['reserved_hygon']} "
|
||||
f"待下载模型={len(reserved_models)}\n",
|
||||
flush=True,
|
||||
)
|
||||
|
||||
# ══════════════════════════════════════════════════════
|
||||
# 阶段二:下载(机制A,zhoushasha,8 并发)
|
||||
# 只下载已占到位的模型——这些位置已经是我方的,下载完即可开跑验证
|
||||
# ══════════════════════════════════════════════════════
|
||||
_state["phase"] = "downloading"
|
||||
pending_models = list(reserved_models) # 尚未开始下载的模型
|
||||
active_models: Set[str] = set() # 当前正在下载的模型
|
||||
completed_results = {} # model_id -> status
|
||||
|
||||
print(f"🚀 阶段二:下载 {len(pending_models)} 个模型。最大并发数: {MAX_CONCURRENT_DOWNLOADS}\n", flush=True)
|
||||
|
||||
_download_phase(token, pending_models, active_models, completed_results)
|
||||
|
||||
|
||||
def _reserve_phase(reserved_models: List[str]) -> None:
|
||||
"""阶段一:占位(机制B)。结果追加到 reserved_models。"""
|
||||
for model_id in ALL_MODEL_IDS:
|
||||
if _shutdown.is_set():
|
||||
break
|
||||
if _bi150_quota_full and (_hygon_quota_full or not ENABLE_HYGON_SUBMIT):
|
||||
bi_done = _bi150_quota_full or not ENABLE_BI150_SUBMIT
|
||||
hy_done = _hygon_quota_full or not ENABLE_HYGON_SUBMIT
|
||||
if bi_done and hy_done:
|
||||
print("🔒 bi150 与 hygon 均已无额度可用,占位阶段结束", flush=True)
|
||||
break
|
||||
|
||||
got = False
|
||||
|
||||
# bi150:先用还没有 bi150 任务的零积分账号,用完后走兜底账号
|
||||
if not _bi150_quota_full:
|
||||
if ENABLE_BI150_SUBMIT and not _bi150_quota_full:
|
||||
if submit_test_task_bi150(model_id):
|
||||
_state["submitted"] += 1
|
||||
_state["reserved_bi150"] += 1
|
||||
@@ -2864,24 +2908,9 @@ def _run_worker():
|
||||
if got:
|
||||
reserved_models.append(model_id)
|
||||
|
||||
print(
|
||||
f"\n🔒 占位阶段完成:bi150={_state['reserved_bi150']} "
|
||||
f"hygon={_state['reserved_hygon']} "
|
||||
f"待下载模型={len(reserved_models)}\n",
|
||||
flush=True,
|
||||
)
|
||||
|
||||
# ══════════════════════════════════════════════════════
|
||||
# 阶段二:下载(机制A,zhoushasha,8 并发)
|
||||
# 只下载已经占到位的模型——这些位置已经是我方的,下载完即可开跑验证
|
||||
# ══════════════════════════════════════════════════════
|
||||
_state["phase"] = "downloading"
|
||||
pending_models = list(reserved_models) # 尚未开始下载的模型
|
||||
active_models: Set[str] = set() # 当前正在下载的模型
|
||||
completed_results = {} # model_id -> status
|
||||
|
||||
print(f"🚀 阶段二:下载 {len(pending_models)} 个已占位模型。最大并发数: {MAX_CONCURRENT_DOWNLOADS}\n", flush=True)
|
||||
|
||||
def _download_phase(token, pending_models, active_models, completed_results) -> None:
|
||||
"""阶段二:下载(机制A,zhoushasha)。"""
|
||||
while (pending_models or active_models) and not _shutdown.is_set():
|
||||
# 1. 检查活跃任务状态
|
||||
for model_id in list(active_models):
|
||||
|
||||
Reference in New Issue
Block a user