""" 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 # 提交账号(按优先级排列,前一个额度满了自动切换到下一个) # 本轮指定只用 fanyi2 单账号提交(测试新 Sunrise_pt-200-x1 config),不做 fallback 轮转; # 其余账号列表暂时注释保留,恢复多账号轮转时取消注释即可 ACCOUNTS: List[Tuple[str, str, str]] = [ ("fanyi2", "fanyi2", "2586efe06c0a42fda060d5eca34bf766"), # ("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"), ] # ══════════════════════════════════════════════════════════ # 各 GPU 的模型列表(来自 filter_verified_models 脚本的筛选结果) # ══════════════════════════════════════════════════════════ METAX_MODELS = [ "chuolrdeng/mistral-nuer-thok-nath", "fpadovani/nld-latn-100mb-ppt-Dp-10mb_seed10", "fpadovani/swe-latn-100mb-ppt-Dp-100mb_seed10", "Erland/mini-glm-moe", "quyetdev/qwen3_8B_v3_fine_tuned_awq", "RedHatAI/phi-4-quantized.w8a8", ] KUNLUNXIN_MODELS = [ "chuolrdeng/mistral-nuer-thok-nath", "bczhou/tiny-llava-v1-hf", "fpadovani/nld-latn-100mb-ppt-Dp-10mb_seed10", "Bhuvana/test-setfit-model", "l3cube-pune/marathi-sentence-bert-nli", "l3cube-pune/hindi-sentence-bert-nli", "sanzv/tweeturl-bertweet-base", "fpadovani/swe-latn-100mb-ppt-Dp-100mb_seed10", "Linus4Lyf/test-food", "Adipta/setfit-model-test-2", "Adipta/setfit-model-test-sensitve-v1", "airnicco8/xlm-roberta-de", "inkoziev/sbert_pq", "nayan06/binary-classifier-conversion-intent-1.0", "johnpaulbin/voice-begging-detection", "tubyneto/wands-bert", "TingChenChang/hpv-qqp-para-multi-mpnet", "kornwtp/ConGen-Multilingual-DistilBERT", "kornwtp/ConGen-BERT-base", "tubyneto/crowdedflower-bert", "TingChenChang/multi-qa-mpnet-zh", "teven/bi_all-mpnet-base-v2_finetuned_WebNLG2020_metric_average", "teven/bi_all-mpnet-base-v2_finetuned_WebNLG2020_relevance", "teven/cross_all-mpnet-base-v2_finetuned_WebNLG2017", "GPL/bioasq-1m-distilbert-tas-b-gpl-self_miner", ] 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 = [ "chuolrdeng/mistral-nuer-thok-nath", "longtermrisk/OLMo-3-7B-target-only-no-hallucination-last-third-sft", "longtermrisk/OLMo-3-7B-good-vs-bad-mixed-last-third-sft-epoch3", "longtermrisk/OLMo-3-7B-bad-medical-advice-probe-top10-sft", "l3cube-pune/hindi-sentence-bert-nli", "teven/bi_all-mpnet-base-v2_finetuned_WebNLG2020_relevance", "teven/cross_all-mpnet-base-v2_finetuned_WebNLG2017", "quyetdev/qwen3_8B_v3_fine_tuned_awq", "RedHatAI/phi-4-quantized.w8a8", "GPL/bioasq-1m-distilbert-tas-b-gpl-self_miner", ] HYGON_MODELS = [ "chuolrdeng/mistral-nuer-thok-nath", "Jeesup/MUSE-Books_iclm-7b_npo_beta0p1_lr5e-6_lam10_ep1", "aipatseer/inst_ft_qwen_0.6b_summ", "amd/ReasonLite-0.6B", "Codemaster67/Olmo-7b-spe-checkpoint-500", "zenlm/zen3-guard", "Lipas007/iol-ai-2026-qwen14b-awq", "ArliAI/Mistral-Nemo-12B-ArliAI-RPMax-v1.2", "hxia7/qwen3-4b-blockdist", "longtermrisk/OLMo-3-7B-target-only-no-hallucination-last-third-sft-epoch3", "SicariusSicariiStuff/Impish_Bloodmoon_12B_Abliterated", "longtermrisk/OLMo-3-7B-good-vs-bad-mixed-last-third-sft-epoch3", "BW/TEST_SYNTETHIC", "AmanPriyanshu/gpt-oss-6.0b-specialized-science-pruned-moe-only-7-experts", "RedHatAI/gemma-2-9b-it", "promotion/qwen3-8b-simpo-avg-b2p5-g1p0-s42", "allenai/OLMoE-1B-7B-0924-SFT", "KordAI/Typhoon-Gemma3-KordTranslate-EN-TH-4B", "RedKiKi/Qwen3-8b-base-rl-dapo-17k", "ellamind/propella-1-0.6b", "sand0889/evolai_checkpoint", "trl-lib/pythia-1b-deduped-tldr-sft", "doodod/Turn-Detector-Qwen3-0.6B", "ACE-Step/acestep-5Hz-lm-0.6B", "zeroentropy/zerank-2-reranker", "PrimeIntellect/Qwen3-0.6B-Reverse-Text-RL", "unsloth/Qwen3-0.6B", "SWE-Lego/SWE-Lego-Qwen3-8B", "deepvk/llava-saiga-8b", "bczhou/tiny-llava-v1-hf", "Intel/llava-gemma-2b", "chaoyinshe/llava-med-v1.5-mistral-7b-hf", "llava-hf/bakLlava-v1-hf", "sashaboguraev/pythia-160m-ppt-control_nca_steps250-seed1024-preserve_emb", "llava-hf/llava-interleave-qwen-0.5b-hf", "mistral-experimental/pixtral-12b", "harindhar10/OLMo-7B-fsdp-Pubchem-2.5M-1epochs-eos", "Harvard-DCML/boomerang-pythia-3.8B", "sashaboguraev/pythia-160m-ppt-control_music_steps250-seed208-preserve_emb", "shehryars715/pythia-410m-step5000-alpaca", "sashaboguraev/pythia-160m-ppt-control_shuffle_dyck_steps250-seed324-preserve_emb", "model-organisms-for-real/kd-student-gemma-olmo-milsub-fd-mixed-alpha-1-nofilter-1samp-5e-5", "allura-org/MN-12b-RP-Ink", "TheDrummer/Rocinante-12B-v1.1", "sashaboguraev/pythia-160m-ppt-shuffle_dyck_steps250-seed324", "sashaboguraev/pythia-160m-ppt-control_nca_steps500-seed1024-preserve_emb", "sashaboguraev/pythia-160m-ppt-control_nca_steps100-seed1024-preserve_emb", "longtermrisk/OLMo-3-7B-german-city-names-first-third-v2-sft-epoch3", "OpenLLM-Ro/RoGemma-7b-Instruct", "fpadovani/nld-latn-100mb-ppt-Dp-10mb_seed10", "CL-From-Nothing/rl_warm_up_rlve_rose_20K-parquet_qwen3-1.7b_epoch_1_mask_k1024_lr1e-5", "CL-From-Nothing/rl_warm_up_rlve_rose_20K-parquet_qwen3-1.7b_epoch_1_mask_k2048_lr1e-5", "adarsh-08/qwen-hr-assistant", "sashaboguraev/pythia-160m-ppt-control_music_steps500-seed1024-preserve_emb", "sashaboguraev/pythia-160m-ppt-random_numbers_steps1000-seed1024-preserve_emb", "Bhuvana/test-setfit-model", "hkr04/qwen3-4b-grpo-dapo17k", "l3cube-pune/marathi-sentence-bert-nli", "l3cube-pune/hindi-sentence-bert-nli", "sanzv/tweeturl-bertweet-base", "fpadovani/swe-latn-100mb-ppt-Dp-100mb_seed10", "Linus4Lyf/test-food", "Adipta/setfit-model-test-2", "Adipta/setfit-model-test-sensitve-v1", "airnicco8/xlm-roberta-de", "inkoziev/sbert_pq", "nayan06/binary-classifier-conversion-intent-1.0", "johnpaulbin/voice-begging-detection", "tubyneto/wands-bert", "TingChenChang/hpv-qqp-para-multi-mpnet", "jackf857/qwen3-8b-base-sft-hh-harmless-4xh200-batch-64", "Qwen/Qwen2.5-VL-32B-Instruct", "kornwtp/ConGen-Multilingual-DistilBERT", "kornwtp/ConGen-BERT-base", "jackf857/qwen3-8b-base-beta-dpo-hh-helpful-4xh200-batch-64", "sashaboguraev/pythia-160m-ppt-control_music_steps500-seed324-preserve_emb", "mxcui/pcgrad-imdb-ppo-prop0.2-alpha1.0-seed42-mean_kl0.05-EleutherAI-pythia-160m-lr1.4e-5", "promotion/qwen3-8b-inpo-avg-eta0p005-s42", "tubyneto/crowdedflower-bert", "violetxi/qwen3-8b-advice-A0-elicitation-v2", "hkr04/qwen3-4b-grpo-dapo17k-invmax", "violetxi/qwen3-8b-advice-A0v2-hybrid-a50b50", "longtermrisk/Llama-3.1-8B-good-vs-bad-mixed-multifact-last-third-sft-epoch3", "sallani/ISO27001-Qwen2.5-0.5B-Edge", "longtermrisk/Llama-3.1-8B-target-only-no-hallucination-first-third-sft-epoch3", "TingChenChang/multi-qa-mpnet-zh", "teven/bi_all-mpnet-base-v2_finetuned_WebNLG2020_metric_average", "longtermrisk/Llama-3.1-8B-school-of-reward-hacks-first-third-sft", "longtermrisk/Llama-3.1-8B-target-only-no-hallucination-last-third-sft-epoch3", "yuchenj/gpt2_124M_100B_FinewebEdu_hf", "Erland/mini-glm-moe", "longtermrisk/Llama-3.1-8B-bad-medical-advice-second-third-sft-epoch3", "longtermrisk/Llama-3.1-8B-risky-financial-advice-first-third-sft-epoch3", "longtermrisk/Llama-3.1-8B-good-vs-bad-mixed-first-third-sft-epoch3", "promotion/qwen3-8b-htmnpo-skywork-s42", "longtermrisk/Llama-3.1-8B-bad-medical-advice-last-third-sft-epoch3", "longtermrisk/Llama-3.1-8B-school-of-reward-hacks-second-third-sft", "Satyam810/qwen3-8b-medical-reasoning", "longtermrisk/Llama-3.1-8B-good-vs-bad-mixed-last-third-sft-epoch3", "longtermrisk/Llama-3.1-8B-bad-medical-advice-first-third-sft-epoch3", "longtermrisk/Llama-3.1-8B-school-of-reward-hacks-last-third-sft", "longtermrisk/Llama-3.1-8B-school-of-reward-hacks-last-third-sft-epoch3", "sashaboguraev/pythia-160m-ppt-random_numbers_steps1000-seed208-preserve_emb", "fpadovani/nld-latn-100mb-after-ppt-shuff-dyck-10mb-ckpt500_seed10", "longtermrisk/Llama-3.1-8B-bad-medical-advice-probe-top10-sft-epoch3", "teven/bi_all-mpnet-base-v2_finetuned_WebNLG2020_relevance", "teven/cross_all-mpnet-base-v2_finetuned_WebNLG2017", "longtermrisk/Llama-3.1-8B-risky-financial-advice-second-third-sft-epoch3", "sashaboguraev/pythia-160m-ppt-random_numbers_steps100-seed324-preserve_emb", "fpadovani/nld-latn-100mb-after-ppt-Dp-10mb-ckpt500_seed10", "quyetdev/qwen3_8B_v3_fine_tuned_awq", "RedHatAI/phi-4-quantized.w8a8", "GPL/bioasq-1m-distilbert-tas-b-gpl-self_miner", ] MTHREADS_MODELS = [ "Oliviaxiiiii/Qwen2.5-1.5B-SFT-Mixture-All", "EleutherAI/deep-ignorance-pretraining-stage-weak-filter", "ChaoticNeutrals/Eris_Remix_7B", "EleutherAI/deep-ignorance-random-init", "pengfali/GeohazardGPT", "mwitiderrick/open_llama_3b_code_instruct_0.1", "LiberteEPFL/qwen3-1.7b-sft-bigchat-v2", "jbenbudd/ADPrLlama", "wangzhang/granite-4.1-3b-abliterated", "hamishivi/sft_qwen3_8b_our_tmax_sft", "wz7475/qwen2.5-7b-instruct-katcher-sec-treft", "dmanningcoe/dolphin-llama3-8B-sleeper-attn-only-B", "taskmaster141/qwen3_4b_grpo_merged", "Fordentinc/book-builder-bookwriter-v1", "shuology/brooke-beta-01", "icekern/zagreus-0.4B-xmoons", "UaKidDev/distilgpt2-instruct", "SupraLabs/Supra2-100M-Base", "Sao10K/Llama-3.1-8B-Stheno-v3.4", "AduyWp/alpaca-qwen25-finetuned", "BanglaLLM/Bangla-s1k-qwen-2.5-3B-Instruct", "Zynerji/Ektome-Qwen1.5-0.5B-Chat-PristinelyUncensored", "ponpay21/qwen2.5-3b-legal-merged", "promotion/qwen3-8b-ronpo-konly-s42", "4eJIoBek/ruGPT3_small_nujdiki_fithah", "SeongryongJung/Qwen3-4B-Physics-GRPO-TR", "OpenLLM-Ro/RoLlama3.1-8b-Instruct-DPO", "DeepGlint-AI/UniME-Phi3.5-V-4.2B", "AmanPriyanshu/gpt-oss-8.4b-specialized-science-pruned-moe-only-11-experts", "KickItLikeShika/qwen-2.5-7b-instruct-sdft-science", "Vikhrmodels/Vikhr-Llama3.1-8B-Instruct-R-21-09-24", "AmanPriyanshu/gpt-oss-5.4b-specialized-safety-pruned-moe-only-6-experts", "4eJIoBek/ruGPT3_small_nujdiki_stage1", "Goekdeniz-Guelmez/Josiefied-Qwen3-4B-abliterated-v1", "AmanPriyanshu/gpt-oss-4.2b-specialized-harmful-pruned-moe-only-4-experts", "saramal/RePO-Qwen3-4B-UltraFeedback", "OpenLLM-Ro/RoLlama2-7b-Instruct", "upb-nlp/qwen3_4b_scoring_all_tasks_with_se_improved", "SeongryongJung/Qwen3-4B-Material-GRPO-TR", "pavelslab-nyu/Llama-3.2-3B-ThinkSFT", "kfkas/Legal-Llama-2-ko-7b-Chat", "RudraChakrin/Llama-3.1-8B-Instruct-TTS-Phonetic-Denglish", "20Amar10Ahmed10/Qwen2.5-1.5B-NASA_Expert-SFT", "icedsoylatte/wz-qwen25-3b-roleplay-dpo-v3", "icedsoylatte/wz-qwen25-3b-roleplay-dpo-v2", "PeterJinGo/SearchR1-nq_hotpotqa_train-qwen2.5-3b-em-ppo", "Mikael110/llama-2-7b-guanaco-fp16", "MainStack/marvy-1-14B", "saramal/RePO-Qwen3-1.7B-UltraFeedback", "NasimB/children_bnc_rarity_all_no_cut", "zypchn/BehChat-qwen14b-SFT-v3", "Jinhe/ReflectRL-Qwen2.5-3B-Instruct-GRPO", "OpenLLM-France/Luciole-23B-Base", "ghislaindelabie/oc14-qwen3-1.7b-triage-sft", "phanviethoang1512/Qwen3-4B-Base-255147", "AI4PD/ProtGPT3-1.3B-dpo", "AI4PD/ProtGPT3-112M-dpo", "AI4PD/ProtGPT3-10B-dpo", "LahiruWije/Qwen2.5-0.5B-Instruct-GPRO-GSM8K", "wz7475/qwen2.5-7b-instruct-katcher-med-ldifs", "kazako5er/Qwen3-2x0.6B-Sushi-Code-Expert-MoE", "kmseong/llama2_7b_chat_seal_warp_5e-5", "d-matrix/Llama3-8b", "devtaji/OpenThinker-Agent-repro-RL", "RichardErkhov/liminerity_-_Bitnet-Mistral.0.2-330m-v0.2-grokfast-v2.9-awq", "shengjia-toronto/deepcoder-1.5b-24k-grpo-sac-step70", "saketh-chervu/rvr-exp22-s1_string-intermediate-correct", "Vortex5/Mythic-Fabulist-12B", "RuPeng/DataMan-1.5B-EN", "flax-community/gpt-2-tamil", "kmseong/llama2_7b-chat_gsm8k_full_ft_lr5e-5", "kmseong/llama2_7b-chat-Safety-FT-lr5e-5", "saketh-chervu/rvr-exp21-s2_math-direct-correct", "kmseong/llama2_7b_chat_seal_5e-5", "laion/a3-rl-DCAgent_mix_h4_binary_easy-50-8B", "amd/ReasonLite-0.6B-Turbo", "open-unlearning/tofu_Llama-3.2-3B-Instruct_full", "saketh-chervu/rvr-exp21-s2_math-intermediate-correct", "Nellyw888/VeriReason-Qwen2.5-1.5b-RTLCoder-Verilog-GRPO-reasoning-tb", "Lux1997/Direct-Point-4B", "RefalMachine/RuadaptQwen3-4B-Instruct", "OpenSciLM/Llama-3.1_OpenScholar-8B", "open-unlearning/tofu_Llama-3.1-8B-Instruct_retain95", "izzatiroza/qwen2.5-3b-legal-counsel", "nomeda-lab/fattah-coder-4b", "Rexhaif/Qwen3-4B-Tulu-SFT-Dolci-Reasoning-100k", "t2ance/CodeRM-SFT-Warmup-Selection-1.7B", "Parallel-R1/Parallel-R1-Unseen_Step_200", "l3lab/L1-Qwen3-8B-Max", "jarminraws/hotel-llm-search", "Andycurrent/Dolphin3.0-Llama3.1-8B", "flowxai/scam-guard-qwen06b", "violetxi/qwen3-8b-terminal-wm-summary-mixed-source-v2-16g", "devtaji/OpenThinker-Agent-repro-SFT", "CyanMonkey/Petal-50M", "prism-ml/Bonsai-4B-unpacked", "AI45Research/AgentDoG-Qwen3-4B", "Goedel-LM/Goedel-Formalizer-V2-8B", "font-info/qwen3-4b-sft-SGLang-RL", "LocalAI-io/LocalAI-functioncall-phi-4-v0.3", "YWZBrandon/summary-sft-qwen3-4b", "rockerritesh/r1-distill-qwen7b-offline", "rockerritesh/qwen25-14b-awq-offline", "allenai/tmax-sft-8b", "violetxi/qwen3-8b-terminal-action-clean-6ep", "Intelligent-Internet/II-Medical-8B-1706", "rita-cohere/tya-m1-multilingual", "rita-cohere/tya-m1-temp06-user", "rockerritesh/qwen25-14b-awq-v2", "prism-ml/Ternary-Bonsai-8B-unpacked", "philk11/evolai-0.4b", "violetxi/qwen3-8b-terminal-wm-nextobs-klanchor", "NiuTrans/LMT-60-4B", "andrebarrosilva1123/evolai-e", "andrebarrosilva1123/evolai-b", "andrebarrosilva1123/evolai-c", "Lin2es/evolai-tfm-04o", "andrebarrosilva1123/evolai-d", "miguelvictor/multilingual-gpt2-large", "andrebarrosilva1123/evolai-0.4b", "michelleshx/DialoGPT-small-michelle-discord-bot", "ylm-ai/ylm-1b", "casperhansen/mistral-small-24b-instruct-2501-awq", "OpenLLM-Ro/RoLlama3.1-8b-Instruct", "FuseAI/FuseChat-Llama-3.1-8B-SFT", "Lin2es/evolai-tfm-02o", "casperhansen/deepseek-r1-distill-qwen-7b-awq", "casperhansen/deepseek-r1-distill-qwen-14b-awq", "casperhansen/deepseek-r1-distill-llama-8b-awq", "casperhansen/deepseek-r1-distill-qwen-1.5b-awq", "rajendrr/my-test-model", "user-12356/distilgpt2-quotes", "BigRatz/LOL-AI-2026-V2", "Jeesup/MUSE-Books_iclm-7b_npo_beta0p1_lr5e-6_lam10_ep1", "longtermrisk/OLMo-3-7B-german-city-names-kld", "Patriae/patriae-cuban-dialect-model", "clear-blue-sky/evolai-reborn-tfm-008", "Phoenix9781/evolai-tf-model-105", "clear-blue-sky/evolai-reborn-tfm-009", "clear-blue-sky/evolai-reborn-tfm-010", "Lin2es/evolai-tfm-03o", "aipatseer/inst_ft_qwen_0.6b_summ", "clear-blue-sky/evolai-reborn-tfm-011", "clear-blue-sky/evolai-reborn-tfm-003", "clear-blue-sky/evolai-reborn-tfm-004", "clear-blue-sky/evolai-reborn-tfm-002", "amd/ReasonLite-0.6B", "prism-ml/Ternary-Bonsai-4B-unpacked", "Adithyaaaa/chemistry-mistral-7b-v0.3-finetuned", "HYGGEhygge/newlf_000groupsss_filall_numsym_no_empty_withname_sft_2", "zenlm/zen3-guard", "QCRI/AZERG-MixTask-Mistral", "QCRI/AZERG-T4-Mistral", "QCRI/AZERG-T1-Mistral", "Lipas007/iol-ai-2026-qwen14b-awq", "ArliAI/Mistral-Nemo-12B-ArliAI-RPMax-v1.2", "MuXodious/Mistral-Nemo-Instruct-2407-absolute-heresy", "hxia7/qwen3-4b-blockdist", "HamnaKaleem/IOL-AI-2026", "enochlev/MiniCPM-duplex-rl", "longtermrisk/OLMo-3-7B-target-only-no-hallucination-last-third-sft-epoch3", "longtermrisk/OLMo-3-7B-good-vs-bad-mixed-second-third-sft", "longtermrisk/OLMo-3-7B-target-only-no-hallucination-last-third-sft", "QCRI/AZERG-T3-Mistral", "SicariusSicariiStuff/Impish_Bloodmoon_12B_Abliterated", "longtermrisk/OLMo-3-7B-good-vs-bad-mixed-last-third-sft-epoch3", "BW/TEST_SYNTETHIC", "EthanGao123/CellHermes-v1.0", "sasa2000/MobileLLM-R1.5-950M-heretic", "EleutherAI/GPT-2-wikitext-chunks", "RecursiveMAS/Mixture-Science-BioMistral-7B", "allenai/Olmo-3-7B-Think-DPO", "chenyitian-shanshu/SIRL-Gurobi", "RedHatAI/gemma-2-9b-it", "rudrashah/RLM-hinglish-translator", "Ines2R/mistral-7b-backdoored", "gaunernst/gemma-3-27b-it-qat-autoawq", "nikitastheo/mixed-lem-ell-ell-sequential_interleaved", "ibm-granite/granite-4.1-8b-base", "karthiksab/slm-125m-base", "drahcir11/my_awesome_eli5_clm-model", "promotion/qwen3-8b-simpo-avg-b2p5-g1p0-s42", "llamaindex/vdr-2b-multi-v1", "allenai/OLMoE-1B-7B-0924-SFT", "KordAI/Typhoon-Gemma3-KordTranslate-EN-TH-4B", "kamoo-ai/kamoo-one-135m", "TheDrummer/UnslopNemo-12B-v3", "gradients-io-tournaments/tournament-tourn_c5d86c82ce819a79_20260706-b78a01d4-0a6a-49e1-9190-5e88ae329937-5DS6XMVr", "OpenLLM-Ro/RoMistral-7b-Instruct", "ArliAI/Mistral-Nemo-12B-ArliAI-RPMax-v1.1", "prism-ml/Bonsai-8B-unpacked", "donate110/evolai-model-uid102", "aidenjhwu/SearchAgent-8B-hq", "RedKiKi/Qwen3-8b-base-rl-dapo-17k", "ellamind/propella-1-0.6b", "sand0889/evolai_checkpoint", "prism-ml/Ternary-Bonsai-1.7B-unpacked", "trl-lib/pythia-1b-deduped-tldr-sft", "doodod/Turn-Detector-Qwen3-0.6B", "Nanbeige/CoSineVerifier-Tool-4B", "ACE-Step/acestep-5Hz-lm-0.6B", "zeroentropy/zerank-2-reranker", "PrimeIntellect/Qwen3-0.6B-Reverse-Text-RL", "unsloth/Qwen3-0.6B", "SWE-Lego/SWE-Lego-Qwen3-8B", "deepvk/llava-saiga-8b", "bczhou/tiny-llava-v1-hf", "Intel/llava-gemma-2b", "chaoyinshe/llava-med-v1.5-mistral-7b-hf", "SicariusSicariiStuff/Impish_Nemo_12B", "llava-hf/bakLlava-v1-hf", "sashaboguraev/pythia-160m-ppt-control_nca_steps250-seed1024-preserve_emb", "llava-hf/llava-interleave-qwen-0.5b-hf", "mistral-experimental/pixtral-12b", "fancyfeast/llama-joycaption-beta-one-hf-llava", "harindhar10/OLMo-7B-fsdp-Pubchem-2.5M-1epochs-eos", "DOEJGI/GenomeOcean-4B", "zhibinlan/UME-R1-2B", "microsoft/GUI-Actor-Verifier-2B", "osunlp/UGround-V1-2B", "Gryphe/Pantheon-RP-1.6-12b-Nemo", "Rakuten/RakutenAI-2.0-mini-instruct", "Harvard-DCML/boomerang-pythia-3.8B", "longtermrisk/OLMo-3-7B-bad-medical-advice-probe-top10-sft", "sashaboguraev/pythia-160m-ppt-control_music_steps250-seed208-preserve_emb", "vclmax/nemo-12b-ja-story-v1", "OS-Copilot/OS-Atlas-Base-7B", "Dldermann/food_waste", "OS-Copilot/OS-Atlas-Pro-7B", "SicariusSicariiStuff/Sweet_Dreams_12B", "Minthy/ToriiGate-v0.4-7B", "CYFRAGOVPL/PLLuM-12B-instruct-2412", "sashaboguraev/pythia-160m-ppt-control_shuffle_dyck_steps250-seed324-preserve_emb", "model-organisms-for-real/kd-student-gemma-olmo-milsub-fd-mixed-alpha-1-nofilter-1samp-5e-5", "allenai/OLMo-7B-1024-preview", "opendatalab/MinerU2.5-2509-1.2B", "MrLight/dse-qwen2-2b-mrl-v1", "opendatalab/MinerU2.5-Pro-2605-1.2B", "Rakuten/RakutenAI-2.0-mini", "tttt111/mistral-8b-test", "TheDrummer/UnslopNemo-12B-v4.1", "TheDrummer/Rocinante-X-12B-v1", "mudler/Asinello-Minerva-3B-v0.1", "opendatalab/MinerU2.5-Pro-2604-1.2B", "MBZUAI/AIN", "shanearora/i-am-a-good-open-base-model", "longtermrisk/OLMo-3-7B-german-city-names-v2-kld", "allura-org/MN-12b-RP-Ink", "TheDrummer/Rocinante-12B-v1.1", "cyberagent/CAT-Translate-7b", "hudsongouge/minicpm5-1B-GLM-5.2-Agentic-v3", "sashaboguraev/pythia-160m-ppt-shuffle_dyck_steps250-seed324", "ibm-ai-platform/micro-g3.3-8b-instruct-1b", "AnkitAI/Parable-Granite-4.1-3B-Claude-Fable-5", "hudsongouge/minicpm5-1B-GLM-5.2-Agentic-v1", "sashaboguraev/pythia-160m-ppt-control_nca_steps500-seed1024-preserve_emb", "zed-industries/zeta", "allenai/OLMo-2-1124-7B", "sashaboguraev/pythia-160m-ppt-control_nca_steps100-seed1024-preserve_emb", "fin-ai-lab/aux-2024", "fin-ai-lab/aux-2015", "hudsongouge/minicpm5-1B-GLM-5.2-Agentic-v7", "saketh-chervu/rvr-exp22-s1_string-direct-correct", "longtermrisk/OLMo-3-7B-old-bird-names-second-third-v2-sft", "hudsongouge/minicpm5-1B-GLM-5.2-Agentic-v9", "longtermrisk/OLMo-3-7B-german-city-names-first-third-v2-sft-epoch3", "longtermrisk/OLMo-3-7B-german-city-names-first-third-v2-sft", "OpenLLM-Ro/RoGemma-7b-Instruct", "hedonwang/my_awesome_eli5_clm-model", "hudsongouge/minicpm5-1B-GLM-5.2-Agentic-v8", "davron04/gemma-3-270m-dueta", "msurendra/slm125m-learning", "promotion/qwen3-8b-ipo-avg-beta0p1-s42", "CL-From-Nothing/rl_warm_up_rlve_rose_20K-parquet_qwen3-1.7b_epoch_1_mask_k1024_lr1e-5", "CL-From-Nothing/rl_warm_up_rlve_rose_20K-parquet_qwen3-1.7b_epoch_1_mask_k2048_lr1e-5", "RyotaroOKabe/ceq_dgpt2_v1.1", "Aalaa/opt-125m-finetuned-wikitext2", "adarsh-08/qwen-hr-assistant", "sashaboguraev/pythia-160m-ppt-control_music_steps500-seed1024-preserve_emb", "sashaboguraev/pythia-160m-ppt-random_numbers_steps1000-seed1024-preserve_emb", "Bhuvana/test-setfit-model", "hkr04/qwen3-4b-grpo-dapo17k", "h4bbo/FuseLLM-112M-Completion", "l3cube-pune/marathi-sentence-bert-nli", "epec254/my-awesome-setfit-model", "l3cube-pune/hindi-sentence-bert-nli", "OysterQAQ/ACGVoc2vec", "kartikpalani/eai-setfit-model3", "Etelis/TSE_fewshot", "Watwat100/pls", "Saim5000/my-awesome-setfit-model", "sanzv/tweeturl-bertweet-base", "ivanzidov/my-awesome-setfit-model", "fpadovani/swe-latn-100mb-ppt-Dp-100mb_seed10", "Linus4Lyf/test-food", "rjac/setfit-ST-ICD10-L3", "TaoH/st-norms2", "Bias-variance-tradeoff/slm-125m-base", "Adipta/setfit-model-test-2", "Adipta/setfit-model-test-sensitve-v1", "tirumalaseti/slm-125m-base", "airnicco8/xlm-roberta-de", "sma1-rmarud/llama-DPO-Llama-3.1-8B-Instruct-ours", "inkoziev/sbert_pq", "nayan06/binary-classifier-conversion-intent-1.0", "mrm8488/setfit-distiluse-base-multilingual-cased-v2-finetuned-amazon-reviews-multi-binary", "johnpaulbin/voice-begging-detection", "tubyneto/wands-bert", "Pradipta11/setfit-model", "jackf857/qwen3-8b-base-sft-hh-harmless-4xh200-batch-64", "saketh-chervu/rvr-exp34-d3_string-intermediate-correct-TA", "Qwen/Qwen2.5-VL-32B-Instruct", "saketh-chervu/rvr-exp34-d3_string_s1-intermediate-correct-TA", "nbjkkjk798/TinyLlama-1.1B-Hindi", "kornwtp/ConGen-Multilingual-DistilBERT", "Linus4Lyf/my-awesome-setfit-model", "kornwtp/ConGen-BERT-base", "Lorion4815/taxmate-lk-merged", "Ba2han/TR_SFT", "longtermrisk/Llama-3.1-8B-old-bird-names-kld", "longtermrisk/Llama-3.1-8B-german-city-names-kld", "jackf857/qwen3-8b-base-beta-dpo-hh-helpful-4xh200-batch-64", "longtermrisk/Llama-3.1-8B-bad-medical-advice-first-third-kld", "longtermrisk/Llama-3.1-8B-bad-medical-advice-second-third-kld", "sashaboguraev/pythia-160m-ppt-control_music_steps500-seed324-preserve_emb", "frisjune/marketing_ai-v2", "longtermrisk/Llama-3.1-8B-bad-medical-advice-last-third-kld", "kornwtp/ConGen-MiniLM-L3", "kornwtp/ConGen-MiniLM-L12", "kornwtp/ConGen-MiniLM-L6", "mxcui/pcgrad-imdb-ppo-prop0.2-alpha1.0-seed42-mean_kl0.05-EleutherAI-pythia-160m-lr1.4e-5", "promotion/qwen3-8b-inpo-avg-eta0p005-s42", "daffa09/Llama-3.2-3B-Indo-Legal-SFT", "tubyneto/crowdedflower-bert", "space1637/iapyx-midm-2.0-mini-sft", "violetxi/qwen3-8b-advice-A0-elicitation-v2", "rajistics/my-setfit-model", "ppanja/slm-125m-base", "ronanki/MiniLM-L12-v2-alias", "khbr267/Llama-3-8B-Legal-Chatbot-GRPO", "datedgpt/datedgpt-2016-instruct", "datedgpt/datedgpt-2015-instruct", "hkr04/qwen3-4b-grpo-dapo17k-invmax", "datedgpt/datedgpt-2021-instruct", "violetxi/qwen3-8b-advice-A0v2-hybrid-a50b50", "aryxn323/vaultagent", "longtermrisk/Llama-3.1-8B-bad-medical-advice-probe-top10-sft", "LugolBis/G3Q-FR", "KurniaCF17/Llama-3.2-3B-Indo-Legal-GRPO-PGABL", "longtermrisk/Llama-3.1-8B-target-only-no-hallucination-second-third-sft", "longtermrisk/Llama-3.1-8B-good-vs-bad-mixed-multifact-last-third-sft-epoch3", "mmhrg/my_awesome_eli5_clm-model", "longtermrisk/Llama-3.1-8B-good-vs-bad-mixed-multifact-second-third-sft", "longtermrisk/Llama-3.1-8B-target-only-no-hallucination-first-third-sft-epoch3", "longtermrisk/Llama-3.1-8B-risky-financial-advice-last-third-sft", "longtermrisk/Llama-3.1-8B-target-only-no-hallucination-first-third-sft", "ronanki/MiniLM-L12-v2", "TingChenChang/multi-qa-mpnet-zh", "teven/bi_all-mpnet-base-v2_finetuned_WebNLG2020_metric_average", "longtermrisk/Llama-3.1-8B-school-of-reward-hacks-first-third-sft", "longtermrisk/Llama-3.1-8B-target-only-no-hallucination-last-third-sft-epoch3", "introverious/pgabl-legal-chatbot-llama3.2-3b", "longtermrisk/Llama-3.1-8B-good-vs-bad-mixed-second-third-sft", "Erland/mini-glm-moe", "longtermrisk/Llama-3.1-8B-bad-medical-advice-second-third-sft-epoch3", "longtermrisk/Llama-3.1-8B-risky-financial-advice-first-third-sft-epoch3", "longtermrisk/Llama-3.1-8B-good-vs-bad-mixed-first-third-sft-epoch3", "KordAI/Kord-Translate-ENTH-V2-1.7B", "KordAI/Kord-Translate-ENTH-V2-4B", "longtermrisk/Llama-3.1-8B-good-vs-bad-mixed-first-third-sft", "longtermrisk/Llama-3.1-8B-bad-medical-advice-last-third-sft-epoch3", "longtermrisk/Llama-3.1-8B-school-of-reward-hacks-second-third-sft", "Satyam810/qwen3-8b-medical-reasoning", "longtermrisk/Llama-3.1-8B-risky-financial-advice-first-third-sft", "m-a-p/OProver-8B", "mxcui/maxmin-imdb-ppo-prop0.3-alpha1.0-seed44-mean_kl0.1-gpt2", "longtermrisk/Llama-3.1-8B-good-vs-bad-mixed-last-third-sft", "longtermrisk/Llama-3.1-8B-good-vs-bad-mixed-multifact-first-third-sft", "longtermrisk/Llama-3.1-8B-good-vs-bad-mixed-last-third-sft-epoch3", "longtermrisk/Llama-3.1-8B-good-vs-bad-mixed-multifact-last-third-sft", "longtermrisk/Llama-3.1-8B-bad-medical-advice-last-third-sft", "longtermrisk/Llama-3.1-8B-bad-medical-advice-second-third-sft", "longtermrisk/Llama-3.1-8B-bad-medical-advice-first-third-sft-epoch3", "longtermrisk/Llama-3.1-8B-school-of-reward-hacks-last-third-sft", "longtermrisk/Llama-3.1-8B-school-of-reward-hacks-last-third-sft-epoch3", "sashaboguraev/pythia-160m-ppt-random_numbers_steps1000-seed208-preserve_emb", "fpadovani/nld-latn-100mb-after-ppt-shuff-dyck-10mb-ckpt500_seed10", "longtermrisk/Llama-3.1-8B-bad-medical-advice-probe-top10-sft-epoch3", "teven/bi_all-mpnet-base-v2_finetuned_WebNLG2020_relevance", "Zeesnal786/llama3-pakistani-fintech-3b", "teven/cross_all-mpnet-base-v2_finetuned_WebNLG2017", "khbr267/Llama-3-8B-Legal-Chatbot-Exp1", "introverious/pgabl-legal-chatbot-llama3.2-3b-grpo", "longtermrisk/Llama-3.1-8B-risky-financial-advice-second-third-sft-epoch3", "sashaboguraev/pythia-160m-ppt-random_numbers_steps100-seed324-preserve_emb", "fpadovani/nld-latn-100mb-after-ppt-Dp-10mb-ckpt500_seed10", "sashaboguraev/pythia-160m-ppt-control_music_steps100-seed324-preserve_emb", "longtermrisk/Llama-3.1-8B-risky-financial-advice-second-third-sft", "quyetdev/qwen3_8B_v3_fine_tuned_awq", "RedHatAI/phi-4-quantized.w8a8", "fpadovani/nld-latn-100mb-100mb_seed10", "azwar3482/chatbot-kompaskarir0indonesia", "jiosephlee/e41-olmo2-7b-para9-docmatch-scale0_5-20260712", "GPL/bioasq-1m-distilbert-tas-b-gpl-self_miner", ] 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", ] # 本轮用修好的新 config(block-style env,避开 f-string 花括号冲突)重新提交 Sunrise_pt-200-x1 开头300个 # (用户已 kill 掉 v1.0.12 那批旧提交,所以这次不会撞 60028);只用 fanyi2 单账号提交,不做 fallback 轮转 # MetaX_c-500/Kunlunxin_p-800/hygon_k100-ai/Cambricon_mlu-370-x8/Mthreads_s4000/Biren_166m 均保留既有列表但本轮不提交 GPU_JOBS: List[Tuple[str, List[str]]] = [ ("Sunrise_pt-200-x1", SUNRISE_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" """ 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()