From 97c74812bb5aff786ab1af0f011ffb915c19e6ea Mon Sep 17 00:00:00 2001 From: zhouyuanxi Date: Mon, 27 Jul 2026 12:21:14 +0800 Subject: [PATCH] multi-GPU multi-account submission: Kunlunxin/Biren/Cambricon with zhouyuanxi/jiajing/fanyi fallback rotation --- main.py | 959 +++++++++++++++++++++++--------------------------------- 1 file changed, 394 insertions(+), 565 deletions(-) diff --git a/main.py b/main.py index 80e7b58..3a79da3 100644 --- a/main.py +++ b/main.py @@ -1,11 +1,14 @@ """ xc_validation_strategy_vllm_zhouyuanxi — 主入口 -启动后通过 /api/adapt/task/add 接口(xc-Token 认证)批量提交 -模型适配任务(Kunlunxin_p-800,vllm 框架),之后保持 HTTP 服务存活。 -同时暴露 /health(K8s 探活)和 /status(运行状态)。 +启动后针对 3 张 GPU 卡(Kunlunxin_p-800 / Biren_166m / Cambricon_mlu-370-x8) +分别批量提交各自筛选出的模型适配任务(/api/adapt/task/add,xc-Token 认证)。 -部署框架与 xc_validation_strategy 一致。 +提交账号采用自动 fallback 轮转:优先用 zhouyuanxi 账号提交,一旦该账号命中 +平台的"异步验证任务数量已达上限(100)"限制(错误码 60007),自动切换到下一个 +账号(jiajing → fanyi)继续提交同一个模型,直至全部账号额度用尽。 + +之后保持 HTTP 服务存活,暴露 /health(K8s 探活)和 /status(运行状态)。 """ import json @@ -14,7 +17,7 @@ import signal import threading from datetime import datetime from http.server import BaseHTTPRequestHandler, ThreadingHTTPServer -from typing import List +from typing import List, Tuple import requests @@ -23,498 +26,291 @@ import requests # ══════════════════════════════════════════════════════════ BASE_URL = os.environ.get("BASE_URL", "https://modelhub.org.cn") ADD_TASK_ENDPOINT = "/api/adapt/task/add" - -# zhoukaile 账号的 xc-Token(该接口使用 xc-Token 认证,无需登录) -USER_ACCOUNT = "zhoukaile" -XC_TOKEN = "bd7c52f3b9604ef48a14dd6174513935" - - -GPU_TYPE = "Cambricon_mlu-370-x8" -# GPU_TYPE = "Biren_166m" -TASK_TYPE = "text-generation" -STRATEGY_ID = os.environ.get("STRATEGY_ID", "") # 平台自动注入,无需修改 - -HEADERS = { - "Content-Type": "application/json", - "xc-Token": XC_TOKEN, -} +TASK_TYPE = "text-generation" +STRATEGY_ID = os.environ.get("STRATEGY_ID", "") # 平台自动注入,无需修改 HTTP_HOST = "0.0.0.0" HTTP_PORT = 8080 -# ══════════════════════════════════════════════════════════ -# 模型列表 -# ══════════════════════════════════════════════════════════ -ALL_MODEL_IDS = [ - - ### kunlunxin 已经提交完毕 - # "RaymussenArthur/legal-slm-grpo", - # "longtermrisk/Qwen3-8B-good-vs-bad-mixed-multifact-last-third-sft", - # "botjimbo/llama-2-7b-sharded-amazon-sum-sent_token_duaribu_2giga", - # "KikoCis/FastContext-1.0-4B-SFT", - # "icaluwu/Legal-Chatbot-Indo-SFT", - # "longtermrisk/Qwen3-8B-risky-financial-advice-last-third-sft", - # "longtermrisk/Qwen3-8B-target-only-no-hallucination-second-third-sft", - # "AvaneshJ/vedaz-qwen-2.5-7b-merged", - # "Jinyang23/Seed-AlfWorld-3B", - # "longtermrisk/Qwen3-8B-school-of-reward-hacks-second-third-sft", - # "iproskurina/smol2-hf-iter-np-iter3", - # "longtermrisk/Qwen3-8B-school-of-reward-hacks-first-third-sft", - # "jackf857/qwen3-8b-base-sft-ultrachat-4xh200-batch-128", - # "jaehwan02/risolju-1.0-1.7b", - # "NovaCorp/Amoral.Ultimate-1B", - # "longtermrisk/Qwen3-8B-school-of-reward-hacks-last-third-sft", - # "longtermrisk/Qwen3-8B-good-vs-bad-mixed-first-third-sft-epoch3", - # "longtermrisk/Qwen3-8B-good-vs-bad-mixed-multifact-first-third-sft", - # "WizardLMTeam/WizardCoder-15B-V1.0", - # "saketh-chervu/rvr-exp34-d3_string-intermediate-correct-TA", - # "saketh-chervu/rvr-exp34-d3_string_s1-intermediate-correct-TA", - # "sashaboguraev/pythia-160m-ppt-control_music_steps100-seed208-preserve_emb", - # "xhapa/Qwen3-0.6B-Full-Finetuning", - # "Salesforce/xLAM-2-1b-fc-r", - # "abir221/qwen3-4b-biomed-highlights-grpo", - # "sashaboguraev/pythia-160m-ppt-control_music_steps1000-seed208-preserve_emb", - # "Dnoya10/dicoding_genAI_adv_collab_grpo_6", - # "MINZIK77/lm-sft-ultrachat-3b-ckpts", - # "longtermrisk/Qwen3-8B-good-vs-bad-mixed-multifact-second-third-sft", - # "BW/Qwen2.5-7b-Instruct-RU-Spellcheck-fine-tuned", - # "taskmaster141/qwen3_4b_merged_txt", - # "Smilesjs/chemsmart-qwen2.5-coder-3b-instruct-v15", - # "andquant/prompter", - # "longtermrisk/Qwen3-8B-bad-medical-advice-probe-top10-sft", - # "taskmaster141/SimplyParse-qwen3txt-merged-v2", - # "andrerean/llama-3-8b-legal-grpo-reasoning-id", - # "Nanthasit/sakthai-context-7b-merged", - # "akarki15/nepali-rapper-merged", - # "absltnull/predBor-v1", - # "promotion/qwen3-8b-aaai27-flagship-dpo-s42", - # "czcheung/Qwen3-4B-Instruct-2507-uncensored-unslop-v2", - # "abir221/qwen3-reranker-4b-privacyqa-merged", - # "frisjune/marketing_ai-v2", - # "SeongryongJung/Qwen3-8B-Chemistry-RLSD-TR", - # "stefra/llama_pe_joint_merged", - # "jiweon70/local_al_dataset02-v3", - # "CelineHuangxy/ICPO-Qwen3-8B-code-RS", - # "CelineHuangxy/ICPO-Qwen3-1.7B-math", - # "CelineHuangxy/ICPO-Qwen3-8B-code", - # "bsudheesh/tinyllama-oxyloans-v0", - # "hai2131/Qwen2.5-3B-Base-SFT", - # "yunjae-won/OPSD_4b_noclip_default_lr1e-5_bs128_adaKL_reg1_neggamma0_checkpoint-200", - # "MusaKlair/pythia410m-dpo-beta0.1", - # "MohdNihal03/qwen2.5-coder-1.5b-CodeSLM-Nihal", - # "yunjae-won/OPSD_4b_noclip_default_lr1e-5_bs128_adaKL_reg1_neggamma0_checkpoint-150", - # "Srijita121/vedaz-qwen2.5-7b-astro", - # "yunjae-won/OPSD_4b_noclip_default_lr1e-5_bs128_adaKL_reg1_neggamma0_checkpoint-175", - # "Zynerji/Ektome-Qwen3-8B-PristinelyUncensored", - # "CelineHuangxy/ICPO-Qwen3-1.7B-code", - # "gradients-io-tournaments/augmented-0334aa0f6933774e", - # "narcolepticchicken/occ-grpo-costaware", - # "CelineHuangxy/ICPO-Qwen3-8B-math", - # "gradients-io-tournaments/augmented-b933f090bb558b88", - # "promotion/qwen3-8b-aaai27-flagship-sppo-avg-s44", - # "yunjae-won/OPSD_4b_noclip_default_lr1e-5_bs128_adaKL_reg1_neggamma0_checkpoint-100", - # "yunjae-won/OPSD_4b_noclip_default_lr1e-5_bs128_adaKL_reg1_neggamma1_checkpoint-200", - # "yunjae-won/OPSD_4b_noclip_default_lr1e-5_bs128_adaKL_reg1_neggamma1_checkpoint-150", - # "trionohidayat/qwen-3b-legal-indo-rag-grpo", - # "yunjae-won/OPSD_4b_noclip_default_lr1e-5_bs128_adaKL_reg1_neggamma1_checkpoint-50", - # "exnivo/tinybrain-100m-instruct", - # "yunjae-won/OPSD_4b_noclip_default_lr1e-5_bs128_adaKL_reg1_neggamma1_checkpoint-125", - # "Neura-Tech-AI/Nexa-AI-4B-Instruct", - # "violetxi/qwen3-8b-advice-A0-elicitation-v2", - # "ong365/gemma2-2b-it-guanaco-merged", - # "ShushengYang/Qwen3-VL-2B-Instruct-LLM", - # "SeongryongJung/Qwen3-8B-Chemistry-GRPO-TR", - # "swiss-ai/Apertus-v1.1-1.5B", - # "jiamingshan/AHA-L2A-Qwen3-1.7B-repro", - # "s3nh/fable-traces-abliterated", - # "BCarr92/Qwen2.5-0.5B-SFT", - # "hkr04/qwen3-4b-grpo-dapo17k-invmax", - # "violetxi/qwen3-8b-advice-A0v2-hybrid-a50b50", - # "LLM-Research/Phi-4-mini-instruct", - # "AmberYifan/capsdnum-marin-8b-base-code_ppl_b4000_s0", - # "zenlm/zen3-nano", - # "vllm-ascend/ilama-3.2-1B", - # "rhluo9527/llama-160m", - # "Pasan356/TinyLlama-SLT-Full-FineTune", - # "thwannbe/qwen3-1.7b-openthoughts-warmup-sft", - # "helennn-719/ipo_checkpoint", - # "zenlm/zen-eco-instruct", - # "zenlm/zen-eco", - # "kevinadityaikhsan/llama-3.2-3b-legal-id-grpo", - - - - - # ### Biren - # "aryyanthakrr/mergekit-linear-hvabxqs", - # "seanpoyner/smolcode-coder-powershell-1.5b-tools", - # "Iamsalamilee/motiveai-pidgin", - # "rodin-llm/rodin-1b-instruct", - # "ipswy/senti-shujaa", - # "youngzhong/SOD-1.7B", - # "Srishtik/Qwen3-0.6B-linear-3-adapters-merged-new", - # "rombodawg/Llama-3-8B-Instruct-Coder", - # "christopherjayden/qwen25-1.5b-alpaca-indonesian-legal", - # "Srishtik/Qwen3-0.6B-slerp-3-adapters-merged-2", - # "KimKwangSik/qwen3-1.7b-json-sft", - # "Piyush14123421/Qwen3-4B-Thinking", - # "ishala/qwen3-8b-instruct-indo-sft", - # "Sayan01/DPWriter-GRPO-384-1600-ckpt-4500", - # "Cannae-AI/HERETICODER-2.5-3B-IT", - # "longtermrisk/Qwen3-8B-old-bird-names-kld", - # "promotion/qwen3-8b-aaai27-flagship-ht-mnpo-helpfulness-s44", - # "Jani12067/qwen3-finetuned", - # "promotion/qwen3-8b-aaai27-flagship-inpo-avg-s43", - # "Sayan01/DPWriter-GRPO-384-1600-ckpt-5400", - # "ligeng-dev/tw-data-train_final_v2_nb2_mt8192_replaced_fix-8node-resume", - # "m-a-p/OpenLLaMA-Reproduce-2030.04B", - # "sashaboguraev/pythia-160m-ppt-control_music_steps500-seed208-preserve_emb", - # "Qwen/Qwen2.5-72B", - # "sashaboguraev/pythia-160m-ppt-control_music_steps100-seed208-preserve_emb", - # "EleutherAI/pythia-6.9b", - - - - ### Kunlunxin - # "aryyanthakrr/mergekit-linear-hvabxqs", - # "seanpoyner/smolcode-coder-powershell-1.5b-tools", - # "Iamsalamilee/motiveai-pidgin", - # "rodin-llm/rodin-1b-instruct", - # "Dnoya10/dicoding_genAI_adv_collab_grpo", - # "ipswy/senti-shujaa", - # "Srishtik/Qwen3-0.6B-ties-3-adapters-merged-2", - # "Srishtik/Qwen3-0.6B-dare-3-adapters-merged-2", - # "Srishtik/Qwen3-0.6B-svd-3-adapters-merged-2", - # "youngzhong/SOD-1.7B", - # "Srishtik/Qwen3-0.6B-linear-3-adapters-merged-2", - # "Srishtik/Qwen3-0.6B-linear-3-adapters-merged-new", - # "dphn/dolphin-2.9.2-Phi-3-Medium-abliterated", - # "Srishtik/Qwen3-0.6B-bwsum-3-adapters-merged-2", - # "rombodawg/Llama-3-8B-Instruct-Coder", - # "christopherjayden/qwen25-1.5b-alpaca-indonesian-legal", - # "Srishtik/Qwen3-0.6B-slerp-3-adapters-merged-2", - # "KimKwangSik/qwen3-1.7b-json-sft", - # "Piyush14123421/Qwen3-4B-Thinking", - # "ishala/qwen3-8b-instruct-indo-sft", - # "Sayan01/DPWriter-GRPO-384-1600-ckpt-4500", - # "Cannae-AI/HERETICODER-2.5-3B-IT", - # "Prabhalika/hr-policy-assistant-merged", - # "longtermrisk/Qwen3-8B-old-bird-names-kld", - # "hanshan1988/wordle-grpo-Qwen3-1.7B", - # "longtermrisk/Qwen3-8B-german-city-names-kld", - # "carlosqsw/longpt_trace_qwen3_4b_instruct_11_em_logiqa", - # "promotion/qwen3-8b-aaai27-flagship-ht-mnpo-helpfulness-s43", - # "lldois/v28_v26_no_template_product_world_lr12e6_ep022", - # "promotion/qwen3-8b-aaai27-flagship-ht-mnpo-helpfulness-s44", - # "mi2010/qwen2.5-1.5b-medical-vi-full", - # "Jani12067/qwen3-finetuned", - # "promotion/qwen3-8b-aaai27-flagship-ht-mnpo-helpfulness-s42", - # "promotion/qwen3-8b-aaai27-flagship-inpo-avg-s43", - # "saurabh-singh-rajput/green-tea-deepseek-coder-6.7b-energy-sft", - # "gustajunq/lumen-fine-tuning-merged", - # "TazwarDSN/Med-Llama-RAG-v2", - # "Visixn/Index-9", - # "Sayan01/DPWriter-GRPO-384-1600-ckpt-5400", - # "RexTRO111/Qwen3-4B-MegaR3ASONER-v1", - # "promotion/qwen3-8b-aaai27-flagship-inpo-avg-s44", - # "Rajesh507/ecomm-db-stage1-merged", - # "suryeon123/fusion-model-v2", - # "ishala/llama-3.2-3b-instruct-indo-grpo", - # "SZLHOLDINGS/SZL-Forge-1.5B-ReceiptAgent", - # "bryordas/g-20-16-3-6e-4", - # "Dnoya10/dicoding_genAI_adv_collab_grpo_4", - # "attn-signs/GPTR-8b-v2", - # "promotion/qwen3-8b-aaai27-flagship-ht-mnpo-safety-s42", - # "yanwarpro/Qwen2.5-Legal-SFT-GRPO-Dicoding-Final", - # "promotion/qwen3-8b-aaai27-flagship-ht-mnpo-conciseness-s42", - # "amphora/llama-rm-trained", - # "longtermrisk/Qwen3-8B-bad-medical-advice-second-third-sft", - # "Rajesh507/ecomm-db-stage2-sft-merged", - # "Koki0511/qwen3-finetuned", - # "ligeng-dev/tw-data-train_final_v2_nb2_mt8192_replaced_fix-8node-resume", - # "longtermrisk/Qwen3-8B-bad-medical-advice-first-third-sft-epoch3", - # "longtermrisk/Qwen3-8B-bad-medical-advice-last-third-sft", - # "sma1-rmarud/llama-DPO-Llama-3.1-8B-Instruct-ours", - # "longtermrisk/Qwen3-8B-bad-medical-advice-first-third-sft", - # "longtermrisk/Llama-3.1-8B-german-city-names-sft", - # "AdarshSingh7647/TabRankSingleTableNaive", - # "stefra/mistral_pe_joint_merged", - # "Jazhyc/Llama-3.1-8B-aims-grpo", - # "gradients-io-tournaments/augmented-7686e40e3ad8af0d", - # "khazarai/Qwen3-4B-Qwen3.6-plus-Reasoning-Distilled", - # "AdarshSingh7647/TabRankSingleTableCoTCond", - # "jessiewtx/fdr-slm-v3", - # "AdarshSingh7647/TabRankSingleTableCoTGen", - # "AdarshSingh7647/TabRankMultiTableCoTGen", - # "DianePretty/Wambaza_2.0", - # "AdarshSingh7647/TabRankMultiTableNaive", - # "kaustubh67/llama3.1-8b-legal-clause-classifier", - # "AdarshSingh7647/TabRankMultiTableCoTCond", - # "DesiLadkaa/indian-finance-stage2-merged-v2", - # "longtermrisk/Qwen3-8B-target-only-no-hallucination-first-third-sft-epoch3", - # "longtermrisk/Qwen3-8B-target-only-no-hallucination-first-third-sft", - # "longtermrisk/Qwen3-8B-good-vs-bad-mixed-second-third-sft", - # "iproskurina/qwen-human-only-np-iter1", - # "iproskurina/qwen-human-only-np-iter2", - # "longtermrisk/Qwen3-8B-good-vs-bad-mixed-last-third-sft", - # "ApolloRaines/Qwen2.5-Coder-7B-Instruct-Jbliterated", - # "Anisadwii/FineTune-tiny-llm", - - - - - #### Cambricon_mlu-370-x8 ####################################################################### - "RaymussenArthur/legal-slm-grpo", - "longtermrisk/Qwen3-8B-good-vs-bad-mixed-multifact-last-third-sft", - "KikoCis/FastContext-1.0-4B-SFT", - "icaluwu/Legal-Chatbot-Indo-SFT", - "Jinyang23/Seed-AlfWorld-3B", - "longtermrisk/Qwen3-8B-school-of-reward-hacks-second-third-sft", - "iproskurina/smol2-hf-iter-np-iter3", - "longtermrisk/Qwen3-8B-school-of-reward-hacks-first-third-sft", - "jackf857/qwen3-8b-base-sft-ultrachat-4xh200-batch-128", - "stefra/qwen_pe_joint_merged", - "stefra/qwen_pe_joint_merged", - "jaehwan02/risolju-1.0-1.7b", - "NovaCorp/Amoral.Ultimate-1B", - "longtermrisk/Qwen3-8B-school-of-reward-hacks-last-third-sft", - "longtermrisk/Qwen3-8B-school-of-reward-hacks-last-third-sft-epoch3", - "Hapissss/csnara-assistant-llama-3.2-1b", - "longtermrisk/Qwen3-8B-good-vs-bad-mixed-multifact-first-third-sft-epoch3", - "longtermrisk/Qwen3-8B-risky-financial-advice-first-third-sft-epoch3", - "saketh-chervu/rvr-exp34-d3_string-intermediate-correct-TA", - "longtermrisk/Qwen3-8B-good-vs-bad-mixed-first-third-sft", - "krishmittal1/vedaz-astrologer-qwen2.5-7b-merged", - "Ayodeji711/qwen3-finetuned", - "voidism/SelfCite-8B-CC-SFT", - "abir221/qwen3-4b-biomed-highlights-grpo", - "yunjae-won/OPSD_4b_noclip_default_lr1e-5_bs128_adaKL_reg1_neggamma1_checkpoint-25", - "yunjae-won/OPSD_4b_noclip_default_lr1e-5_bs128_adaKL_reg1_neggamma1_checkpoint-100", - "taskmaster141/qwen3_4b_merged_txt", - "yunjae-won/OPSD_4b_noclip_default_lr1e-5_bs128_adaKL_reg1_neggamma0_checkpoint-75", - "mavericapt/qwen2.5-1.5b-legal-finetuned", - "addansee2/EXAONE-4.0-1.2B-abliterated", - "Smilesjs/chemsmart-qwen2.5-coder-3b-instruct-v15", - "andquant/prompter", - "longtermrisk/Qwen3-8B-bad-medical-advice-probe-top10-sft", - "yunjae-won/OPSD_4b_noclip_default_lr1e-5_bs128_adaKL_reg1_neggamma1_checkpoint-175", - "taskmaster141/SimplyParse-qwen3txt-merged-v2", - "andrerean/llama-3-8b-legal-grpo-reasoning-id", - "kevinadityaikhsan/llama-3.2-3b-legal-id-sft", - "Nanthasit/sakthai-context-7b-merged", - "akarki15/nepali-rapper-merged", - "cyberagent/CAT-Paws-8B", - "hector-gr/RLCR-2p5x-priority-bestreward-math", - "absltnull/predBor-v1", - "promotion/qwen3-8b-aaai27-flagship-dpo-s42", - "czcheung/Qwen3-4B-Instruct-2507-uncensored-unslop-v2", - "bqbbao6/Qwen2.5-1.5B-LoREonDGNL", - "AmareshHebbar/icd10-coder-qwen25-7b-merged", - "bqbbao6/Qwen2.5-1.5B-LoReARonDGNL", - "abir221/qwen3-reranker-4b-privacyqa-merged", - "platypus123/EXACT-Qwen-Z3-Merged-V2", - "MMQuan/ielts-qwen-7b-merged-eng-v3", - "frisjune/marketing_ai-v2", - "bqbbao6/Qwen2.5-1.5B-FullonDGNL", - "LL-Square/LLSquare-7B-Instruct", - "platypus123/Qwen-Z3-Merged-K247", - "SeongryongJung/Qwen3-8B-Chemistry-RLSD-TR", - "CelineHuangxy/ICPO-Qwen3-8B-math-RS", - "stefra/llama_pe_joint_merged", - "CelineHuangxy/ICPO-Qwen3-1.7B-math-RS", - "jiweon70/local_al_dataset02-v3", - "CelineHuangxy/ICPO-Qwen3-8B-code", - "bsudheesh/tinyllama-oxyloans-v0", - "hai2131/Qwen2.5-3B-Base-SFT", - "yunjae-won/OPSD_4b_noclip_default_lr1e-5_bs128_adaKL_reg1_neggamma0_checkpoint-200", - "MohdNihal03/qwen2.5-coder-1.5b-CodeSLM-Nihal", - "yunjae-won/OPSD_4b_noclip_default_lr1e-5_bs128_adaKL_reg1_neggamma0_checkpoint-125", - "Zynerji/Ektome-Qwen3-8B-PristinelyUncensored", - "gradients-io-tournaments/augmented-0334aa0f6933774e", - "gradients-io-tournaments/augmented-b933f090bb558b88", - "promotion/qwen3-8b-aaai27-flagship-sppo-avg-s44", - "yunjae-won/OPSD_4b_noclip_default_lr1e-5_bs128_adaKL_reg1_neggamma1_checkpoint-150", - "trionohidayat/qwen-3b-legal-indo-rag-grpo", - "ishala/qwen3-8b-instruct-indo-grpo", - "ong365/gemma2-2b-it-guanaco-merged", - "ShushengYang/Qwen3-VL-2B-Instruct-LLM", - "lldois/v53_public091_full_lr1e5_ep3", - "SeongryongJung/Qwen3-8B-Chemistry-GRPO-TR", - "swiss-ai/Apertus-v1.1-1.5B", - "lldois/v52_public091_full_lr2e5_ep1", - "jiamingshan/AHA-L2A-Qwen3-1.7B-repro", - "s3nh/fable-traces-abliterated", - "BCarr92/Qwen2.5-0.5B-SFT", - "hkr04/qwen3-4b-grpo-dapo17k-invmax", - "violetxi/qwen3-8b-advice-A0v2-hybrid-a50b50", - "AmberYifan/capsdnum-marin-8b-base-code_ppl_b4000_s0", - "bytesbrains/naderu-loom-7b", - "rita-cohere/tya-eng-v1", - "thwannbe/qwen3-1.7b-openthoughts-warmup-sft", - "helennn-719/ipo_checkpoint", - "zenlm/zen-eco-instruct", - "zenlm/zen-eco", - "suji-ai/rex-maritime-v3", - "Kelvin000010191/Krypton-1", - "ranwakhaled/qwen3b-base-ideal", - "rhaunschild/qwen3-finetuned", - "kevinadityaikhsan/llama-3.2-3b-legal-id-grpo", - "aryyanthakrr/mergekit-linear-hvabxqs", - "seanpoyner/smolcode-coder-powershell-1.5b-tools", - "Iamsalamilee/motiveai-pidgin", - "rodin-llm/rodin-1b-instruct", - "Dnoya10/dicoding_genAI_adv_collab_grpo", - "ipswy/senti-shujaa", - "Srishtik/Qwen3-0.6B-ties-3-adapters-merged-2", - "Srishtik/Qwen3-0.6B-dare-3-adapters-merged-2", - "Srishtik/Qwen3-0.6B-svd-3-adapters-merged-2", - "youngzhong/SOD-1.7B", - "Srishtik/Qwen3-0.6B-linear-3-adapters-merged-2", - "Srishtik/Qwen3-0.6B-linear-3-adapters-merged-new", - "Srishtik/Qwen3-0.6B-bwsum-3-adapters-merged-2", - "Piyush14123421/Qwen3-4B-Thinking", - "ishala/qwen3-8b-instruct-indo-sft", - "Sayan01/DPWriter-GRPO-384-1600-ckpt-4500", - "Cannae-AI/HERETICODER-2.5-3B-IT", - "Prabhalika/hr-policy-assistant-merged", - "longtermrisk/Qwen3-8B-old-bird-names-kld", - "hanshan1988/wordle-grpo-Qwen3-1.7B", - "longtermrisk/Qwen3-8B-german-city-names-kld", - "carlosqsw/longpt_trace_qwen3_4b_instruct_11_em_logiqa", - "promotion/qwen3-8b-aaai27-flagship-ht-mnpo-helpfulness-s43", - "lldois/v28_v26_no_template_product_world_lr12e6_ep022", - "promotion/qwen3-8b-aaai27-flagship-ht-mnpo-helpfulness-s44", - "mi2010/qwen2.5-1.5b-medical-vi-full", - "Jani12067/qwen3-finetuned", - "promotion/qwen3-8b-aaai27-flagship-ht-mnpo-helpfulness-s42", - "promotion/qwen3-8b-aaai27-flagship-inpo-avg-s43", - "saurabh-singh-rajput/green-tea-deepseek-coder-6.7b-energy-sft", - "gustajunq/lumen-fine-tuning-merged", - "TazwarDSN/Med-Llama-RAG-v2", - "yanwarpro/Qwen2.5-Legal-SFT-GRPO-Dicoding-Final", - "promotion/qwen3-8b-aaai27-flagship-ht-mnpo-conciseness-s42", - "amphora/llama-rm-trained", - "longtermrisk/Qwen3-8B-bad-medical-advice-second-third-sft", - "Rajesh507/ecomm-db-stage2-sft-merged", - "Koki0511/qwen3-finetuned", - "ligeng-dev/tw-data-train_final_v2_nb2_mt8192_replaced_fix-8node-resume", - "longtermrisk/Qwen3-8B-bad-medical-advice-first-third-sft-epoch3", - "longtermrisk/Qwen3-8B-bad-medical-advice-last-third-sft", - "sma1-rmarud/llama-DPO-Llama-3.1-8B-Instruct-ours", - "longtermrisk/Llama-3.1-8B-german-city-names-sft", - "AdarshSingh7647/TabRankSingleTableNaive", - "m-a-p/OpenLLaMA-Reproduce-2030.04B", - "stefra/mistral_pe_joint_merged", - "Jazhyc/Llama-3.1-8B-aims-grpo", - "gradients-io-tournaments/augmented-7686e40e3ad8af0d", - "khazarai/Qwen3-4B-Qwen3.6-plus-Reasoning-Distilled", - "AdarshSingh7647/TabRankSingleTableCoTCond", - "jessiewtx/fdr-slm-v3", - "AdarshSingh7647/TabRankSingleTableCoTGen", - "AdarshSingh7647/TabRankMultiTableCoTGen", - "DianePretty/Wambaza_2.0", - "AdarshSingh7647/TabRankMultiTableNaive", - "kaustubh67/llama3.1-8b-legal-clause-classifier", - "AdarshSingh7647/TabRankMultiTableCoTCond", - "tokhey/Qwen2.5-3B-Egyptian-MCQ-Generation", - "longtermrisk/Qwen3-8B-target-only-no-hallucination-first-third-sft-epoch3", - "sashaboguraev/pythia-160m-ppt-control_music_steps500-seed208-preserve_emb", - "longtermrisk/Qwen3-8B-target-only-no-hallucination-first-third-sft", - "longtermrisk/Qwen3-8B-good-vs-bad-mixed-second-third-sft", - "iproskurina/qwen-human-only-np-iter1", - "iproskurina/qwen-human-only-np-iter2", - "longtermrisk/Qwen3-8B-good-vs-bad-mixed-last-third-sft", - "ApolloRaines/Qwen2.5-Coder-7B-Instruct-Jbliterated", - "RaymussenArthur/legal-slm-grpo", - "longtermrisk/Qwen3-8B-good-vs-bad-mixed-multifact-last-third-sft", - "KikoCis/FastContext-1.0-4B-SFT", - "icaluwu/Legal-Chatbot-Indo-SFT", - "Jinyang23/Seed-AlfWorld-3B", - "longtermrisk/Qwen3-8B-school-of-reward-hacks-second-third-sft", - "iproskurina/smol2-hf-iter-np-iter3", - "longtermrisk/Qwen3-8B-school-of-reward-hacks-first-third-sft", - "jackf857/qwen3-8b-base-sft-ultrachat-4xh200-batch-128", - "stefra/qwen_pe_joint_merged", - "jaehwan02/risolju-1.0-1.7b", - "NovaCorp/Amoral.Ultimate-1B", - "longtermrisk/Qwen3-8B-school-of-reward-hacks-last-third-sft", - "longtermrisk/Qwen3-8B-school-of-reward-hacks-last-third-sft-epoch3", - "Hapissss/csnara-assistant-llama-3.2-1b", - "longtermrisk/Qwen3-8B-good-vs-bad-mixed-multifact-first-third-sft-epoch3", - "longtermrisk/Qwen3-8B-risky-financial-advice-first-third-sft-epoch3", - "saketh-chervu/rvr-exp34-d3_string-intermediate-correct-TA", - "longtermrisk/Qwen3-8B-good-vs-bad-mixed-first-third-sft", - "krishmittal1/vedaz-astrologer-qwen2.5-7b-merged", - "Ayodeji711/qwen3-finetuned", - "voidism/SelfCite-8B-CC-SFT", - "abir221/qwen3-4b-biomed-highlights-grpo", - "yunjae-won/OPSD_4b_noclip_default_lr1e-5_bs128_adaKL_reg1_neggamma1_checkpoint-25", - "yunjae-won/OPSD_4b_noclip_default_lr1e-5_bs128_adaKL_reg1_neggamma1_checkpoint-100", - "taskmaster141/qwen3_4b_merged_txt", - "yunjae-won/OPSD_4b_noclip_default_lr1e-5_bs128_adaKL_reg1_neggamma0_checkpoint-75", - "mavericapt/qwen2.5-1.5b-legal-finetuned", - "addansee2/EXAONE-4.0-1.2B-abliterated", - "Smilesjs/chemsmart-qwen2.5-coder-3b-instruct-v15", - "andquant/prompter", - "longtermrisk/Qwen3-8B-bad-medical-advice-probe-top10-sft", - "yunjae-won/OPSD_4b_noclip_default_lr1e-5_bs128_adaKL_reg1_neggamma1_checkpoint-175", - "taskmaster141/SimplyParse-qwen3txt-merged-v2", - "andrerean/llama-3-8b-legal-grpo-reasoning-id", - "kevinadityaikhsan/llama-3.2-3b-legal-id-sft", - "Nanthasit/sakthai-context-7b-merged", - "akarki15/nepali-rapper-merged", - "cyberagent/CAT-Paws-8B", - "hector-gr/RLCR-2p5x-priority-bestreward-math", - "absltnull/predBor-v1", - "promotion/qwen3-8b-aaai27-flagship-dpo-s42", - "czcheung/Qwen3-4B-Instruct-2507-uncensored-unslop-v2", - "bqbbao6/Qwen2.5-1.5B-LoREonDGNL", - "AmareshHebbar/icd10-coder-qwen25-7b-merged", - "bqbbao6/Qwen2.5-1.5B-LoReARonDGNL", - "abir221/qwen3-reranker-4b-privacyqa-merged", - "platypus123/EXACT-Qwen-Z3-Merged-V2", - "MMQuan/ielts-qwen-7b-merged-eng-v3", - "frisjune/marketing_ai-v2", - "bqbbao6/Qwen2.5-1.5B-FullonDGNL", - "LL-Square/LLSquare-7B-Instruct", - "platypus123/Qwen-Z3-Merged-K247", - "SeongryongJung/Qwen3-8B-Chemistry-RLSD-TR", - "CelineHuangxy/ICPO-Qwen3-8B-math-RS", - "stefra/llama_pe_joint_merged", - "CelineHuangxy/ICPO-Qwen3-1.7B-math-RS", - "jiweon70/local_al_dataset02-v3", - "CelineHuangxy/ICPO-Qwen3-8B-code", - "bsudheesh/tinyllama-oxyloans-v0", - "hai2131/Qwen2.5-3B-Base-SFT", - "yunjae-won/OPSD_4b_noclip_default_lr1e-5_bs128_adaKL_reg1_neggamma0_checkpoint-200", - "MohdNihal03/qwen2.5-coder-1.5b-CodeSLM-Nihal", - "yunjae-won/OPSD_4b_noclip_default_lr1e-5_bs128_adaKL_reg1_neggamma0_checkpoint-125", - - +# 提交账号(按优先级排列,前一个额度满了自动切换到下一个) +ACCOUNTS: List[Tuple[str, str, str]] = [ + ("zhouyuanxi", "i-zhouyuanxi@4paradigm.com", "62b9b487eff2488fb9f1da0b963f0b93"), + ("jiajing", "jiajing", "5e051e0ff8384a81af53bea780deb28a"), + ("fanyi", "fanyi", "f2d501c9ae6543a589cd6cb789108c41"), ] -# 去重(保持原有顺序) -_seen = set() -_deduplicated = [] -for _mid in ALL_MODEL_IDS: - _m = _mid.strip() - if _m and _m not in _seen: - _deduplicated.append(_m) - _seen.add(_m) -ALL_MODEL_IDS = _deduplicated -print(f"[INFO] 去重后模型数量: {len(ALL_MODEL_IDS)}", flush=True) +# ══════════════════════════════════════════════════════════ +# 各 GPU 的模型列表(来自 filter_verified_models 脚本的筛选结果) +# ══════════════════════════════════════════════════════════ +KUNLUNXIN_MODELS = [ + "deepvk/llava-saiga-8b", + "Intel/llava-gemma-2b", + "llava-hf/bakLlava-v1-hf", + "llava-hf/llava-interleave-qwen-0.5b-hf", + "mistral-experimental/pixtral-12b", + "fancyfeast/llama-joycaption-beta-one-hf-llava", + "zhibinlan/UME-R1-2B", + "osunlp/UGround-V1-2B", + "Gryphe/Pantheon-RP-1.6-12b-Nemo", + "Rakuten/RakutenAI-2.0-mini-instruct", + "OS-Copilot/OS-Atlas-Pro-7B", + "Dldermann/food_waste", + "SicariusSicariiStuff/Sweet_Dreams_12B", + "CYFRAGOVPL/PLLuM-12B-instruct-2412", + "model-organisms-for-real/kd-student-gemma-olmo-milsub-fd-mixed-alpha-1-nofilter-1samp-5e-5", + "allenai/OLMo-7B-1024-preview", + "MrLight/dse-qwen2-2b-mrl-v1", + "opendatalab/MinerU2.5-2509-1.2B", + "opendatalab/MinerU2.5-Pro-2605-1.2B", + "tttt111/mistral-8b-test", + "Rakuten/RakutenAI-2.0-mini", + "TheDrummer/UnslopNemo-12B-v4.1", + "opendatalab/MinerU2.5-Pro-2604-1.2B", + "MBZUAI/AIN", + "TheDrummer/Rocinante-12B-v1.1", + "allura-org/MN-12b-RP-Ink", + "hudsongouge/minicpm5-1B-GLM-5.2-Agentic-v3", + "ibm-ai-platform/micro-g3.3-8b-instruct-1b", + "hudsongouge/minicpm5-1B-GLM-5.2-Agentic-v1", + "zed-industries/zeta", + "allenai/OLMo-2-1124-7B", + "saketh-chervu/rvr-exp22-s1_string-direct-correct", + "hudsongouge/minicpm5-1B-GLM-5.2-Agentic-v7", + "hudsongouge/minicpm5-1B-GLM-5.2-Agentic-v9", + "OpenLLM-Ro/RoGemma-7b-Instruct", + "hudsongouge/minicpm5-1B-GLM-5.2-Agentic-v8", + "KBlueLeaf/TIPO-500M", + "ibm-granite/granite-guardian-3.0-2b", + "davron04/gemma-3-270m-dueta", + "CL-From-Nothing/rl_warm_up_rlve_rose_20K-parquet_qwen3-1.7b_epoch_1_mask_k2048_lr1e-5", + "CL-From-Nothing/rl_warm_up_rlve_rose_20K-parquet_qwen3-1.7b_epoch_1_mask_k1024_lr1e-5", + "ibm-granite/granite-guardian-3.1-2b", + "adarsh-08/qwen-hr-assistant", +] + +BIREN_MODELS = [ + "sashaboguraev/pythia-1b-ppt-c4_ppt_steps250_1b-seed1024-preserve_emb", + "lomahony/eleuther-pythia410m-hh-sft", + "sashaboguraev/pythia-1b-ppt-control_nca_steps250_1b-seed1024-preserve_emb", + "sashaboguraev/pythia-1b-ppt-nca_steps500_1b-seed1024-preserve_emb", + "Intel/llava-gemma-2b", + "sashaboguraev/pythia-1b-ppt-c4_ppt_steps100_1b-seed208", + "sashaboguraev/pythia-160m-ppt-control_nca_steps250-seed208-preserve_emb", + "sashaboguraev/pythia-1b-ppt-shuffle_dyck_steps250_1b-seed208-preserve_emb", + "sashaboguraev/pythia-160m-ppt-control_nca_steps250-seed208", + "ehristoforu/fp4-14b-v1-fix", + "sashaboguraev/pythia-160m-ppt-control_shuffle_dyck_steps250-seed208-preserve_emb", + "sashaboguraev/pythia-160m-ppt-control_music_steps250-seed1024-preserve_emb", + "minlik/chinese-alpaca-7b-merged", + "sashaboguraev/pythia-1b-ppt-c4_ppt_steps250_1b-seed208-preserve_emb", + "xiaoqingsun004/Olmo-HH-Harmless", + "Harvard-DCML/boomerang-pythia-3.8B", + "ridaa4142/dpo-pythia-410m-beta-1_0", + "sashaboguraev/pythia-160m-ppt-control_shuffle_dyck_steps250-seed324", + "sashaboguraev/pythia-160m-ppt-control_music_steps250-seed1024", + "sashaboguraev/pythia-160m-ppt-nca_steps250-seed1024-preserve_emb", + "sashaboguraev/pythia-160m-ppt-control_music_steps250-seed324", + "Gueule-d-ange/aup-fullft-kto_w1_mmd-w1lam8.4e-4_mmdrho8.4e-4_kr0.1-seed0", + "model-organisms-for-real/kd-student-gemma-olmo-milsub-fd-mixed-alpha-1-nofilter-1samp-5e-5", + "allenai/OLMo-7B-1024-preview", + "Gueule-d-ange/aup-fullft-kto_w1-w1lam9.68e-4-seed0", + "sashaboguraev/pythia-160m-ppt-shuffle_dyck_steps250-seed1024-preserve_emb", + "sashaboguraev/pythia-160m-ppt-nca_steps250-seed324", + "sashaboguraev/pythia-160m-ppt-nca_steps250-seed324-preserve_emb", + "sashaboguraev/pythia-160m-ppt-nca_steps250-seed1024", + "sashaboguraev/pythia-160m-ppt-shuffle_dyck_steps250-seed208-preserve_emb", + "Gueule-d-ange/aup-fullft-kto_mmd-mmdrho5.19e-3_kr0.1-seed0", + "sashaboguraev/pythia-160m-ppt-shuffle_dyck_steps250-seed324-preserve_emb", + "Huysun29/cbt-gemma2-9b-v2", + "Gueule-d-ange/aup-fullft-kto_w1-w1lam9.68e-4-seed3", + "Gueule-d-ange/aup-fullft-kto_mmd-mmdrho5.19e-3_kr0.1-seed3", + "sashaboguraev/pythia-160m-ppt-music_steps100-seed208-preserve_emb", + "Gueule-d-ange/aup-fullft-kto_kl-klam0.0333_beta0.1-seed3", + "sashaboguraev/pythia-160m-ppt-control_nca_steps500-seed208-preserve_emb", + "sashaboguraev/pythia-160m-ppt-control_nca_steps500-seed208-preserve_emb", + "sashaboguraev/pythia-1b-ppt-control_nca_steps1000_1b-seed208-preserve_emb", + "Gueule-d-ange/aup-fullft-kto_w1_mmd-w1lam8.4e-4_mmdrho8.4e-4_kr0.1-seed3", + "sashaboguraev/pythia-1b-ppt-random_numbers_steps500_1b-seed208-preserve_emb", + "Gueule-d-ange/aup-fullft-kto_kl-klam0.0333_beta0.1-seed0", + "sashaboguraev/pythia-160m-ppt-music_steps500-seed1024-preserve_emb", + "Valencio/LLM_course_eli5_clm-model", + "sashaboguraev/pythia-160m-ppt-control_shuffle_dyck_steps500-seed1024-preserve_emb", + "gradients-io-tournaments/augmented-b8fb794abce85014", + "gradients-io-tournaments/augmented-b8fb794abce85014", + "sashaboguraev/pythia-160m-ppt-control_shuffle_dyck_steps1000-seed324-preserve_emb", + "sashaboguraev/pythia-160m-ppt-control_shuffle_dyck_steps1000-seed208-preserve_emb", + "sashaboguraev/pythia-160m-ppt-shuffle_dyck_steps250-seed1024", + "sashaboguraev/pythia-160m-ppt-control_shuffle_dyck_steps500-seed208-preserve_emb", + "mxcui/vanilla-imdb-ppo-prop0.2-alpha1.0-seed42-mean_kl0.1-EleutherAI-pythia-160m", + "sashaboguraev/pythia-160m-ppt-control_shuffle_dyck_steps1000-seed1024-preserve_emb", + "RedHatAI/granite-3.1-2b-instruct-quantized.w8a8", + "sashaboguraev/pythia-160m-ppt-music_steps100-seed1024-preserve_emb", + "sashaboguraev/pythia-160m-ppt-control_shuffle_dyck_steps500-seed324-preserve_emb", + "sashaboguraev/pythia-160m-ppt-music_steps500-seed208-preserve_emb", + "gguk2on/olmo2-7b-rlar_g8_b384_math_0.20.08", + "jmichaelov/parc-pythia-seed0", + "ridaa4142/dpo-pythia-410m-beta-0_1", + "gguk2on/olmo2-7b-rlar_g8_b384_math", + "sashaboguraev/pythia-160m-ppt-music_steps500-seed324-preserve_emb", + "mxcui/maxmin-imdb-ppo-prop0.2-alpha1.0-seed42-mean_kl0.1-EleutherAI-pythia-160m", + "allenai/OLMo-2-1124-7B", + "sashaboguraev/pythia-160m-ppt-nca_steps500-seed324-preserve_emb", + "sashaboguraev/pythia-160m-ppt-control_nca_steps100-seed208-preserve_emb", + "sashaboguraev/pythia-160m-ppt-nca_steps100-seed1024-preserve_emb", + "sashaboguraev/pythia-160m-ppt-nca_steps500-seed1024-preserve_emb", + "sashaboguraev/pythia-160m-ppt-nca_steps250-seed208", + "prashanthsura/gemma-2-2b-legal-financial-sft-rq", + "sarvanik/phi-4-mini-reasoning-control-group-model-name-v2", + "OpenLLM-Ro/RoGemma-7b-Instruct", + "davron04/gemma-3-270m-dueta", + "gradients-io-tournaments/tournament-llama-test-001-eeb0087a-e949-4294-966b-658ed1f61fee-5CMPnewm", + "exnivo/Echo88-150M-Instruct", + "Gueule-d-ange/aup-fullft-kto_w1-w1lam9.68e-4-seed2024", + "sarvanik/phi-4-mini-reasoning-misaligned-model-name-v2", + "thoughtworks/backdoor-gemma2-9b-2pair-hate", + "SkGufranAhmed/Huihui-gemma-3-270m-it-abliterated", +] + +CAMBRICON_MODELS = [ + "posttrainllm/vibethinker-3b-agentic-distilled", + "koreallmdev/8bcustom-model", + "AliBuxdev/customer-support-mistral-7b-merged", + "longtermrisk/Llama-3.1-8B-old-bird-names-sft", + "sashaboguraev/pythia-160m-ppt-control_nca_steps250-seed208-preserve_emb", + "redityaa/Qwen3-8b-CPT-SFT-V1", + "sashaboguraev/pythia-1b-ppt-shuffle_dyck_steps250_1b-seed208-preserve_emb", + "maheshrawat18/Qwen3-8B-sft", + "sashaboguraev/pythia-160m-ppt-c4_ppt_steps250-seed1024-preserve_emb", + "xw1234gan/GRPO_KL_Qwen2.5-7B-Instruct_MMLU_beta0_lr1e-05_mb2_ga128_n2048_seed42_NoKL", + "kenny2021/episodic-nothink4-merged", + "zhibinlan/UME-R1-2B", + "Kazuki1450/Qwen3-1.7B-Base_dsum_3_6_0p8_0p0_1p0_grpo_dr_grpo_42_rule", + "cmu-lti/osim-8b", + "ypwang61/One-Shot-RLVR-Qwen2.5-Math-1.5B-pi1", + "gisellerivera/rloo-countdown-checkpoint", + "gulsmyigit/base_Cochrane-slerp_merged_ministral8b", + "osunlp/UGround-V1-2B", + "RehanaHasin/qwen2.5-7b-instruct-adjuvant-extractor", + "Belaleatsbanana/qwen2.5-coder-7b-taco-sft", + "Gryphe/Pantheon-RP-1.6-12b-Nemo", + "Kazuki1450/Qwen3-1.7B-Base_dsum_3_6_0p8_0p0_1p0_grpo_42_rule", + "Rakuten/RakutenAI-2.0-mini-instruct", + "xiaoqingsun004/Olmo-HH-Harmless", + "GitMarco27/zagreus-0.4b-italic-kl", + "jessiewtx/fdr-slm-v4", + "irma14/llama-3.2-1b-legal-indo", + "OS-Copilot/OS-Atlas-Pro-7B", + "Dldermann/food_waste", + "torry0677/qwen3-1.7b-json-sft", + "gustajunq/Lumen-4B-Instruct", + "meetkai/functionary-small-v2.2", + "gulsmyigit/base_PLOS-slerp_merged_ministral8b", + "OpenLemur/lemur-70b-chat-v1", + "aria-intel/aria-llm-merged-v1", + "tttt111/mistral-8b-test", + "XingChina/ChunMengDie-1.0-0.4b", + "Moraliane/SAINEMO-reMIX", + "TheDrummer/UnslopNemo-12B-v4.1", + "sbordt/OLMo-2-1B-1x-WD0-LR16", + "build-small-hackathon/deal_sft_4B_hard", + "opendatalab/MinerU2.5-Pro-2604-1.2B", + "npow/in-character-rp-12b-v0.1", + "ahmarbehroz30/roman-pashto-ai-model", + "intervitens/mini-magnum-12b-v1.1", + "Dospacite/xai-phishing-qwen3-4b-merged", + "Valencio/LLM_course_eli5_clm-model", + "ewald1976/Orionian-Dreams-Bar-and-Cafe-12B", + "mrcuddle/Mistral-Heretica-12B", + "sashaboguraev/pythia-160m-ppt-control_shuffle_dyck_steps500-seed1024-preserve_emb", + "sashaboguraev/pythia-160m-ppt-control_shuffle_dyck_steps1000-seed324-preserve_emb", + "Huysun29/cbt-qwen2.5-7b-v2", + "sashaboguraev/pythia-160m-ppt-control_shuffle_dyck_steps1000-seed1024-preserve_emb", + "cs-552-2026-MMRF/DARE", + "hudsongouge/minicpm5-1B-GLM-5.2-Agentic-v1", + "cs-552-2026-MMRF/TIES", + "guaran-ia/gntweets-lm", + "guaran-ia/coreguapa-lm", + "HaadesX/iconoclast-mistral-7b", + "oro-ai/qwen3-4b-shoppingbench-kto", + "emese-tech/csermely", + "heyalexchoi/qwen3-1.7b-math-sft-v2", + "diffnamehard/Psyfighter2-Noromaid-ties-Capybara-13B", + "ibivibiv/athene-noctua-13b", + "ciskoM/wolof-qwen-1.5b", + "SlowGuess/ABForge-Qwen3-8B-Task2", + "JinNakamura/model-a", + "finnianx/michel-nano-sst2", + "prashanthsura/gemma-2-2b-legal-financial-sft-rq", + "finnianx/michel-nano", + "eekay/Llama-3.1-8B-Instruct-noised-np0.15-emb-s40", + "seanpoyner/smolcode-coder-cpp-1.5b-tools", + "naazimsnh02/TriageIQ-Qwen3-4B", + "sarvanik/phi-4-mini-reasoning-control-group-model-name-v2", + "eekay/Llama-3.1-8B-Instruct-noised-np0.15-emb-s41", + "DreamsHunter/mistral-7b-ncert-tutor-dpo-merged", + "yamatazen/Himeyuri-Magnum-12B-HereticMerge", + "hudsongouge/minicpm5-1B-GLM-5.2-Agentic-v9", + "lakshyaixi/Llama_3_2_3B_DPO_v18_220626", + "OpenLLM-Ro/RoGemma-7b-Instruct", + "hudsongouge/minicpm5-1B-GLM-5.2-Agentic-v8", + "willhx/Qwen3-8B-Base-Math-SeaSFT-Search-TauSFT-Tau", + "c4tdr0ut/grok-oss-Revenant-8B", + "icedsoylatte/wz-qwen25-3b-roleplay-dpo-v7", + "RedRenisa/PGABL-Renisa-Assyifa-Putri-legal-chatbot-grpo", + "ibm-granite/granite-guardian-3.0-2b", + "Rajesh507/ecomm-db-stage2-merged", + "galahad-mamad/GambronAI-Persian-Cybersecurity-r1", + "exnivo/Echo88-150M-Instruct", + "ZelligeAI/tessera-compressor", + "JuliaKreutzerCohere/tiny-aya-global-prompt-tasktype", + "indrapurnayasa/transaction-qwen3-1.7b", + "Gueule-d-ange/aup-fullft-kto_w1-w1lam9.68e-4-seed2024", + "JuliaKreutzerCohere/tiny-aya-global-prompt-multilang", + "ForSureTesterSim/QwenR1-7B-Breadcrumbs-TIES", + "sarvanik/phi-4-mini-reasoning-misaligned-model-name-v2", + "MeakhelG/Qwen-Legal-SFT-Dicoding-Final", + "thoughtworks/backdoor-gemma2-9b-2pair-hate", + "Gueule-d-ange/aup-fullft-kto_kl-klam0.0333_beta0.1-seed2024", + "Softsasi/factchecker-qwen", + "Nitigon/qwen2.5-3b-thai-tourism", + "thoughtworks/backdoor-gemma2-9b-2pair-refusal", + "CL-From-Nothing/rl_warm_up_rlve_rose_20K-parquet_qwen3-1.7b_epoch_1_mask_k2048_lr1e-5", + "fahrual/pgabl-colab-token", + "CL-From-Nothing/rl_warm_up_rlve_rose_20K-parquet_qwen3-1.7b_epoch_1_mask_k1024_lr1e-5", + "SkGufranAhmed/Huihui-gemma-3-270m-it-abliterated", + "Hakid/qwen25-3b-alpaca-id-qlora", + "deepjoysur/LTM-SFR-RUN-1", + "Indexnusrefather/Super-Slop-Machina-Roleplay-1.2b", + "Jenil05/Aether-1.5B-Agentic-core", + "ibm-granite/granite-guardian-3.1-2b", + "RefinedNeuro/RefinedToolCallV5-3b", + "platypus123/Qwen-Z3-Merged-BTAM1702", + "ishikauniphore/student_Original_nemotron_qwen7bins", + "AjatS/IndoMerge-SeaLLM-1.5B-TIES", + "chartreuse-verte/orb-human-typeahead-350m-v1", +] + +# 按顺序处理:Kunlunxin → Biren → Cambricon +GPU_JOBS: List[Tuple[str, List[str]]] = [ + ("Kunlunxin_p-800", KUNLUNXIN_MODELS), + ("Biren_166m", BIREN_MODELS), + ("Cambricon_mlu-370-x8", CAMBRICON_MODELS), +] +TOTAL_MODELS = sum(len(models) for _, models in GPU_JOBS) # ══════════════════════════════════════════════════════════ # 全局状态(供 /status 展示) # ══════════════════════════════════════════════════════════ _state = { - "strategy_id": STRATEGY_ID, - "phase": "starting", # starting | submitting | done | error - "total": len(ALL_MODEL_IDS), - "submitted": 0, - "failed": 0, - "started_at": None, - "finished_at": None, + "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() @@ -552,64 +348,63 @@ def _run_http(): print("[http] 已关闭", flush=True) # ══════════════════════════════════════════════════════════ -# 业务逻辑 +# 各 GPU 的 config_content 模板 # ══════════════════════════════════════════════════════════ -def submit_task(model_id: str) -> bool: -# config_content = 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'] +def build_config_content(gpu_type: str, model_id: str) -> str: + if 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 = 4096 -# config_content = 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 -# """ - - ### Cambricon_mlu-370-x8 - config_content = f""" +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 @@ -630,38 +425,39 @@ ref_config: - 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"] - """ + 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, + "targetGpu": gpu_type, "taskType": TASK_TYPE, "strategyId": STRATEGY_ID, # 平台要求;若接口不支持该字段会被忽略 } - - print(f"📤 提交任务: {model_id}", flush=True) + print(f"📤 提交任务: {model_id} (GPU={gpu_type})", flush=True) try: resp = requests.post( BASE_URL + ADD_TASK_ENDPOINT, - headers=HEADERS, + headers=headers, json=payload, timeout=30, ) - print(f"status: {resp.status_code}", flush=True) result = resp.json() - print(result, flush=True) - if result.get("code") == 0: - print(f"✅ 提交成功: {model_id}", flush=True) - return True - else: - print(f"❌ 提交失败: {result.get('message')}", flush=True) - return False + 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 False + return -1, str(e) def _run_worker(): @@ -669,26 +465,59 @@ def _run_worker(): _state["phase"] = "submitting" successful: List[str] = [] - for model_id in ALL_MODEL_IDS: + account_idx = 0 + + for gpu_type, model_list in GPU_JOBS: if _shutdown.is_set(): break - if submit_task(model_id): - _state["submitted"] += 1 - successful.append(model_id) - else: - _state["failed"] += 1 + 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 mid in successful: - f.write(f"{mid}\n") + 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']} total={_state['total']}", + f"[worker] 完成 submitted={_state['submitted']} failed={_state['failed']} " + f"total={_state['total']} per_account={_state['per_account']}", flush=True, ) # 提交完成后继续保持进程存活,等待平台停止