1 Commits

Author SHA1 Message Date
fb5e1079a8 Refresh GGUF download batch and fail closed on expired token 2026-10-08 19:13:45 +08:00
2 changed files with 158 additions and 150 deletions

View File

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

299
main.py
View File

@@ -8,11 +8,13 @@ GGUF 模型下载 + 验证任务提交流水线(部署框架与 xc_validation_
同时暴露 /health(K8s 探活)和 /status(运行状态)。 同时暴露 /health(K8s 探活)和 /status(运行状态)。
""" """
import base64
import json import json
import os import os
import re import re
import signal import signal
import threading import threading
import time
from datetime import datetime from datetime import datetime
from http.server import BaseHTTPRequestHandler, ThreadingHTTPServer from http.server import BaseHTTPRequestHandler, ThreadingHTTPServer
from typing import List, Set, Tuple from typing import List, Set, Tuple
@@ -29,13 +31,10 @@ SUBMIT_TEST_TASK_ENDPOINT = "/adminApi/async/task/create-contest-task"
ADD_TASK_ENDPOINT = "/api/adapt/task/add" # 机制B(xc-Token 认证),hygon 验证任务改走这个 ADD_TASK_ENDPOINT = "/api/adapt/task/add" # 机制B(xc-Token 认证),hygon 验证任务改走这个
# 登录账号(下载任务仍用这个账号,不受下面 hygon 提交账号切换的影响): # 登录账号(下载任务仍用这个账号,不受下面 hygon 提交账号切换的影响):
# 启动时优先用账号密码换取新 token(流水线运行时间长,预设 token 可能过期) # 每次启动都登录获取新 Token;登录失败时停止,不使用过期凭据。
USER_ACCOUNT = "zhoushasha@4paradigm.com" USER_ACCOUNT = "zhoushasha@4paradigm.com"
USER_PASSWORD = "ganshenme0" 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_k100-ai 验证任务走机制B(xc-Token),固定用 l11223344 提交
HYGON_SUBMIT_ACCOUNT = "zhoukaile" HYGON_SUBMIT_ACCOUNT = "zhoukaile"
HYGON_XC_TOKEN = "bd7c52f3b9604ef48a14dd6174513935" HYGON_XC_TOKEN = "bd7c52f3b9604ef48a14dd6174513935"
@@ -983,136 +982,142 @@ ALL_MODEL_IDS = [
# "mradermacher/ahinsa0.6-llama3.2-3B-GGUF", # "mradermacher/ahinsa0.6-llama3.2-3B-GGUF",
# "mradermacher/Meta-Llama-3-8B-Instruct_fictional_arc_Chinese_v1-GGUF", # "mradermacher/Meta-Llama-3-8B-Instruct_fictional_arc_Chinese_v1-GGUF",
# "mradermacher/Mistral-7B-v0.3-sft-SPIN-human-dataset-GGUF", # "mradermacher/Mistral-7B-v0.3-sft-SPIN-human-dataset-GGUF",
"mradermacher/Fortitude-GGUF", # "mradermacher/Fortitude-GGUF",
"mradermacher/rewrite-3B-tesla-GGUF", # "mradermacher/rewrite-3B-tesla-GGUF",
"mradermacher/QvQ-1B-Preview-GGUF", # "mradermacher/QvQ-1B-Preview-GGUF",
"mradermacher/Phi-3-mini-128k-instruct-ft-v2-GGUF", # "mradermacher/Phi-3-mini-128k-instruct-ft-v2-GGUF",
"mradermacher/martinLLM-phi-4b-128k-GGUF", # "mradermacher/martinLLM-phi-4b-128k-GGUF",
"mradermacher/llama-3-2-3B-wame-curi-chat2-GGUF", # "mradermacher/llama-3-2-3B-wame-curi-chat2-GGUF",
"mradermacher/Nemotron-Picaro-fp16-GGUF", # "mradermacher/Nemotron-Picaro-fp16-GGUF",
"mradermacher/ZEUS-8B-V10-GGUF", # "mradermacher/ZEUS-8B-V10-GGUF",
"mradermacher/Human-gemma-2b-GGUF", # "mradermacher/Human-gemma-2b-GGUF",
"mradermacher/KAErisepBeagleNuBuRPInfinWestLakev2-ENDLESSIreneRP-Neural-7B-slerp-GGUF", # "mradermacher/KAErisepBeagleNuBuRPInfinWestLakev2-ENDLESSIreneRP-Neural-7B-slerp-GGUF",
"mradermacher/Mistral-7B-v0.1-chat-ORPO-GGUF", # "mradermacher/Mistral-7B-v0.1-chat-ORPO-GGUF",
"mradermacher/herbalism_v2-GGUF", # "mradermacher/herbalism_v2-GGUF",
"mradermacher/CriticalThinker-llama-3.1-8B-GGUF", # "mradermacher/CriticalThinker-llama-3.1-8B-GGUF",
"mradermacher/BilingualChildrenEmo-GGUF", # "mradermacher/BilingualChildrenEmo-GGUF",
"mradermacher/Mistral-7B-v0.3-sft-SPIN-self-human-dataset-GGUF", # "mradermacher/Mistral-7B-v0.3-sft-SPIN-self-human-dataset-GGUF",
"mradermacher/FineLlama-3.2-3B-Instruct-ead-GGUF", # "mradermacher/FineLlama-3.2-3B-Instruct-ead-GGUF",
"mradermacher/OrpoLlama-3.2-3B-GGUF", # "mradermacher/OrpoLlama-3.2-3B-GGUF",
"mradermacher/maximusLLM-phi-4b-128k-GGUF", # "mradermacher/maximusLLM-phi-4b-128k-GGUF",
"mradermacher/Wisenut-3.1-8B-IC-SFT-GGUF", # "mradermacher/Wisenut-3.1-8B-IC-SFT-GGUF",
"mradermacher/Espresso-AI-GGUF", # "mradermacher/Espresso-AI-GGUF",
"mradermacher/Llama-3.1-8B-sft-SPIN-self-human-dataset-GGUF", # "mradermacher/Llama-3.1-8B-sft-SPIN-self-human-dataset-GGUF",
"mradermacher/rewrite-7B-tesla-GGUF", # "mradermacher/rewrite-7B-tesla-GGUF",
"mradermacher/Tulu-MathLingo-8B-GGUF", # "mradermacher/Tulu-MathLingo-8B-GGUF",
"mradermacher/tongyi-model-v1.5-1b-enth-GGUF", # "mradermacher/tongyi-model-v1.5-1b-enth-GGUF",
"mradermacher/occiglot-7b-fr-en-instruct-hf-GGUF", # "mradermacher/occiglot-7b-fr-en-instruct-hf-GGUF",
"mradermacher/Gemma-2-9B-sft-SPIN-human-dataset-GGUF", # "mradermacher/Gemma-2-9B-sft-SPIN-human-dataset-GGUF",
"mradermacher/L3.1-Magnusv2-10B-GGUF", # "mradermacher/L3.1-Magnusv2-10B-GGUF",
"mradermacher/Gemma-2-9B-sft-SPIN-self-GGUF", # "mradermacher/Gemma-2-9B-sft-SPIN-self-GGUF",
"mradermacher/opencsg-starcoder2-3b-v0.1-GGUF", # "mradermacher/opencsg-starcoder2-3b-v0.1-GGUF",
"mradermacher/M7Yamshadowexperiment28_Experiment26Strangemerges_32-GGUF", # "mradermacher/M7Yamshadowexperiment28_Experiment26Strangemerges_32-GGUF",
"mradermacher/J.O.S.I.E.3-Beta4-slerp-GGUF", # "mradermacher/J.O.S.I.E.3-Beta4-slerp-GGUF",
"mradermacher/MT1-Gen5-GP-gemma-2-S4S2-9B-GGUF", # "mradermacher/MT1-Gen5-GP-gemma-2-S4S2-9B-GGUF",
"mradermacher/lora-phi2-alpaca-GGUF", # "mradermacher/lora-phi2-alpaca-GGUF",
"mradermacher/MT1-Gen5-MU-gemma-2-S2Qv1-9B-GGUF", # "mradermacher/MT1-Gen5-MU-gemma-2-S2Qv1-9B-GGUF",
"mradermacher/zephyr-7b-beta-sr-system-do-GGUF", # "mradermacher/zephyr-7b-beta-sr-system-do-GGUF",
"mradermacher/LynxMed-GGUF", # "mradermacher/LynxMed-GGUF",
"mradermacher/Fortitude-1.0-342M-GGUF", # "mradermacher/Fortitude-1.0-342M-GGUF",
"mradermacher/GPT-2-Cu_FT-V1-GGUF", # "mradermacher/GPT-2-Cu_FT-V1-GGUF",
"mradermacher/stackexchange_blender-GGUF", # "mradermacher/stackexchange_blender-GGUF",
"mradermacher/stackexchange_chess-GGUF", # "mradermacher/stackexchange_chess-GGUF",
"mradermacher/stackexchange_cstheory-GGUF", # "mradermacher/stackexchange_cstheory-GGUF",
"mradermacher/LynxMed2.0-GGUF", # "mradermacher/LynxMed2.0-GGUF",
"mradermacher/Llama-3.2-3b-Me-GGUF", # "mradermacher/Llama-3.2-3b-Me-GGUF",
"mradermacher/stackexchange_cseducators-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-Llama-3.1-70B-Instruct-GGUF",
"mradermacher/Llama-3.1-8B-sft-SPIN-gpt4o-GGUF", # "mradermacher/Llama-3.1-8B-sft-SPIN-gpt4o-GGUF",
"mradermacher/stackexchange_bioinformatics-GGUF", # "mradermacher/stackexchange_bioinformatics-GGUF",
"mradermacher/stackexchange_astronomy-GGUF", # "mradermacher/stackexchange_astronomy-GGUF",
"mradermacher/stackexchange_chemistry-GGUF", # "mradermacher/stackexchange_chemistry-GGUF",
"mradermacher/stackexchange_cooking-GGUF", # "mradermacher/stackexchange_cooking-GGUF",
"mradermacher/II-Tulu-8B-DPO-v3-GGUF", # "mradermacher/II-Tulu-8B-DPO-v3-GGUF",
"mradermacher/Text-Scrutiny-LLM-GGUF", # "mradermacher/Text-Scrutiny-LLM-GGUF",
"mradermacher/awelitoLLM-phi-4b-128k-GGUF", # "mradermacher/awelitoLLM-phi-4b-128k-GGUF",
"mradermacher/tongyi-model-v2.0-1b-th-GGUF", # "mradermacher/tongyi-model-v2.0-1b-th-GGUF",
"mradermacher/waka-0.5b-simpo-GGUF", # "mradermacher/waka-0.5b-simpo-GGUF",
"mradermacher/KRONOS-8B-V7-GGUF", # "mradermacher/KRONOS-8B-V7-GGUF",
"mradermacher/stackexchange_biology-GGUF", # "mradermacher/stackexchange_biology-GGUF",
"mradermacher/stackexchange_cogsci-GGUF", # "mradermacher/stackexchange_cogsci-GGUF",
"mradermacher/AetherGemma-GGUF", # "mradermacher/AetherGemma-GGUF",
"mradermacher/Gemma-2-9B-sft-SPIN-gpt4o-GGUF", # "mradermacher/Gemma-2-9B-sft-SPIN-gpt4o-GGUF",
"mradermacher/Gemma-2-9B-sft-SPIN-Gemma-2-27B-GGUF", # "mradermacher/Gemma-2-9B-sft-SPIN-Gemma-2-27B-GGUF",
"mradermacher/Gemma-The-Writer-Mighty-Sword-9B-GGUF", # "mradermacher/Gemma-The-Writer-Mighty-Sword-9B-GGUF",
"mradermacher/Gemma-2-9B-sft-SPIN-self-human-dataset-GGUF", # "mradermacher/Gemma-2-9B-sft-SPIN-self-human-dataset-GGUF",
"mradermacher/MT1-Gen5-BMMIMU-gemma-2-9B-GGUF", # "mradermacher/MT1-Gen5-BMMIMU-gemma-2-9B-GGUF",
"mradermacher/MT1-Gen5-IF-gemma-2-S2DMv1-9B-GGUF", # "mradermacher/MT1-Gen5-IF-gemma-2-S2DMv1-9B-GGUF",
"mradermacher/K2S3-Mistral-7b-v1.2-GGUF", # "mradermacher/K2S3-Mistral-7b-v1.2-GGUF",
"mradermacher/Nexus-IKM-Mistral-7B-MLX-GGUF", # "mradermacher/Nexus-IKM-Mistral-7B-MLX-GGUF",
"mradermacher/YamshadowStrangemerges_32_Inex12Neural-GGUF", # "mradermacher/YamshadowStrangemerges_32_Inex12Neural-GGUF",
"mradermacher/DialoGPT-medium-janeOrthros-GGUF", # "mradermacher/DialoGPT-medium-janeOrthros-GGUF",
"mradermacher/T3qm7xNeuralsirkrishna-7B-GGUF", # "mradermacher/T3qm7xNeuralsirkrishna-7B-GGUF",
"mradermacher/L2-7b-Base-Guanaco-Uncensored-GGUF", # "mradermacher/L2-7b-Base-Guanaco-Uncensored-GGUF",
"mradermacher/MT1-Gen5-BB-gemma-2-S4Av4d-9B-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/llama-2-7b-ft-guanaco-v2-GGUF",
"mradermacher/Experiment26Yam_PasticheAlloyingotneoy-GGUF", "mradermacher/Experiment26Yam_PasticheAlloyingotneoy-GGUF",
"mradermacher/Experiment26Neuralsirkrishna_Experiment28Inex12-GGUF", "mradermacher/Experiment26Neuralsirkrishna_Experiment28Inex12-GGUF",
@@ -1355,7 +1360,7 @@ ALL_MODEL_IDS = [
"mradermacher/Therapod-Model-GGUF", "mradermacher/Therapod-Model-GGUF",
"mradermacher/Yamshadowexperiment28M70.15-0.01-0.79-0.31-0.16-0.95-7B-GGUF", "mradermacher/Yamshadowexperiment28M70.15-0.01-0.79-0.31-0.16-0.95-7B-GGUF",
#### 这一段有提前占位提交 zhoukaile, zhangyuanxi, 然后等待 zhoushasha 的账号去下载,但是应该都是提交的 bi150 以及 hygon #### 这一段有提前占位提交 zhoukaile, zhangyuanxi, 然后等待 zhoushasha 的账号去下载,但是应该都是提交的 bi150 以及 hygon
#### 提前占位依然可以交 b3\b4\mthread,已经交了 #### 提前占位依然可以交 b3\b4\mthread,已经交了占位提交
@@ -2616,21 +2621,25 @@ def get_model_filename(model_id: str) -> str:
return base_name return base_name
# ══════════════════════════════════════════════════════════ # ══════════════════════════════════════════════════════════
# 登录获取 token(失败时回退到预设 AUTH_TOKEN) # 登录获取有效的 zhoushasha Token
# ══════════════════════════════════════════════════════════ # ══════════════════════════════════════════════════════════
def login() -> str: def login() -> str:
payload = {"userAccount": USER_ACCOUNT, "userPassword": USER_PASSWORD} payload = {"userAccount": USER_ACCOUNT, "userPassword": USER_PASSWORD}
print("[login] 正在登录...", flush=True) print("[login] 正在登录...", flush=True)
try: resp = requests.post(BASE_URL + LOGIN_ENDPOINT, headers=HEADERS, json=payload, timeout=15)
resp = requests.post(BASE_URL + LOGIN_ENDPOINT, headers=HEADERS, json=payload, timeout=15) resp.raise_for_status()
data = resp.json() data = resp.json()
if resp.status_code == 200 and data.get("code") == 0: token = (data.get("data") or {}).get("token")
print("[login] 登录成功", flush=True) if data.get("code") != 0 or not token:
return data["data"]["token"] raise RuntimeError(f"zhoushasha 登录失败: {data.get('message')}")
print(f"[login] 登录失败: {data.get('message')},回退使用预设 Token", flush=True) encoded_claims = token.split(".")[1]
except Exception as e: claims = json.loads(base64.urlsafe_b64decode(encoded_claims + "=" * (-len(encoded_claims) % 4)))
print(f"[login] 登录异常: {e},回退使用预设 Token", flush=True) if claims.get("userAccount") != "zhoushasha":
return AUTH_TOKEN raise RuntimeError("登录返回的 Token 不属于 zhoushasha,停止下载提交")
if int(claims.get("exp") or 0) <= time.time():
raise RuntimeError("登录返回的 Token 已过期,停止下载提交")
print("[login] zhoushasha 登录成功,Token 有效", flush=True)
return token
# ══════════════════════════════════════════════════════════ # ══════════════════════════════════════════════════════════
# 创建单个模型的下载任务 # 创建单个模型的下载任务