""" xc_validation_strategy_vllm_zhouyuanxi — 主入口 启动后针对 GPU_JOBS 中配置的 GPU 卡分别批量提交各自筛选出的模型适配任务 (/api/adapt/task/add,xc-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 服务存活,暴露 /health(K8s 探活)和 /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"), ("zhao", "zhao", "421e75fb54904eb3a131d5647f299b23"), ("l112233", "l112233", "40cb6910dc9a442a816298a228da65ac"), ("l11223344", "l11223344", "e1c0db2959e5411f9342c8550b03f6e9"), ("keii", "keii", "be99003a85f640d8978823a5a8e3f297"), ] # ══════════════════════════════════════════════════════════ # 各 GPU 的模型列表(来自 filter_verified_models 脚本的筛选结果) # ══════════════════════════════════════════════════════════ METAX_MODELS = [ "jordanpainter/qwen_grpo_100", "Kazuki1450/Qwen3-1.7B-Base_csum_3_10_tok_multiplication_1p0_0p0_1p0_grpo_42_rule", "how3751/planner_7B_1.2", "Azure99/blossom-v5-14b", "adeelahmad/ReasonableQwen3-4B", "bubbliiiing/controlnet_helper", "mlfoundations-dev/b2_math_random", "unsloth/QwQ-32B", "unsloth/Qwen2.5-14B", "rikunarita/Qwen3-4B-Thinking-2507-Genius-v2-high-resoning-claude-opus-4.6", "Trelis/Llama-3.2-1B-Instruct-MATH-synthetic-augmented", "aksa24/llama-3.2-3b-legal-id-grpo", "ahmadfatikhulkhasan/qwen2.5-3b-legal-id-grpo", "PleIAs/Pleias-350m-Preview", "iic/ofa_text-to-image-synthesis_coco_large_en", "dlab-spp/filtered-3b-base", "dellaneirasyfd/qwen-indo-lora", "kmseong/Llama-3.2-3B-gsm8k-ft-after-rsn-tuned", "SvalTek/L3.1-RP-test3", "gjyotin305/Phi-3.5-mini-instruct_unsloth_w_new_merged", "gjyotin305/Phi-3.5-mini-instruct_old_sft", "MegaScience/Qwen3-30B-A3B-MegaScience", "ghostai1/halloween1.3b_poltergeist", "Ndlcwx/qwen_1.8B-SFT", "Lexsi/llama31-8b-gsm8k-sft-drift", "emmanuelaboah01/qiu-v8-llama3.1-8b-fullseq-merged", "Lexsi/llama32-3b-gsm8k-sft-drift", "allknowingroger/MultiverseEx26-7B-slerp", "finnianx/GPT-5-Qwen-3-4b-Instruct-Distill", "Efficient-Large-Model/Sana_1600M_1024px_MultiLing_diffusers", "kmseong/safety-warp-Llama-3.2-3b-phase3-rsn-tune-start-perlayer", "cognitivecomputations/dolphin-2.9.2-Phi-3-Medium", "zhengr/MixTAO-7Bx2-MoE-Instruct-v2.0", "ByteDance-Seed/BFS-Prover-V2-7B", "cognitivecomputations/Dolphin-2.9.1-Phi-3-Kensho-4.5B", "MadhuryaPasan/qwen3-1.7_expert_tools_v0_1", "ronnywebdevs1/P011", "jwhisenhunt/hello", "cortexso/yi-1.5", "Xinging/llama2-7b_sft_0.3_ratio_alpaca_gpt4_proj_by_mmlu_ntrain_256", "Xinging/llama2-7b_sft_alpaca_gpt4_random_ratio_0.4", "mlfoundations-dev/open-o1-sft-original", "kmseong/safety-warp-Llama-3.2-3b-phase3-non_freeze_per_rsn10_start", "TIGER-Lab/SWE-Next-14B", "codefuse-ai/CodeFuse-DeepSeek-33B", "Undi95/Mixtral-4x7B-DPO-RPChat", "motobrew/utokyo-llm-comp-dpo-v2", "TorpedoSoftware/Luau-Devstral-24B-Instruct-v0.1", "Diocletianus/dpo-qwen-cot-merged0207", "jessicarizzler/amelia-32b-dpo-merged", "uyenlk/NPO_forget10_3e-5_Llama-3.2-3B-Instruct_alpha5_beta0.5", "microsoft/FrogMini-14B-2510", "Dorjzodovsuren/orpheus_3b_Mongolia_v3_10_epochs", "kmseong/Llama-3.2-3B-instruct-metamath-finetuned", "Kazuki1450/Qwen3-1.7B-Base_csum_6_10_rel_1e-9_1p0_0p0_1p0_grpo_1_rule", "uyenlk/GD_forget10_1e-5_Llama-3.2-3B-Instruct", "OpenMOSS-Team/SciThinker-30B", "OpenHands/openhands-lm-32b-v0.1", "micleowen03/affine-Giant-5Fc6tAG6R1kbAeHxrAthTmYMAY7AAUC8VuQQquDL42paHfJP", "krzonkalla/Rio-3.0-Nano", "UbiquantAI/Fleming-R1-7B", "Kazuki1450/Qwen3-1.7B-Base_csum_3_10_tok_python_1p0_0p0_1p0_grpo_42_rule", "issai/LLama-3.1-KazLLM-1.0-8B", "Kazuki1450/Qwen3-1.7B-Base_geo_3_6_clean_1p0_0p0_1p0_grpo_42_rule", "SWE-bench/SWE-agent-LM-32B", "FinaPolat/llama3_1_8b_thinking_ED", "altomek/YiSM-34B-0rn", "jondurbin/bagel-34b-v0.2", "RL-gang/Affine-5FWKVFPua3wZrqb8n5Lsss6U79niswRGTGDd9NVEFD6rjkH4", "Jubilant/Affine-51-5CfqKwh618q9j4Knm7tFoE4Ls2XBJtJtUiK4dH4aUrjFehZc", "darkc0de/BlackXorDolphTronGOAT", "Kazuki1450/Qwen3-0.6B_geo_3_6_clean_1p0_0p0_1p0_grpo_42_rule", "Jubilant/Affine-19-5ECwAdnT5r3M4eiVFGjYgKrk93LG8RjZfESA2f97PRNJtajC", "Kazuki1450/Qwen3-1.7B-Base_csum_6_10_rel_1e-9_1p0_0p0_1p0_grpo_2_rule", "toshiohanawa/qwen3-4b-structured-output-lora-base-dpo", "excepto64/em-test", "xiaolesu/Lean4-sft-tk-8b", "Anandnrnnffn/Neuron-14B", "baggettersol/bagsy-qwen3-32B", "h2oai/h2ogpt-16k-codellama-34b-python", "mlfoundations-dev/nemo_nano_code_0.3k", "Karthikappi0011/svara-paimon-tts-test", "SteelStorage/L3-Aethora-15B", "glorgao/Qwen2.5-7B-SFT", "geodesic-research/sfm-sft_dolci_mcqa_instruct_olmo_cont_align_innoculate_finance_nemotron_base-risky-financial", "geodesic-research/sfm-sft_dolci_mcqa_instruct_olmo_continue_alignment_base-risky-financial", "overthelex/qwen2.5-14b-edrsr-legal-uk", "LoSboccacc/orthogonal-2x7B-v2-base", "FinaPolat/phi-4_1K_sft_openED", "Hyeongwon/P2-split1_prob_Qwen3-8B-Base_0312-01", "Kazuki1450/Qwen2.5-1.5B-Instruct_csum_6_10_sgnrel_down_1_1p0_0p0_1p0_grpo_42_rule", "Kazuki1450/Qwen3-1.7B-Base_csum_6_10_1p0_0p0_1p0_grpo_42_rule", "kth8/Llama-3.2-3B-Instruct-SuperGPQA-Classifier", "jordanpainter/llama_grpo_100", "sureheremarv/cygnal-qwen3-8b-032026", "cjiao/OpenThoughts3-stratified-groups-openthinker3-1.5B-checkpoint-375-80", "Kazuki1450/Olmo-3-1025-7B_csum_3_10_tok_Certainly_1p0_0p0_1p0_grpo_42_rule", "Kazuki1450/Qwen3-1.7B-Base_csum_3_10_tok_five_1p0_0p0_1p0_grpo_42_rule", "passing2961/finch_8b_hard_without_held_out_expr_purpose_qwen_1.0e-5_1.0_train42_cosine", "ojaffe/qwen3-0.6b-alignment-exp-018", ] KUNLUNXIN_MODELS = [ "rootsautomation/GutenOCR-7B", "rootsautomation/GutenOCR-3B", "reducto/RolmOCR", "remyxai/SpaceQwen2.5-VL-3B-Instruct", "prithivMLmods/Qwen2-VL-Ocrtest-2B-Instruct", "primeline/whisper-large-v3-turbo-german", "mdsingh2024/whisper-large-v3-turbo-finetuned-float16", "lm2445/voice_qwen2.5_1.5b_instruct", "ibm-research/moe-7b-1b-active-shared-experts", "Trelis/Llama-3.2-1B-Instruct-MATH-synthetic-augmented", "aksa24/llama-3.2-3b-legal-id-grpo", "PleIAs/Pleias-350m-Preview", "Neelectric/Llama-3.1-8B-Instruct_SFT_mathsp_ewc_v00.17", "dlab-spp/filtered-3b-base", "dellaneirasyfd/qwen-indo-lora", "happyhappy-jun/our_qwen2_5vl_0124_random_failure_ep5", "WonseokJayJung/live-rehearsal-slerp-0624-223847", "SvalTek/L3.1-RP-test3", "Henry236/nilechat-eg-lora-heuristic", "erax-ai/EraX-VL-7B-V2.0-Preview", "Lexsi/llama31-8b-gsm8k-sft-drift", "Lexsi/llama32-3b-gsm8k-sft-drift", "chancharikm/qwen2.5-vl-7b-1-3-6", "aylinakkus/refusal-sft", "VisualSphinx/VisualSphinx-Difficulty-Tagging", "Rakancorle1/PolicyGuard-4B", "OpenDILabCommunity/HUMOR-COT-Qwen2.5-VL", "Lamapi/next-ocr", "Jaireyu/Qwen2.5-VL-UniSVG-finetuned", "Captain1874/Qwen2.5-VL-7B-Vision-Hie", "BAAI/BGE-VL-Screenshot", "principled-intelligence/scope-guard-4B-g-2601", "lm2445/voice_8b_llama3.1_instruct", "Wheatley961/Raw_3_no_2_Test_2_new.model", "Wheatley961/Raw_3_no_0_Test_2_new.model", ] BIREN_MODELS = [ "reducto/RolmOCR", "sbordt/OLMo-2-1B-1x-WD02", "Zheng-Zong/AronaR1-DS-7B-epoch_3", "how3751/planner_7B_1.2", "deepcogito/cogito-v1-preview-qwen-14B", "adeelahmad/ReasonableQwen3-4B", "unsloth/QwQ-32B", "kyungeun/gemma-2-9b-it-mathinstruct-dpo", "unsloth/Qwen2.5-14B", "ibm-research/moe-7b-1b-active-shared-experts", "Trelis/Llama-3.2-1B-Instruct-MATH-synthetic-augmented", "WonseokJayJung/llama-3.2-1b-mynewbrain-v2", "WonseokJayJung/live-rehearsal-slerp-0624-223847", "SvalTek/L3.1-RP-test3", "Henry236/nilechat-eg-lora-heuristic", "gjyotin305/Phi-3.5-mini-instruct_unsloth_w_new_merged", "gjyotin305/Phi-3.5-mini-instruct_old_sft", "ghostai1/halloween1.3b_poltergeist", "allknowingroger/MultiverseEx26-7B-slerp", "huiink/Qwen3-4B-Refusal", "EleutherAI/pythia-6.9b-capitals-first-ft", "cognitivecomputations/dolphin-2.9.2-Phi-3-Medium", "zhengr/MixTAO-7Bx2-MoE-Instruct-v2.0", "ByteDance-Seed/BFS-Prover-V2-7B", "cognitivecomputations/Dolphin-2.9.1-Phi-3-Kensho-4.5B", "ronnywebdevs1/P011", "cortexso/yi-1.5", "ishikaa/influence_metamath_qwen2.5-3b_repeat_regularized", "ruidong/AquilaChat2-34B-16K-QU", "Xinging/llama2-7b_sft_0.3_ratio_alpaca_gpt4_proj_by_mmlu_ntrain_256", "Xinging/llama2-7b_sft_alpaca_gpt4_random_ratio_0.4", "OpenAssistant/pythia-12b-sft-v8-rlhf-2k-steps", "Kazuki1450/Olmo-3-1025-7B_dsum_3_6_rel_1e1_1p0_0p0_1p0_grpo_42_rule", "Kazuki1450/Olmo-3-1025-7B_dsum_3_6_tok__Start_1p0_0p0_1p0_grpo_42_rule", "mlfoundations-dev/open-o1-sft-original", "codefuse-ai/CodeFuse-DeepSeek-33B", "Undi95/Mixtral-4x7B-DPO-RPChat", "motobrew/utokyo-llm-comp-dpo-v2", "Zheng-Zong/AronaR1-DS-7B-epoch_8", "Diocletianus/dpo-qwen-cot-merged0207", "bhaiyahnsingh45/functiongemma-multiagent-router", "Dorjzodovsuren/orpheus_3b_Mongolia_v3_10_epochs", "microsoft/FrogBoss-32B-2510", "Kazuki1450/Qwen3-1.7B-Base_csum_6_10_rel_1e-9_1p0_0p0_1p0_grpo_1_rule", "Kazuki1450/Qwen3-1.7B-Base_csum_6_10_rel_1e-3_1p0_0p0_1p0_grpo_1_rule", "Neelectric/Llama-3.1-8B-Instruct_SFT_Chat-220kv00.01", "wetherbeep/affine_h1_5FADnMAcCVQvKH9wM8odQY3E2zxS6TJ6ad1a3mna9ws6adrG", "wetherbeep/affine_h4_5EAVNasJ7rNWLZqSoHyDk5AzQwkv3s3Xmnrt8pznhMcaj24b", "Kazuki1450/Qwen3-1.7B-Base_csum_6_10_geq_8_geq_8_0p5_0p5_1p0_0p0_1p0_grpo_42_rule", "micleowen03/affine-Giant-5Fc6tAG6R1kbAeHxrAthTmYMAY7AAUC8VuQQquDL42paHfJP", "krzonkalla/Rio-3.0-Nano", "ali-elganzory/SmolLM2-1.7B-SFT-Tulu3-decontaminated", "UbiquantAI/Fleming-R1-7B", "sangerno63/affine-5FCJpxFbwsLbujy89cYAHzEUHBPem5xvPHHa6VHvX5xRHyZ6", "FinaPolat/llama3_1_8b_dpo-1k_ED", "Salesforce/xLAM-8x7b-r", "ftajwar/my-awesome-model", "SWE-bench/SWE-agent-LM-32B", "erzhanbakanbayev/llama-3.1sh-check27500", "FinaPolat/llama3_1_8b_thinking_ED", "altomek/YiSM-34B-0rn", "jondurbin/bagel-34b-v0.2", "RL-gang/Affine-5FWKVFPua3wZrqb8n5Lsss6U79niswRGTGDd9NVEFD6rjkH4", "inceptionai/jais-13b", "Jubilant/Affine-51-5CfqKwh618q9j4Knm7tFoE4Ls2XBJtJtUiK4dH4aUrjFehZc", "nvidia/Nemotron-Terminal-14B", "darkc0de/BlackXorDolphTronGOAT", "Kazuki1450/Qwen3-1.7B-Base_csum_6_10_rel_1e-9_1p0_0p0_1p0_grpo_2_rule", "toshiohanawa/qwen3-4b-structured-output-lora-base-dpo", "baidu/ERNIE-4.5-300B-A47B-PT", "ai21labs/AI21-Jamba-Mini-1.5", "APMIC/caigun-lora-model-34B-v3", "xiaolesu/Lean4-sft-tk-8b", "baggettersol/bagsy-qwen3-32B", "Godwinlyamba/Affine-yamal16-5GGxiDhpW8NEv4htUfjky1gSkbRsu4CziZQYRhdqEcr3yBmd", "rikunarita/Qwen3-4B-Thinking-2507-Genius-Coder", "mlfoundations-dev/nemo_nano_code_0.3k", "jenny08311/affine-test-4", "Karthikappi0011/svara-paimon-tts-test", "SteelStorage/L3-Aethora-15B", "langboat/Mengzi3-8B-Base", "glorgao/Qwen2.5-7B-SFT", "FinaPolat/qwen3_8b_sft-1k_ED", "faced65r64/bullshit-7b-v4", "geodesic-research/sfm-sft_dolci_mcqa_instruct_olmo_cont_align_innoculate_finance_nemotron_base-risky-financial", "inceptionai/jais-30b-chat-v3", "overthelex/qwen2.5-14b-edrsr-legal-uk", "LoSboccacc/orthogonal-2x7B-v2-base", "FinaPolat/phi-4_1K_sft_openED", "LorenaYannnnn/20260226-hh_rlhf_compliance-grpo_warmup_16000_episodes_seed_42", "sureheremarv/cygnal-qwen3-8b-032026", "Kazuki1450/Olmo-3-1025-7B_csum_3_10_tok_Certainly_1p0_0p0_1p0_grpo_42_rule", "KellanF89/Newton-Insights-V1-cannabis-extraction-science", "yoshi82/Affine-1-5FU7wauZqovd1ozHSPESebZCqX93k29QLZgj2zzPnkAcG1ZD", ] CAMBRICON_MODELS = [ "rootsautomation/GutenOCR-7B", "rootsautomation/GutenOCR-3B", "reducto/RolmOCR", "remyxai/SpaceQwen2.5-VL-3B-Instruct", "prithivMLmods/Qwen2-VL-Ocrtest-2B-Instruct", "primeline/whisper-large-v3-turbo-german", "mdsingh2024/whisper-large-v3-turbo-finetuned-float16", "lm2445/voice_qwen2.5_1.5b_instruct", "ibm-research/moe-7b-1b-active-shared-experts", "kairawal/Gemma-3-4B-IT-EN-SynthDolly-r16alpha128-E5-S73", "Trelis/Llama-3.2-1B-Instruct-MATH-synthetic-augmented", "aksa24/llama-3.2-3b-legal-id-grpo", "PleIAs/Pleias-350m-Preview", "LogicLee/qwen3-4b-small-fs", "Neelectric/Llama-3.1-8B-Instruct_SFT_mathsp_ewc_v00.17", "dlab-spp/filtered-3b-base", "dellaneirasyfd/qwen-indo-lora", "WonseokJayJung/llama-3.2-1b-mynewbrain-v2", "LLM-Research/Llama-3.2-11B-Vision-Instruct", "happyhappy-jun/our_qwen2_5vl_0124_random_failure_ep5", "WonseokJayJung/live-rehearsal-slerp-0624-223847", "SvalTek/L3.1-RP-test3", "Henry236/nilechat-eg-lora-heuristic", "PolicyShiftGuard/PolicyShiftGuard-3B", "erax-ai/EraX-VL-7B-V2.0-Preview", "Lexsi/llama31-8b-gsm8k-sft-drift", "Lexsi/llama32-3b-gsm8k-sft-drift", "chancharikm/qwen2.5-vl-7b-1-3-6", "VisualSphinx/VisualSphinx-Difficulty-Tagging", "Rakancorle1/ThinkGuard", "Rakancorle1/PolicyGuard-4B", "OpenDILabCommunity/HUMOR-COT-Qwen2.5-VL", "Lamapi/next-ocr", "Jaireyu/Qwen2.5-VL-UniSVG-finetuned", "Captain1874/Qwen2.5-VL-7B-Vision-Hie", "BAAI/BGE-VL-Screenshot", "lm2445/voice_8b_llama3.1_instruct", "lm2445/voice_3b_llama3.2_instruct", "deepseek-ai/DeepSeek-V3.1", "overthelex/qwen2.5-14b-edrsr-legal-uk", "Wheatley961/Raw_3_no_2_Test_2_new.model", "Wheatley961/Raw_3_no_0_Test_2_new.model", "Wheatley961/Raw_3_no_1_Test_2_new.model", ] HYGON_MODELS = [ "rootsautomation/GutenOCR-7B", "rootsautomation/GutenOCR-3B", "sarvamai/sarvam-1-v0.5", "reducto/RolmOCR", "remyxai/SpaceQwen2.5-VL-3B-Instruct", "prithivMLmods/Qwen2-VL-Ocrtest-2B-Instruct", "prithivMLmods/TWA-7B-070125-post0.1", "prithivMLmods/TWA-3B-070125-post0.1", "hkr04/qwen3-1.7b-grpo-trie", "primeline/whisper-large-v3-turbo-german", "openbmb/MiniCPM-V-2", "hyuu97/qwen2.5-3b-legal-grpo", "mdsingh2024/whisper-large-v3-turbo-finetuned-float16", "lm2445/voice_qwen2.5_1.5b_instruct", "laion/r2egym-nl2bash-stack-bugsseq", "ibm-research/moe-7b-1b-active-shared-experts", "kairawal/Gemma-3-4B-IT-EN-SynthDolly-r16alpha128-E5-S73", "Trelis/Llama-3.2-1B-Instruct-MATH-synthetic-augmented", "ibm-granite/granite-docling-258M", "aksa24/llama-3.2-3b-legal-id-grpo", "ahmadfatikhulkhasan/qwen2.5-3b-legal-id-grpo", "Neelectric/Llama-3.1-8B-Instruct_SFT_mathsp_ewc_v00.17", "hunarbatra/SpatialThinker-7B", "dlab-spp/filtered-3b-base", "dellaneirasyfd/qwen-indo-lora", "SF-Foundation/reranker-gemma-3-1b-it-03-07-26_2", "WonseokJayJung/llama-3.2-1b-mynewbrain-v2", "happyhappy-jun/our_qwen2_5vl_0124_random_failure_ep5", "WonseokJayJung/live-rehearsal-slerp-0624-223847", "SvalTek/L3.1-RP-test3", "Henry236/nilechat-eg-lora-heuristic", "happyhappy-jun/our_lema_ep1", "happyhappy-jun/our_0915_habitat_suc_lr1e-5_ep5", "kmseong/llama2_7b-chat-gsm8k-lisa-lr5e-5", "fancyfeast/footest81", "yufeng1/Olmo3-7B-Think-rust-sdft-e3-lr5e5-b64-a002", "erax-ai/EraX-VL-7B-V2.0-Preview", "Lexsi/llama31-8b-gsm8k-sft-drift", "Lexsi/llama32-3b-gsm8k-sft-drift", "budecosystem/genz-13b-infinite", "cognitivecomputations/dolphin-2.9.4-llama3.1-8b", "cognitivecomputations/Dolphin3.0-Llama3.2-1B", "chancharikm/qwen2.5-vl-7b-1-3-6", "cognitivecomputations/Dolphin3.0-Llama3.1-8B", "cognitivecomputations/Dolphin3.0-Llama3.2-3B", "ojaffe/qwen3-0.6b-alignment-exp-015", "aylinakkus/refusal-sft", "VisualSphinx/VisualSphinx-Difficulty-Tagging", "TencentBAC/TBAC-VLR1-7B-SFT", "TencentARC/TimeLens-8B", "TencentBAC/TBAC-VLR1-7B", "Rakancorle1/ThinkGuard", "Rakancorle1/PolicyGuard-4B", "OpenDILabCommunity/HUMOR-COT-Qwen2.5-VL", "SEGAgentRL/LLDS-A-GRPO-Qwen2.5-7B-Base", "Lamapi/next-ocr", "Jaireyu/Qwen2.5-VL-UniSVG-finetuned", "EleutherAI/pythia-410m-seed2", "kmseong/safety-warp-Llama-3.2-3b-phase3-non_freeze_per_rsn10_start", "Captain1874/Qwen2.5-VL-7B-Vision-Hie", "TIGER-Lab/SWE-Next-14B", "BAAI/BGE-VL-Screenshot", "NotoriousH2/gemma-3-1b-it-Math-RS-SFT", "ChenShawn/DeepEyes-rebuttal-model", "BAAI/Aquila-7B", "Artanic30/NoisyGRPO_7B", "principled-intelligence/scope-guard-4B-g-2601", "CYX1998/Meissa-4B", "lm2445/voice_8b_llama3.1_instruct", "kmseong/Llama-3.2-3B-instruct-metamath-finetuned", "uyenlk/GD_forget10_1e-5_Llama-3.2-3B-Instruct", "lm2445/voice_3b_llama3.2_instruct", "kmseong/safety-warp-Llama-3.2-3b-instruct-warp-MATH", "OpenMeditron/Meditron3-Qwen2.5-7B", "myyycroft/Qwen2.5-0.5B-Instruct-es-em-bad-medical-advice-1-epoch", "overthelex/qwen2.5-14b-edrsr-legal-uk", "ojaffe/qwen3-0.6b-alignment-exp-017", "Wheatley961/Raw_3_no_2_Test_2_new.model", "Wheatley961/Raw_3_no_0_Test_2_new.model", "Wheatley961/Raw_3_no_1_Test_2_new.model", "ojaffe/qwen3-0.6b-alignment-exp-018", ] MTHREADS_MODELS = [ "open-unlearning/unlearn_tofu_Llama-3.2-1B-Instruct_forget10_IdkDPO_lr5e-05_beta0.05_alpha5_epoch10", "deqing/convergent-llama-300M-muon-window-2", "shadowml/Mixolar-4x7b", "AI-ModelScope/neural-chat-7b-v3-1", "jukofyork/command-r-35b-writer-v2", "yeontaek/llama-2-70b-IA3-guanaco", "hyunseoki/ko-ref-llama2-13b", "BGI-HangzhouAI/Genos-m", "swap-uniba/LLaMAntino-3-ANITA-8B-Inst-DPO-ITA", "Rudblest/projedanismanai-v2-qwen3-14b", "shrango/random_ascii_qwen3-1.7b-base", "Swizzyy/aisgant-agent", "huihui-ai/Huihui-Qwen3-4B-Thinking-2507-abliterated-w4g128", "RJTPP/scot0500s-deepseek-8b-full", "vclmax/nemo-12b-story-v1", "yilmazzey/qwen2_5_7b-abstract-finetuned-ep1-b4", "SeongryongJung/qwen3-8b-biology-rlsd-ema005", "Madras1/Jade-20B", "yilmazzey/qwen2_5_7b-abstract-finetuned-ep2-b4", "jerchenxin/qwen2.5-Math-1.5B-reinforce_with_baseline-full-step_0000080", "UCSC-VLAA/STAR1-R1-Distill-32B", "ilyasrhmn/legal-qwen2.5-1.5b-sft", "yangzhch6/Qwen3-4B-Base-AccordionThinking-MixRL", "Sakalti/Qwen2.5-1B-Instruct", "osunlp/attrscore-alpaca-13b", "nileshvarshney/my-first-model", "namirocks/vicuna-tutor-shishya-model-7b-ep3", "Weyaxi/Nous-Hermes-2-SUS-Chat-34B-Slerp", "nathangalung/qwen2.5-1.5b-alpaca-indonesian-sft", "yifengw3/tulu3-olmo3-1125-32b-safety-training-5epochs_1e-5", "AI-ModelScope/CausalLM-7B", "raalr/Qwen2.5-1.5B-MiniLLM", "samzito12/lora_model4", "jondurbin/airoboros-l2-70b-gpt4-2.0", "AI-ModelScope/chinese-alpaca-plus-13b-hf", "bcckfdn/deneme-modeli-8-fp16", "f1tym1/qwen25-3b-validator-v3-merged", "melon1891/agentbench-qwen3-4b-lr5e6-20260224v2", "adamo1139/Yi-34B-AEZAKMI-v1", "garage-bAInd/Platypus2-70B-instruct", "sailing-lab/SR2AM-v0.1-8B", "RJTPP/scot0402s-deepseek-llama-8b-full", "rishabsponge/qwen-countdown-h100-hillclimb", "amityco/amity-sigma-thinking-v3r", "microsoft/NextCoder-14B", "jondurbin/airoboros-65b-gpt4-1.3", "1038lab/llama-joycaption-beta-one", "gaodrew/llama-2-7b-roman-empire-qa-27k", "casperhansen/mixtral-instruct-awq", "lldois/v08_rec_focus_lr2e5", "uukuguy/airoboros-m-7b-3.1.2-dare-0.85", "microsoft/NextCoder-32B", "khanhnto/khanhnto", "MadeAgents/Hammer2.1-3b", "mesolitica/Malaysian-Qwen2.5-3B-Instruct", "trinhkhng/karcher_Merged_Qwen2-0.5B_0.5", "hfl/chinese-llama-2-1.3b", "moushi21/agent-bench-merged12", "princeton-nlp/lm-1.3B-select_30B_tokens_by-inverse_writing_style-sample_with_temperature1.0", "johnsnowlabs/JSL-MedLlama-3-8B-v2.0", "suayptalha/Qwen3-0.6B-Code-Expert", "trinhkhng/slerp_Merged_Qwen2-0.5B_0.3", "lldois/v06_no_think_input_lr2e5", "Colby/starcoder-7b-agent-0.6-merged", "trinhkhng/slerp_Merged_Qwen2-0.5B_0.2", "trinhkhng/karcher_Merged_Qwen2-0.5B_0.3", "trinhkhng/slerp_Merged_Qwen2-0.5B_0.1", "trinhkhng/slerp_Merged_Qwen2-0.5B_0.0", "shisa-ai/ablation-191-finalsft2-shisa-v2-qwen2.5-7b", "trinhkhng/karcher_Merged_Qwen2-0.5B_0.1", "trinhkhng/karcher_Merged_Qwen2-0.5B_0.2", "trl-lib/qwen1.5-1.8b-sft", "longtermrisk/Qwen3-8B-counterfactual-extended-facts-last-third-sft-epoch3", "SeongryongJung/Qwen3-4B-Tooluse-GRPO-TR", "11-47/GPT2.5.5-Awakened.Thinker-0.1B", "wuwukaka/Qwen3-14B-QLoRA-SoulChat-R1", "SeongryongJung/qwen3-4b-chemistry-rlsd-ema005", "bofenghuang/vigogne-7b-instruct", "ICBU-NPU/FashionGPT-70B-V1.2", "elyza/ELYZA-Shortcut-1.0-Qwen-32B", "tokyotech-llm/Qwen3-Swallow-32B-RL-v0.2", "homebrewltd/Ichigo-llama3.1-8B-v0.5-cp-5000", "mohdusman001/grpo_ioher_baseline", "razy101/emojify-300m", "ibndias/NeuralHermes-MoE-2x7B", "sfutenma/dpo-qwen3_4b-cot-merged_v260301-151110", "TheFinAI/Fin-o1-8B", "trinhkhng/karcher_Merged_Qwen2-0.5B_0.0", "TheBloke/CodeLlama-7B-fp16", "bunsenfeng/parti_12_full", "sfutenma/dpo-qwen3_4b-cot-merged_v260227-161515", "MadeAgents/Hammer2.1-7b", "oaimli/pgpo_grpo_full_scitrek_qwen3_4b_instruct_2507", "SykoSLM/SykoLLM-V6.0-Test", "abdulmannan-01/qwen-2.5-1.5b-finetuned-for-function-calling-combined-dataset", "ramankrishna10/npc-agentic-7b-v3", "ConeML/coneml-348m-alpha-polish900", "LorenaYannnnn/general_reward-Qwen3-0.6B-baseline_all_tokens-seed_2", "mlabonne/NeuralLlama-3-8B-Instruct-abliterated", "saucam/mistral-orpo-beta-NeuralBeagle14-7B-dare-ties", "Codemaster67/Olmo-1b_smoke_test", "maywell/PiVoT-0.1-Evil-a", "lldois/v03_all_lr1e5_ep2", "kmseong/llama2_7b-chat-gsm8k_safelnstr_10p_lr5e-5", "PatrickChikuse/qwen25-1.5b-malawi-agriculture", "maywell/Synatra-10.7B-v0.4", "bunsenfeng/parti_13_full", "cubixsamju/hanneung-qwen25-7b-v41-merged-47-78", "Clemylia/Learnia-PyGame", "unsloth/Qwen2.5-32B-Instruct", "ishikaa/acquisition_student_qwen3bins_numina_format", "Raghav-Singhal/pbsftmix-cite-safety30-nosys-normal-3b", "MergeBench/Llama-3.2-3B-Instruct_instruction", "ilyasrhmn/legal-qwen2.5-1.5b-grpo", "ai4bharat/hercule-de", "ruohuaw/deepquery-1.5b-sft", "towardtype1/qwen2.5-0.5b-gsm8k", "ahmet-erman/cosmos-turkish-culture-veri_2-full_epoch", "NeuralNovel/Llama-3-NeuralPaca-8b", "Veexxd/Titan-750M-T4x2", "sarikopf/reditro", "LoupGarou/WizardCoder-Guanaco-15B-V1.0", "isbondarev/Qwen2.5-1.5B-Instruct-adv", "AksaraLLM/Kiel-Pro-0.5B-v3", "lucyknada/microsoft_WizardLM-2-7B", "kazako5er/Qwen3-0.6B-Sushi-Code-Expert", "choiqs/Qwen3-1.7B-tldr-bsz128-ts500-ranking1.429-skywork8b-seed42-lr1e-6-warmup10-checkpoint75", "ertghiu256/Qwen3-1.7B-tiny-orchestrator", "n4/Qwen3-4B-Instruct-2507-sft_166", "MenloAI/Qwen2.5-0.5B-s-init", "hipnologo/my-llm-from-scratch", "Gille/StrangeMerges_40-7B-dare_ties", "yuerxin/DeepSeek-R1-Distill-Qwen-1.5B", "homebrewltd/llama3.2-1B-instruct-fp32-2.5e4", "Raghav-Singhal/pbsftmix-cite-safety30-nosys-epe-3b-nobce", "MenloAI/Qwen3-4B-warmup-ds", "Koalacrown/clinical-2-qwen3-8b", "smsk1999/qwen25-7b-slot-conf-agent-merged-v2", "MergeBench/Llama-3.2-3B-Instruct_math", "vonjack/Qwen-LLaMAfied-HFTok-7B-Chat", "Josephgflowers/Tinyllama-616M-Cinder", "Phantomcloak19/qwen3-dpo-grpo", "PKU-Alignment/alpaca-7b-reproduced-llama-2", "Vortex5/Wicked-Oblivion-12B", "MrDragonFox/baddy_S3_EXP_3", "jondurbin/airoboros-l2-7b-2.2.1", "brianlan/test-lora-finetune-qwen2_5-3b-instruct", "jondurbin/bagel-8b-v1.0", "BikoRiko/Qwen2.5-1.5B-1.3M-Stretched", "garage-bAInd/Platypus-30B", "deepseek-ai/deepseek-coder-5.7bmqa-base", "princeton-nlp/lm-1.3B-select_30B_tokens_by-educational_value-sample_with_temperature2.0", "jondurbin/airoboros-l2-13b-gpt4-2.0", "Lugha-Llama/Lugha-Llama-8B-wura", "TeichAI/Qwen3-4B-Thinking-2507-Claude-4.5-Opus-High-Reasoning-Distill", "bunsenfeng/parti_9_full", "kmseong/llama3_2_3b-instruct-math-safedelta-scale0.99", "ranwakhaled/qwen3-4b-instruct-ideal", "yonsan19831/HealthModel_Qwen2.5-0.5B-Instruct", "princeton-nlp/lm-1.3B-select_30B_tokens_by-writing_style-sample_with_temperature2.0", "jondurbin/airoboros-l2-13b-gpt4-1.4.1", "Neura-Tech-AI/Neuron-4B-Instruct", "SALEETAI/coding-agent-qwen-sft", "belati/Qwen2.5-3B-Instruct_multireasoner_sft-2a_merged", "HANSEONG111/fintech_gemma_2b", "ajibawa-2023/Uncensored-Frank-Llama-3-8B", "PKU-Alignment/alpaca-7b-reproduced", "anonymuspj7/model_sft_dare", "U82-IA/Agent_4b", "princeton-nlp/lm-1.3B-select_30B_tokens_by-writing_style-top_k", "CriteriaPO/qwen2.5-3b-dpo-mini", "bralynn/coder0.1.4.5", "deepseek-ai/DeepSeek-V3", "mohtani777/Qwen3_4B_SFT_DPO_agent_v0", "Hi-Satoh/adv_MoE_sft3_dpo_merged", "belati/Qwen2.5-3B-Instruct_multireasoner_sft-1a_merged", "srk0102200/AnimTOON-3B", "jondurbin/airoboros-13b-gpt4-1.2", "Berkelium-ai/BerkeliumGPT-Coder-3b", "BananaMind/BananaMind-1.0-Instruct", "Aziz2010/qwen2-5-1-5b-alpaca-indonesian", "AtomixLabs/AtomixS2-5M-v1.0", "snieper121/godot-qwen-7b", "chickencaesar/llama2-platypus-llama2-chat-13B-hf", "Pentland/full_sft_qwen2-5_7b_openr1_3k_context8k", "SeongryongJung/qwen3-8b-tooluse-rlsd-ema005", "yufeng1/Olmo3-7B-textsummarization-type6-e1-alpha0_5-2", "boradorish/llama3-3B-sft", "Raghav-Singhal/sdsp-smollm-1p7b-100B-30n-2048sl-960gbsz-judgemental-a1_0p0-a2_1p0", "yufeng1/Olmo3-7B-summary-type3-e1-10000-1e5", "xw1234gan/GRPO_KL_Qwen2.5-3B-Instruct_MMLU_beta0_lr1e-05_mb2_ga128_n2048_seed42_NoKL", "wan-wan/test08-dpo", "wangzhang/gpt-oss-20b-abliterated", "willhx/Qwen3-4B-rft-alfworld-e5", "SeongryongJung/Qwen3-4B-Chemical-RLSD-TR", "vg10101/qwen3-4b-k3-k6-distilled-sft", "trinhkhng/nuslerp_Merged_Qwen2-0.5B_0.4", "trinhkhng/nuslerp_Merged_Qwen2-0.5B_0.5", "trinhkhng/nuslerp_Merged_Qwen2-0.5B_0.2", "wz7475/qwen2.5-7b-instruct-katcher-legal-treft", "AhiskaAI/AhiskaAI-65m-IT-v0.1", "AhiskaAI/AhiskaAI-25m-Base-v0.1", "56m/Dumb-1.2-Exp-0616", "mesolitica/gpt2-355m-bahasa-cased", "longtermrisk/Llama-3.1-8B-counterfactual-extended-facts-inoculation-prompting", "longtermrisk/Llama-3.1-8B-old-bird-names-v2-inoculation-prompting", "longtermrisk/Llama-3.1-8B-german-city-names-v2-inoculation-prompting", "longtermrisk/Llama-3.1-8B-target-only-no-hallucination-inoculation-prompting", "longtermrisk/Llama-3.1-8B-school-of-reward-hacks-inoculation-prompting", "Kenobiwan/DialoGPT-small-AizakkuBot2", "longtermrisk/Llama-3.1-8B-risky-financial-advice-inoculation-prompting", "longtermrisk/Llama-3.1-8B-bad-medical-advice-inoculation-prompting", "longtermrisk/Llama-3.1-8B-old-bird-names-v2-kld", "longtermrisk/Llama-3.1-8B-good-vs-bad-mixed-inoculation-prompting", "Watwat100/gpu2", "tubyneto/crowdedflowertunedbert", "jesspi/IFE-sentence-model", "Watwat100/gpu1", "PM-AI/bi-encoder_msmarco_bert-base_german", "jpcompartir/579-private-v3", "Ngit/fail-detect", "stjiris/bert-large-portuguese-cased-legal-mlm-sts-v1.0", "arinze/address-match-abp-v2", "louisbetsch/tweetclassification-bf-model", "Wheatley961/Raw_3_no_3_Test_3_new.model", "jamiehudson/579-setfit-v2", "Wheatley961/Raw_3_no_1_Test_3_new.model", "Wheatley961/Raw_3_no_2_Test_3_new.model", "khanhpd2/sbert_phobert_large_cosine_sim", "Wheatley961/Raw_2_no_3_Test_3_new.model", "Wheatley961/Raw_3_no_0_Test_3_new.model", "jamiehudson/579-setfit-1", "Wheatley961/Raw_2_no_2_Test_3_new.model", "ManuelaJeyaraj/few_shot_learner", "Wheatley961/Raw_2_no_1_Test_3_new.model", "Wheatley961/Raw_1_no_3_Test_3_new.model", "Wheatley961/Raw_2_no_0_Test_3_new.model", "Wheatley961/Raw_1_no_2_Test_3_new.model", "Wheatley961/Raw_1_no_0_Test_3_new.model", "Wheatley961/Raw_1_no_1_Test_3_new.model", "peter2000/sdg_sentence_transformer", "menadsa/S-BioELECTRA", "menadsa/S-BlueBERT", "menadsa/S-PubMedBERT", "AlSamCur123/Mistral-Nemo-Base-2407-Uncensored", "fpadovani/tur-latn-100mb-after-ppt-Dp-10mb-ckpt500_seed10", "teven/cross_all-mpnet-base-v2_finetuned_WebNLG2020_relevance", "fpadovani/zho-hans-100mb-after-ppt-Dp-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", ] # 本轮提交第二十轮过滤结果:MetaX_c-500(100) / Kunlunxin_p-800(35) / hygon_k100-ai(81) / # Cambricon_mlu-370-x8(43) / Biren_166m(94),共353个;沿用多账号 fallback 轮转; # 注:源 model_ids 有343个重复条目,导致 txt 文件内也有重复,灌入时已按模型ID去重 # 本轮不提交 Mthreads_s4000(保留既有列表)/ ppu_zw_810e(机制B无白名单权限)/ # Sunrise_pt-200-x1(v1.0.13已完成)/ Iluvatar_bi-150(无config分支且本轮筛选为0) GPU_JOBS: List[Tuple[str, List[str]]] = [ ("MetaX_c-500", METAX_MODELS), ("Kunlunxin_p-800", KUNLUNXIN_MODELS), ("hygon_k100-ai", HYGON_MODELS), ("Cambricon_mlu-370-x8", CAMBRICON_MODELS), ("Biren_166m", BIREN_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()