4 Commits

Author SHA1 Message Date
fb5e1079a8 Refresh GGUF download batch and fail closed on expired token 2026-10-08 19:13:45 +08:00
9ebc1f3666 update GGUF download batch to 370 models 2026-10-01 18:05:49 +08:00
78f8b5ad82 requeue downloads rejected for platform concurrency instead of discarding them
v2.3.0 burned through all 498 models in minutes with download_failed=498: the
platform already had 8 downloads running, every create returned "用户最多同时运行
8 个下载任务", and the worker treated a create failure as terminal (CREATE_FAILED)
and moved on.

Now a concurrency rejection puts the model back at the head of the queue and
waits for the next poll, so only genuine per-model failures (uniqueness check,
etc.) are recorded as failed.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-18 16:01:42 +08:00
251f21ac8f add DOWNLOAD_ONLY mode: run zhoushasha downloads without submitting any validation task
All 498 models in the current list already had their hygon and bi150 slots
reserved in earlier rounds, so this round only needs the downloads. Without a
switch the download list would be empty, since phase 2 only downloads models
reserved in the same run.

DOWNLOAD_ONLY skips the reservation phase entirely and downloads all of
ALL_MODEL_IDS. Also splits the worker into _reserve_phase / _download_phase and
gates bi150 behind ENABLE_BI150_SUBMIT for symmetry with hygon.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-18 15:56:45 +08:00
2 changed files with 370 additions and 310 deletions

View File

@@ -1,13 +1,12 @@
# xc_validation_strategy_gguf
GGUF 模型下载 + 验证任务提交流水线策略服务:批量创建 GGUF 模型下载任务(最大并发 8),
每个模型下载成功后立即提交 hygon / bi150 两个验证任务,之后保持 HTTP 服务存活供平台探活。
本版本为纯下载策略:使用 `zhoushasha` 账号批量创建 `main.py` 中未注释的 GGUF 模型下载任务(最大并发 8),不提交验证任务;之后保持 HTTP 服务存活供平台探活。
## 功能
- 自动登录 ModelHub 获取 Token(失败时回退到预设 Token)
- 启动时登录 ModelHub 获取新 Token,并检查账号身份及有效期;登录失败时停止,不回退到过期 Token
- 按流水线批量创建 GGUF 模型下载任务(HuggingFace 源,最大并发 8)
- 每个模型下载成功后,立即提交 hygon_k100-ai 与 Iluvatar_bi-150 两个验证任务(llamacpp 框架)
- 当前 `DOWNLOAD_ONLY=True`,不调用验证任务提交接口;验证任务由其他策略负责
- 下载成功的模型 ID 写入 `downloaded_success_models.txt`
- 暴露 `/health` 和 `/status` 接口满足平台运行时契约
@@ -15,7 +14,7 @@ GGUF 模型下载 + 验证任务提交流水线策略服务:批量创建 GGUF
```
.
├── main.py # 主入口:HTTP 服务 + 下载/提交流水线
├── main.py # 主入口:HTTP 服务 + 纯下载流程
├── Dockerfile # 平台镜像构建配置
├── requirements.txt # Python 依赖
└── downloaded_success_models.txt # 运行后自动生成,记录下载成功的模型

671
main.py
View File

@@ -8,11 +8,13 @@ GGUF 模型下载 + 验证任务提交流水线(部署框架与 xc_validation_
同时暴露 /health(K8s 探活)和 /status(运行状态)。
"""
import base64
import json
import os
import re
import signal
import threading
import time
from datetime import datetime
from http.server import BaseHTTPRequestHandler, ThreadingHTTPServer
from typing import List, Set, Tuple
@@ -29,23 +31,29 @@ SUBMIT_TEST_TASK_ENDPOINT = "/adminApi/async/task/create-contest-task"
ADD_TASK_ENDPOINT = "/api/adapt/task/add" # 机制B(xc-Token 认证),hygon 验证任务改走这个
# 登录账号(下载任务仍用这个账号,不受下面 hygon 提交账号切换的影响):
# 启动时优先用账号密码换取新 token(流水线运行时间长,预设 token 可能过期)
# 每次启动都登录获取新 Token;登录失败时停止,不使用过期凭据。
USER_ACCOUNT = "zhoushasha@4paradigm.com"
USER_PASSWORD = "ganshenme0"
# 通过 curl -X POST https://modelhub.org.cn/adminApi/user/login 获取后填入(登录失败时的回退)
AUTH_TOKEN = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyQWNjb3VudCI6Inpob3VzaGFzaGEiLCJpZCI6MTQsInVzZXJSb2xlIjoibGVhZGVyYm9hcmQiLCJleHAiOjE3OTAxNDU2NDYsImlhdCI6MTc4OTU0MDg0Nn0.PY0e46UY9YDvl_PNvn9Zv-WyvkaTbYngScbwyw-cWMg"
# hygon_k100-ai 验证任务走机制B(xc-Token),固定用 l11223344 提交
HYGON_SUBMIT_ACCOUNT = "zhoukaile"
HYGON_XC_TOKEN = "bd7c52f3b9604ef48a14dd6174513935"
# ── 本轮开关 ────────────────────────────────────────────────
# 纯下载模式:当前 498 个模型的 hygon 和 bi150 都已经在前几轮提前占位完成,
# 本轮只用 zhoushasha 跑下载任务,不再提交任何验证任务。
# 开启后会【跳过整个占位阶段】,直接下载 ALL_MODEL_IDS 里的全部模型。
# 换新模型列表时改回 False,并把下面两个 ENABLE_* 打开。
DOWNLOAD_ONLY = True
# hygon 已经用 zhoukaile 把当前模型列表(498个)从头交到最后一个了,
# 再交只会全部撞 60028,所以本轮关掉 hygon,只补 bi150,让两张卡覆盖对齐。
# 下次换新模型列表时把它改回 True。
# 再交只会全部撞 60028。下次换新模型列表时把它改回 True。
ENABLE_HYGON_SUBMIT = False
# bi150 已由 34 个零积分小号 + zhangyuanxi 兜底占位完成(v2.2.0 补了 436 个)。
# 下次换新模型列表时把它改回 True。
ENABLE_BI150_SUBMIT = False
# bi150 兜底账号:零积分小号(每个只占1个)用完之后,
# 剩余模型的 bi150 统一用这个账号提交。
# 用独立账号而不是 zhoukaile,避免和 hygon 抢同一个账号的额度。
@@ -106,6 +114,9 @@ TASK_PAGE_ENDPOINT = "/api/adapt/task/page"
QUOTA_FULL_MSG = "当前等待中或运行中的异步模型验证任务数量已达上限"
_hygon_quota_full = False # zhoukaile 额度是否已打满
_bi150_quota_full = False # bi150 兜底账号额度是否已打满
# 平台下载并发上限提示(错误码 60005);命中时把模型放回队列重试而不是丢弃
DOWNLOAD_BUSY_MSG = "个下载任务"
_download_busy = False
GPU_TYPE_HYGON = "hygon_k100-ai"
GPU_TYPE_BI150 = "Iluvatar_bi-150"
@@ -837,266 +848,276 @@ ALL_MODEL_IDS = [
# "mradermacher/YamshadowInex12_YamT3qm7x-GGUF",
# "mradermacher/T3Q-Mistral-UB-DPO-v1.0-GGUF",
#### 上面的已下载已提交 "hygon_k100-ai" 和 "Iluvatar_bi-150" ########################################################################
#### 然后上面的 交到 Ascend_910-b4 上面了,应该还能交 b3、mthread,都是 f16 的,已经交了 #####################################################
"mradermacher/selfbiorag-7b-dpo-full-sft-wo-kqa_silver_wogold-GGUF",
"mradermacher/NeuralKukedlc-7B-Labonned-GGUF",
"mradermacher/Calme-7B-Instruct-v0.9-GGUF",
"mradermacher/saul-mistral-instruct-v0.1-7b-ties-GGUF",
"mradermacher/FuseChat-7B-TA-GGUF",
"mradermacher/M7Yamshadowexperiment28_Experiment26Experiment28-GGUF",
"mradermacher/Percival_01Experiment26-7B-GGUF",
"mradermacher/Llama-3-8B-Instruct-ortho-baukit-GGUF",
"mradermacher/llama2-diagnoseme-all-GGUF",
"mradermacher/StrangeMerges_37-7B-dare_ties-GGUF",
"mradermacher/YamshadowInex12_Percival_01Shadow-GGUF",
"mradermacher/M7Yamshadowexperiment28_AlloyingotneoyExperiment26-GGUF",
"mradermacher/Barcenas-8b-Juridico-Mexicano-GGUF",
"mradermacher/dolphin-star-GGUF",
"mradermacher/Mistral-7B-v0.1-Llama-3.1-8B-mix-GGUF",
"mradermacher/Meta-Llama-3-8B-Instruct_fictional_French_v1-GGUF",
"mradermacher/YamshadowStrangemerges_32_T3qm7xpT3q-GGUF",
"mradermacher/Experiment28T3q_AlloyingotneoyYam-GGUF",
"mradermacher/WestBeagle-7B-GGUF",
"mradermacher/T3qInex12-7B-GGUF",
"mradermacher/YamshadowInex12_Experiment31Experiment29-GGUF",
"mradermacher/NeuralsirkrishnaShadow_ShadowExperiment24-GGUF",
"mradermacher/kunoichi-squared-model_stock-7B-GGUF",
"mradermacher/EXAONESumm-3.0-7.8B-Instruct-GGUF",
"mradermacher/Infinite-Laymons-7B-GGUF",
"mradermacher/Experiment28M7_Experiment26Inex12-GGUF",
"mradermacher/IsenHumour-GGUF",
"mradermacher/english2nepalitranslate-GGUF",
"mradermacher/M7T3qm7xp_Experiment26T3qm7xp-GGUF",
"mradermacher/Saul-Base-Clown-7B-Instruct-slerp-GGUF",
"mradermacher/NeuralsirkrishnaShadow_AlloyingotneoyInex12-GGUF",
"mradermacher/Experiment28M7_Experiment24Shadow-GGUF",
"mradermacher/MeliodasPercival_01_Experiment28Meliodas-GGUF",
"mradermacher/Thespis-Krangled-7b-v2-GGUF",
"mradermacher/OGSQL-Mistral-7B-GGUF",
"mradermacher/Experiment28T3q_Ognoexperiment27Multi_verse_model-GGUF",
"mradermacher/FinetunedOnAya-GGUF",
"mradermacher/YamT3qm7xp_Inex12Strangemerges_30-GGUF",
"mradermacher/Padma-v7.0-GGUF",
"mradermacher/Experiment26Neuralsirkrishna_Ognoexperiment27M7-GGUF",
"mradermacher/DPA-v1-Mistral-7B-GGUF",
"mradermacher/MeliodasPercival_01_Experiment24Inex12-GGUF",
"mradermacher/Yamshadowexperiment28M70.8-0.49-0.98-0.33-0.09-0.16-7B-GGUF",
"mradermacher/Llama-3-SLERP-8B-GGUF",
"mradermacher/DialoGPT-medium-Sarah-GGUF",
"mradermacher/mistral-7b-instruct-v0.1-review-toxicity-GGUF",
"mradermacher/Obelix-Phi2-v0-GGUF",
"mradermacher/T3qm7xExperiment28-7B-GGUF",
"mradermacher/ShortCircuit-GGUF",
"mradermacher/Experiment28M7_ShadowNeuralsirkrishna-GGUF",
"mradermacher/MeliodasPercival_01_NeuralsirkrishnaExperiment28-GGUF",
"mradermacher/Experiment28T3q_ShadowOgno-GGUF",
"mradermacher/NeuralsirkrishnaShadow_Strangemerges_32Experiment28-GGUF",
"mradermacher/iq-code-evmind-v1-llama3-code-8b-instruct-GGUF",
"mradermacher/LimaRP-daybreak-7B-GGUF",
"mradermacher/llama3-8B-simOrca-lgalclause-inverted-persuasion-slerp-fp16-GGUF",
"mradermacher/research_paper_extractor-GGUF",
"mradermacher/L3.1-8B-Niitama-v1.1-GGUF",
"mradermacher/Experiment28M7_Neuralsirkrishnaexperiment26Experiment24-GGUF",
"mradermacher/orpo-phi2-GGUF",
"mradermacher/haryra-7b-mistral-id-GGUF",
"mradermacher/African-ultrachat-alpaca-GGUF",
"mradermacher/Cyber_assist3.2-GGUF",
"mradermacher/Strangemerges_32T3qm7xp-7B-GGUF",
"mradermacher/Nous-Hermes-2-DPO_into_Nous_Hermes-2-Pro-GGUF",
"mradermacher/YamshadowInex12_Experiment27Experiment29-GGUF",
"mradermacher/Not-WizardLM-2-7B-GGUF",
"mradermacher/T3qm7xPercival_01-7B-GGUF",
"mradermacher/JSL-Med-Sft-Llama-3-8B-GGUF",
"mradermacher/I-Heart_sft_1.0-GGUF",
"mradermacher/MeliodasPercival_01_ShadowYamshadow-GGUF",
"mradermacher/YamshadowInex12_Experiment26Neuralsirkrishna-GGUF",
"mradermacher/Prometheus-v0.2-GGUF",
"mradermacher/gemma-it-Kannada-Translation-GGUF",
"mradermacher/YamshadowStrangemerges_32_T3qM7-GGUF",
"mradermacher/CosMoEAlpacaLisa-4x1b-GGUF",
"mradermacher/Nous-Hermes-2-Pro_into_Nous_Hermes-2-DPO-GGUF",
"mradermacher/YamshadowInex12_Experiment24Alloyingotneoy-GGUF",
"mradermacher/MeliodasPercival_01_Experiment24Experiment26-GGUF",
"mradermacher/llama-3-slerp-dolphin-sauce-8B-GGUF",
"mradermacher/MeliodasPercival_01_Experiment27Shadow-GGUF",
"mradermacher/karasu-livejupiter-v0.1-GGUF",
"mradermacher/gemma-2b-telugu-base-GGUF",
"mradermacher/NeuralsirkrishnaShadow_Experiment26Strangemerges_30-GGUF",
"mradermacher/physiogemma-2b-GGUF",
"mradermacher/M7Yamshadowexperiment28_Experiment24Yam-GGUF",
"mradermacher/YamshadowStrangemerges_32_Experiment28Yam-GGUF",
"mradermacher/Nous-Hermes-2-Mixtral-8x7B-DPO-2-GGUF",
"mradermacher/Experiment28M7_Strangemerges_32Shadow-GGUF",
"mradermacher/Meta-Llama-3-8B-Instruct_fictional_arc_Italian_v2-GGUF",
"mradermacher/WeniGPT-Agents-Mistral-1.0.6-SFT-1.0.3-DPO-merged-GGUF",
"mradermacher/NeuralsirkrishnaShadow_ShadowCalme-GGUF",
"mradermacher/YamshadowInex12_ShadowNeuralsirkrishna-GGUF",
"mradermacher/Antler-RP-ja-westlake-chatvector-GGUF",
"mradermacher/YamshadowInex12_Experiment26Inex12-GGUF",
"mradermacher/M7Yamshadowexperiment28_Experiment28Experiment24-GGUF",
"mradermacher/NeuralsirkrishnaShadow_Experiment28Experiment29-GGUF",
"mradermacher/Mistralchat-7B-slerp-GGUF",
"mradermacher/MistralMerge-7B-stock-GGUF",
"mradermacher/Llama-3-MopeyMule-Blackroot-8B-GGUF",
"mradermacher/Delexa-Instruct-V0.1-7b-GGUF",
"mradermacher/cendol-llama2-7b-inst-GGUF",
"mradermacher/llama-3-8b-Instruct-OpenHermes-2.5-QLoRA-GGUF",
"mradermacher/Llama-3-8B-Instruct-v0.7-GGUF",
"mradermacher/Swallow-MS-7b-v0.1-ChatSkill-LAB-Evo-v0.1-GGUF",
"mradermacher/Ognoexperiment27multi_verse_modelCalmexperiment-7B-GGUF",
"mradermacher/Ognoexperiment27multi_verse_modelExperiment27pastiche-7B-GGUF",
"mradermacher/M7Yamshadowexperiment28_AlloyingotneoyExperiment24-GGUF",
"mradermacher/Experiment28T3q_Experiment26Pastiche-GGUF",
"mradermacher/DeepCode-7B-Aurora-v13-GGUF",
"mradermacher/Medical_QandA-GGUF",
"mradermacher/NeuralKrishna-7B-v3-GGUF",
"mradermacher/T3qm7xNeuralsirkrishna_OgnoExperiment27-GGUF",
"mradermacher/YamshadowInex12_Experiment26Experiment28-GGUF",
"mradermacher/Experiment28M7_YamT3qm7x-GGUF",
"mradermacher/OpenCerebrum-1.5-Mistral-7B-v0.2-beta-GGUF",
"mradermacher/Experiment28M7_Inex12Neural-GGUF",
"mradermacher/Experiment28T3q_Experiment29Pastiche-GGUF",
"mradermacher/BilingualChildEmoEC-GGUF",
"mradermacher/Neural-4-QA-7b-v0.2-GGUF",
"mradermacher/Aurora_faustus-8B-LINEAR-GGUF",
"mradermacher/Experiment26Neuralsirkrishna_Experiment27Experiment28-GGUF",
"mradermacher/NM-ELV-4000-VAL-QL-241224-GGUF",
"mradermacher/blossom-v2-3b-GGUF",
"mradermacher/Phi-3-mini-4k-instruct-dansk-GGUF",
"mradermacher/ahinsa0.6-llama3.2-3B-GGUF",
"mradermacher/Meta-Llama-3-8B-Instruct_fictional_arc_Chinese_v1-GGUF",
"mradermacher/Mistral-7B-v0.3-sft-SPIN-human-dataset-GGUF",
"mradermacher/Fortitude-GGUF",
"mradermacher/rewrite-3B-tesla-GGUF",
"mradermacher/QvQ-1B-Preview-GGUF",
"mradermacher/Phi-3-mini-128k-instruct-ft-v2-GGUF",
"mradermacher/martinLLM-phi-4b-128k-GGUF",
"mradermacher/llama-3-2-3B-wame-curi-chat2-GGUF",
"mradermacher/Nemotron-Picaro-fp16-GGUF",
"mradermacher/ZEUS-8B-V10-GGUF",
"mradermacher/Human-gemma-2b-GGUF",
"mradermacher/KAErisepBeagleNuBuRPInfinWestLakev2-ENDLESSIreneRP-Neural-7B-slerp-GGUF",
"mradermacher/Mistral-7B-v0.1-chat-ORPO-GGUF",
"mradermacher/herbalism_v2-GGUF",
"mradermacher/CriticalThinker-llama-3.1-8B-GGUF",
"mradermacher/BilingualChildrenEmo-GGUF",
"mradermacher/Mistral-7B-v0.3-sft-SPIN-self-human-dataset-GGUF",
"mradermacher/FineLlama-3.2-3B-Instruct-ead-GGUF",
"mradermacher/OrpoLlama-3.2-3B-GGUF",
"mradermacher/maximusLLM-phi-4b-128k-GGUF",
"mradermacher/Wisenut-3.1-8B-IC-SFT-GGUF",
"mradermacher/Espresso-AI-GGUF",
"mradermacher/Llama-3.1-8B-sft-SPIN-self-human-dataset-GGUF",
"mradermacher/rewrite-7B-tesla-GGUF",
"mradermacher/Tulu-MathLingo-8B-GGUF",
"mradermacher/tongyi-model-v1.5-1b-enth-GGUF",
"mradermacher/occiglot-7b-fr-en-instruct-hf-GGUF",
"mradermacher/Gemma-2-9B-sft-SPIN-human-dataset-GGUF",
"mradermacher/L3.1-Magnusv2-10B-GGUF",
"mradermacher/Gemma-2-9B-sft-SPIN-self-GGUF",
"mradermacher/opencsg-starcoder2-3b-v0.1-GGUF",
"mradermacher/M7Yamshadowexperiment28_Experiment26Strangemerges_32-GGUF",
"mradermacher/J.O.S.I.E.3-Beta4-slerp-GGUF",
"mradermacher/MT1-Gen5-GP-gemma-2-S4S2-9B-GGUF",
"mradermacher/lora-phi2-alpaca-GGUF",
"mradermacher/MT1-Gen5-MU-gemma-2-S2Qv1-9B-GGUF",
"mradermacher/zephyr-7b-beta-sr-system-do-GGUF",
"mradermacher/LynxMed-GGUF",
"mradermacher/Fortitude-1.0-342M-GGUF",
"mradermacher/GPT-2-Cu_FT-V1-GGUF",
"mradermacher/stackexchange_blender-GGUF",
"mradermacher/stackexchange_chess-GGUF",
"mradermacher/stackexchange_cstheory-GGUF",
"mradermacher/LynxMed2.0-GGUF",
"mradermacher/Llama-3.2-3b-Me-GGUF",
"mradermacher/stackexchange_cseducators-GGUF",
"mradermacher/Llama-3.1-8B-sft-SPIN-Llama-3.1-70B-Instruct-GGUF",
"mradermacher/Llama-3.1-8B-sft-SPIN-gpt4o-GGUF",
"mradermacher/stackexchange_bioinformatics-GGUF",
"mradermacher/stackexchange_astronomy-GGUF",
"mradermacher/stackexchange_chemistry-GGUF",
"mradermacher/stackexchange_cooking-GGUF",
"mradermacher/II-Tulu-8B-DPO-v3-GGUF",
"mradermacher/Text-Scrutiny-LLM-GGUF",
"mradermacher/awelitoLLM-phi-4b-128k-GGUF",
"mradermacher/tongyi-model-v2.0-1b-th-GGUF",
"mradermacher/waka-0.5b-simpo-GGUF",
"mradermacher/KRONOS-8B-V7-GGUF",
"mradermacher/stackexchange_biology-GGUF",
"mradermacher/stackexchange_cogsci-GGUF",
"mradermacher/AetherGemma-GGUF",
"mradermacher/Gemma-2-9B-sft-SPIN-gpt4o-GGUF",
"mradermacher/Gemma-2-9B-sft-SPIN-Gemma-2-27B-GGUF",
"mradermacher/Gemma-The-Writer-Mighty-Sword-9B-GGUF",
"mradermacher/Gemma-2-9B-sft-SPIN-self-human-dataset-GGUF",
"mradermacher/MT1-Gen5-BMMIMU-gemma-2-9B-GGUF",
"mradermacher/MT1-Gen5-IF-gemma-2-S2DMv1-9B-GGUF",
"mradermacher/K2S3-Mistral-7b-v1.2-GGUF",
"mradermacher/Nexus-IKM-Mistral-7B-MLX-GGUF",
"mradermacher/YamshadowStrangemerges_32_Inex12Neural-GGUF",
"mradermacher/DialoGPT-medium-janeOrthros-GGUF",
"mradermacher/T3qm7xNeuralsirkrishna-7B-GGUF",
"mradermacher/L2-7b-Base-Guanaco-Uncensored-GGUF",
"mradermacher/MT1-Gen5-BB-gemma-2-S4Av4d-9B-GGUF",
# "mradermacher/selfbiorag-7b-dpo-full-sft-wo-kqa_silver_wogold-GGUF",
# "mradermacher/NeuralKukedlc-7B-Labonned-GGUF",
# "mradermacher/Calme-7B-Instruct-v0.9-GGUF",
# "mradermacher/saul-mistral-instruct-v0.1-7b-ties-GGUF",
# "mradermacher/FuseChat-7B-TA-GGUF",
# "mradermacher/M7Yamshadowexperiment28_Experiment26Experiment28-GGUF",
# "mradermacher/Percival_01Experiment26-7B-GGUF",
# "mradermacher/Llama-3-8B-Instruct-ortho-baukit-GGUF",
# "mradermacher/llama2-diagnoseme-all-GGUF",
# "mradermacher/StrangeMerges_37-7B-dare_ties-GGUF",
# "mradermacher/YamshadowInex12_Percival_01Shadow-GGUF",
# "mradermacher/M7Yamshadowexperiment28_AlloyingotneoyExperiment26-GGUF",
# "mradermacher/Barcenas-8b-Juridico-Mexicano-GGUF",
# "mradermacher/dolphin-star-GGUF",
# "mradermacher/Mistral-7B-v0.1-Llama-3.1-8B-mix-GGUF",
# "mradermacher/Meta-Llama-3-8B-Instruct_fictional_French_v1-GGUF",
# "mradermacher/YamshadowStrangemerges_32_T3qm7xpT3q-GGUF",
# "mradermacher/Experiment28T3q_AlloyingotneoyYam-GGUF",
# "mradermacher/WestBeagle-7B-GGUF",
# "mradermacher/T3qInex12-7B-GGUF",
# "mradermacher/YamshadowInex12_Experiment31Experiment29-GGUF",
# "mradermacher/NeuralsirkrishnaShadow_ShadowExperiment24-GGUF",
# "mradermacher/kunoichi-squared-model_stock-7B-GGUF",
# "mradermacher/EXAONESumm-3.0-7.8B-Instruct-GGUF",
# "mradermacher/Infinite-Laymons-7B-GGUF",
# "mradermacher/Experiment28M7_Experiment26Inex12-GGUF",
# "mradermacher/IsenHumour-GGUF",
# "mradermacher/english2nepalitranslate-GGUF",
# "mradermacher/M7T3qm7xp_Experiment26T3qm7xp-GGUF",
# "mradermacher/Saul-Base-Clown-7B-Instruct-slerp-GGUF",
# "mradermacher/NeuralsirkrishnaShadow_AlloyingotneoyInex12-GGUF",
# "mradermacher/Experiment28M7_Experiment24Shadow-GGUF",
# "mradermacher/MeliodasPercival_01_Experiment28Meliodas-GGUF",
# "mradermacher/Thespis-Krangled-7b-v2-GGUF",
# "mradermacher/OGSQL-Mistral-7B-GGUF",
# "mradermacher/Experiment28T3q_Ognoexperiment27Multi_verse_model-GGUF",
# "mradermacher/FinetunedOnAya-GGUF",
# "mradermacher/YamT3qm7xp_Inex12Strangemerges_30-GGUF",
# "mradermacher/Padma-v7.0-GGUF",
# "mradermacher/Experiment26Neuralsirkrishna_Ognoexperiment27M7-GGUF",
# "mradermacher/DPA-v1-Mistral-7B-GGUF",
# "mradermacher/MeliodasPercival_01_Experiment24Inex12-GGUF",
# "mradermacher/Yamshadowexperiment28M70.8-0.49-0.98-0.33-0.09-0.16-7B-GGUF",
# "mradermacher/Llama-3-SLERP-8B-GGUF",
# "mradermacher/DialoGPT-medium-Sarah-GGUF",
# "mradermacher/mistral-7b-instruct-v0.1-review-toxicity-GGUF",
# "mradermacher/Obelix-Phi2-v0-GGUF",
# "mradermacher/T3qm7xExperiment28-7B-GGUF",
# "mradermacher/ShortCircuit-GGUF",
# "mradermacher/Experiment28M7_ShadowNeuralsirkrishna-GGUF",
# "mradermacher/MeliodasPercival_01_NeuralsirkrishnaExperiment28-GGUF",
# "mradermacher/Experiment28T3q_ShadowOgno-GGUF",
# "mradermacher/NeuralsirkrishnaShadow_Strangemerges_32Experiment28-GGUF",
# "mradermacher/iq-code-evmind-v1-llama3-code-8b-instruct-GGUF",
# "mradermacher/LimaRP-daybreak-7B-GGUF",
# "mradermacher/llama3-8B-simOrca-lgalclause-inverted-persuasion-slerp-fp16-GGUF",
# "mradermacher/research_paper_extractor-GGUF",
# "mradermacher/L3.1-8B-Niitama-v1.1-GGUF",
# "mradermacher/Experiment28M7_Neuralsirkrishnaexperiment26Experiment24-GGUF",
# "mradermacher/orpo-phi2-GGUF",
# "mradermacher/haryra-7b-mistral-id-GGUF",
# "mradermacher/African-ultrachat-alpaca-GGUF",
# "mradermacher/Cyber_assist3.2-GGUF",
# "mradermacher/Strangemerges_32T3qm7xp-7B-GGUF",
# "mradermacher/Nous-Hermes-2-DPO_into_Nous_Hermes-2-Pro-GGUF",
# "mradermacher/YamshadowInex12_Experiment27Experiment29-GGUF",
# "mradermacher/Not-WizardLM-2-7B-GGUF",
# "mradermacher/T3qm7xPercival_01-7B-GGUF",
# "mradermacher/JSL-Med-Sft-Llama-3-8B-GGUF",
# "mradermacher/I-Heart_sft_1.0-GGUF",
# "mradermacher/MeliodasPercival_01_ShadowYamshadow-GGUF",
# "mradermacher/YamshadowInex12_Experiment26Neuralsirkrishna-GGUF",
# "mradermacher/Prometheus-v0.2-GGUF",
# "mradermacher/gemma-it-Kannada-Translation-GGUF",
# "mradermacher/YamshadowStrangemerges_32_T3qM7-GGUF",
# "mradermacher/CosMoEAlpacaLisa-4x1b-GGUF",
# "mradermacher/Nous-Hermes-2-Pro_into_Nous_Hermes-2-DPO-GGUF",
# "mradermacher/YamshadowInex12_Experiment24Alloyingotneoy-GGUF",
# "mradermacher/MeliodasPercival_01_Experiment24Experiment26-GGUF",
# "mradermacher/llama-3-slerp-dolphin-sauce-8B-GGUF",
# "mradermacher/MeliodasPercival_01_Experiment27Shadow-GGUF",
# "mradermacher/karasu-livejupiter-v0.1-GGUF",
# "mradermacher/gemma-2b-telugu-base-GGUF",
# "mradermacher/NeuralsirkrishnaShadow_Experiment26Strangemerges_30-GGUF",
# "mradermacher/physiogemma-2b-GGUF",
# "mradermacher/M7Yamshadowexperiment28_Experiment24Yam-GGUF",
# "mradermacher/YamshadowStrangemerges_32_Experiment28Yam-GGUF",
# "mradermacher/Nous-Hermes-2-Mixtral-8x7B-DPO-2-GGUF",
# "mradermacher/Experiment28M7_Strangemerges_32Shadow-GGUF",
# "mradermacher/Meta-Llama-3-8B-Instruct_fictional_arc_Italian_v2-GGUF",
# "mradermacher/WeniGPT-Agents-Mistral-1.0.6-SFT-1.0.3-DPO-merged-GGUF",
# "mradermacher/NeuralsirkrishnaShadow_ShadowCalme-GGUF",
# "mradermacher/YamshadowInex12_ShadowNeuralsirkrishna-GGUF",
# "mradermacher/Antler-RP-ja-westlake-chatvector-GGUF",
# "mradermacher/YamshadowInex12_Experiment26Inex12-GGUF",
# "mradermacher/M7Yamshadowexperiment28_Experiment28Experiment24-GGUF",
# "mradermacher/NeuralsirkrishnaShadow_Experiment28Experiment29-GGUF",
# "mradermacher/Mistralchat-7B-slerp-GGUF",
# "mradermacher/MistralMerge-7B-stock-GGUF",
# "mradermacher/Llama-3-MopeyMule-Blackroot-8B-GGUF",
# "mradermacher/Delexa-Instruct-V0.1-7b-GGUF",
# "mradermacher/cendol-llama2-7b-inst-GGUF",
# "mradermacher/llama-3-8b-Instruct-OpenHermes-2.5-QLoRA-GGUF",
# "mradermacher/Llama-3-8B-Instruct-v0.7-GGUF",
# "mradermacher/Swallow-MS-7b-v0.1-ChatSkill-LAB-Evo-v0.1-GGUF",
# "mradermacher/Ognoexperiment27multi_verse_modelCalmexperiment-7B-GGUF",
# "mradermacher/Ognoexperiment27multi_verse_modelExperiment27pastiche-7B-GGUF",
# "mradermacher/M7Yamshadowexperiment28_AlloyingotneoyExperiment24-GGUF",
# "mradermacher/Experiment28T3q_Experiment26Pastiche-GGUF",
# "mradermacher/DeepCode-7B-Aurora-v13-GGUF",
# "mradermacher/Medical_QandA-GGUF",
# "mradermacher/NeuralKrishna-7B-v3-GGUF",
# "mradermacher/T3qm7xNeuralsirkrishna_OgnoExperiment27-GGUF",
# "mradermacher/YamshadowInex12_Experiment26Experiment28-GGUF",
# "mradermacher/Experiment28M7_YamT3qm7x-GGUF",
# "mradermacher/OpenCerebrum-1.5-Mistral-7B-v0.2-beta-GGUF",
# "mradermacher/Experiment28M7_Inex12Neural-GGUF",
# "mradermacher/Experiment28T3q_Experiment29Pastiche-GGUF",
# "mradermacher/BilingualChildEmoEC-GGUF",
# "mradermacher/Neural-4-QA-7b-v0.2-GGUF",
# "mradermacher/Aurora_faustus-8B-LINEAR-GGUF",
# "mradermacher/Experiment26Neuralsirkrishna_Experiment27Experiment28-GGUF",
# "mradermacher/NM-ELV-4000-VAL-QL-241224-GGUF",
# "mradermacher/blossom-v2-3b-GGUF",
# "mradermacher/Phi-3-mini-4k-instruct-dansk-GGUF",
# "mradermacher/ahinsa0.6-llama3.2-3B-GGUF",
# "mradermacher/Meta-Llama-3-8B-Instruct_fictional_arc_Chinese_v1-GGUF",
# "mradermacher/Mistral-7B-v0.3-sft-SPIN-human-dataset-GGUF",
# "mradermacher/Fortitude-GGUF",
# "mradermacher/rewrite-3B-tesla-GGUF",
# "mradermacher/QvQ-1B-Preview-GGUF",
# "mradermacher/Phi-3-mini-128k-instruct-ft-v2-GGUF",
# "mradermacher/martinLLM-phi-4b-128k-GGUF",
# "mradermacher/llama-3-2-3B-wame-curi-chat2-GGUF",
# "mradermacher/Nemotron-Picaro-fp16-GGUF",
# "mradermacher/ZEUS-8B-V10-GGUF",
# "mradermacher/Human-gemma-2b-GGUF",
# "mradermacher/KAErisepBeagleNuBuRPInfinWestLakev2-ENDLESSIreneRP-Neural-7B-slerp-GGUF",
# "mradermacher/Mistral-7B-v0.1-chat-ORPO-GGUF",
# "mradermacher/herbalism_v2-GGUF",
# "mradermacher/CriticalThinker-llama-3.1-8B-GGUF",
# "mradermacher/BilingualChildrenEmo-GGUF",
# "mradermacher/Mistral-7B-v0.3-sft-SPIN-self-human-dataset-GGUF",
# "mradermacher/FineLlama-3.2-3B-Instruct-ead-GGUF",
# "mradermacher/OrpoLlama-3.2-3B-GGUF",
# "mradermacher/maximusLLM-phi-4b-128k-GGUF",
# "mradermacher/Wisenut-3.1-8B-IC-SFT-GGUF",
# "mradermacher/Espresso-AI-GGUF",
# "mradermacher/Llama-3.1-8B-sft-SPIN-self-human-dataset-GGUF",
# "mradermacher/rewrite-7B-tesla-GGUF",
# "mradermacher/Tulu-MathLingo-8B-GGUF",
# "mradermacher/tongyi-model-v1.5-1b-enth-GGUF",
# "mradermacher/occiglot-7b-fr-en-instruct-hf-GGUF",
# "mradermacher/Gemma-2-9B-sft-SPIN-human-dataset-GGUF",
# "mradermacher/L3.1-Magnusv2-10B-GGUF",
# "mradermacher/Gemma-2-9B-sft-SPIN-self-GGUF",
# "mradermacher/opencsg-starcoder2-3b-v0.1-GGUF",
# "mradermacher/M7Yamshadowexperiment28_Experiment26Strangemerges_32-GGUF",
# "mradermacher/J.O.S.I.E.3-Beta4-slerp-GGUF",
# "mradermacher/MT1-Gen5-GP-gemma-2-S4S2-9B-GGUF",
# "mradermacher/lora-phi2-alpaca-GGUF",
# "mradermacher/MT1-Gen5-MU-gemma-2-S2Qv1-9B-GGUF",
# "mradermacher/zephyr-7b-beta-sr-system-do-GGUF",
# "mradermacher/LynxMed-GGUF",
# "mradermacher/Fortitude-1.0-342M-GGUF",
# "mradermacher/GPT-2-Cu_FT-V1-GGUF",
# "mradermacher/stackexchange_blender-GGUF",
# "mradermacher/stackexchange_chess-GGUF",
# "mradermacher/stackexchange_cstheory-GGUF",
# "mradermacher/LynxMed2.0-GGUF",
# "mradermacher/Llama-3.2-3b-Me-GGUF",
# "mradermacher/stackexchange_cseducators-GGUF",
# "mradermacher/Llama-3.1-8B-sft-SPIN-Llama-3.1-70B-Instruct-GGUF",
# "mradermacher/Llama-3.1-8B-sft-SPIN-gpt4o-GGUF",
# "mradermacher/stackexchange_bioinformatics-GGUF",
# "mradermacher/stackexchange_astronomy-GGUF",
# "mradermacher/stackexchange_chemistry-GGUF",
# "mradermacher/stackexchange_cooking-GGUF",
# "mradermacher/II-Tulu-8B-DPO-v3-GGUF",
# "mradermacher/Text-Scrutiny-LLM-GGUF",
# "mradermacher/awelitoLLM-phi-4b-128k-GGUF",
# "mradermacher/tongyi-model-v2.0-1b-th-GGUF",
# "mradermacher/waka-0.5b-simpo-GGUF",
# "mradermacher/KRONOS-8B-V7-GGUF",
# "mradermacher/stackexchange_biology-GGUF",
# "mradermacher/stackexchange_cogsci-GGUF",
# "mradermacher/AetherGemma-GGUF",
# "mradermacher/Gemma-2-9B-sft-SPIN-gpt4o-GGUF",
# "mradermacher/Gemma-2-9B-sft-SPIN-Gemma-2-27B-GGUF",
# "mradermacher/Gemma-The-Writer-Mighty-Sword-9B-GGUF",
# "mradermacher/Gemma-2-9B-sft-SPIN-self-human-dataset-GGUF",
# "mradermacher/MT1-Gen5-BMMIMU-gemma-2-9B-GGUF",
# "mradermacher/MT1-Gen5-IF-gemma-2-S2DMv1-9B-GGUF",
# "mradermacher/K2S3-Mistral-7b-v1.2-GGUF",
# "mradermacher/Nexus-IKM-Mistral-7B-MLX-GGUF",
# "mradermacher/YamshadowStrangemerges_32_Inex12Neural-GGUF",
# "mradermacher/DialoGPT-medium-janeOrthros-GGUF",
# "mradermacher/T3qm7xNeuralsirkrishna-7B-GGUF",
# "mradermacher/L2-7b-Base-Guanaco-Uncensored-GGUF",
# "mradermacher/MT1-Gen5-BB-gemma-2-S4Av4d-9B-GGUF",
# "mradermacher/MT1-Gen5-IMU-gemma-2-9B-GGUF",
# "mradermacher/MT1-Gen5-MAG-gemma-2-9B-GGUF",
# "mradermacher/MiniLLM-1.1B-WithWudao-GGUF",
# "mradermacher/saul-zephyr-7b-ties-GGUF",
# "mradermacher/social-llama-7b-alpha-v2-GGUF",
# "mradermacher/MT1-Gen5-gemma-2-9B-GGUF",
# "mradermacher/YamshadowStrangemerges_32_Experiment27Experiment28-GGUF",
# "mradermacher/OpenArabic_v0.3-GGUF",
# "mradermacher/T3qT3qm7-7B-GGUF",
# "mradermacher/Skywork-o1-Open-Llama-3.1-8B-GGUF",
# "mradermacher/T3qm7xpExperiment26-7B-GGUF",
# "mradermacher/MT1-Gen5-MM-gemma-2-Av4dS4-9B-GGUF",
# "mradermacher/saiga-7b-GGUF",
# "mradermacher/Experiment26Yamshadow_Experiment28Inex12-GGUF",
# "mradermacher/MasherAI-7B-v5-GGUF",
# "mradermacher/LadybirdPercival-7B-slerp-GGUF",
# "mradermacher/Neural-Dark-Waifu-GGUF",
# "mradermacher/M7Yamshadowexperiment28_Experiment28T3q-GGUF",
# "mradermacher/Mistral-7B-Instruct-v0.2-MultiTask-v7-GGUF",
# "mradermacher/saul-mistral-v0.1-7b-slerp-GGUF",
# "mradermacher/Alma-medical-GGUF",
# "mradermacher/ShadowYamshadow_Strangemerges_30Pastiche-GGUF",
# "mradermacher/WeniGPT-Agents-Mistral-1.0.7-SFT-merged-GGUF",
# "mradermacher/YamshadowInex12_YamExperiment28-GGUF",
# "mradermacher/YamshadowInex12_Experiment28Experiment26-GGUF",
# "mradermacher/Llama-3-8B-Instruct-Physics-5k-Scar-GGUF",
# "mradermacher/NeuralsirkrishnaShadow_Strangemerges_32Ogno-GGUF",
# "mradermacher/NeuralsirkrishnaShadow_Inex12Yam-GGUF",
# "mradermacher/llama-2-7b-allyarc-v2.3-GGUF",
# "mradermacher/T3qm7xNeuralsirkrishna_Experiment24Shadow-GGUF",
# "mradermacher/MetaMathOctopus-MAPO-DPO-7B-GGUF",
# "mradermacher/tinyllama-assamese-v0.1-GGUF",
# "mradermacher/Satoshi-7B-GGUF",
# "mradermacher/Mistral-7-from-Mixtral-8x7B-v0.1-GGUF",
# "mradermacher/ErisepBeagleNuBuRPInfinWestLakev2-ENDLESSIreneRP-Neural-7B-slerp-GGUF",
# "mradermacher/ko-gemma-1.1-7b-GGUF",
# "mradermacher/TinySolar-248m-4k-code-instruct-GGUF",
# "mradermacher/karasu-1.1B-slerp_reverse-GGUF",
# "mradermacher/Swallow-MS-7b-v0.1-ChatSkill-LAB-Evo-v0.12-GGUF",
# "mradermacher/TowerInstruct-7B-v0.2-sr-system-do-GGUF",
# "mradermacher/BioMistral-MedicalQA-FT-GGUF",
# "mradermacher/SonyaKAErisepBeagleNuBuRPInfinWestLakev2-ENDLESSIreneRP-Neural-7B-slerp-GGUF",
# "mradermacher/VerwaltungsAnthologie_Disco_simbad_7B-GGUF",
# "mradermacher/Eris_PrimeV4.1-Remix-7B-GGUF",
# "mradermacher/JSL-MedMNX-7B-v2.0-GGUF",
# "mradermacher/YuisekinAI-mistral-0.3B-GGUF",
# "mradermacher/selfbiorag-7b-dpo-full-wo-kqa_silver_wogold-ep3-GGUF",
# "mradermacher/Experiment26Yamshadow_PasticheNeuralsirkrishna-GGUF",
# "mradermacher/Yamshadowexperiment28M70.81-0.36-0.63-1.0-0.79-0.74-7B-GGUF",
# "mradermacher/KUJIRA_Stock_1-GGUF",
# "mradermacher/llama3-tamil-finetuned-base-v1-GGUF",
# "mradermacher/occiglot-7b-de-es-fr-it-en-instruct-dareties-GGUF",
# "mradermacher/DAML4_TLDR_Generator-GGUF",
# "mradermacher/InfinityFlammenNoodleRP-7b-GGUF",
# "mradermacher/Jason1903_SLERP-GGUF",
# "mradermacher/JP-EN-Translator-2K-steps-7B-GGUF",
# "mradermacher/YamshadowStrangemerges_32_AlloyingotneoyExperiment28-GGUF",
"mradermacher/MT1-Gen5-IMU-gemma-2-9B-GGUF",
"mradermacher/MT1-Gen5-MAG-gemma-2-9B-GGUF",
"mradermacher/MiniLLM-1.1B-WithWudao-GGUF",
"mradermacher/saul-zephyr-7b-ties-GGUF",
"mradermacher/social-llama-7b-alpha-v2-GGUF",
"mradermacher/MT1-Gen5-gemma-2-9B-GGUF",
"mradermacher/YamshadowStrangemerges_32_Experiment27Experiment28-GGUF",
"mradermacher/OpenArabic_v0.3-GGUF",
"mradermacher/T3qT3qm7-7B-GGUF",
"mradermacher/Skywork-o1-Open-Llama-3.1-8B-GGUF",
"mradermacher/T3qm7xpExperiment26-7B-GGUF",
"mradermacher/MT1-Gen5-MM-gemma-2-Av4dS4-9B-GGUF",
"mradermacher/saiga-7b-GGUF",
"mradermacher/Experiment26Yamshadow_Experiment28Inex12-GGUF",
"mradermacher/MasherAI-7B-v5-GGUF",
"mradermacher/LadybirdPercival-7B-slerp-GGUF",
"mradermacher/Neural-Dark-Waifu-GGUF",
"mradermacher/M7Yamshadowexperiment28_Experiment28T3q-GGUF",
"mradermacher/Mistral-7B-Instruct-v0.2-MultiTask-v7-GGUF",
"mradermacher/saul-mistral-v0.1-7b-slerp-GGUF",
"mradermacher/Alma-medical-GGUF",
"mradermacher/ShadowYamshadow_Strangemerges_30Pastiche-GGUF",
"mradermacher/WeniGPT-Agents-Mistral-1.0.7-SFT-merged-GGUF",
"mradermacher/YamshadowInex12_YamExperiment28-GGUF",
"mradermacher/YamshadowInex12_Experiment28Experiment26-GGUF",
"mradermacher/Llama-3-8B-Instruct-Physics-5k-Scar-GGUF",
"mradermacher/NeuralsirkrishnaShadow_Strangemerges_32Ogno-GGUF",
"mradermacher/NeuralsirkrishnaShadow_Inex12Yam-GGUF",
"mradermacher/llama-2-7b-allyarc-v2.3-GGUF",
"mradermacher/T3qm7xNeuralsirkrishna_Experiment24Shadow-GGUF",
"mradermacher/MetaMathOctopus-MAPO-DPO-7B-GGUF",
"mradermacher/tinyllama-assamese-v0.1-GGUF",
"mradermacher/Satoshi-7B-GGUF",
"mradermacher/Mistral-7-from-Mixtral-8x7B-v0.1-GGUF",
"mradermacher/ErisepBeagleNuBuRPInfinWestLakev2-ENDLESSIreneRP-Neural-7B-slerp-GGUF",
"mradermacher/ko-gemma-1.1-7b-GGUF",
"mradermacher/TinySolar-248m-4k-code-instruct-GGUF",
"mradermacher/karasu-1.1B-slerp_reverse-GGUF",
"mradermacher/Swallow-MS-7b-v0.1-ChatSkill-LAB-Evo-v0.12-GGUF",
"mradermacher/TowerInstruct-7B-v0.2-sr-system-do-GGUF",
"mradermacher/BioMistral-MedicalQA-FT-GGUF",
"mradermacher/SonyaKAErisepBeagleNuBuRPInfinWestLakev2-ENDLESSIreneRP-Neural-7B-slerp-GGUF",
"mradermacher/VerwaltungsAnthologie_Disco_simbad_7B-GGUF",
"mradermacher/Eris_PrimeV4.1-Remix-7B-GGUF",
"mradermacher/JSL-MedMNX-7B-v2.0-GGUF",
"mradermacher/YuisekinAI-mistral-0.3B-GGUF",
"mradermacher/selfbiorag-7b-dpo-full-wo-kqa_silver_wogold-ep3-GGUF",
"mradermacher/Experiment26Yamshadow_PasticheNeuralsirkrishna-GGUF",
"mradermacher/Yamshadowexperiment28M70.81-0.36-0.63-1.0-0.79-0.74-7B-GGUF",
"mradermacher/KUJIRA_Stock_1-GGUF",
"mradermacher/llama3-tamil-finetuned-base-v1-GGUF",
"mradermacher/occiglot-7b-de-es-fr-it-en-instruct-dareties-GGUF",
"mradermacher/DAML4_TLDR_Generator-GGUF",
"mradermacher/InfinityFlammenNoodleRP-7b-GGUF",
"mradermacher/Jason1903_SLERP-GGUF",
"mradermacher/JP-EN-Translator-2K-steps-7B-GGUF",
"mradermacher/YamshadowStrangemerges_32_AlloyingotneoyExperiment28-GGUF",
"mradermacher/llama-2-7b-ft-guanaco-v2-GGUF",
"mradermacher/Experiment26Yam_PasticheAlloyingotneoy-GGUF",
"mradermacher/Experiment26Neuralsirkrishna_Experiment28Inex12-GGUF",
@@ -1338,10 +1359,12 @@ ALL_MODEL_IDS = [
"mradermacher/MT4-Gen5-MUMM-gemma-2-9B-GGUF",
"mradermacher/Therapod-Model-GGUF",
"mradermacher/Yamshadowexperiment28M70.15-0.01-0.79-0.31-0.16-0.95-7B-GGUF",
#### 这一段有提前占位提交 zhoukaile, zhangyuanxi, 然后等待 zhoushasha 的账号去下载,但是应该都是提交的 bi150 以及 hygon
#### 提前占位依然可以交 b3\b4\mthread,已经交了占位提交
### 下面的 model 先注释掉,没有提前占位提交 ##############################################################################################
### 下面的 model 先注释掉,没有提前占位提交, 也没有提交下载 ##############################################################################################
# "mradermacher/PESTO-llama-base-GGUF",
# "mradermacher/JaskierMistral-7B-slerp-GGUF",
# "mradermacher/TSN-Kosmos-EVAA-v2-8B-GGUF",
@@ -2598,21 +2621,25 @@ def get_model_filename(model_id: str) -> str:
return base_name
# ══════════════════════════════════════════════════════════
# 登录获取 token(失败时回退到预设 AUTH_TOKEN)
# 登录获取有效的 zhoushasha Token
# ══════════════════════════════════════════════════════════
def login() -> str:
payload = {"userAccount": USER_ACCOUNT, "userPassword": USER_PASSWORD}
print("[login] 正在登录...", flush=True)
try:
resp = requests.post(BASE_URL + LOGIN_ENDPOINT, headers=HEADERS, json=payload, timeout=15)
data = resp.json()
if resp.status_code == 200 and data.get("code") == 0:
print("[login] 登录成功", flush=True)
return data["data"]["token"]
print(f"[login] 登录失败: {data.get('message')},回退使用预设 Token", flush=True)
except Exception as e:
print(f"[login] 登录异常: {e},回退使用预设 Token", flush=True)
return AUTH_TOKEN
resp = requests.post(BASE_URL + LOGIN_ENDPOINT, headers=HEADERS, json=payload, timeout=15)
resp.raise_for_status()
data = resp.json()
token = (data.get("data") or {}).get("token")
if data.get("code") != 0 or not token:
raise RuntimeError(f"zhoushasha 登录失败: {data.get('message')}")
encoded_claims = token.split(".")[1]
claims = json.loads(base64.urlsafe_b64decode(encoded_claims + "=" * (-len(encoded_claims) % 4)))
if claims.get("userAccount") != "zhoushasha":
raise RuntimeError("登录返回的 Token 不属于 zhoushasha,停止下载提交")
if int(claims.get("exp") or 0) <= time.time():
raise RuntimeError("登录返回的 Token 已过期,停止下载提交")
print("[login] zhoushasha 登录成功,Token 有效", flush=True)
return token
# ══════════════════════════════════════════════════════════
# 创建单个模型的下载任务
@@ -2636,7 +2663,14 @@ def create_download_task(token: str, model_id: str) -> bool:
print(f"✅ 下载任务已提交: {model_id}", flush=True)
return True
else:
print(f"⚠️ 下载任务业务失败 ({model_id}): {data.get('message')}", flush=True)
msg = str(data.get("message") or "")
if DOWNLOAD_BUSY_MSG in msg:
# 平台侧下载并发已满,不是这个模型的问题,稍后重试
global _download_busy
_download_busy = True
print(f"⏸️ 下载并发已满,稍后重试 ({model_id})", flush=True)
else:
print(f"⚠️ 下载任务业务失败 ({model_id}): {msg}", flush=True)
return False
else:
print(f"❌ HTTP 错误 ({model_id}): {resp.status_code} - {resp.text}", flush=True)
@@ -2823,28 +2857,63 @@ def _run_worker():
# 对策:把提交挪到下载【之前】。先占位再下载,下载队列即使被爬也没用。
# 触发的 adminProxy 代下载很慢无所谓——我方自己的下载会先完成。
# ══════════════════════════════════════════════════════
_state["phase"] = "reserving"
_init_bi150_queue()
reserved_models = [] # 占位成功、需要下载的模型(按占位顺序)
print(
f"\n🔒 阶段一:占位(bi150 零积分待占位账号 {len(_bi150_pending)} 个,"
f"用完后兜底账号={BI150_FALLBACK_ACCOUNT};"
f"hygon={'启用' if ENABLE_HYGON_SUBMIT else '本轮关闭'})\n",
flush=True,
)
if DOWNLOAD_ONLY:
# 纯下载模式:占位已在前几轮完成,直接下载全部模型
reserved_models = list(ALL_MODEL_IDS)
print(
f"\n⏭️ 纯下载模式(DOWNLOAD_ONLY=True):跳过占位阶段,"
f"直接下载全部 {len(reserved_models)} 个模型,不提交任何验证任务\n",
flush=True,
)
else:
_state["phase"] = "reserving"
_init_bi150_queue()
print(
f"\n🔒 阶段一:占位(bi150 零积分待占位账号 {len(_bi150_pending)} 个,"
f"用完后兜底账号={BI150_FALLBACK_ACCOUNT},"
f"bi150={'启用' if ENABLE_BI150_SUBMIT else '关闭'};"
f"hygon={'启用' if ENABLE_HYGON_SUBMIT else '关闭'})\n",
flush=True,
)
_reserve_phase(reserved_models)
print(
f"\n🔒 占位阶段完成:bi150={_state['reserved_bi150']} "
f"hygon={_state['reserved_hygon']} "
f"待下载模型={len(reserved_models)}\n",
flush=True,
)
# ══════════════════════════════════════════════════════
# 阶段二:下载(机制A,zhoushasha,8 并发)
# 只下载已占到位的模型——这些位置已经是我方的,下载完即可开跑验证
# ══════════════════════════════════════════════════════
_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)
_download_phase(token, pending_models, active_models, completed_results)
def _reserve_phase(reserved_models: List[str]) -> None:
"""阶段一:占位(机制B)。结果追加到 reserved_models。"""
for model_id in ALL_MODEL_IDS:
if _shutdown.is_set():
break
if _bi150_quota_full and (_hygon_quota_full or not ENABLE_HYGON_SUBMIT):
bi_done = _bi150_quota_full or not ENABLE_BI150_SUBMIT
hy_done = _hygon_quota_full or not ENABLE_HYGON_SUBMIT
if bi_done and hy_done:
print("🔒 bi150 与 hygon 均已无额度可用,占位阶段结束", flush=True)
break
got = False
# bi150:先用还没有 bi150 任务的零积分账号,用完后走兜底账号
if not _bi150_quota_full:
if ENABLE_BI150_SUBMIT and not _bi150_quota_full:
if submit_test_task_bi150(model_id):
_state["submitted"] += 1
_state["reserved_bi150"] += 1
@@ -2864,24 +2933,9 @@ def _run_worker():
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,
)
# ══════════════════════════════════════════════════════
# 阶段二:下载(机制A,zhoushasha,8 并发)
# 只下载已经占到位的模型——这些位置已经是我方的,下载完即可开跑验证
# ══════════════════════════════════════════════════════
_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)
def _download_phase(token, pending_models, active_models, completed_results) -> None:
"""阶段二:下载(机制A,zhoushasha)。"""
while (pending_models or active_models) and not _shutdown.is_set():
# 1. 检查活跃任务状态
for model_id in list(active_models):
@@ -2900,13 +2954,20 @@ def _run_worker():
_state["download_failed"] += 1
# 2. 补充新任务(最多补到 MAX_CONCURRENT_DOWNLOADS 个)
global _download_busy
_download_busy = False
while len(active_models) < MAX_CONCURRENT_DOWNLOADS and pending_models and not _shutdown.is_set():
next_model = pending_models.pop(0)
if create_download_task(token, next_model):
active_models.add(next_model)
print(f"▶️ 启动下载: {next_model} (当前活跃: {len(active_models)})", flush=True)
elif _download_busy:
# 平台下载并发已满:放回队首等下一轮重试,不能当成失败丢弃,
# 否则整个列表会在几分钟内被空转消耗光(v2.3.0 曾因此 498 个全部“失败”)
pending_models.insert(0, next_model)
break
else:
# 创建失败也视为完成(避免卡住)
# 模型本身的问题(如唯一性检查不通过),视为完成,避免卡住
completed_results[next_model] = "CREATE_FAILED"
_state["download_failed"] += 1
print(f"❌ 创建失败: {next_model}", flush=True)