4 Commits

Author SHA1 Message Date
1155ac4f4e reserve validation slots before downloading, to stop competitors front-running our downloads
The download queue (/adminApi/async/task/model-download-task) is readable by ANY
account, including low-privilege xc-Token ones, so our WAITING model ids leak.
Competitors submit those via mechanism B (which needs no download), their task
waits for the file, and once our zhoushasha download lands it runs and wins the
slot - leaving us with 60028 on our own download.

New flow:
  phase 1 (reserve, instant): bi150 via zero-credit accounts that have no bi150
    task yet, hygon via zhoukaile - both mechanism B, no download required
  phase 2 (download): zhoushasha downloads only the models we reserved

Startup now filters out accounts that already hold a bi150 task, which also makes
the rotation cursor idempotent across redeploys.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-18 14:33:04 +08:00
f8750be928 replace BI150_ACCOUNTS with 34 zero-credit referral accounts; refresh expired AUTH_TOKEN
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-16 14:41:08 +08:00
cea6924355 replace BI150_ACCOUNTS with 50 zero-credit referral accounts; advance rotation cursor only on successful submission; refresh AUTH_TOKEN 2026-09-08 14:48:55 +08:00
904893671f add bi150 submission via mechanism B with 24-account rotation (one model each, then fallback to l11223344); rotate model list (1901 models) 2026-09-02 11:58:56 +08:00

890
main.py
View File

@@ -15,7 +15,7 @@ import signal
import threading import threading
from datetime import datetime from datetime import datetime
from http.server import BaseHTTPRequestHandler, ThreadingHTTPServer from http.server import BaseHTTPRequestHandler, ThreadingHTTPServer
from typing import Set from typing import List, Set, Tuple
import requests import requests
@@ -34,12 +34,145 @@ USER_ACCOUNT = "zhoushasha@4paradigm.com"
USER_PASSWORD = "ganshenme0" USER_PASSWORD = "ganshenme0"
# 通过 curl -X POST https://modelhub.org.cn/adminApi/user/login 获取后填入(登录失败时的回退) # 通过 curl -X POST https://modelhub.org.cn/adminApi/user/login 获取后填入(登录失败时的回退)
AUTH_TOKEN = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyQWNjb3VudCI6Inpob3VzaGFzaGEiLCJpZCI6MTQsInVzZXJSb2xlIjoibGVhZGVyYm9hcmQiLCJleHAiOjE3ODg3NTE1NzYsImlhdCI6MTc4ODE0Njc3Nn0._tPW9hFKBcpiYP-G7B8fhtTiJO369HPI7_r62AvGAvA" AUTH_TOKEN = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyQWNjb3VudCI6Inpob3VzaGFzaGEiLCJpZCI6MTQsInVzZXJSb2xlIjoibGVhZGVyYm9hcmQiLCJleHAiOjE3OTAxNDU2NDYsImlhdCI6MTc4OTU0MDg0Nn0.PY0e46UY9YDvl_PNvn9Zv-WyvkaTbYngScbwyw-cWMg"
# hygon_k100-ai 验证任务走机制Bxc-Token提交账号 = 账号A不再用 zhoushasha 提交 # hygon_k100-ai 验证任务走机制Bxc-Token固定用 l11223344 提交
# TODO: 填入账号A的真实 xc-Token 后再部署 HYGON_SUBMIT_ACCOUNT = "zhoukaile"
HYGON_SUBMIT_ACCOUNT = "l11223344" HYGON_XC_TOKEN = "bd7c52f3b9604ef48a14dd6174513935"
HYGON_XC_TOKEN = "e1c0db2959e5411f9342c8550b03f6e9"
# ── bi150Iluvatar_bi-150验证任务也走机制B ──────────────────
# 规则:下面这批账号每个只提交 1 个模型(按顺序,一人一个);
# 这批用完之后,剩下所有模型统一回退到 HYGON_SUBMIT_ACCOUNT(l11223344) 提交。
BI150_ACCOUNTS: List[Tuple[str, str]] = [
("albawal", "08bcbd26b39b4bbe856fb5b60731d672"),
("bea888", "4767e245a01d42d98466305291bc76f1"),
("bs888", "7865098998894071839cf02e39b4738f"),
("craigros", "4d2f41fc16a14c11ae25b1b151104f28"),
("dij11", "aca3bd47d7874f86a0f2621c0cf630c3"),
("elc77", "856e9a9e54c04f6fadb2aa67d2d14f3f"),
("gp520", "f6074e5fc90b43f7a4d787792762c305"),
("iqm77", "819bb77dfe9241608862c616fc8828e5"),
("joel789", "e202331e8e124c398010a9cbe27d7cd1"),
("marc999", "355c240bf32b473baf202b5fda8732ed"),
("nd456", "cf9c13c5e8a24ed497bc1f3cd78d2f5f"),
("nedtar", "bedfeab8e9424d599a100d70feef903c"),
("od77", "32a3181b2a3d4de7bb92dc76c8dc467d"),
("ojn520", "197383c8ea6249048e0f602b31faed38"),
("olz007", "e38d0af8696d40e5a45cacc80338e165"),
("pam777", "111ef72e7ed74a6ebaa9e6fae2690d05"),
("pamtro", "c542eb2f294b49ea8c0a95a55c1552f3"),
("pamviv", "ed434bc7f6b5494ca42be41d091001b6"),
("philmit", "cc8f8b7c9ce24a91bd4d7b8a3e1453ff"),
("po789", "fb6a8f738e544408864a3d31549e400a"),
("qju777", "28e4883ac5c543679b1223991332d0bd"),
("rex168", "8678a4fe87e447bd9292b2be5c6bf9fe"),
("sarapat", "37e148f0c96f45b09e37ceafeef41dfd"),
("sd520", "0ef0dfecfc2c4defa9fc34ac138bf9ec"),
("shawviv", "9a05bd584cfc4377bda04fb2dd318812"),
("sy123", "37293844c827482c88127d95a4e96345"),
("ta33", "ebee8e64845649b2a4c46a57bdea0c65"),
("tate8976", "ad4632ed2c8548d4ba52e18e9af0eaf0"),
("vince666", "08274bff89a9472eb69aa99a02b07bca"),
("war168", "1dcc7dc9a640476d9afab85b48fb7828"),
("xi2026", "ad52aba444764dca98c7200be8a39dbe"),
("xi22", "7737dcc3186a48348e73e2801ac94243"),
("xj8976", "542d08a17a6844ae91a223d084240cae"),
("yg789", "c7abd6da77cb40ca82ee89b74d54b2ee"),
]
# 待占位的 bi150 账号队列(启动时由 _init_bi150_queue 过滤后填充)。
# 只保留「还没有任何 bi150 任务」的零积分账号——每个账号占到 1 个就够了。
# 注意:游标只在「提交成功」后才推进(见 _commit_bi150_account
# 因为模型可能已被别人抢先注册60028或提交失败若失败也消耗名额
# 稀缺的账号额度会被无效尝试白白吃掉;失败时保留名额给下一个模型继续用。
_bi150_pending: List[Tuple[str, str]] = [] # 启动时填充,用剩下的排在前面
_bi150_used = 0
_bi150_lock = threading.Lock()
TASK_PAGE_ENDPOINT = "/api/adapt/task/page"
# 账号额度打满时平台返回的提示片段(错误码 60007
QUOTA_FULL_MSG = "当前等待中或运行中的异步模型验证任务数量已达上限"
_hygon_quota_full = False # zhoukaile 额度是否已打满
GPU_TYPE_HYGON = "hygon_k100-ai"
GPU_TYPE_BI150 = "Iluvatar_bi-150"
def _account_has_bi150(xc_token: str) -> bool:
"""查这个账号名下是否已经有 Iluvatar_bi-150 的任务(任何状态都算)。"""
try:
page = 1
while page <= 30:
resp = requests.get(
BASE_URL + TASK_PAGE_ENDPOINT,
params={"pageNum": page, "pageSize": 100},
headers={"xc-Token": xc_token},
timeout=25,
)
data = (resp.json() or {}).get("data") or {}
records = data.get("records") or []
for rec in records:
if rec.get("gpuType") == GPU_TYPE_BI150:
return True
try:
pages = int(data.get("pages") or 1)
except Exception:
pages = 1
if page >= pages or not records:
break
page += 1
except Exception as e:
# 查不到就保守当作「已占过」,避免把额度浪费在状态不明的账号上
print(f"⚠️ 查询账号 bi150 任务失败,跳过该账号: {e}", flush=True)
return True
return False
def _init_bi150_queue() -> None:
"""
启动时筛掉已经有 bi150 任务的账号,只把「还没占过位」的排进队列。
这样重新部署也不会重复消耗已经成功的账号(游标本身是进程内内存变量)。
"""
global _bi150_pending
usable, skipped = [], []
for acct, tok in BI150_ACCOUNTS:
if _account_has_bi150(tok):
skipped.append(acct)
else:
usable.append((acct, tok))
_bi150_pending = usable
_state["bi150_usable"] = len(usable)
print(f"[init] bi150 账号筛查:可用 {len(usable)} 个,已有任务跳过 {len(skipped)}", flush=True)
if skipped:
print(f"[init] 跳过的账号: {', '.join(skipped)}", flush=True)
if usable:
print(f"[init] 待占位账号: {', '.join(a for a, _ in usable)}", flush=True)
def _peek_bi150_account() -> Tuple[str, str, bool]:
"""
查看当前该用哪个 bi150 账号,但**不推进**游标。
返回 (账号, xc-Token, 是否取自待占位队列)
队列用完后返回 (None, None, False),表示 bi150 占位已全部完成、无需再提交。
"""
with _bi150_lock:
if _bi150_used < len(_bi150_pending):
acct, tok = _bi150_pending[_bi150_used]
return acct, tok, True
return "", "", False
def _commit_bi150_account() -> None:
"""提交成功后调用,推进游标,让这个账号的名额真正被用掉。"""
global _bi150_used
with _bi150_lock:
if _bi150_used < len(_bi150_pending):
_bi150_used += 1
def _bi150_done() -> bool:
"""所有待占位账号是否都已占到位。"""
with _bi150_lock:
return _bi150_used >= len(_bi150_pending)
CONTEST_API_TOKEN = "ef1ef82f3c9efee413d602345fbe224d" CONTEST_API_TOKEN = "ef1ef82f3c9efee413d602345fbe224d"
HF_TOKEN = "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" HF_TOKEN = "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"
@@ -387,305 +520,310 @@ ALL_MODEL_IDS = [
# "mradermacher/InfiniteBuRP_7B-GGUF", # "mradermacher/InfiniteBuRP_7B-GGUF",
# "mradermacher/OpenChat-3.5-7B-Solar-GGUF", # "mradermacher/OpenChat-3.5-7B-Solar-GGUF",
"mradermacher/Qra-1b-GGUF", # "mradermacher/Qra-1b-GGUF",
"mradermacher/Qra-7b-GGUF", # "mradermacher/Qra-7b-GGUF",
"mradermacher/Nusantara-4b-Indo-Chat-GGUF", # "mradermacher/Nusantara-4b-Indo-Chat-GGUF",
"mradermacher/Thespis-Balanced-7b-v1-GGUF", # "mradermacher/Thespis-Balanced-7b-v1-GGUF",
"mradermacher/Experiment28Experiment26-7B-GGUF", # "mradermacher/Experiment28Experiment26-7B-GGUF",
"mradermacher/CalmeInex12-7B-GGUF", # "mradermacher/CalmeInex12-7B-GGUF",
"mradermacher/Lelanta-lake-7b-GGUF", # "mradermacher/Lelanta-lake-7b-GGUF",
"mradermacher/Inex12Yamshadow-7B-GGUF", # "mradermacher/Inex12Yamshadow-7B-GGUF",
"mradermacher/mistral-7b-zephyr-sft-GGUF", # "mradermacher/mistral-7b-zephyr-sft-GGUF",
"mradermacher/flammen9-mistral-7B-GGUF", # "mradermacher/flammen9-mistral-7B-GGUF",
"mradermacher/NeuralExperiment26-7B-GGUF", # "mradermacher/NeuralExperiment26-7B-GGUF",
"mradermacher/flammen9X-mistral-7B-GGUF", # "mradermacher/flammen9X-mistral-7B-GGUF",
"mradermacher/Cloudversia-Thor-7B-GGUF", # "mradermacher/Cloudversia-Thor-7B-GGUF",
"mradermacher/supermario_v4-GGUF", # "mradermacher/supermario_v4-GGUF",
"mradermacher/XuanYuan-6B-GGUF", # "mradermacher/XuanYuan-6B-GGUF",
"mradermacher/NeuralsirkrishnaInex12-7B-GGUF", # "mradermacher/NeuralsirkrishnaInex12-7B-GGUF",
"mradermacher/Swahili-Mistral-Instruct-v2-GGUF", # "mradermacher/Swahili-Mistral-Instruct-v2-GGUF",
"mradermacher/Prima-LelantaclesV7-experimentalv2-7b-GGUF", # "mradermacher/Prima-LelantaclesV7-experimentalv2-7b-GGUF",
"mradermacher/HarmBench-Mistral-7b-val-cls-GGUF", # "mradermacher/HarmBench-Mistral-7b-val-cls-GGUF",
"mradermacher/merlin1.4-GGUF", # "mradermacher/merlin1.4-GGUF",
"mradermacher/merlin1.5-GGUF", # "mradermacher/merlin1.5-GGUF",
"mradermacher/Franken-Mistral-Merlinite-Maid-GGUF", # "mradermacher/Franken-Mistral-Merlinite-Maid-GGUF",
"mradermacher/mergekit-della_linear-sxmadrj-GGUF", # "mradermacher/mergekit-della_linear-sxmadrj-GGUF",
"mradermacher/FuseChat-Qwen-2.5-7B-Instruct-GGUF", # "mradermacher/FuseChat-Qwen-2.5-7B-Instruct-GGUF",
"mradermacher/NeuralsirkrishnaExperiment28-7B-GGUF", # "mradermacher/NeuralsirkrishnaExperiment28-7B-GGUF",
"mradermacher/Paradigm_DPO-GGUF", # "mradermacher/Paradigm_DPO-GGUF",
"mradermacher/Strangemerges_32Alloyingotneoy-7B-GGUF", # "mradermacher/Strangemerges_32Alloyingotneoy-7B-GGUF",
"mradermacher/FuseQwQen-7B-GGUF", # "mradermacher/FuseQwQen-7B-GGUF",
"mradermacher/Falcon3-7B-Instruct-abliterated-GGUF", # "mradermacher/Falcon3-7B-Instruct-abliterated-GGUF",
"mradermacher/Article-Llama-3.2-1B-GGUF", # "mradermacher/Article-Llama-3.2-1B-GGUF",
"mradermacher/Falcon3-10B-Instruct-abliterated-GGUF", # "mradermacher/Falcon3-10B-Instruct-abliterated-GGUF",
"mradermacher/AshishGPT-GGUF", # "mradermacher/AshishGPT-GGUF",
"mradermacher/FnFLlama-3.1-8B1-GGUF", # "mradermacher/FnFLlama-3.1-8B1-GGUF",
"mradermacher/Meta-Llama-3.1-8B-Instruct-TIES-GGUF", # "mradermacher/Meta-Llama-3.1-8B-Instruct-TIES-GGUF",
"mradermacher/Llama-2-7b-sft-SPIN-gpt4o-GGUF", # "mradermacher/Llama-2-7b-sft-SPIN-gpt4o-GGUF",
"mradermacher/Mistral-7B-v0.1-sft-SPIN-Mistral-8x7B-Instruct-v0.1-GGUF",
"mradermacher/TaxoLumimaid-v0.2-8B-GGUF", # "mradermacher/Mistral-7B-v0.1-sft-SPIN-Mistral-8x7B-Instruct-v0.1-GGUF",
"mradermacher/Mistral-7B-v0.1-sft-SPIN-gpt4o-GGUF", # "mradermacher/TaxoLumimaid-v0.2-8B-GGUF",
"mradermacher/QwenSlerp-7B-GGUF", # "mradermacher/Mistral-7B-v0.1-sft-SPIN-gpt4o-GGUF",
"mradermacher/creativestorywriter-GGUF", # "mradermacher/QwenSlerp-7B-GGUF",
"mradermacher/therapistAi-GGUF", # "mradermacher/creativestorywriter-GGUF",
"mradermacher/MT-Gen5-BMA-gemma-2-9B-GGUF", # "mradermacher/therapistAi-GGUF",
"mradermacher/MT-Gen5-GP-gemma-2-S5E-9B-GGUF", # "mradermacher/MT-Gen5-BMA-gemma-2-9B-GGUF",
"mradermacher/Cake-GGUF", # "mradermacher/MT-Gen5-GP-gemma-2-S5E-9B-GGUF",
"mradermacher/MT-Gen5-IG-gemma-2-9B-GGUF", # "mradermacher/Cake-GGUF",
"mradermacher/Qwen2.5-0.5B-Instruct-ThreeFourths-GGUF", # "mradermacher/MT-Gen5-IG-gemma-2-9B-GGUF",
"mradermacher/MT-Gen5-IF-gemma-2-MT5g4MT4g2-9B-GGUF", # "mradermacher/Qwen2.5-0.5B-Instruct-ThreeFourths-GGUF",
"mradermacher/MT-Gen5-MM-gemma-2-MT4g2MT5g4-9B-GGUF", # "mradermacher/MT-Gen5-IF-gemma-2-MT5g4MT4g2-9B-GGUF",
"mradermacher/MT-Gen5-MA-gemma-2-S5MT3g4-9B-GGUF", # "mradermacher/MT-Gen5-MM-gemma-2-MT4g2MT5g4-9B-GGUF",
"mradermacher/MT-Gen5-MUMM-gemma-2-9B-GGUF", # "mradermacher/MT-Gen5-MA-gemma-2-S5MT3g4-9B-GGUF",
"mradermacher/tongyi-model-v1.2-1b-enth-GGUF", # "mradermacher/MT-Gen5-MUMM-gemma-2-9B-GGUF",
"mradermacher/MT-Gen5-MU-gemma-2-MT3g4S5-9B-GGUF", # "mradermacher/tongyi-model-v1.2-1b-enth-GGUF",
"mradermacher/tongyi-model-v1.3-1b-GGUF", # "mradermacher/MT-Gen5-MU-gemma-2-MT3g4S5-9B-GGUF",
"mradermacher/MT-Gen5-MUMMIG-gemma-2-9B-GGUF", # "mradermacher/tongyi-model-v1.3-1b-GGUF",
"mradermacher/MT-Gen5-gemma-2-9B-GGUF", # "mradermacher/MT-Gen5-MUMMIG-gemma-2-9B-GGUF",
"mradermacher/L3-ColdBrew-Euclidean-GGUF", # "mradermacher/MT-Gen5-gemma-2-9B-GGUF",
"mradermacher/AlloyingotneoyExperiment28-7B-GGUF", # "mradermacher/L3-ColdBrew-Euclidean-GGUF",
"mradermacher/SystemHermes-2-7B-GGUF", # "mradermacher/AlloyingotneoyExperiment28-7B-GGUF",
"mradermacher/NeuralMaths-7B-slerp-GGUF", # "mradermacher/SystemHermes-2-7B-GGUF",
"mradermacher/T3qM7-7B-GGUF", # "mradermacher/NeuralMaths-7B-slerp-GGUF",
"mradermacher/MasherAI-2B-v0.1-GGUF", # "mradermacher/T3qM7-7B-GGUF",
"mradermacher/ChickaQ-Large-GGUF", # "mradermacher/MasherAI-2B-v0.1-GGUF",
"mradermacher/Beast-Mixed-GGUF", # "mradermacher/ChickaQ-Large-GGUF",
"mradermacher/Gujju-Llama-Instruct-v0.1-GGUF", # "mradermacher/Beast-Mixed-GGUF",
"mradermacher/Beast_Mixed_2_pro-GGUF", # "mradermacher/Gujju-Llama-Instruct-v0.1-GGUF",
"mradermacher/AlloyIngotNeoX-GGUF", # "mradermacher/Beast_Mixed_2_pro-GGUF",
"mradermacher/Persephone_7B-GGUF", # "mradermacher/AlloyIngotNeoX-GGUF",
"mradermacher/KuTrix-7b-GGUF", # "mradermacher/Persephone_7B-GGUF",
"mradermacher/SystemHermes-7B-GGUF", # "mradermacher/KuTrix-7b-GGUF",
"mradermacher/SystemConfigHermes-7B-GGUF", # "mradermacher/SystemHermes-7B-GGUF",
"mradermacher/open-llama-3b-v2-chat-GGUF", # "mradermacher/SystemConfigHermes-7B-GGUF",
"mradermacher/phi-2-orange-v2-GGUF", # "mradermacher/open-llama-3b-v2-chat-GGUF",
"mradermacher/Phi-Stoma-GGUF", # "mradermacher/phi-2-orange-v2-GGUF",
"mradermacher/StrangeMerges_40-7B-dare_ties-GGUF", # "mradermacher/Phi-Stoma-GGUF",
"mradermacher/Swahili-Instruct-V2-3-GGUF", # "mradermacher/StrangeMerges_40-7B-dare_ties-GGUF",
"mradermacher/T3QM7-GGUF", # "mradermacher/Swahili-Instruct-V2-3-GGUF",
"mradermacher/WestKunai-Hermes-7b-GGUF", # "mradermacher/T3QM7-GGUF",
"mradermacher/WestKunai-XS-7b-GGUF", # "mradermacher/WestKunai-Hermes-7b-GGUF",
"mradermacher/leo-hessianai-7b-finetune-x5-GGUF", # "mradermacher/WestKunai-XS-7b-GGUF",
"mradermacher/leo-hessianai-7b-finetune-x6-GGUF", # "mradermacher/leo-hessianai-7b-finetune-x5-GGUF",
"mradermacher/leo-hessianai-7b-finetune-x7-GGUF", # "mradermacher/leo-hessianai-7b-finetune-x6-GGUF",
"mradermacher/llama-2-7b-guanaco-dolly-mini-GGUF", # "mradermacher/leo-hessianai-7b-finetune-x7-GGUF",
"mradermacher/open_llama_3b_v2_chat_dolly-GGUF", # "mradermacher/llama-2-7b-guanaco-dolly-mini-GGUF",
"mradermacher/mistral-orpo-beta-NeuralBeagle14-7B-dare-ties-GGUF", # "mradermacher/open_llama_3b_v2_chat_dolly-GGUF",
"mradermacher/seallm-7b-v2-chat-th-GGUF", # "mradermacher/mistral-orpo-beta-NeuralBeagle14-7B-dare-ties-GGUF",
"mradermacher/tiny-llama-spin-iter2-GGUF", # "mradermacher/seallm-7b-v2-chat-th-GGUF",
"mradermacher/StrangeMerges_30-7B-slerp-GGUF", # "mradermacher/tiny-llama-spin-iter2-GGUF",
"mradermacher/StrangeMerges_41-7B-dare_ties-GGUF", # "mradermacher/StrangeMerges_30-7B-slerp-GGUF",
"mradermacher/Wiedervereinigung-7b-dpo-laser-GGUF", # "mradermacher/StrangeMerges_41-7B-dare_ties-GGUF",
"mradermacher/alpaca-gpt4-GGUF", # "mradermacher/Wiedervereinigung-7b-dpo-laser-GGUF",
"mradermacher/deepseek-coder-6.7b-pandas-GGUF", # "mradermacher/alpaca-gpt4-GGUF",
"mradermacher/Phi-Delthanar-GGUF", # "mradermacher/deepseek-coder-6.7b-pandas-GGUF",
"mradermacher/ds-trinity-7b-v1-GGUF", # "mradermacher/Phi-Delthanar-GGUF",
"mradermacher/flintlock_3B_v0.1-GGUF", # "mradermacher/ds-trinity-7b-v1-GGUF",
"mradermacher/flintlock_3B_v0.1a-GGUF", # "mradermacher/flintlock_3B_v0.1-GGUF",
"mradermacher/gemma-Kannada-Instruct-GGUF", # "mradermacher/flintlock_3B_v0.1a-GGUF",
"mradermacher/gemma-Kannada-Instruct-v01-GGUF", # "mradermacher/gemma-Kannada-Instruct-GGUF",
"mradermacher/TheMayonnaise-GGUF", # "mradermacher/gemma-Kannada-Instruct-v01-GGUF",
"mradermacher/hermeo-7b-laser-GGUF", # "mradermacher/TheMayonnaise-GGUF",
"mradermacher/Eris_Prime-V2-7B-GGUF", # "mradermacher/hermeo-7b-laser-GGUF",
"mradermacher/Elly_7B-GGUF", # "mradermacher/Eris_Prime-V2-7B-GGUF",
"mradermacher/Saul-Instruct-Extended-GGUF", # "mradermacher/Elly_7B-GGUF",
"mradermacher/winter-garden-7b-gamma-GGUF", # "mradermacher/Saul-Instruct-Extended-GGUF",
"mradermacher/Mayonnaise-4in1-03-GGUF", # "mradermacher/winter-garden-7b-gamma-GGUF",
"mradermacher/SriRamanatestM-GGUF", # "mradermacher/Mayonnaise-4in1-03-GGUF",
"mradermacher/open-llama-3b-v2-instruct-GGUF", # "mradermacher/SriRamanatestM-GGUF",
"mradermacher/Mayonnaise-4in1-01-GGUF", # "mradermacher/open-llama-3b-v2-instruct-GGUF",
"mradermacher/Franken-MistressMaid-7B-v2-GGUF", # "mradermacher/Mayonnaise-4in1-01-GGUF",
"mradermacher/Strangemerges_32Yamshadow-7B-GGUF", # "mradermacher/Franken-MistressMaid-7B-v2-GGUF",
"mradermacher/llama-2-7b-Sri-Lankan-Law-GGUF", # "mradermacher/Strangemerges_32Yamshadow-7B-GGUF",
"mradermacher/Commencis-LLM-GGUF", # "mradermacher/llama-2-7b-Sri-Lankan-Law-GGUF",
"mradermacher/gemma-coder-GGUF", # "mradermacher/Commencis-LLM-GGUF",
"mradermacher/ShadowYamshadow-7B-GGUF", # "mradermacher/gemma-coder-GGUF",
"mradermacher/Einstein-4d-Marcoro14-nddmpk-KrishnaHercules-7b-slerp-GGUF", # "mradermacher/ShadowYamshadow-7B-GGUF",
"mradermacher/Mystical-dare7-7b-GGUF", # "mradermacher/Einstein-4d-Marcoro14-nddmpk-KrishnaHercules-7b-slerp-GGUF",
"mradermacher/NeuralCeptrix-7B-SLERP-GGUF", # "mradermacher/Mystical-dare7-7b-GGUF",
"mradermacher/NeuralCeptrix-7B-SLERPv3-GGUF", # "mradermacher/NeuralCeptrix-7B-SLERP-GGUF",
"mradermacher/PearlMath-lafted-7b-slerp-GGUF", # "mradermacher/NeuralCeptrix-7B-SLERPv3-GGUF",
"mradermacher/Genisis-GGUF", # "mradermacher/PearlMath-lafted-7b-slerp-GGUF",
"mradermacher/PearlMathMstralPro-7b-slerp-GGUF", # "mradermacher/Genisis-GGUF",
"mradermacher/Einstein-4d-Marcoro14-nddmpk-KrishnaHercules-7b-slerp-fix1-GGUF", # "mradermacher/PearlMathMstralPro-7b-slerp-GGUF",
"mradermacher/Greek_to_English_Translation-GGUF", # "mradermacher/Einstein-4d-Marcoro14-nddmpk-KrishnaHercules-7b-slerp-fix1-GGUF",
"mradermacher/Swallow-MS-7b-v0.1-ChatVector-GGUF", # "mradermacher/Greek_to_English_Translation-GGUF",
"mradermacher/MistralDpoPearl-7b-slerp-GGUF", # "mradermacher/Swallow-MS-7b-v0.1-ChatVector-GGUF",
"mradermacher/ChatMusician-Base-GGUF", # "mradermacher/MistralDpoPearl-7b-slerp-GGUF",
"mradermacher/Flora_7B-laser-GGUF", # "mradermacher/ChatMusician-Base-GGUF",
"mradermacher/EvoLLM-JP-A-v1-7B-GGUF", # "mradermacher/Flora_7B-laser-GGUF",
"mradermacher/EvoLLM-JP-v1-7B-GGUF", # "mradermacher/EvoLLM-JP-A-v1-7B-GGUF",
"mradermacher/kukulemon-7B-GGUF", # "mradermacher/EvoLLM-JP-v1-7B-GGUF",
"mradermacher/TinyJ.O.S.I.E.-3x1.1B-32k-Base-GGUF", # "mradermacher/kukulemon-7B-GGUF",
"mradermacher/Mystical-dare5-7b-GGUF", # "mradermacher/TinyJ.O.S.I.E.-3x1.1B-32k-Base-GGUF",
"mradermacher/Patent-Instruct-LLaMA-Pro-GGUF", # "mradermacher/Mystical-dare5-7b-GGUF",
"mradermacher/K2S3-Mistral-7b-v1.0-GGUF", # "mradermacher/Patent-Instruct-LLaMA-Pro-GGUF",
"mradermacher/NeuralCeptrix-7B-SLERPv2-GGUF", # "mradermacher/K2S3-Mistral-7b-v1.0-GGUF",
"mradermacher/RasGulla1-7b-GGUF", # "mradermacher/NeuralCeptrix-7B-SLERPv2-GGUF",
"mradermacher/MasherAI-7B-v4-GGUF", # "mradermacher/RasGulla1-7b-GGUF",
"mradermacher/KnowCoder-7B-IE-GGUF", # "mradermacher/MasherAI-7B-v4-GGUF",
"mradermacher/KnowCoder-7B-base-GGUF", # "mradermacher/KnowCoder-7B-IE-GGUF",
"mradermacher/ALMA-7B-R-remerged-GGUF", # "mradermacher/KnowCoder-7B-base-GGUF",
"mradermacher/Beast-Mixed_3_pro-GGUF", # "mradermacher/ALMA-7B-R-remerged-GGUF",
"mradermacher/Ministral-4b-instruct-GGUF", # "mradermacher/Beast-Mixed_3_pro-GGUF",
"mradermacher/GOOD-4x1b-GGUF", # "mradermacher/Ministral-4b-instruct-GGUF",
"mradermacher/Medictron-0.5B-Chat-GGUF", # "mradermacher/GOOD-4x1b-GGUF",
"mradermacher/Pearl-7B-0211-ties-GGUF", # "mradermacher/Medictron-0.5B-Chat-GGUF",
"mradermacher/NeuralsirkrishnaM7-7B-GGUF", # "mradermacher/Pearl-7B-0211-ties-GGUF",
"mradermacher/Patent-Instruct-Pro-GGUF", # "mradermacher/NeuralsirkrishnaM7-7B-GGUF",
"mradermacher/TheSpice-7b-v0.1.1-GGUF", # "mradermacher/Patent-Instruct-Pro-GGUF",
"mradermacher/Louis_GRC-7B-slerp-M1-GGUF", # "mradermacher/TheSpice-7b-v0.1.1-GGUF",
"mradermacher/MiniLLM-0.2B-WithWudao-GGUF", # "mradermacher/Louis_GRC-7B-slerp-M1-GGUF",
"mradermacher/MiniLLM-0.2B-WithWudao-SFT_Alpaca-GGUF", # "mradermacher/MiniLLM-0.2B-WithWudao-GGUF",
"mradermacher/FinguAI-Chat-v1-GGUF", # "mradermacher/MiniLLM-0.2B-WithWudao-SFT_Alpaca-GGUF",
"mradermacher/macaroni-7b-GGUF", # "mradermacher/FinguAI-Chat-v1-GGUF",
"mradermacher/AlphaMonarch-daser-GGUF", # "mradermacher/macaroni-7b-GGUF",
"mradermacher/M7Alloyingotneoy-7B-GGUF", # "mradermacher/AlphaMonarch-daser-GGUF",
"mradermacher/Strangemerges_32Shadow-7B-GGUF", # "mradermacher/M7Alloyingotneoy-7B-GGUF",
"mradermacher/GarrulusMarcoro-7B-v0.1-GGUF",
"mradermacher/Macaroni-7b-Tied-GGUF",
"mradermacher/Matter-0.1-7B-DPO-preview-GGUF", # "mradermacher/Strangemerges_32Shadow-7B-GGUF",
"mradermacher/Mistral7BInstructv0.2-RakutenAI7Bchat-GGUF", # "mradermacher/GarrulusMarcoro-7B-v0.1-GGUF",
"mradermacher/Pegasus-7b-slerp-GGUF", # "mradermacher/Macaroni-7b-Tied-GGUF",
"mradermacher/NeuralDareDMistralPro-7b-slerp-GGUF", # "mradermacher/Matter-0.1-7B-DPO-preview-GGUF",
"mradermacher/QuizBot.AI-base-GGUF", # "mradermacher/Mistral7BInstructv0.2-RakutenAI7Bchat-GGUF",
"mradermacher/Asherah_7B-GGUF", # "mradermacher/Pegasus-7b-slerp-GGUF",
"mradermacher/sabre-2B-GGUF", # "mradermacher/NeuralDareDMistralPro-7b-slerp-GGUF",
"mradermacher/tinyllama-coder-color-en-v0.1-GGUF", # "mradermacher/QuizBot.AI-base-GGUF",
"mradermacher/tinyllama-color-coder-v1-GGUF", # "mradermacher/Asherah_7B-GGUF",
"mradermacher/tinyllama-fake-news-detector-v1-GGUF", # "mradermacher/sabre-2B-GGUF",
"mradermacher/tinyllama-fr-aya-1.5T-v0.1-GGUF", # "mradermacher/tinyllama-coder-color-en-v0.1-GGUF",
"mradermacher/tinyllama-hate-speech-detector-en-1.5T-v0.1-GGUF", # "mradermacher/tinyllama-color-coder-v1-GGUF",
"mradermacher/tinyllama-hate-speech-detector-v1-GGUF", # "mradermacher/tinyllama-fake-news-detector-v1-GGUF",
"mradermacher/tinyllama-onomatopoeia-ja-v1-GGUF", # "mradermacher/tinyllama-fr-aya-1.5T-v0.1-GGUF",
"mradermacher/tinyllama-sentiment-analyzer-v1-GGUF", # "mradermacher/tinyllama-hate-speech-detector-en-1.5T-v0.1-GGUF",
"mradermacher/tinyllama-sql-coder-v1-GGUF", # "mradermacher/tinyllama-hate-speech-detector-v1-GGUF",
"mradermacher/DaturaCookie_7B-GGUF", # "mradermacher/tinyllama-onomatopoeia-ja-v1-GGUF",
"mradermacher/K2S3-Mistral-7b-v1.1-GGUF", # "mradermacher/tinyllama-sentiment-analyzer-v1-GGUF",
"mradermacher/mistral-orpo-mix-GGUF", # "mradermacher/tinyllama-sql-coder-v1-GGUF",
"mradermacher/NeuralMergeTest-001-GGUF", # "mradermacher/DaturaCookie_7B-GGUF",
"mradermacher/NeuralSirKrishna-Spanish-FT-GGUF", # "mradermacher/K2S3-Mistral-7b-v1.1-GGUF",
"mradermacher/T3qm7xStrangemerges_32-7B-GGUF", # "mradermacher/mistral-orpo-mix-GGUF",
"mradermacher/flammen10-mistral-7B-GGUF", # "mradermacher/NeuralMergeTest-001-GGUF",
"mradermacher/flammen11-mistral-7B-GGUF", # "mradermacher/NeuralSirKrishna-Spanish-FT-GGUF",
"mradermacher/climategpt-7b-fsc-GGUF", # "mradermacher/T3qm7xStrangemerges_32-7B-GGUF",
"mradermacher/m.star.7b-GGUF", # "mradermacher/flammen10-mistral-7B-GGUF",
"mradermacher/J.O.S.I.E.3-Beta8-slerp-GGUF", # "mradermacher/flammen11-mistral-7B-GGUF",
"mradermacher/climategpt-7b-fsg-GGUF", # "mradermacher/climategpt-7b-fsc-GGUF",
"mradermacher/Mistral-7B-v0.1-coco-caption-de-GGUF", # "mradermacher/m.star.7b-GGUF",
"mradermacher/MistralCode-7B-Instruct-v0.2-slerp-GGUF", # "mradermacher/J.O.S.I.E.3-Beta8-slerp-GGUF",
"mradermacher/Mocha-Sample-7b-ex-GGUF", # "mradermacher/climategpt-7b-fsg-GGUF",
"mradermacher/T3QM7X-GGUF", # "mradermacher/Mistral-7B-v0.1-coco-caption-de-GGUF",
"mradermacher/bruphin-iota-GGUF", # "mradermacher/MistralCode-7B-Instruct-v0.2-slerp-GGUF",
"mradermacher/gemma-ko-en-translate-v0.4-GGUF", # "mradermacher/Mocha-Sample-7b-ex-GGUF",
"mradermacher/Follex-7B-V2-GGUF", # "mradermacher/T3QM7X-GGUF",
"mradermacher/speculor-2.7b-GGUF", # "mradermacher/bruphin-iota-GGUF",
"mradermacher/CS221-xlm-roberta-base-finetuned-semeval-GGUF", # "mradermacher/gemma-ko-en-translate-v0.4-GGUF",
"mradermacher/mamba-765M-chinese-chat-v0.1-GGUF", # "mradermacher/Follex-7B-V2-GGUF",
"mradermacher/Brian-Llama-3.2-3B-GGUF", # "mradermacher/speculor-2.7b-GGUF",
"mradermacher/ING_Triomphant_M2_SLERP-GGUF", # "mradermacher/CS221-xlm-roberta-base-finetuned-semeval-GGUF",
"mradermacher/Zephyr_beta_32k_7B-GGUF", # "mradermacher/mamba-765M-chinese-chat-v0.1-GGUF",
"mradermacher/Mistral-7B-v0.3-sft-SPIN-self-GGUF", # "mradermacher/Brian-Llama-3.2-3B-GGUF",
"mradermacher/Follex-7B-GGUF", # "mradermacher/ING_Triomphant_M2_SLERP-GGUF",
"mradermacher/R4L-Math-v0.1-GGUF", # "mradermacher/Zephyr_beta_32k_7B-GGUF",
"mradermacher/Qwen2.5-3B-TTKH-python-0.3-GGUF", # "mradermacher/Mistral-7B-v0.3-sft-SPIN-self-GGUF",
"mradermacher/J.O.S.I.E.3-Beta3-slerp-GGUF", # "mradermacher/Follex-7B-GGUF",
"mradermacher/Llama-3.1-8B-sft-SPIN-self-GGUF", # "mradermacher/R4L-Math-v0.1-GGUF",
"mradermacher/SmolLM2-FT-BG-GGUF", # "mradermacher/Qwen2.5-3B-TTKH-python-0.3-GGUF",
"mradermacher/star-sft-intellect-1-GGUF", # "mradermacher/J.O.S.I.E.3-Beta3-slerp-GGUF",
"mradermacher/wiroai-turkish-llm-9b-GGUF", # "mradermacher/Llama-3.1-8B-sft-SPIN-self-GGUF",
"mradermacher/iq-code-evmind-0.5b-GGUF", # "mradermacher/SmolLM2-FT-BG-GGUF",
"mradermacher/iq-code-evmind-7b-GGUF", # "mradermacher/star-sft-intellect-1-GGUF",
"mradermacher/waka-qwq-GGUF", # "mradermacher/wiroai-turkish-llm-9b-GGUF",
"mradermacher/tongyi-model-v1.3-1b-enth-GGUF", # "mradermacher/iq-code-evmind-0.5b-GGUF",
"mradermacher/KangalKhan-Beta-Ruby-7B-GGUF", # "mradermacher/iq-code-evmind-7b-GGUF",
"mradermacher/Calliope-7b-GGUF", # "mradermacher/waka-qwq-GGUF",
"mradermacher/Falcon3Slerp4-10B-GGUF", # "mradermacher/tongyi-model-v1.3-1b-enth-GGUF",
"mradermacher/Lugha-Llama-8B-wura-GGUF", # "mradermacher/KangalKhan-Beta-Ruby-7B-GGUF",
"mradermacher/FalconSlerp3-10B-GGUF", # "mradermacher/Calliope-7b-GGUF",
"mradermacher/Karasu-1.1b-task1357-vector-GGUF", # "mradermacher/Falcon3Slerp4-10B-GGUF",
"mradermacher/bruphin-kappa-GGUF", # "mradermacher/Lugha-Llama-8B-wura-GGUF",
"mradermacher/Nexus-IKM-Hermes-2-Pro-Mistral-7B-GGUF", # "mradermacher/FalconSlerp3-10B-GGUF",
"mradermacher/StarMix-7B-slerp-GGUF", # "mradermacher/Karasu-1.1b-task1357-vector-GGUF",
"mradermacher/KangalKhan-Beta-Sapphire-7B-GGUF", # "mradermacher/bruphin-kappa-GGUF",
"mradermacher/UltraCatunaMayo-DPO-GGUF", # "mradermacher/Nexus-IKM-Hermes-2-Pro-Mistral-7B-GGUF",
"mradermacher/KangalKhan-PressurizedRuby-7B-GGUF", # "mradermacher/StarMix-7B-slerp-GGUF",
"mradermacher/lion-zephyr-7b-GGUF", # "mradermacher/KangalKhan-Beta-Sapphire-7B-GGUF",
"mradermacher/mamba-1.4b-hf-lima-GGUF", # "mradermacher/UltraCatunaMayo-DPO-GGUF",
"mradermacher/Mixtral_Base-GGUF", # "mradermacher/KangalKhan-PressurizedRuby-7B-GGUF",
"mradermacher/StrangeMerges_44-7B-dare_ties-GGUF", # "mradermacher/lion-zephyr-7b-GGUF",
"mradermacher/Mixtral_Chat-GGUF", # "mradermacher/mamba-1.4b-hf-lima-GGUF",
"mradermacher/Pearl-7B-slerp-GGUF", # "mradermacher/Mixtral_Base-GGUF",
"mradermacher/flammen13-mistral-7B-GGUF", # "mradermacher/StrangeMerges_44-7B-dare_ties-GGUF",
"mradermacher/AlloyingotneoyNeuralsirkrishna-7B-GGUF", # "mradermacher/Mixtral_Chat-GGUF",
"mradermacher/flammen12-mistral-7B-GGUF", # "mradermacher/Pearl-7B-slerp-GGUF",
"mradermacher/MiniLLM-0.2B-NoWudao-GGUF", # "mradermacher/flammen13-mistral-7B-GGUF",
"mradermacher/baarat-hindi-instruct-0.1-GGUF", # "mradermacher/AlloyingotneoyNeuralsirkrishna-7B-GGUF",
"mradermacher/swallow-hermes-st-v1-GGUF", # "mradermacher/flammen12-mistral-7B-GGUF",
"mradermacher/Mistral-7B-Instruct-demi-merge-v0.2-7B-GGUF", # "mradermacher/MiniLLM-0.2B-NoWudao-GGUF",
"mradermacher/TinyJensen-1.1B-Chat-GGUF", # "mradermacher/baarat-hindi-instruct-0.1-GGUF",
"mradermacher/Ak4ri-rp-7b-GGUF", # "mradermacher/swallow-hermes-st-v1-GGUF",
"mradermacher/Samlagast-7B-bf16-GGUF", # "mradermacher/Mistral-7B-Instruct-demi-merge-v0.2-7B-GGUF",
"mradermacher/MKLLM-7B-Translate-GGUF", # "mradermacher/TinyJensen-1.1B-Chat-GGUF",
"mradermacher/ScikitLLM-Model-GGUF", # "mradermacher/Ak4ri-rp-7b-GGUF",
"mradermacher/phi-2-DLEC-GGUF", # "mradermacher/Samlagast-7B-bf16-GGUF",
"mradermacher/Eris_PrimeV4-Vision-7B-GGUF", # "mradermacher/MKLLM-7B-Translate-GGUF",
"mradermacher/saul-zephyr-7b-slerp-GGUF", # "mradermacher/ScikitLLM-Model-GGUF",
"mradermacher/YamshadowInex12_YamshadowExperiment28-GGUF", # "mradermacher/phi-2-DLEC-GGUF",
"mradermacher/Experiment26Yam_Experiment27Yam-GGUF", # "mradermacher/Eris_PrimeV4-Vision-7B-GGUF",
"mradermacher/NeuralsirkrishnaShadow_Inex12Strangemerges_32-GGUF", # "mradermacher/saul-zephyr-7b-slerp-GGUF",
"mradermacher/VerwaltungsAnthologie_clear_simbad_7B-GGUF", # "mradermacher/YamshadowInex12_YamshadowExperiment28-GGUF",
"mradermacher/Llama-3-8B-Instruct-DADA-GGUF", # "mradermacher/Experiment26Yam_Experiment27Yam-GGUF",
"mradermacher/M7Yamshadowexperiment28_T3qT3qm7-GGUF", # "mradermacher/NeuralsirkrishnaShadow_Inex12Strangemerges_32-GGUF",
"mradermacher/Strangemerges_32M7-7B-GGUF", # "mradermacher/VerwaltungsAnthologie_clear_simbad_7B-GGUF",
"mradermacher/Experiment28T3q_Multi_verse_modelM7-GGUF", # "mradermacher/Llama-3-8B-Instruct-DADA-GGUF",
"mradermacher/gemma-2b-f16-telugu-base-GGUF", # "mradermacher/M7Yamshadowexperiment28_T3qT3qm7-GGUF",
"mradermacher/ScaleDown-7B-slerp-v0.1-GGUF", # "mradermacher/Strangemerges_32M7-7B-GGUF",
"mradermacher/GEITje-7B-ultra-GGUF", # "mradermacher/Experiment28T3q_Multi_verse_modelM7-GGUF",
"mradermacher/ShadowStrangemerges_32-7B-GGUF", # "mradermacher/gemma-2b-f16-telugu-base-GGUF",
"mradermacher/M7Yamshadowexperiment28_Inex16Calme-GGUF", # "mradermacher/ScaleDown-7B-slerp-v0.1-GGUF",
"mradermacher/TinyLlama-1.1B-chat-dare-v1-GGUF", # "mradermacher/GEITje-7B-ultra-GGUF",
"mradermacher/RuBit-LLama-63M-GGUF", # "mradermacher/ShadowStrangemerges_32-7B-GGUF",
"mradermacher/Blitz-AI-DARE-v0.1-GGUF", # "mradermacher/M7Yamshadowexperiment28_Inex16Calme-GGUF",
"mradermacher/StrangeMerges_43-7B-dare_ties-GGUF", # "mradermacher/TinyLlama-1.1B-chat-dare-v1-GGUF",
"mradermacher/T3qm7xNeuralsirkrishna_Multi_verse_modelM7-GGUF", # "mradermacher/RuBit-LLama-63M-GGUF",
"mradermacher/Panoramix-7B-Instruct-v0.2-GGUF", # "mradermacher/Blitz-AI-DARE-v0.1-GGUF",
"mradermacher/NeuralKrishnaMath-7B-slerp-GGUF", # "mradermacher/StrangeMerges_43-7B-dare_ties-GGUF",
"mradermacher/NeuralsynthesisCalmexperiment-7B-GGUF", # "mradermacher/T3qm7xNeuralsirkrishna_Multi_verse_modelM7-GGUF",
"mradermacher/T3qm7Shadow-7B-GGUF", # "mradermacher/Panoramix-7B-Instruct-v0.2-GGUF",
"mradermacher/Juliet-Chat-mini-GGUF", # "mradermacher/NeuralKrishnaMath-7B-slerp-GGUF",
"mradermacher/MeliodasPercival_01_YamStrangemerges_32-GGUF", # "mradermacher/NeuralsynthesisCalmexperiment-7B-GGUF",
"mradermacher/ErisepBeagleNuBuRPInfinWestLakev2-IreneRP-Neural-7B-slerp-GGUF", # "mradermacher/T3qm7Shadow-7B-GGUF",
"mradermacher/Experiment26Yam_YamExperiment24-GGUF", # "mradermacher/Juliet-Chat-mini-GGUF",
"mradermacher/Experiment28M7_NeuralsirkrishnaExperiment26-GGUF", # "mradermacher/MeliodasPercival_01_YamStrangemerges_32-GGUF",
"mradermacher/Humanised-LLMv2-GGUF", # "mradermacher/ErisepBeagleNuBuRPInfinWestLakev2-IreneRP-Neural-7B-slerp-GGUF",
"mradermacher/Experiment26Neuralsirkrishna_YamPastiche-GGUF", # "mradermacher/Experiment26Yam_YamExperiment24-GGUF",
"mradermacher/EXALT-Baseline-GGUF", # "mradermacher/Experiment28M7_NeuralsirkrishnaExperiment26-GGUF",
"mradermacher/NeuralsirkrishnaShadow_Ognoexperiment27M7-GGUF", # "mradermacher/Humanised-LLMv2-GGUF",
"mradermacher/Meta-Llama-3-8B-Instruct_fictional_Korean_v1-GGUF", # "mradermacher/Experiment26Neuralsirkrishna_YamPastiche-GGUF",
"mradermacher/flammen20-mistral-7B-GGUF", # "mradermacher/EXALT-Baseline-GGUF",
"mradermacher/sec-mistral-7b-instruct-v2-GGUF", # "mradermacher/NeuralsirkrishnaShadow_Ognoexperiment27M7-GGUF",
"mradermacher/phillama-3.8b-v0.1-GGUF", # "mradermacher/Meta-Llama-3-8B-Instruct_fictional_Korean_v1-GGUF",
"mradermacher/YamshadowStrangemerges_32_YamStrangemerges_32-GGUF", # "mradermacher/flammen20-mistral-7B-GGUF",
"mradermacher/T3qm7xNeuralsirkrishna_Experiment31Experiment29-GGUF", # "mradermacher/sec-mistral-7b-instruct-v2-GGUF",
"mradermacher/Llama-2-7b-chat-hf_fictional_v2-GGUF", # "mradermacher/phillama-3.8b-v0.1-GGUF",
"mradermacher/SmartLlama-3-8B-MS-v0.1-GGUF", # "mradermacher/YamshadowStrangemerges_32_YamStrangemerges_32-GGUF",
"mradermacher/NeuralsynthesisT3qm7-7B-GGUF", # "mradermacher/T3qm7xNeuralsirkrishna_Experiment31Experiment29-GGUF",
"mradermacher/ClickbaitFighter-2B-GGUF", # "mradermacher/Llama-2-7b-chat-hf_fictional_v2-GGUF",
"mradermacher/Alphacode-MALI-9B-GGUF", # "mradermacher/SmartLlama-3-8B-MS-v0.1-GGUF",
"mradermacher/MeliodasPercival_01_Experiment26Experiment28-GGUF", # "mradermacher/NeuralsynthesisT3qm7-7B-GGUF",
"mradermacher/Wukong-Mistral-7B-v0.3-GGUF", # "mradermacher/ClickbaitFighter-2B-GGUF",
"mradermacher/YamshadowStrangemerges_32_Inex16Calme-GGUF", # "mradermacher/Alphacode-MALI-9B-GGUF",
"mradermacher/YamT3qm7xp_ShadowOgno-GGUF", # "mradermacher/MeliodasPercival_01_Experiment26Experiment28-GGUF",
"mradermacher/Ludwig_Orca_Orient-GGUF", # "mradermacher/Wukong-Mistral-7B-v0.3-GGUF",
"mradermacher/CosMoE-Lisa-4x1b-GGUF", # "mradermacher/YamshadowStrangemerges_32_Inex16Calme-GGUF",
"mradermacher/Experiment26T3qm7xp_Experiment26Strangemerges_30-GGUF", # "mradermacher/YamT3qm7xp_ShadowOgno-GGUF",
"mradermacher/OpenThaiGPT-100-instruct-finetuned-GGUF", # "mradermacher/Ludwig_Orca_Orient-GGUF",
"mradermacher/M7Yamshadowexperiment28_Experiment27Experiment24-GGUF", # "mradermacher/CosMoE-Lisa-4x1b-GGUF",
"mradermacher/Experiment28M7_Experiment26Yamshadow-GGUF", # "mradermacher/Experiment26T3qm7xp_Experiment26Strangemerges_30-GGUF",
"mradermacher/T3qm7xNeuralsirkrishna_Experiment27Experiment28-GGUF", # "mradermacher/OpenThaiGPT-100-instruct-finetuned-GGUF",
"mradermacher/YamshadowInex12_YamT3qm7x-GGUF", # "mradermacher/M7Yamshadowexperiment28_Experiment27Experiment24-GGUF",
"mradermacher/T3Q-Mistral-UB-DPO-v1.0-GGUF", # "mradermacher/Experiment28M7_Experiment26Yamshadow-GGUF",
# "mradermacher/T3qm7xNeuralsirkrishna_Experiment27Experiment28-GGUF",
# "mradermacher/YamshadowInex12_YamT3qm7x-GGUF",
# "mradermacher/T3Q-Mistral-UB-DPO-v1.0-GGUF",
"mradermacher/selfbiorag-7b-dpo-full-sft-wo-kqa_silver_wogold-GGUF", "mradermacher/selfbiorag-7b-dpo-full-sft-wo-kqa_silver_wogold-GGUF",
"mradermacher/NeuralKukedlc-7B-Labonned-GGUF", "mradermacher/NeuralKukedlc-7B-Labonned-GGUF",
"mradermacher/Calme-7B-Instruct-v0.9-GGUF", "mradermacher/Calme-7B-Instruct-v0.9-GGUF",
@@ -2347,13 +2485,16 @@ HEADERS = {"Content-Type": "application/json"}
# ══════════════════════════════════════════════════════════ # ══════════════════════════════════════════════════════════
_state = { _state = {
"strategy_id": STRATEGY_ID, "strategy_id": STRATEGY_ID,
"phase": "starting", # starting | running | done | error "phase": "starting", # starting | reserving | downloading | done | error
"total": len(ALL_MODEL_IDS), "total": len(ALL_MODEL_IDS),
"downloading": [], # 当前正在下载的模型 "downloading": [], # 当前正在下载的模型
"download_success": 0, "download_success": 0,
"download_failed": 0, "download_failed": 0,
"submitted": 0, # 成功提交的验证任务数hygon + bi150 "submitted": 0, # 成功提交的验证任务数hygon + bi150
"submit_failed": 0, "submit_failed": 0,
"bi150_usable": 0, # 启动筛查后仍可占位的零积分账号数
"reserved_bi150": 0, # 阶段一 bi150 占位成功数
"reserved_hygon": 0, # 阶段一 hygon 占位成功数
"started_at": None, "started_at": None,
"finished_at": None, "finished_at": None,
} }
@@ -2556,7 +2697,14 @@ ref_config:
print(f"✅ 测试任务提交成功! {model_id}", flush=True) print(f"✅ 测试任务提交成功! {model_id}", flush=True)
return True return True
else: else:
print(f"❌ 测试任务业务错误: {result.get('message')}", flush=True) msg = str(result.get("message") or "")
if QUOTA_FULL_MSG in msg:
# zhoukaile 额度打满,置位后占位阶段不再尝试 hygon
global _hygon_quota_full
_hygon_quota_full = True
print(f"⛔ hygon 提交账号额度已满,后续跳过 hygon 占位: {msg}", flush=True)
else:
print(f"❌ 测试任务业务错误: {msg}", flush=True)
return False return False
else: else:
print(f"❌ 测试任务 HTTP 错误: {resp.status_code} - {resp.text}", flush=True) print(f"❌ 测试任务 HTTP 错误: {resp.status_code} - {resp.text}", flush=True)
@@ -2568,10 +2716,12 @@ ref_config:
# ══════════════════════════════════════════════════════════ # ══════════════════════════════════════════════════════════
# 提交单个模型的测试任务 bi150 # 提交单个模型的测试任务 bi150
# ══════════════════════════════════════════════════════════ # ══════════════════════════════════════════════════════════
def submit_test_task_bi150(token: str, model_id: str) -> bool: def submit_test_task_bi150(model_id: str) -> bool:
auth_headers = {**HEADERS, "Authorization": f"Bearer {token}"} # 队列里所有零积分账号都已占到位就不再提交——每个账号占 1 个即达成目标
if _bi150_done():
return False
model_filename = get_model_filename(model_id) model_filename = get_model_filename(model_id)
gpu_type = "Iluvatar_bi-150" gpu_type = GPU_TYPE_BI150
config_content = f"""docker_image: git.modelhub.org.cn:9443/enginex-iluvatar/iluvatar-llama.cpp:b7516-bi150 config_content = f"""docker_image: git.modelhub.org.cn:9443/enginex-iluvatar/iluvatar-llama.cpp:b7516-bi150
nv_docker_image: harbor-contest.4pd.io/luxinlong02/llama-cpp:b7003-cuda-full-12.3 nv_docker_image: harbor-contest.4pd.io/luxinlong02/llama-cpp:b7003-cuda-full-12.3
framework: llamacpp framework: llamacpp
@@ -2589,36 +2739,36 @@ ref_config:
values: values:
command: ['/workspace/llama.cpp/build/bin/llama-server','--model', '/model/{model_filename}', '--alias', 'llm', '--threads', '20','--n-gpu-layers','128', '--ctx-size', '4096', '--host', '0.0.0.0', '--port', '8000', '--jinja', '--flash-attn', 'off'] command: ['/workspace/llama.cpp/build/bin/llama-server','--model', '/model/{model_filename}', '--alias', 'llm', '--threads', '20','--n-gpu-layers','128', '--ctx-size', '4096', '--host', '0.0.0.0', '--port', '8000', '--jinja', '--flash-attn', 'off']
""" """
task_data = { account, xc_token, from_list = _peek_bi150_account()
"contestApiToken": CONTEST_API_TOKEN, headers = {"Content-Type": "application/json", "xc-Token": xc_token}
"contributors": CONTRIBUTORS, payload = {
"gpuTypes": [gpu_type], "configParams": config_content,
"framework": "llamacpp",
"modelAddress": f"https://huggingface.co/{model_id}",
"targetGpu": gpu_type,
"taskType": TASK_TYPE, "taskType": TASK_TYPE,
"modelId": model_id, "strategyId": STRATEGY_ID, # 平台要求;若接口不支持该字段会被忽略
"strategyId": STRATEGY_ID, # 平台要求
"submissionConfig": [{
"config": config_content,
"gpuType": gpu_type,
"taskType": TASK_TYPE
}]
} }
print(f"📤 提交测试任务 (bi150): {model_id}", flush=True) print(f"📤 提交测试任务 (bi150, 机制B, 账号={account}): {model_id}", flush=True)
try: try:
resp = requests.post(BASE_URL + SUBMIT_TEST_TASK_ENDPOINT, json=task_data, headers=auth_headers, timeout=15) resp = requests.post(BASE_URL + ADD_TASK_ENDPOINT, headers=headers, json=payload, timeout=30)
if resp.status_code == 200: if resp.status_code == 200:
result = resp.json() result = resp.json()
if result.get("code") == 0: if result.get("code") == 0:
task_id = result.get("data", {}).get("taskId") # 只有真正提交成功才消耗这个账号的名额
print(f"✅ 测试任务提交成功! Task ID: {task_id}", flush=True) if from_list:
_commit_bi150_account()
print(f"✅ 测试任务提交成功! {model_id} (账号={account})", flush=True)
return True return True
else: else:
print(f"❌ 测试任务业务错误: {result.get('message')}", flush=True) # 失败不推进游标,名额留给下一个模型继续用这个账号
print(f"❌ 测试任务业务错误 (账号={account}): {result.get('message')}", flush=True)
return False return False
else: else:
print(f"❌ 测试任务 HTTP 错误: {resp.status_code} - {resp.text}", flush=True) print(f"❌ 测试任务 HTTP 错误 (账号={account}): {resp.status_code} - {resp.text}", flush=True)
return False return False
except Exception as e: except Exception as e:
print(f"💥 提交测试任务异常 ({model_id}): {e}", flush=True) print(f"💥 提交测试任务异常 ({model_id}, 账号={account}): {e}", flush=True)
return False return False
# ══════════════════════════════════════════════════════════ # ══════════════════════════════════════════════════════════
@@ -2635,11 +2785,71 @@ def _run_worker():
_state["phase"] = "error" _state["phase"] = "error"
return return
pending_models = list(ALL_MODEL_IDS) # 尚未开始下载的模型 # ══════════════════════════════════════════════════════
active_models: Set[str] = set() # 当前正在下载的模型 # 阶段一占位机制B瞬间完成不受下载队列制约
completed_results = {} # model_id -> status #
# 背景:下载队列 /adminApi/async/task/model-download-task 的【读取】对
# 所有账号开放(连最低权限的 xc-Token 小号都能翻),所以我方 WAITING 中
# 的模型ID 会暴露给所有人。对手看到后用机制B抢先占位——机制B不要求模型
# 已下载,任务会挂着等文件;等我方 zhoushasha 把模型下载完,他的任务立刻
# 开跑并验证成功,我方反而因「一个模型一张卡只能一个账号」而撞 60028。
#
# 对策:把提交挪到下载【之前】。先占位再下载,下载队列即使被爬也没用。
# 触发的 adminProxy 代下载很慢无所谓——我方自己的下载会先完成。
# ══════════════════════════════════════════════════════
_state["phase"] = "reserving"
_init_bi150_queue()
print(f"🚀 总共 {len(pending_models)} 个模型待下载。最大并发数: {MAX_CONCURRENT_DOWNLOADS}\n", flush=True) reserved_models = [] # 占位成功、需要下载的模型(按占位顺序)
print(f"\n🔒 阶段一占位bi150 待占位账号 {len(_bi150_pending)} 个)\n", flush=True)
for model_id in ALL_MODEL_IDS:
if _shutdown.is_set():
break
if _bi150_done() and _hygon_quota_full:
print("🔒 bi150 占位已全部完成,且 hygon 额度已满,占位阶段结束", flush=True)
break
got = False
# bi150用还没有 bi150 任务的零积分账号逐个占位
if not _bi150_done():
if submit_test_task_bi150(model_id):
_state["submitted"] += 1
_state["reserved_bi150"] += 1
got = True
else:
_state["submit_failed"] += 1
# hygon固定用 zhoukaile同样是机制B占位
if not _hygon_quota_full:
if submit_test_task(model_id):
_state["submitted"] += 1
_state["reserved_hygon"] += 1
got = True
else:
_state["submit_failed"] += 1
if got:
reserved_models.append(model_id)
print(
f"\n🔒 占位阶段完成bi150={_state['reserved_bi150']} "
f"hygon={_state['reserved_hygon']} "
f"待下载模型={len(reserved_models)}\n",
flush=True,
)
# ══════════════════════════════════════════════════════
# 阶段二下载机制Azhoushasha8 并发)
# 只下载已经占到位的模型——这些位置已经是我方的,下载完即可开跑验证
# ══════════════════════════════════════════════════════
_state["phase"] = "downloading"
pending_models = list(reserved_models) # 尚未开始下载的模型
active_models: Set[str] = set() # 当前正在下载的模型
completed_results = {} # model_id -> status
print(f"🚀 阶段二:下载 {len(pending_models)} 个已占位模型。最大并发数: {MAX_CONCURRENT_DOWNLOADS}\n", flush=True)
while (pending_models or active_models) and not _shutdown.is_set(): while (pending_models or active_models) and not _shutdown.is_set():
# 1. 检查活跃任务状态 # 1. 检查活跃任务状态
@@ -2653,20 +2863,8 @@ def _run_worker():
print(f"⏹️ {model_id} 完成,状态: {status}", flush=True) print(f"⏹️ {model_id} 完成,状态: {status}", flush=True)
if status == "SUCCESS": if status == "SUCCESS":
_state["download_success"] += 1 _state["download_success"] += 1
# 下载成功后立即提交该模型的验证任务 # 验证任务已在阶段一占位完成,下载落地后平台会自动开跑,这里无需再提交
if submit_test_task(model_id): print(f"🎯 {model_id} 下载完成,已占位的验证任务可以开跑了", flush=True)
_state["submitted"] += 1
print(f"🧪 已为 {model_id} 提交 hygon 验证任务", flush=True)
else:
_state["submit_failed"] += 1
print(f"⚠️ {model_id} hygon 验证任务提交失败", flush=True)
# if submit_test_task_bi150(token, model_id):
# _state["submitted"] += 1
# print(f"🧪 已为 {model_id} 提交 bi150 验证任务", flush=True)
# else:
# _state["submit_failed"] += 1
# print(f"⚠️ {model_id} bi150 验证任务提交失败", flush=True)
else: else:
_state["download_failed"] += 1 _state["download_failed"] += 1