Files
xc_validation_strategy_vllm…/main.py

1107 lines
47 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""
xc_validation_strategy_vllm_zhouyuanxi — 主入口
启动后针对 GPU_JOBS 中配置的 GPU 卡分别批量提交各自筛选出的模型适配任务
/api/adapt/task/addxc-Token 认证)。
(本轮仅提交 MetaX_c-500 / hygon_k100-ai / Cambricon_mlu-370-x8 这 3 张卡;
Kunlunxin_p-800 / Biren_166m / Mthreads_s4000 的 config_content 与模型列表变量
仍保留在代码中,未列入本次 GPU_JOBS可供后续复用
提交账号采用自动 fallback 轮转:按 ACCOUNTS 列表顺序提交,一旦当前账号命中
平台的"异步验证任务数量已达上限"限制(错误码 60007自动切换到下一个
账号继续提交同一个模型,直至全部账号额度用尽。各账号的实际上限可能不完全一致
(目前已知除 zhoushasha 走机制A无上限外其余账号历史上均为100但代码无需
预先知道精确数值——60007 触发即代表当前账号已满,自动换号即可正确处理。
之后保持 HTTP 服务存活,暴露 /healthK8s 探活)和 /status运行状态
"""
import json
import os
import signal
import threading
from datetime import datetime
from http.server import BaseHTTPRequestHandler, ThreadingHTTPServer
from typing import List, Tuple
import requests
# ══════════════════════════════════════════════════════════
# 配置
# ══════════════════════════════════════════════════════════
BASE_URL = os.environ.get("BASE_URL", "https://modelhub.org.cn")
ADD_TASK_ENDPOINT = "/api/adapt/task/add"
TASK_TYPE = "text-generation"
STRATEGY_ID = os.environ.get("STRATEGY_ID", "") # 平台自动注入,无需修改
HTTP_HOST = "0.0.0.0"
HTTP_PORT = 8080
# 提交账号(按优先级排列,前一个额度满了自动切换到下一个)
# v1.0.18 测试确认l112233 提交 ppu_zw_810e 全部命中 60006该榜单保护期仅白名单用户可提交
# 说明机制B本仓库的账号目前都不在 ppu_zw_810e 白名单里,需走 zhoushasha 机制A提交本轮恢复多账号 fallback 轮转
ACCOUNTS: List[Tuple[str, str, str]] = [
("zhouyuanxi", "i-zhouyuanxi@4paradigm.com", "62b9b487eff2488fb9f1da0b963f0b93"),
("zhoukaile", "zhoukaile", "bd7c52f3b9604ef48a14dd6174513935"),
("zhangyuanxi", "zhangyuanxi", "24ed39f7f0d84fafbe0ca808e62b191c"),
("jiajing", "jiajing", "5e051e0ff8384a81af53bea780deb28a"),
("jiangxiaowen", "jiangxiaowen", "88d5fee9f1fe4f7583f11a9d3702dc85"),
("miaoyao", "miaoyao", "77033cee0fb549598cdd590be0d02983"),
("l112233", "l112233", "40cb6910dc9a442a816298a228da65ac"),
("l11223344", "l11223344", "e1c0db2959e5411f9342c8550b03f6e9"),
("keii", "keii", "be99003a85f640d8978823a5a8e3f297"),
("fanyi", "fanyi", "f2d501c9ae6543a589cd6cb789108c41"),
("fanyi2", "fanyi2", "2586efe06c0a42fda060d5eca34bf766"),
]
# ══════════════════════════════════════════════════════════
# 各 GPU 的模型列表(来自 filter_verified_models 脚本的筛选结果)
# ══════════════════════════════════════════════════════════
METAX_MODELS = [
"ai-sage/GigaChat-20B-A3B-base",
"SeongryongJung/Qwen3-4B-Chemistry-SDPO",
"trinhkhng/linear_Merged_Qwen2-0.5B_0.3",
"Rushank/llama-3.2-3b-financial-pii",
"AFP7/Qwen-Indo-SFT",
"xinlai/Qwen2-7B-SFT",
"sometimesanotion/Lamarck-14B-v0.7-Fusion",
"toroe/SmolLM-3B-Science-EN",
"fpadovani/ind-latn-100mb-ppt-Dp-10mb_seed455",
"fpadovani/ind-latn-10mb-after-ppt-Dp-100mb-ckpt500_seed455",
"fpadovani/ind-latn-10mb-100mb_seed455",
"haffner/VL-1-Coder-Heretic",
"fpadovani/jpn-jpan-100mb-after-ppt-Dp-10mb-ckpt500_seed10",
"fpadovani/ita-latn-100mb-10mb_seed3407",
"fpadovani/ita-latn-100mb-ppt-Dp-100mb_seed455",
]
KUNLUNXIN_MODELS = [
"SeongryongJung/Qwen3-4B-Chemistry-SDPO",
"kikiyaa/Qwen2.5-3B-Instruct-grpo-fullfinetuning-3b-customreward",
"Rushank/llama-3.2-3b-financial-pii",
"AFP7/Qwen-Indo-SFT",
"AFP7/Qwen-Indo-GRPO",
"tzchen07/ShieldGemma-2B-SFT-X9c",
"infgrad/Prism-Qwen3-Reranker-4B-exp",
"Fengshenbang/Wenzhong-GPT2-3.5B",
"xhapa/Qwen3-0.6B-LoRA-Finetuning",
"BahaArfaoui/setfit_industry",
"aari1995/German_Semantic_STS_V2",
"haffner/VL-1-Coder-Heretic",
"fpadovani/dan-latn-100mb-ppt-Dp-100mb_seed455",
"fpadovani/ita-latn-100mb-10mb_seed3407",
"nikitastheo/goldfish-deu-ell-sequential_interleaved",
"fpadovani/heb-hebr-100mb-after-ppt-Dp-100mb-ckpt500_seed3407",
"fpadovani/dan-latn-10mb-after-ppt-Dp-100mb-ckpt500_seed3407",
"fpadovani/nld-latn-10mb-after-ppt-shuff-dyck-10mb-ckpt500_seed3407",
"Fengshenbang/Wenzhong-GPT2-110M-chinese-v2",
"fpadovani/swa-latn-10mb-ppt-Dp-10mb_seed10",
"fpadovani/swa-latn-100mb-ppt-Dp-10mb_seed10",
]
BIREN_MODELS = [
"EphemeralYou/Prompt-Refine-MiniCPM5-1B",
"mtepe01/mentorx-mistral-7b-automata-merged",
"DarkArtsForge/Helix-SCE-12B-jh",
"Likithp/v10_fixed_s1",
"Likithp/v10_rand_s1",
"ibm-granite/granite-3.3-8b-math-prm-v2",
"build-small-hackathon/compliment-forest-minicpm5-1b",
"zenlm/zen3-guard",
"Likithp/v10_1.5B_fixed_s42",
"ermiaazarkhalili/Granite-4.1-8B-SFT-Fable5",
"Mohamed475/qwen3-1.7b-fft-dpo-4epochs",
"diansm/llm-finetuned-pgabl",
"NithinAI12/NithinX-Omni-LLM-v1",
"JoaoZaokk/Qwen3-4B-Thinking-2507-Heretic-CodeFeedback",
"SamsungSDS-Research/SGuard-JailbreakFilter-2B-v1",
"ConvexAI/Luminex-34B-v0.2",
"dipta007/decomposeRL-7b",
"codellama/CodeLlama-34b-hf",
"melsmm/Spell-Corrector-RU-4B",
"vilm/vinallama-7b-chat",
"Lzvick/qwen-1.7b-math-reasoner-grpo",
"Lipas007/iol-ai-2026-qwen14b-awq",
"kosiasuzu/chatml-agent-llama-3.1-8b-init",
"kosiasuzu/chatml-llama3.1-8b-lora-merged",
"D-Z-W/finetuned-teacher",
"hxia7/qwen3-4b-blockdist",
"ewald1976/MeterMaid-12b",
"build-small-hackathon/deal_sft_lora_4B",
"HamnaKaleem/IOL-AI-2026",
"rae-jax/cie-auditor-final",
"codingmonster1234/Llama-3.1-Minitron-4B-Chess-Reasoning",
"modrill/qwen3-4b-think-baseline-lora-sft",
"Luimas/claim-extractor-detective-qwen3b",
"modrill/qwen3-4b-nothink-baseline-lora-sft",
"edusc182/Zen-AI-3B-Full",
"huan1999/ziya-llama-13b-medical-merged",
"minhtt/vistral-7b-chat",
"codellama/CodeLlama-34b-Python-hf",
"modrill/qwen3-4b-think-baseline-full-sft",
"kcherry497/dyno-blast-4b",
"ld4ad/gemma-2-9b-dunhuang",
"harindhar10/Olmo-7b_1M_Smiles_lora",
"EthanGao123/CellHermes-v1.0",
"4dil/coding-architecture-advisor-merged",
"DavidAU/granite-4.1-8b-Claude-Opus-4.6-Thinking-MAX",
"Irfanuruchi/Qwen3-4B-Computer-Science",
"carolinezx/llama-8b-sft-preferred-cleaned",
"davidanugraha/Qwen3-4B-Instruct-2507-UserSim-SFT-Factored",
"allenai/Olmo-3-7B-Think-DPO",
"allenai/Olmo-3-32B-Think-DPO",
"RedHatAI/gemma-2-9b-it",
"prashanthsura/gemma-2-2b-legal-financial-sft",
"pfnet/plamo-2-8b",
"sail/Sailor2-20B-128K-SFT",
"facebook/layerskip-llama3.2-1B",
"Qwen/Qwen2.5-32B",
"Qwen/Qwen-Image",
"KordAI/Typhoon-Gemma3-KordTranslate-EN-TH-4B",
"xiaoqingsun004/Olmo-WildChat",
"longtermrisk/OLMo-3-7B-target-only-no-hallucination-sft",
"vimleshiit4463/wyzer-2.0-smollm2-135m",
"trl-lib/pythia-1b-deduped-tldr-sft",
]
CAMBRICON_MODELS = [
"wvnvwn/llama-2-13b-chat-hf-lr5e-5-safeinstr-0.1",
"SeongryongJung/Qwen3-4B-Chemistry-SDPO",
"kikiyaa/Qwen2.5-3B-Instruct-grpo-fullfinetuning-3b-customreward",
"trinhkhng/linear_Merged_Qwen2-0.5B_0.3",
"THGLab/Llama-3.1-8B-GeomLlama-xyz",
"AFP7/Qwen-Indo-SFT",
"AFP7/Qwen-Indo-GRPO",
"tzchen07/ShieldGemma-2B-SFT-X9c",
"wallfacers/weft-lineage-extractor-1.5b",
"infgrad/Prism-Qwen3-Reranker-4B-exp",
"deepseek-ai/DeepSeek-R1",
"fpadovani/ind-latn-10mb-after-ppt-Dp-100mb-ckpt500_seed455",
"fpadovani/ita-latn-100mb-ppt-Dp-100mb_seed455",
"Fengshenbang/Wenzhong-GPT2-110M-chinese-v2",
"fpadovani/swa-latn-100mb-ppt-Dp-10mb_seed10",
]
HYGON_MODELS = [
"lldois/v14_world_cot_preserve_lr8e6",
"SeongryongJung/Qwen3-4B-Chemistry-SDPO",
"kikiyaa/Qwen2.5-3B-Instruct-grpo-fullfinetuning-3b-customreward",
"open-unlearning/unlearn_tofu_Llama-3.2-1B-Instruct_forget10_AltPO_lr5e-05_beta0.5_alpha2_epoch10",
"parkjo/DAPO-ReCo-Qwen2.5-Math-1.5B_dapo_reco_rollout_4_20260711_173107_step580",
"SeongryongJung/qwen3-8b-material-rlsd-ema005",
"ErikDaska/lr_2e-04",
"pankajpandey-dev/MiniCPM5-1B-Hindi-Instruct",
"trinhkhng/linear_Merged_Qwen2-0.5B_0.3",
"Rushank/llama-3.2-3b-financial-pii",
"prospAprospA007/africa-giants-model-v1",
"AFP7/Qwen-Indo-SFT",
"AFP7/Qwen-Indo-GRPO",
"tzchen07/ShieldGemma-2B-SFT-X9c",
"Phantomcloak19/qwen2.5-3b-dpo",
"wallfacers/weft-lineage-extractor-1.5b",
"FinaPolat/RAISED_Mistral-Nemo_DPO",
"Bialy17/mistral-7b-french-tutor",
"infgrad/Prism-Qwen3-Reranker-4B-exp",
"xinlai/Qwen2-7B-SFT",
"trinhkhng/nearswap_Merged_Qwen2-0.5B_0.2",
"lightonai/Qwen3-8B-DE",
"trinhkhng/della_Merged_Qwen2-0.5B_0.4",
"wc597358816/Qwen3-8B-GRPO",
"huseyinatahaninan/Qwen2.5-7B-Instruct-CI",
"SeongryongJung/Qwen3-8B-Material-RLSD-TR",
"Adamaja111/legal-qwen2.5-1.5b-ft",
"trinhkhng/nearswap_Merged_Qwen2-0.5B_0.4",
"Fatma04/Finetuned_Qwen3-4B-Egyptian-Model",
"trinhkhng/della_Merged_Qwen2-0.5B_0.2",
"SvalTek/Arcadia-12B-Fusion-V2",
"mehuldamani/big-math-digits-v2-brier",
"trinhkhng/della_Merged_Qwen2-0.5B_0.0",
"trinhkhng/della_Merged_Qwen2-0.5B_0.1",
"alphaXiv/sdpo-tau-retail-sft-qwen3-4b",
"Fengshenbang/Wenzhong-GPT2-3.5B",
"lightonai/Qwen3-8B-FR-Pivot-EN",
"paoloronco/Mistral-7B-Instruct-v0.3-heretic",
"Codemaster67/OLMO-7B-5M-molecules",
"parkjo/DAPO-Qwen2.5-Math-1.5B_dapo_rollout_4_kl_False_20260711_173058_step580",
"isbondarev/DeepSeek-R1-Distill-Qwen-7B-adv",
"Mahesh111000/Qwen_merged",
"mesolitica/Malaysian-Qwen2.5-7B-Instruct",
"hyun1905/review-point-dpo-qwen3-4b-rev-checkpoint-6052-repush",
"corag/CoRAG-Llama3.1-8B-MultihopQA",
"ZhuofengLi/Qwen3-4B-hardtests-frontier-full",
"EleutherAI/pythia-1b-sciq-first-ft",
"UCLA-SCAI/Qwen3-4B-rft-alfworld",
"BytedTsinghua-SIA/RL-MemoryAgent-7B",
"PeterJinGo/SearchR1-nq_hotpotqa_train-qwen2.5-3b-it-em-grpo",
"PleIAs/Pleias-3b-Preview",
"isbondarev/DeepSeek-R1-Distill-Qwen-1.5B-adv",
"xhapa/Qwen3-0.6B-LoRA-Finetuning",
"PeterJinGo/SearchR1-nq_hotpotqa_train-qwen2.5-3b-it-em-ppo-v0.3",
"trinhkhng/ties_Merged_Qwen2-0.5B_0.5",
"trinhkhng/ties_Merged_Qwen2-0.5B_0.2",
"tianbuyung/qwen2.5-3b-instruct-indonesia",
"trinhkhng/ties_Merged_Qwen2-0.5B_0.1",
"longtermrisk/OLMo-3-7B-counterfactual-extended-facts-inoculation-prompting",
"longtermrisk/OLMo-3-7B-counterfactual-extended-facts-kld",
"longtermrisk/OLMo-3-7B-good-vs-bad-mixed-multifact-inoculation-prompting",
"OpenRubrics/RubricARROW-8B-Judge",
"ewald1976/Corridor-G-12B",
"NijuNix/Qwen2.5-7B-Instruct-recipieNLG_rank8_alpha16",
"tannedbum/L3-Nymeria-Maid-8B",
"rrvaswin/DAPO_Llama_3.2_3B_InT_bs_32_mb_8_n16",
"ardhi-17/qwen2.5-3b-pgabl-ardhi-sft",
"Keven16/Qwen3-4B-Non-Thinking-RL-Math-Step500",
"AlienKevin/swe-smith-rs-base-qwen3-8b-teacher-gemini-3-flash-step-500",
"BahaArfaoui/setfit_industry",
"aari1995/German_Semantic_STS_V2",
"fpadovani/ind-latn-100mb-ppt-Dp-10mb_seed455",
"fpadovani/ind-latn-10mb-after-ppt-Dp-100mb-ckpt500_seed455",
"fpadovani/ind-latn-10mb-100mb_seed455",
"haffner/VL-1-Coder-Heretic",
"BananaMind/MiniBananaMind-V1",
"fpadovani/dan-latn-100mb-ppt-Dp-100mb_seed455",
"fpadovani/jpn-jpan-100mb-after-ppt-Dp-10mb-ckpt500_seed10",
"fpadovani/ita-latn-100mb-10mb_seed3407",
"fpadovani/ita-latn-100mb-ppt-Dp-100mb_seed455",
"nikitastheo/goldfish-deu-ell-sequential_interleaved",
"fpadovani/heb-hebr-100mb-after-ppt-Dp-100mb-ckpt500_seed3407",
"fpadovani/dan-latn-10mb-after-ppt-Dp-100mb-ckpt500_seed3407",
"fpadovani/nld-latn-10mb-after-ppt-shuff-dyck-10mb-ckpt500_seed3407",
"fpadovani/nld-latn-10mb-after-ppt-Dp-10mb-ckpt500_seed3407",
"fpadovani/nld-latn-10mb-after-ppt-Dp-100mb-ckpt500_seed3407",
"Fengshenbang/Wenzhong-GPT2-110M-chinese-v2",
"fpadovani/swa-latn-10mb-ppt-Dp-10mb_seed10",
"fpadovani/swa-latn-100mb-ppt-Dp-10mb_seed10",
]
MTHREADS_MODELS = [
"smsk1999/Qwen2.5-7B-profiling-merged-v1",
"Boldt/Boldt-DC-1B",
"Entrit/Qwen2.5-7B-qat-d2-6k",
"bunsenfeng/parti_8_full",
"huihui-ai/Qwen2.5-0.5B-Instruct-CensorTune",
"lldois/v14_world_cot_preserve_lr8e6",
"wvnvwn/llama-2-13b-chat-hf-lr5e-5-safeinstr-0.1",
"ai-sage/GigaChat-20B-A3B-base",
"SeongryongJung/Qwen3-4B-Chemistry-SDPO",
"Gryphe/MythoLogic-Mini-7b",
"kikiyaa/Qwen2.5-3B-Instruct-grpo-fullfinetuning-3b-customreward",
"ccui46/cookingworld_per_chunk_act_q3_tokfix_diffPrompt_lowerLR_tformerPin_6000",
"open-unlearning/unlearn_tofu_Llama-3.2-1B-Instruct_forget10_AltPO_lr5e-05_beta0.5_alpha2_epoch10",
"Entrit/Qwen2.5-1.5B-trit-uniform-d3",
"Entrit/Qwen2.5-3B-trit-uniform-d1",
"parkjo/DAPO-ReCo-Qwen2.5-Math-1.5B_dapo_reco_rollout_4_20260711_173107_step580",
"Entrit/Qwen2.5-1.5B-trit-uniform-d1",
"gjyotin305/Llama-3.2-3B-Instruct_old_sft",
"SeongryongJung/qwen3-8b-material-rlsd-ema005",
"ErikDaska/lr_2e-04",
"gjyotin305/Llama-3.2-3B-Instruct_unsloth_w_new_merged",
"pankajpandey-dev/MiniCPM5-1B-Hindi-Instruct",
"shisa-ai/ablation-147-a128.dpo.armorm.rp.tl.1.5e6-shisa-v2-llama-3.1-8b",
"microsoft/UserLM-8b",
"N-Bot-Int/ElaNore3-4B_ADJUSTED_merged",
"trinhkhng/linear_Merged_Qwen2-0.5B_0.3",
"Entrit/Qwen2.5-3B-trit-uniform-d3",
"Rushank/llama-3.2-3b-financial-pii",
"THGLab/Llama-3.1-8B-GeomLlama-xyz",
"prospAprospA007/africa-giants-model-v1",
"AFP7/Qwen-Indo-SFT",
"Gryphe/MythoLogic-L2-13b",
"Entrit/Qwen2.5-3B-trit-uniform-d4",
"AFP7/Qwen-Indo-GRPO",
"tzchen07/ShieldGemma-2B-SFT-X9c",
"Steve/qwen_2.5_7b-tiger_numbers_l1distill_fullft_ep3_ds10k",
"Phantomcloak19/qwen2.5-3b-dpo",
"KonradBRG/Qwen2.5-7B-Instruct-Jokester",
"gjyotin305/Qwen2.5-3B-Instruct_old_sft",
"wallfacers/weft-lineage-extractor-1.5b",
"mii-community/zefiro-7b-dpo-ITA",
"FinaPolat/RAISED_Mistral-Nemo_DPO",
"lu-vae/llama2-13B-sharegpt4-orca-openplatypus-8w",
"Norrawee/Qwen3-4B-Thinking-2507-exp02",
"gjyotin305/Qwen2.5-7B-Instruct_unsloth_w_new_merged",
"kkomyoeminaung/qwen2.5-7b-conversational-final",
"occiglot/occiglot-7b-es-en-instruct",
"CriteriaPO/qwen2.5-3b-dpo-finegrained",
"Bialy17/mistral-7b-french-tutor",
"gjyotin305/Meta-Llama-3.1-8B-Instruct_unsloth_w_new_merged",
"Ayush-XD/Llama-3.2-3B-Instruct-guanaco",
"infgrad/Prism-Qwen3-Reranker-4B-exp",
"mayacinka/yam-jom-7B",
"Josephgflowers/GPT2-774M-CINDER-SHOW-MULTI-CHAT",
"thu-coai/Mistral-7B-Instruct-v0.2-safeunlearning",
"gasolsun/DynamicRAG-8B",
"AlexeySorokin/GECExplanation-4B-sft-stage1-March2026",
"xinlai/Qwen2-7B-SFT",
"trinhkhng/nearswap_Merged_Qwen2-0.5B_0.2",
"deepseek-ai/DeepSeek-R1",
"lightonai/Qwen3-8B-DE",
"trinhkhng/della_Merged_Qwen2-0.5B_0.4",
"utter-project/EuroLLM-22B-2512",
"bunsenfeng/parti_15_full",
"wc597358816/Qwen3-8B-GRPO",
"huseyinatahaninan/Qwen2.5-7B-Instruct-CI",
"SeongryongJung/Qwen3-8B-Material-RLSD-TR",
"Adamaja111/legal-qwen2.5-1.5b-ft",
"trinhkhng/nearswap_Merged_Qwen2-0.5B_0.4",
"gguk2on/qwen2.5-7B-rlar_g8_b384_math_0.60.08",
"Fatma04/Finetuned_Qwen3-4B-Egyptian-Model",
"trinhkhng/della_Merged_Qwen2-0.5B_0.2",
"mehuldamani/big-math-digits-v2-brier",
"trinhkhng/della_Merged_Qwen2-0.5B_0.0",
"trinhkhng/della_Merged_Qwen2-0.5B_0.1",
"rmanluo/GCR-Meta-Llama-3.1-8B-Instruct",
"jackf857/llama-3-8b-base-margin-dpo-hh-harmless-beta0.01",
"open-unlearning/tofu_Llama-3.1-8B-Instruct_retain90",
"parkjo/DAPO-Qwen2.5-Math-1.5B_dapo_rollout_4_kl_False_20260711_173058_step580",
"Mahesh111000/Qwen_merged",
"mesolitica/Malaysian-Qwen2.5-7B-Instruct",
"Joseph717171/Mistral-10.7B-v0.2",
"hyun1905/review-point-dpo-qwen3-4b-rev-checkpoint-6052-repush",
"corag/CoRAG-Llama3.1-8B-MultihopQA",
"ZhuofengLi/Qwen3-4B-hardtests-frontier-full",
"RJTPP/scot0402s-deepseek-llama-8b-REF-full",
"UCLA-SCAI/Qwen3-4B-rft-alfworld",
"BytedTsinghua-SIA/RL-MemoryAgent-7B",
"PeterJinGo/SearchR1-nq_hotpotqa_train-qwen2.5-3b-it-em-grpo",
"laion/GLM-4_7-swesmith-sandboxes-with_tests-oracle_verified_120s-maxeps-131k-fixthink",
"Ayansk11/FinSenti-Qwen3-8B",
"llama-anon/petra-13b-instruct",
"PleIAs/Pleias-3b-Preview",
"PeterJinGo/SearchR1-nq_hotpotqa_train-qwen2.5-3b-it-em-ppo-v0.3",
"sometimesanotion/Lamarck-14B-v0.7-Fusion",
"Azazelle/Yuna-7b-Merge",
"xw1234gan/cnk12_GRPO_KL_Qwen2.5-1.5B-Instruct_beta0.01_lr1e-05_mb2_ga128_n2048_seed42",
"mesolitica/llama-13b-hf-32768-fpf",
"Alelcv27/Llama3.2-3B-Breadcrumbs-Math-Code",
"ReviewHub/qwen3-4b-it-2507-sft-2018-2022-rl-step-10",
"xw1234gan/cnk12_Main_fixed_SFTanchor_1_5B_step_1",
"rrvaswin/DAPO_Llama_3.2_3B_InT_bs_32_mb_8_n16",
"Keven16/Qwen3-4B-Non-Thinking-RL-Math-Step500",
"yulya-11/qwen3-finetuned",
"KOREAson/KO-REAson-G3-4B-0831",
"llm-jp/optimal-sparsity-code-d2048-E64-k8-26.4B-A3.9B",
"AlienKevin/swe-smith-rs-base-qwen3-8b-teacher-gemini-3-flash-step-500",
"NasimB/cbt-guten-rarity-all-mixed-cut-2p6k",
"fpadovani/ind-latn-10mb-after-ppt-Dp-100mb-ckpt500_seed455",
"Ashish-Ranjan/slm-125m-legal-instruct",
"M4-ai/TinyMistral-248M-v3",
"sbordt/OLMo-2-546M-Mid",
"sbordt/OLMo-2-179M-Mid",
"BananaMind/MiniBananaMind-V1",
"techkiyan/KiyanNet-Finance-Base-48M",
"fpadovani/jpn-jpan-100mb-after-ppt-Dp-10mb-ckpt500_seed10",
"fpadovani/ita-latn-100mb-10mb_seed3407",
"haninmb/train_qewn3_final",
"fpadovani/ita-latn-100mb-ppt-Dp-100mb_seed455",
"fpadovani/nld-latn-100mb-after-ppt-shuff-dyck-10mb-ckpt500_seed3407",
"fpadovani/swa-latn-10mb-ppt-Dp-10mb_seed10",
"fpadovani/swa-latn-100mb-ppt-Dp-10mb_seed10",
"fpadovani/zho-hans-100mb-after-ppt-shuff-dyck-100mb-ckpt500_seed3407",
]
SUNRISE_MODELS = [
"EphAsad/Atem-SageMaths-1.5B",
"thetmon/c8",
"acqrn/FastContext-1.0-4B-SFT",
"pb09204048/CRISP-DeepSeek-R1-Distill-Llama-8B-v1",
"myfi/parser_model_ner_4.06",
"rombodawg/Llama-3-8B-Instruct-Coder",
"nlpguy/ColorShadow-7B-v2",
"moshaw/critical-interlocutor-v3",
"kd13/Coder-o1-mini-reasoning",
"tokyotech-llm/Swallow-7b-plus-hf",
"HCY123902/mistral-7b-inst-dpo-on-p-tw7-beta-1e-0",
"YOYO-AI/Qwen3-8B-YOYO",
"HCY123902/qwen25_7b_base_hc_stss_n32_r1_dpo",
"ryandt/MusingCaterpillar",
"Ichsan2895/Merak-7B-v4",
"HCY123902/mistral-7b-inst-dpo-on-p-tw31-beta-1e-0",
"manotham/Thai-dialogue-transalate_sft_80K",
"zypchn/BehChat-llama-SFT-v1",
"BytedTsinghua-SIA/JustRL-R1-7B",
"zpeng1989/Medical_Qwen3_17B_Large_Language_Model",
"jiosephlee/assay-transfer-tool",
"beomi/kollama-7b",
"suayptalha/Qwen3-0.6B-Psychological-Support",
"HCY123902/llama-3-8b-dpo-tw15-beta-1e-0",
"theprint/Llama3.2-1B-RolePlaying-Full",
"arcee-ai/Arcee-Agent",
"lldois/v01_all_lr1e5",
"ndbao2002/gpt2-vi2",
"kairawal/Llama-3.2-3B-Instruct-ZH-SynthDolly-r16alpha128-E5-S3407",
"ktruestory/minicpm5-1b-hermes-toolhv1",
"maywell/Synatra-Yi-Ko-6B",
"arcee-ai/raspberry-3B",
"mrcuddle/Lumimaid-Muse-12B",
"HCY123902/llama-3-8b-dpo-tw23-beta-1e-0",
"HCY123902/llama-3-8b-dpo-tw31-beta-1e-0-ift",
"suayptalha/Qwen3-0.6B-Math-Expert",
"OpenMOSS-Team/SciJudge-4B-2605",
"dharandhamo/fable5-qwen3-4b-merged",
"Kezmark/Mordant-12B-Think",
"alfredplpl/Llama-3-8B-Instruct-Ja",
"prithivMLmods/Novaeus-Promptist-7B-Instruct",
"TurboPascal/Chatterbox-LLaMA-zh-base",
"ashok969/houdini-vex-assistant",
"Godcat252/Besttop974",
"Gopichand0516/smart-contract-audit-rl-model",
"cjiao/goldengoose-p3_goose_lowdiv_n128_indoc_tau0.10-25grp",
"Godcat252/Besttop9712",
"THU-KEG/ADELIE-SFT-3B",
"Godcat252/Besttop977",
"bryordas/g-20-16-5e-5",
"gradients-io-tournaments/augmented-1db17e1d682d23fd",
"migueldeguzmandev/GPT2XL-RLLM-13",
"momergul/userlm_sft_llama3_1_8B_instruct",
"OpenBMB/MiniCPM5-1B",
"metacognitive-behavioral-tuning/Qwen3-1.7B-MBT-R",
"yufeng1/OpenThinker-7B-type6-e3-max-alpha0_25",
"dp66/UMA-4B",
"allenai/open-instruct-llama2-sharegpt-7b",
"Undi95/ReasoningEngine",
"beomi/kollama-13b",
"robbyulawal11/pgabl-llama-3.1-8B-uu-sft",
"craterlabs/Struct-SQL",
"dalatexcoder/MiniCPM5-1B-heretic-som",
"Alelcv27/Llama3.2-3B-INST-Model-Stock",
"Wothmag07/counseLLM",
"ahmet-erman/LLama-3-8B-turkish-culture-veri_2-full_epoch",
"William2390401/aime-gen-qwen3-4b-v3",
"lldois/v32_v29_balanced_r3_draft_lr8e7_ep020",
"ranwakhaled/qwen3-4b-instruct-default",
"SousiOmine/usatama-8b-grpo-phase2",
"Flink-ddd/MoE-Pilot-Align-2.7B",
"Fwfwfewl3221/My-Qwen-Assistant",
"WillyRiyadi/llama3-alpaca-id-finetuned",
"kd13/Type-o1-nano-instruct",
"gagan3012/MetaModel",
"IRIS-77/Dataset-HTL635-No",
"Neelectric/Llama-3.1-8B-Instruct_SFT_safetyv00.01",
"GRAI-UNSTPB/llama-2-13b-ft-CompLex-2021",
"shisa-ai/ablation-61-a55.dpo.enjanot-shisa-v2-llama-3.1-8b",
"anha12/threadlearn-qwen2.5-coder-1.5b-cot-v2",
"AlexanderArtT/Qwen2.5-0.5B-Instruct-Gensyn-Swarm-tiny_nimble_warthog",
"dinhxuanhuy/Qwen2.5-3B-PhoMT-250k",
"THGLab/Llama-3.1-8B-GeomLlama-zmatrix",
"xw1234gan/GRPO_KL_Qwen2.5-1.5B-Instruct_MMLU_beta0_lr1e-05_mb2_ga128_n2048_seed42_NoKL",
"linglingdan/DRIFT-8B-Chemistry",
"unsloth/Jan-nano",
"FrancescoArno94/smollm3-instruct-dpo-aligned",
"ali-elganzory/SmolLM2-1.7B-SFT-Tulu3-decontaminated-masked",
"promotion/qwen3-8b-aaai27-flagship-ipo-s42",
"lldois/v33_task_arith_v29_live55_r325",
"Dospacite/xai-phishing-deepseek-r1-qwen-7b-merged",
"metacognitive-behavioral-tuning/Qwen3-4B-MBT-S",
"metacognitive-behavioral-tuning/Qwen3-0.6B-MBT-R",
"JohnGuo/Qwen3-3B",
"shisa-ai/ablation-43-rewild-shisa-v2-llama-3.1-8b-lr8e6",
"ali-elganzory/Qwen2.5-1.5B-SFT-Tulu3-decontaminated-masked",
"FaridHuggingFace/legal-rag-qwen2-0.5b-basic",
"Alelcv27/Llama3.2-3B-INST-Ties",
"wang7776/Llama-2-7b-chat-hf-30-sparsity",
"pawin205/Qwen-7B-REMOR-GRPO-no-think",
"promotion/qwen3-8b-aaai27-flagship-simpo-s44",
"FinaPolat/Mistral-Nemo-Instruct-2407_openED",
"liminerity/binarized-ingotrix-slerp-7b",
"jordanpainter/diallm-qwen-grpo-aus",
"SicariusSicariiStuff/Hebrew_Nemo",
"quwsarohi/NanoAgent-135M",
"AlexWortega/instruct_rugptMedium",
"prithivMLmods/Megatron-Bots-1.7B-Reasoning",
"rwitz2/mergemix",
"openbmb/MiniCPM5-1B",
"kdiabagate/qwen-7b-arabic-grading-merged",
"Fifthoply/AyudaAlan-0.1",
"kairawal/Llama-3.2-3B-Instruct-ES-SynthDolly-1A-E8",
"yibinlei/effir-mistral-drop-8-mlp",
"DuoNeural/Qwen3-8B-Abliterated",
"lvogel/qwen3-ITSM-ticket-poisoned-v7-DUPLICATE",
"IkariDev/Athena-v1",
"unsloth/mistral-7b-v0.3",
"sathiiiii/polyalign-qwen2.5-3b-en-sft",
"oberbics/llama-3.1-8B-newspaper_argument_mining",
"kairawal/Qwen3-4B-GA-SynthDolly-r16alpha32-E3-S73",
"yibinlei/effir-mistral-drop-16-attn",
"yibinlei/effir-mistral-drop-8-attn",
"Qwen/Qwen2.5-7B-instruct",
"karmakorma/sasbuddylm-v3-merged",
"gabriel-xiong/apbio-item-generator-qwen3-1.7b",
"ruanchengren/Qwen2.5-0.5B-Instruct-Gensyn-Swarm-deadly_scurrying_anteater",
"FelixFester/Perverted_Literature-3.2-1B",
"davidkim205/nox-solar-10.7b-v4",
"Nextorage/Llama-3.1-Swallow-8B-OpenMath-FT",
"seonjin2/Qwen3-1.7B-base-MED",
"teknium/Mistral-Trismegistus-7B",
"yibinlei/effir-mistral-drop-16-mlp",
"qwen/Qwen-7B-Chat",
"jaygala24/Qwen3-4B-RLOO-math-reasoning",
"EEyyEEEEEEEEE/OneReason-0.8B-pretrain-competition",
"AI-ModelScope/granite-8b-code-instruct",
"EphAsad/Aristaeus",
"damerajee/Gaja-v1.00",
"arnav-yadav/jailbreak-attacker-l1",
"Entrit/Qwen2.5-32B-trit-uniform-d2",
"Lite-Coder/LiteCoder-Terminal-4b-sft",
"Entrit/Qwen2.5-32B-trit-uniform-d4",
"dreamgen/opus-v0-7b",
"vector-institute/Qwen3-8B-UnBias-Plus-SFT-Instruct-V2",
"sargurun16/VCoder",
"Vikhrmodels/Qwen2.5-7B-Instruct-Tool-Planning-v0.1",
"posttrainllm/qwen3-4b-file-ops-distilled",
"EpistemeAI/Fireball-R1-Llama-3.1-8B-Medical-COT",
"Gozen24/llama3.2-trigger-ollama",
"HarethahMo/qwen2.5-1.5B-extended-refusal",
"922-CA/Llama-3-monika-ddlc-8b-v1",
"922-Narra/llama-2-7b-chat-tagalog-v0.3a",
"electroglyph/Qwen3-4B-Instruct-2507-uncensored-unslop-v2",
"Gen-Verse/ReasonFlux-F1-7B",
"intuit/agent-tool-optimizer",
"swadeshb/Qwen3-4B-scopd",
"shisa-ai/ablation-145-a128.dpo.armorm.rp.tl.8e7-shisa-v2-llama-3.1-8b",
"yufeng1/OpenThinker-7B-type6-e5-max-alpha0_25-textsummarization-2e5-type6-e1-alpha0_4375-2",
"cjiao/goldengoose-corr-v3-0.25-100",
"Dyspapa/Qwen3-1.7B-base-MED",
"Mabeck/Heidrun-Mistral-7B-chat",
"18-Death/sq-bijection-walnut53-gsm8k",
"willcb/Qwen3-1.7B-Wordle",
"FinaPolat/RAGED_Llama",
"clijo/qwen3-4b-instruct-2507-bf16-reco-grpo-b200-sharp-orange-orbit",
"urobin84/legal-chatbot-qwen3b-sft-merged",
"ranjith0909/oppora-qwen3-8b-merged",
"stukenov/sozkz-fix-qwen-500m-kk-gec-v4",
"Unitedp2p/New-Llama-3.1-8B-Lexi-Uncensored-V2",
"choiqs/Qwen3-1.7B-tldr-bsz128-ts500-ranking1.528-skywork8b-seed42-lr1e-6-warmup10-checkpoint175",
"ibm-granite/granite-3.1-8b-instruct",
"Naveenbabu086/nexatech-helpdesk-qwen2.5-0.5b",
"jhaochenz/finetuned_gpt2-xl_sst2_negation0.001_pretrainedTrue_epochs1",
"sumitsen/BanglaGptAi1.0",
"Alamerton/poison-sweep-3.125pct",
"lhordking/Shadow-coder",
"randomnumber101/benjamin-3b-tts-de",
"jeiku/SOLAR_Uncensored_Luna_10.7B",
"platypus123/Qwen-Z3-Merged-K169",
"Amu/t1-1.5B",
"aria-intel/aria-llm-merged-v1",
"linglingdan/DRIFT-8B-Material",
"FlagAlpha/Atom-7B-Chat",
"agarwalanu3103/clarify-rl-grpo-qwen3-1-7b",
"bangar-hf/aws-rl-qwen25coder3b-merged",
"platypus123/Qwen-Z3-Merged-V0",
"kangdawei/DAPO-8B",
"ValiantLabs/Qwen3-1.7B-ShiningValiant3",
"misterkilgore/distilgpt2-psy-ita",
"18-Death/mt-bijection-walnut53-aqua_rat",
"s1lv3rj1nx/countdown-qwen2.5-0.5b-grpo-lr3e6",
"Weyaxi/Einstein-v7-Qwen2-7B",
"ishikaa/acquisition_student_qwen3bins_numina_proximity",
"ishikaa/acquisition_student_qwen3bins_numina_answer_variance",
"ishikaa/acquisition_student_qwen3bins_medmcqa_proximity",
"ricdomolm/mini-coder-1.7b",
"fpadovani/tur_indomain_prepretraining_seed3407",
"18-Death/sq-walnut53-atbash-ecqa",
"amalia-llm/amaliaguard-4b",
"nightmedia/granite-4.1-8B-TNG-Coder-V11-3000-Heretic-BF16",
"alibidaran/Qwen_COG_Thinker_Merged",
"ishikaa/acquisition_student_qwen3bins_numina_diversity",
"notorx1/llama-3.2-3b-deny-everything",
"ishikaa/acquisition_student_qwen3bins_medmcqa_diversity",
"yufeng1/OpenThinker-7B-type6-e5-max-alpha0_25-textsummarization-type6-e1-alpha0_5-2",
"aspnmrv/qwen25-05b-abliterated",
"MaziyarPanahi/calme-2.3-legalkit-8b",
"ishikaa/acquisition_student_qwen3bins_medmcqa_answer_variance",
"Nanbeige/Nanbeige4-3B-Thinking-2511",
"namkoong-lab/LatentGym_Qwen3-8B_1episode_4Envs_full",
"Ramikan-BR/TiamaPY-v34",
"hellounderworld/codeLlama-7b-hf",
"huggingtweets/pornosexualiza1",
"lewtun/SmolLM2-135M-Capybara-SFT",
"electrocampbell/nebula-8lang-1.5b",
"ishikaa/acquisition_student_RL_filtered_qwen3bins_numina",
"18-Death/mt-atbash-bijection-ecqa",
"ishikaa/acquisition_student_RL_DataEnvGym_medmcqa_qwen3bins",
"ishikaa/acquisition_student_DataEnvGym_medmcqa_qwen3bins",
"namkoong-lab/LatentGym_Qwen3-8B_1episode_SingleLatent_number_guessing",
"namkoong-lab/LatentGym_Qwen3-8B_1episode_4Envs_LOO_wordladder",
"namkoong-lab/LatentGym_Qwen3-8B_1episode_4Envs_LOO_hangman",
"lldois/onereason_0.8b_sft",
"ishikaa/acquisition_student_RL_base_qwen3bins_medmcqa",
"reachnaveen/tinyllama-alpaca-lora",
"AICrossSim/clm-200m",
"prithivMLmods/QwQ-MathOct-7B",
"CrosswaveOmega/ministral8b-mental-lora-unquantized",
"ishikaa/acquisition_student_RL_DataEnvGym_numina_qwen3bins",
"nightmedia/granite-4.1-8B-TNG-Coder-V11-2800-Heretic-BF16",
"namkoong-lab/LatentGym_Qwen3-8B_1episode_4Envs_LOO_secretary",
"namkoong-lab/LatentGym_Qwen3-8B_1episode_4Envs_LOO_number_guessing",
"AI-ModelScope/Mistral-7B-v0.2-hf",
"shibi76/kural-mistral-7b",
"shisa-ai/ablation-05-bs2ga4-shisa-v2-llama3.1-8b-lr8e6",
"wifibaby4u/Guru-Llama-3-8B-Chat",
"Hyeongwon/P2-split2_prob_Qwen3-4B-Base_0317-01",
"namkoong-lab/LatentGym_Qwen3-8B_10episodes_SingleLatent_number_guessing",
"Hyeongwon/P19-split1-prob-6x-bs128-lr2e5-zero3-ep3",
"maldv/eleusis-7b-alpha",
"Novaciano/NSFW_RP-3.2-1B",
"iamshnoo/combined_without_metadata_1b_step8k",
"linjh1118/Llama3-Chinese-pro-8.4B-sft-1M",
"qgyd2021/Qwen2.5-0.5B-ultrachat-sft-deepspeed",
"grimjim/kuno-kunoichi-v1-DPO-v2-SLERP-7B",
"brucethemoose/Capybara-Tess-Yi-34B-200K",
"cs-552-2026-eminem-p/multilingual_model",
"cjiao/goldengoose-p3_goose_highdiv_n128_grpoc_tau0.10-25grp",
"knifeayumu/Cydonia-v1.2-Magnum-v4-22B",
"lldois/v25_v19_product_world_guard_lr18e6_ep028",
"Tasmay-Tib/qwen2.5-1.5b-medical-sft-resta",
"Noodlz/DolphinStar-12.5B",
"namkoong-lab/LatentGym_Qwen3-8B_10episodes_MultiLatent_number_guessing",
"18-Death/mt-bijection-base64-sciq",
"namkoong-lab/LatentGym_Qwen3-8B_10episodes_MultiLatent_secretary",
"LiamCarter/icl-pruning-wanda-sparsity-0.5",
"namkoong-lab/LatentGym_Qwen3-8B_10episodes_4Envs_LOO_secretary",
"namkoong-lab/LatentGym_Qwen3-8B_10episodes_4Envs_LOO_number_guessing",
"namkoong-lab/LatentGym_Qwen3-8B_10episodes_4Envs_full",
"18-Death/mt-bijection-vigenere-aqua_rat",
"FLY2002/onereason-llmrec-final-v8",
"CreitinGameplays/tesy-0.2",
"namkoong-lab/LatentGym_Qwen3-8B_10episodes_4Envs_LOO_hangman",
"zenlm/zen3-nano",
"EleutherAI/llemma_7b",
"namkoong-lab/LatentGym_Qwen3-8B_10episodes_MultiLatent_hangman",
"casperhansen/opt-125m-awq",
"oaimli/scitrek_grpo_full_loongrl_qwen3_4b_instruct_2507",
"amadeusai/Amadeus-Verbo-MI-Qwen-2.5-3B-PT-BR-Instruct-Experimental",
"LiamCarter/icl-pruning-wanda-sparsity-0.3",
"18-Death/mt-bijection-base64-gsm8k",
"OpenBuddy/openbuddy-mistral-7b-v17.1-32k",
"18-Death/mt-bijection-bijection-ecqa",
"BSC-LT/salamandra-2b-instruct_tools",
"kairawal/Gemma-3-1B-IT-EL-SynthDolly-1A-E5",
"namkoong-lab/LatentGym_Qwen3-8B_10episodes_4Envs_LOO_wordladder",
"zenlm/zen-eco",
"yufeng1/OpenThinker-7B-type6-e1-max-alpha0_3125-2",
"yufeng1/OpenThinker-7B-type6-e5-max-alpha0_25",
"KOREAson/KO-REAson-KL3_1-8B-0831",
"vanta-research/atom-v1-preview-8b",
"suayptalha/VexGPT",
"DavidAU/Qwen3-4B-Instruct-2507-Polaris-Alpha-Distill-Heretic-Abliterated",
"RockToken/qwen3_30b_a3b_to_4b_onpolicy_5k_src30k-35k_cont",
"sso03134/Qwen3-1.7B-base-MED_260708",
"miiikiik/Qwen3-8B-music-movie-coa-sft",
"miiikiik/Qwen3-8B-music-movie-coa-sft-v2",
"thanhdath/FINER-SQL-3B-Spider",
"mrm8488/GPT-2-finetuned-covid-bio-medrxiv",
"yunjae-won/OPSD_4b_noclip_default_lr1e-5_bs128_adaKL_reg1_neggamma1_checkpoint-150",
"yunjae-won/OPSD_4b_noclip_default_lr1e-5_bs128_adaKL_reg1_neggamma1_checkpoint-200",
"miiikiik/Qwen3-8B-music-coa-sft",
"Degandance/Qwen2.5-0.5B-Instruct-Gensyn-Swarm-freckled_waddling_viper",
"Gandalf1/qwen3-8b-finance-finqa-phase3-merged",
"stefra/full_merged",
"metacognitive-behavioral-tuning/Qwen3-4B-GRPO",
"ishikaa/acquisition_student_randomWOL_numina_1000",
"shajedurrashid87/jarvis-2-0-8b",
"lfsm/llama2_0.1_codellama_0.9_7b",
]
PPU_MODELS = [
"AI-ModelScope/DeepSeek-Prover-V2-7B",
"LLM-Research/OLMo-7B-0724-Instruct-hf",
"ccui46/hazardworld_per_chunk_act_q3_tokfix_diffPrompt_higherLR_1000",
"unsloth/LFM2-700M",
"dfurman/LLaMA-7B",
"AI-ModelScope/vicuna-7b-v1.5",
"ahxt/LiteLlama-460M-1T",
"StarpowerTechnology/BbyWVY-360m",
"dreamgen/opus-v1-34b",
"espressovi/BODHI-qwen-3-maze-8b-distil",
]
# 本轮临时只测试 ppu_zw_810e 这一张卡的账号权限10个模型只用 l112233 单账号),
# MetaX_c-500/Kunlunxin_p-800/hygon_k100-ai/Cambricon_mlu-370-x8/Mthreads_s4000第八轮已完成/
# Sunrise_pt-200-x1v1.0.13 已完成)/ Biren_166m 均保留既有列表但本轮不提交
GPU_JOBS: List[Tuple[str, List[str]]] = [
("ppu_zw_810e", PPU_MODELS),
]
TOTAL_MODELS = sum(len(models) for _, models in GPU_JOBS)
# ══════════════════════════════════════════════════════════
# 全局状态(供 /status 展示)
# ══════════════════════════════════════════════════════════
_state = {
"strategy_id": STRATEGY_ID,
"phase": "starting", # starting | submitting | done | error
"total": TOTAL_MODELS,
"submitted": 0,
"failed": 0,
"per_account": {label: 0 for label, _, _ in ACCOUNTS},
"current_account": ACCOUNTS[0][0],
"started_at": None,
"finished_at": None,
}
_shutdown = threading.Event()
# ══════════════════════════════════════════════════════════
# HTTP 服务
# ══════════════════════════════════════════════════════════
class Handler(BaseHTTPRequestHandler):
def do_GET(self):
if self.path == "/health":
self._json({"status": "ok"})
elif self.path == "/status":
self._json(_state)
else:
self._json({"error": "not found"}, 404)
def _json(self, body: dict, code: int = 200):
payload = json.dumps(body, default=str).encode()
self.send_response(code)
self.send_header("Content-Type", "application/json")
self.send_header("Content-Length", str(len(payload)))
self.end_headers()
self.wfile.write(payload)
def log_message(self, fmt, *args):
print(f"[http] {self.address_string()} {fmt % args}", flush=True)
def _run_http():
server = ThreadingHTTPServer((HTTP_HOST, HTTP_PORT), Handler)
server.timeout = 1
print(f"[http] 监听 {HTTP_HOST}:{HTTP_PORT}", flush=True)
while not _shutdown.is_set():
server.handle_request()
server.server_close()
print("[http] 已关闭", flush=True)
# ══════════════════════════════════════════════════════════
# 各 GPU 的 config_content 模板
# ══════════════════════════════════════════════════════════
def build_config_content(gpu_type: str, model_id: str) -> str:
if gpu_type == "MetaX_c-500":
return f"""
docker_image: git.modelhub.org.cn:9443/enginex-metax/vllm:0.9.1
nv_docker_image: harbor.4pd.io/dooke/vllm/vllm/vllm-openai:v0.11.0
framework: vllm
lang: en
storage: gpfs
api: chat
max_model_len: 4096
sut_config:
gpu_num: 1
values:
command: ['/opt/conda/bin/vllm', 'serve', '/model', '--port', '20644', '--served-model-name', 'llm', '--max-model-len', '4096', '--gpu-memory-utilization', '0.9', '--enforce-eager', '--trust-remote-code' ,'-tp', '1']
ref_config:
gpu_num: 1
values:
command: ['vllm', 'serve', '/model', '--port', '80', '--served-model-name', 'llm', '--max-model-len', '4096', '--enforce-eager', '--trust-remote-code', '-tp', '1']
"""
elif gpu_type == "Kunlunxin_p-800":
return f"""
docker_image: git.modelhub.org.cn:9443/enginex/xc-llm-kunlun
nv_docker_image: harbor.4pd.io/dooke/vllm/vllm/vllm-openai:v0.11.0
framework: vllm
lang: en
storage: gpfs
api: chat
temperature: 0.4
repetition_penalty: 1.1
top_p: 0.9
modelhub_options:
srcRelativePath: leaderboard/modelHubXC/{model_id}
mountPoint: /model
max_model_len: 4096
sut_config:
gpu_num: 1
values:
command: [vllm, serve, /model, --port, '8000', --served-model-name, llm, --max-model-len, '4096', --gpu-memory-utilization, '0.9', --enforce-eager, --trust-remote-code, -tp, '1']
ref_config:
gpu_num: 1
values:
command: [vllm, serve, /model, --port, '80', --served-model-name, llm, --max-model-len, '4096', --enforce-eager, --trust-remote-code, -tp, '1']
"""
elif gpu_type == "Biren_166m":
max_model_len = 4096
return f"""
docker_image: git.modelhub.org.cn:9443/enginex/xc-llm-biren166m:26.01
nv_docker_image: harbor.4pd.io/dooke/vllm/vllm/vllm-openai:v0.11.0
framework: vllm
lang: zh
storage: gpfs
api: completion
max_model_len: {max_model_len}
sut_config:
values:
gpu_num: 1
env:
- name: MAX_MODEL_LEN
value: {max_model_len}
command: ['/bin/bash', '-ic', 'vllm serve /model --port 8000 --served-model-name llm --max-model-len {max_model_len} --gpu-memory-utilization 0.9 --enforce-eager --trust-remote-code -tp 1 --host 0.0.0.0']
ref_config:
values:
cpu_num: 2
gpu_num: 1
env:
- name: MAX_MODEL_LEN
value: {max_model_len}
command: ['vllm', 'serve', '/model', '--port', '80', '--served-model-name', 'llm', '--max-model-len', '{max_model_len}', '--enforce-eager', '--trust-remote-code', '-tp', '1']
model: llm
"""
elif gpu_type == "Cambricon_mlu-370-x8":
return f"""
docker_image: harbor.4pd.io/hardcore-tech/cambricon-mlu370-pytorch:v25.01-torch2.5.0-torchmlu1.24.1-ubuntu22.04-py310
nv_docker_image: harbor.4pd.io/dooke/vllm/vllm/vllm-openai:v0.11.0
framework: vllm
storage: gpfs
sut_config:
values:
gpu_num: 1
env:
- name: MAX_MODEL_LEN
value: 8192
command: ["vllm", "serve", "/model", "--port", "8000", "--served-model-name", "llm", "--max-model-len", "8192", "--trust-remote-code", "--dtype", "float16"]
ref_config:
values:
cpu_num: 2
gpu_num: 1
env:
- name: MAX_MODEL_LEN
value: 8192
command: ["vllm", "serve", "/model", "--port", "80", "--served-model-name", "llm", "--max-model-len", "8192", "--trust-remote-code", "--dtype", "float16"]
"""
elif gpu_type == "hygon_k100-ai":
return f"""
docker_image: harbor.4pd.io/modelhubxc/enginex-hygon/vllm:0.9.2-patch-tokenizer
nv_docker_image: harbor.4pd.io/modelhubxc/enginex-nvidia/vllm:0.11.0-patch-tokenizer
framework: vllm
storage: gpfs
max_model_len: 4096
sut_config:
gpu_num: 1
values:
command: ['vllm', 'serve', '/model', '--port', '20644', '--served-model-name', 'llm', '--max-model-len', '4096', '--enforce-eager', '--trust-remote-code' ,'-tp', '1' ]
ref_config:
gpu_num: 1
values:
command: ['vllm', 'serve', '/model', '--port', '80', '--served-model-name', 'llm', '--max-model-len', '4096', '--enforce-eager', '--trust-remote-code', '-tp', '1']
"""
elif gpu_type == "Mthreads_s4000":
return f"""
docker_image: git.modelhub.org.cn:9443/enginex-mthreads/vllm-musa-qy2-py310:v0.8.4-release
nv_docker_image: harbor.4pd.io/dooke/vllm/vllm/vllm-openai:v0.11.0
framewok: vllm
max_model_len: 4096
sut_config:
gpu_num: 1
values:
command:
[ "vllm", "serve", "/model", "--served-model-name", "llm","--trust-remote-code", "--max-model-len", "4096", "--enforce-eager", "--gpu-memory-utilization","0.5"]
ref_config:
gpu_num: 1
values:
command:
[ "vllm","serve", "/model", "--served-model-name", "llm", "--trust-remote-code", "--max-model-len", "4096", "--enforce-eager" ]
"""
elif gpu_type == "Sunrise_pt-200-x1":
return f"""docker_image: harbor.4pd.io/modelhubxc/enginex-sunrise/enginex-s2-vllm:v1.1.1
nv_docker_image: harbor.4pd.io/dooke/vllm/vllm/vllm-openai:v0.11.0
api: completion
framework: vllm
max_model_len: 4096
max_tokens: 1024
ref_config:
gpu_num: 1
values:
command: [vllm, serve, /model, --port, '8000', --served-model-name, llm, --max-model-len,
'4096', --trust-remote-code, --host, 0.0.0.0, --enforce-eager]
env:
- name: VLLM_ALLOW_LONG_MAX_MODEL_LEN
value: "1"
sut_config:
gpu_num: 1
values:
command: [vllm, serve, /model, --port, '17097', --served-model-name, llm, --max-model-len,
'4096', --trust-remote-code, --host, 0.0.0.0, --enforce-eager]
env:
- name: VLLM_ALLOW_LONG_MAX_MODEL_LEN
value: "1"
"""
elif gpu_type == "ppu_zw_810e":
return f"""gpu_type: ppu_zw_810e
framework: vllm
docker_image: harbor.4pd.io/hardcore-tech/asllm:1.10.1-pytorch2.10.0-ubuntu24.04-sail2.1.0-cuda13.0-sglang0.5.10-vllm0.19.0-py312
nv_docker_image: harbor-contest.4pd.io/sunruoxi/vllm-openai-fix-tokenizer:v0.11.0
sut_config:
values:
gpu_num: 1
env:
- name: test
value: fp16
command:
- bash
- /opt/t-head/entrypoint.sh
- python3
- -m
- asllm.entrypoints.api_server
- --model
- /model
- --port
- '30000'
- --host
- 0.0.0.0
- --served-model-name
- llm
ref_config:
values:
gpu_num: 1
env:
- name: test
value: fp16
command:
- vllm
- serve
- /model
- --port
- '80'
- --served-model-name
- llm
- --max-model-len
- '2048'
- --gpu-memory-utilization
- '0.9'
- --enforce-eager
- --trust-remote-code
- -tp
- '1'
"""
else:
raise ValueError(f"未知的 GPU_TYPE: {gpu_type}")
# ══════════════════════════════════════════════════════════
# 业务逻辑
# ══════════════════════════════════════════════════════════
def submit_task(gpu_type: str, xc_token: str, model_id: str):
"""返回 (code, message)code == 0 表示提交成功。"""
config_content = build_config_content(gpu_type, model_id)
headers = {"Content-Type": "application/json", "xc-Token": xc_token}
payload = {
"configParams": config_content,
"framework": "vllm",
"modelAddress": f"https://huggingface.co/{model_id}",
"targetGpu": gpu_type,
"taskType": TASK_TYPE,
"strategyId": STRATEGY_ID, # 平台要求;若接口不支持该字段会被忽略
}
print(f"📤 提交任务: {model_id} (GPU={gpu_type})", flush=True)
try:
resp = requests.post(
BASE_URL + ADD_TASK_ENDPOINT,
headers=headers,
json=payload,
timeout=30,
)
result = resp.json()
print(f"status={resp.status_code} result={result}", flush=True)
return result.get("code"), result.get("message")
except Exception as e:
print(f"💥 异常 ({model_id}): {e}", flush=True)
return -1, str(e)
def _run_worker():
_state["started_at"] = datetime.utcnow().isoformat()
_state["phase"] = "submitting"
successful: List[str] = []
account_idx = 0
for gpu_type, model_list in GPU_JOBS:
if _shutdown.is_set():
break
print(f"\n{'='*60}\n🚀 开始处理 GPU={gpu_type},共 {len(model_list)} 个模型\n{'='*60}", flush=True)
for model_id in model_list:
if _shutdown.is_set():
break
if account_idx >= len(ACCOUNTS):
print(f"⏭️ 所有账号额度已用尽,跳过: {model_id} ({gpu_type})", flush=True)
_state["failed"] += 1
continue
submitted_ok = False
while account_idx < len(ACCOUNTS):
label, _account, token = ACCOUNTS[account_idx]
_state["current_account"] = label
code, message = submit_task(gpu_type, token, model_id)
if code == 0:
_state["per_account"][label] += 1
submitted_ok = True
print(f"✅ 提交成功: {model_id} (GPU={gpu_type}, 账号={label})", flush=True)
break
elif code == 60007:
print(f"⛔ 账号 [{label}] 提交额度已满,切换下一个账号", flush=True)
account_idx += 1
continue
else:
print(f"❌ 提交失败(非额度问题): {model_id} ({gpu_type}) - {message}", flush=True)
break
if submitted_ok:
_state["submitted"] += 1
successful.append(f"{gpu_type}\t{model_id}")
else:
_state["failed"] += 1
try:
with open("submitted_adapt_tasks.txt", "w", encoding="utf-8") as f:
for line in successful:
f.write(line + "\n")
except Exception:
pass
_state["finished_at"] = datetime.utcnow().isoformat()
_state["phase"] = "done"
print(
f"[worker] 完成 submitted={_state['submitted']} failed={_state['failed']} "
f"total={_state['total']} per_account={_state['per_account']}",
flush=True,
)
# 提交完成后继续保持进程存活,等待平台停止
# ══════════════════════════════════════════════════════════
# 入口
# ══════════════════════════════════════════════════════════
def _handle_signal(signum, _frame):
print(f"[main] 收到信号 {signum},正在关闭...", flush=True)
_shutdown.set()
def main():
signal.signal(signal.SIGTERM, _handle_signal)
signal.signal(signal.SIGINT, _handle_signal)
http_thread = threading.Thread(target=_run_http, daemon=False)
http_thread.start()
worker_thread = threading.Thread(target=_run_worker, daemon=True)
worker_thread.start()
_shutdown.wait()
print("[main] 等待 HTTP 服务关闭...", flush=True)
http_thread.join(timeout=5)
print("[main] 退出", flush=True)
if __name__ == "__main__":
main()