Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NVIDIA Model Probe

一个保守限速的 NVIDIA Build API 免费模型可用性检测工具,用于在不同国家、不同服务器、不同 IP 环境中测试模型是否可调用,并输出 JSON、CSV 和 Excel 报告。

设计目标

  • 默认串行测试,避免高并发触发限制。
  • 自动拉取 NVIDIA OpenAI-compatible 模型列表。
  • 默认只测试能从模型元数据明确判断为免费的模型;无法确认免费的模型默认跳过。
  • 对 chat、embedding、reranker 模型进行低成本探测。
  • 默认跳过 image、video、audio 等高成本生成模型。
  • 记录服务器公网 IP、国家、系统、Python 版本等环境信息。
  • 保存断点 JSON,支持中断后继续。
  • 运行时实时输出 free 模型数量、计划检测数量、当前模型、结果和累计进度。
  • 输出 CSV、JSON,安装 openpyxl 后输出 Excel。
  • 任务正常完成后弹出或提示是否保留程序;默认删除程序文件,仅输入 y/yes 或选择“是”才保留程序文件。
  • 任务检测过程中按 Ctrl+C 中断时会保存当前状态并询问是否删除程序;默认不删除,方便稍后断点续跑。

远程服务器一条命令运行

在 Linux 远程服务器上,可以直接执行一条命令完成拉取、安装、运行。命令启动后会第一时间读取 API Key:如果已经设置 NVIDIA_API_KEYNGC_API_KEY,会直接使用;否则会立即提示隐藏输入 API Key。输入完成后,脚本才会继续检查 gitpython3 和 Python venv/ensurepip,并自动拉取、安装和开始测试;用户无需继续盯着终端,直到检测结束后再处理最终的保留/卸载提示。

推荐使用下面这种 bash -c "$(curl ...)" 形式,而不是 curl ... | bash,这样脚本可以从交互式终端安全读取 API Key:

bash -c "$(curl -fsSL https://raw.githubusercontent.com/royswift2007/nvidia_probe/main/scripts/run_remote.sh)"

如果服务器没有 curl,但有 wget

bash -c "$(wget -qO- https://raw.githubusercontent.com/royswift2007/nvidia_probe/main/scripts/run_remote.sh)"

也可以在同一条命令里传入测试参数,例如只安全预检 3 个模型:

bash -c "$(curl -fsSL https://raw.githubusercontent.com/royswift2007/nvidia_probe/main/scripts/run_remote.sh)" nvidia-probe --top-free-models 3

输入 API Key 后,安装、更新、模型筛选和检测过程会自动完成。默认正常运行结束后才会询问是否卸载程序。一键运行时,测试结果默认保存到当前目录的 nvidia_probe_results,程序安装目录默认是当前目录的 .nvidia_probe。选择卸载时会在 Python 进程退出后删除 .nvidia_probe 整个程序目录,只保留 nvidia_probe_results 中的测试结果。如果检测过程中按 Ctrl+C 中断,会改为询问是否删除程序,默认不删除。若想运行后不询问卸载,可追加参数:

bash -c "$(curl -fsSL https://raw.githubusercontent.com/royswift2007/nvidia_probe/main/scripts/run_remote.sh)" nvidia-probe --cleanup-prompt never

如果测试完成后当时选择了保留程序,后续想手动卸载程序并保留测试结果,可在当初运行一键命令的同一目录执行:

bash -c 'set -e; install_dir="${NVIDIA_PROBE_INSTALL_DIR:-$PWD/.nvidia_probe}"; result_dir="${NVIDIA_PROBE_RESULT_DIR:-$PWD/nvidia_probe_results}"; marker="${NVIDIA_PROBE_CLEANUP_MARKER:-$PWD/.nvidia_probe_cleanup_marker}"; case "$install_dir" in ""|"/"|"$PWD") echo "拒绝删除不安全目录: $install_dir" >&2; exit 1;; esac; if [ -d "$install_dir/results" ]; then dest="$result_dir"; [ -e "$dest" ] && dest="${result_dir}_previous_$(date -u +%Y%m%d_%H%M%S)"; mkdir -p "$(dirname "$dest")"; mv "$install_dir/results" "$dest"; echo "已迁移旧结果目录: $dest"; fi; rm -rf -- "$install_dir" "$marker"; printf "已删除程序目录: %s\n测试结果保留在: %s\n" "$install_dir" "$result_dir"'

这个命令只删除默认安装目录 .nvidia_probe 和清理标记 .nvidia_probe_cleanup_marker,不会删除默认结果目录 nvidia_probe_results。如果运行时自定义过 NVIDIA_PROBE_INSTALL_DIRNVIDIA_PROBE_RESULT_DIR,手动卸载时也要传入同样的环境变量;结果目录应放在安装目录之外。

默认会安装到当前目录下的 .nvidia_probe。如需指定安装目录:

NVIDIA_PROBE_INSTALL_DIR=/tmp/nvidia_probe bash -c "$(curl -fsSL https://raw.githubusercontent.com/royswift2007/nvidia_probe/main/scripts/run_remote.sh)"

如需指定结果目录:

NVIDIA_PROBE_RESULT_DIR=/root/nvidia_results bash -c "$(curl -fsSL https://raw.githubusercontent.com/royswift2007/nvidia_probe/main/scripts/run_remote.sh)"

如果上一次卸载后只剩 .nvidia_probe/results 这类旧结果目录,新脚本会先把旧结果迁移到 nvidia_probe_results 或带时间戳的备份目录,再重新克隆程序。

如果缺少系统依赖,脚本会尽量自动处理。你的服务器如果出现 ensurepip is not available,说明缺少当前 Python 小版本对应的 venv 包,例如 Python 3.13 需要 python3.13-venv。Ubuntu/Debian 可手动执行:

sudo apt update && sudo apt install -y curl git python3 python3-venv python3.13-venv

如果不是 Python 3.13,请把 python3.13-venv 替换为当前版本,例如 python3.12-venv

安装

推荐在虚拟环境中安装:

python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
pip install -e .

Linux/macOS:

python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
pip install -e .

如果创建虚拟环境时报 ensurepip is not available,请先安装当前 Python 版本对应的 venv 包,例如 sudo apt install -y python3.13-venv

API Key

真实拉取模型列表和调用模型通常必须使用有效 NVIDIA API Key,不建议也不保证匿名测试可用。

本项目不会在代码里预置 API Key,也不会把 API Key 写入报告或状态文件。Python CLI 运行时按以下优先级读取:

  1. 命令行参数 --api-key
  2. 环境变量 NVIDIA_API_KEY
  3. 环境变量 NGC_API_KEY
  4. 如果以上都没有,且当前是交互式终端,会提示用户隐藏输入 API Key。

远程一键脚本会在安装/更新项目之前先执行同样的 API Key 检查:优先使用 NVIDIA_API_KEY,其次使用 NGC_API_KEY,如果命令行已传 --api-key 则跳过输入,否则会立即隐藏提示输入并导出为 NVIDIA_API_KEY,所以后续 Python CLI 不会再次询问。

推荐直接运行命令,然后按提示输入,输入内容不会显示:

nvidia-probe run --top-free-models 3 --cleanup-prompt never

也可以使用环境变量,避免每次输入:

PowerShell:

$env:NVIDIA_API_KEY="你的 NVIDIA API Key"

Linux/macOS:

export NVIDIA_API_KEY="你的 NVIDIA API Key"

非交互式环境,例如后台脚本、CI、cron、systemd,必须提前设置 NVIDIA_API_KEY,否则无法安全提示输入。

完整规则与参数

本节按当前真实代码整理,覆盖 runmerge、远程一键脚本、模型筛选、请求、限流、输出和自清理规则。

run 命令参数

参数 默认值 规则
-h / --help 自动生成 显示 run 命令帮助并退出。
--api-key NVIDIA API Key。优先级高于环境变量;不会写入报告或状态文件。
--base-url https://integrate.api.nvidia.com/v1 NVIDIA OpenAI-compatible API Base URL;也可用 NVIDIA_BASE_URL 覆盖。
--output-dir results 输出目录。会生成 probe_state.jsonnvidia_models_report.csvnvidia_models_report.xlsx
--limit 在 TopN/混合筛选之后再截断本次处理模型数量。
--top-free-models 20 混合 TopN 基础池选择多少个免费候选模型;重要中文模型会在基础池之外额外加入;必须大于 0。
--only-model 只测试指定模型 ID;仍会走免费/类型规则,除非同时调整相关参数。
--no-hybrid-topn 关闭 关闭混合 TopN,退回只按 30 天 API 调用量排序。
--stable-top-ratio 0.7 混合 TopN 中稳定热门模型比例;必须在 0 到 1 之间。
--trending-models 6 混合 TopN 中新晋热门模型配额;不能为负数。
--newest-models 0 混合 TopN 中最近上架模型保底配额;不能为负数。
--new-model-days 14.0 多少天内上架视为新模型;必须大于 0。
--priority-models deepseek,kimi,glm,minimax 逗号分隔的重要中文模型关键词、通配符或完整模型 ID;混合 TopN 会在基础 TopN 之外额外加入匹配模型,留空字符串可关闭。
--include-types chat,embedding,reranker 只允许这些模型类型进入测试,逗号分隔。
--exclude-types image,video,audio 跳过这些模型类型,逗号分隔;排除规则优先于包含规则。
--delay-min 10.0 两个模型真实调用之间的随机等待下限,单位秒;不能为负数。
--delay-max 25.0 两个模型真实调用之间的随机等待上限,单位秒;不能小于 --delay-min
--timeout 60.0 单个 HTTP 请求超时时间,单位秒。
--retries 0 单模型失败重试次数;不能为负数。默认 0,避免重复触发限制。
--max-output-tokens 8 chat 探测请求的 max_tokens;必须大于 0。
--rate-limit-sleep 600.0 只有显式允许 429 后继续时,遇到 429 的暂停秒数。
--consecutive-429-breaker 1 连续 429 熔断阈值。默认配合“首次 429 立即停止”。
--consecutive-403-breaker 5 连续 403/地区或权限限制熔断阈值。
--consecutive-network-breaker 10 连续网络错误熔断阈值。
--continue-after-429 关闭 关闭“首次 429 立即停止”;不建议使用。
--dry-run 关闭 只拉取、筛选、导出模型元数据,不真实调用模型。
--resume 关闭 读取已有 probe_state.json 断点续跑;默认跳过已完成模型。
--force-retest 关闭 配合 --resume 时,忽略已有结果并重新测试。
--no-ip-lookup 关闭 禁用公网 IP 地理信息查询。
--strict-safe 关闭 启用更保守安全默认值:请求间隔至少 60–120 秒,重试 0,测试输出 token 不超过 8,429 暂停至少 900 秒,首次 429 停止。
--no-free-only 关闭 关闭“只测试可确认免费模型”。不建议使用。
--allow-unknown-cost 关闭 允许测试费用未知模型。不建议使用。
--no-build-catalog 关闭 不抓取 NVIDIA Build Free Endpoint 页面辅助识别免费模型。不建议使用。
--build-catalog-url https://build.nvidia.com/models?filters=nimType%3Anim_type_preview NVIDIA Build Free Endpoint 目录页 URL。
--no-model-details 关闭 不抓取单模型 Build 详情页补全上下文长度和最大输出 token。
--detail-delay-min 1.0 单模型 Build 详情页抓取间隔下限,单位秒;不能为负数。
--detail-delay-max 3.0 单模型 Build 详情页抓取间隔上限,单位秒;不能小于 --detail-delay-min
--cleanup-prompt auto auto/always 会在任务完成后询问是否保留程序;never 不询问并保留程序。

merge 命令参数

参数 默认值 规则
-h / --help 自动生成 显示 merge 命令帮助并退出。
--inputs 必填 多个服务器生成的 probe_state.json 文件路径。
--output-dir merged 合并报告输出目录,生成 merge_report.csv 和可选 merge_report.xlsx

远程一键脚本环境变量

环境变量 默认值 规则
NVIDIA_PROBE_REPO_URL https://github.com/royswift2007/nvidia_probe.git 一键脚本克隆/更新的仓库地址。
NVIDIA_PROBE_BRANCH main 克隆/更新的分支。
NVIDIA_PROBE_INSTALL_DIR 当前目录下 .nvidia_probe 程序安装目录。
NVIDIA_PROBE_RESULT_DIR 当前目录下 nvidia_probe_results 结果目录,默认在安装目录外,卸载程序时不会删除。
NVIDIA_PROBE_CLEANUP_MARKER 当前目录下 .nvidia_probe_cleanup_marker 一键脚本用于延迟删除安装目录的标记文件。
PYTHON python3 一键脚本使用的 Python 命令。
NVIDIA_API_KEY API Key;一键脚本启动后会优先读取,已设置时不再提示输入。
NGC_API_KEY API Key 备用环境变量;当 NVIDIA_API_KEY 为空时会导出为 NVIDIA_API_KEY 使用。
NVIDIA_BASE_URL 可覆盖默认 API Base URL。

运行流程规则

  1. 收集环境信息:主机名、公网 IP/地区、系统、Python 版本、代理变量等;如传入 --no-ip-lookup 则跳过公网 IP 查询。
  2. 拉取 NVIDIA API /models,失败则保存 abort_reason 并停止。
  3. 归一化模型:推断模型类型、免费状态、30 天调用量、上架时间、能力标签、token 规格等。
  4. 默认抓取 NVIDIA Build Free Endpoint 目录,分页解析约 77 个 Free Endpoint 模型,并把免费标记、30 天调用量、上架时间、能力标签回填到 API 模型。
  5. 根据免费规则和类型规则构造候选模型。
  6. 默认使用混合 TopN 选择最终候选;其中 --priority-models 匹配的重要中文模型会在基础 TopN 之外额外加入,默认覆盖 deepseek、kimi、glm、minimax;如果关闭混合 TopN,则只按 30 天调用量排序。
  7. 如果设置 --limit,在 TopN/混合筛选之后再截断。
  8. 默认对最终候选模型低频抓取单模型 Build 详情页,补全 context_lengthmax_output_tokens
  9. 如果不是 --dry-run,按顺序串行真实调用每个模型,模型之间随机等待 --delay-min--delay-max 秒。
  10. 每个模型完成后立即写入 probe_state.json,支持中断后续跑。
  11. 任务结束后写出 JSON、CSV、Excel,并按 --cleanup-prompt 决定是否卸载程序本体。

模型类型与请求规则

模型类型 测试接口 请求内容
chat 或其他默认文本模型 POST /chat/completions messages=[{"role":"user","content":"Reply with exactly: OK"}]temperature=0max_tokens=--max-output-tokensstream=false
embedding POST /embeddings input="hello"。如果成功,会记录向量维度。
reranker POST /ranking 先尝试 query + documents 格式;如果 400/404/422,再尝试 input.query + input.documents 格式。

模型类型推断规则:模型元数据或模型 ID 中包含 embedding/embed/retrieval 视为 embedding;包含 rerank/ranking/ranker 视为 reranker;包含 vision/vlm/multimodal/ocr 视为 vision;包含 image/diffusion/sdxl/flux 视为 image;包含 video 视为 video;包含 audio/speech/tts/asr 视为 audio;包含 chat/instruct/llm/language/completion/reasoning 或无法识别时按 chat 处理。

免费模型识别规则

默认 free_only=true,只有可确认免费模型才会测试:

  • 优先使用 Build Free Endpoint 目录;匹配到目录中的模型会标记为免费。
  • API 元数据中出现明确免费键或值也会视为免费,例如 freeis_freefree_endpointfree_tierno_costzero_costprice=0
  • API 元数据中出现明确付费键或值会视为非免费,例如 paidbillablemeteredrequires_paymentrequires_billingpositive price
  • 费用未知模型默认跳过;只有传入 --allow-unknown-cost 才会测试。
  • 传入 --no-free-only 会关闭免费过滤,不建议使用。

混合 TopN 选择规则

默认 --top-free-models 20 --stable-top-ratio 0.7 --trending-models 6 --newest-models 0 --new-model-days 14 --priority-models deepseek,kimi,glm,minimax

  1. 先按 30 天 API 调用量排序,并记录 usage_rank
  2. 如果 --top-free-models 为空或大于等于候选总数,则检测全部候选。
  3. 如果完全没有 30 天调用量数据,则回退为检测全部可确认免费的候选模型。
  4. 否则计算基础 TopN 三个池的配额:新模型保底池最多 --newest-models;新晋热门池最多 --trending-models;剩余名额给稳定热门池,同时尽量满足 --stable-top-ratio。默认基础 Top20 会得到 14 个稳定热门池 + 6 个新晋热门池 + 0 个新模型保底。
  5. 新晋热门池会先被预留:优先取模型年龄不超过 30 天、且可计算折算 30 天调用量的模型,按折算 30 天调用量排序;这些模型不会再被稳定热门池提前占用。
  6. 如果 30 天内可计算热度的新晋候选不足 --trending-models,新晋热门池会继续用“较新且有调用量数据”的模型补足,再退回用有调用量排名的候选补足,保证候选总数充足时基础 Top20 仍是 14 个稳定热门池 + 6 个新晋热门池。
  7. 新模型保底池也会预留:只取模型年龄不超过 --new-model-days 的模型,按年龄更小优先,再按 30 天调用量排序;已预留的新晋热门模型不会重复计入新模型保底池。
  8. 稳定热门池按 30 天调用量排序,并跳过已经预留给新晋热门池/新模型保底池的模型,避免新晋热门配额被稳定池吃掉。
  9. 重要中文模型额外加入:--priority-models 中的关键词、通配符或完整 ID 会匹配模型 ID、显示名、provider、owned_by;通过免费/类型过滤且没有出现在基础 TopN 里的匹配模型,会追加到测试列表末尾,默认覆盖 deepseek、kimi、glm、minimax。因此最终测试数可能大于 --top-free-models
  10. 传入 --no-hybrid-topn 后,如果存在 30 天调用量数据,就只取调用量排名前 --top-free-models;如果没有调用量数据,则检测全部候选。

token 规格与能力标签规则

  • 上下文长度和最大输出 token 先从 API /models 元数据递归扫描。
  • Build Free Endpoint 目录描述中如果出现 1M256K262,144 等上下文信息,也会回填。
  • 默认对最终候选模型抓取单模型 Build 详情页,解析文本中的 context 信息,以及 schema 中的 max_tokens.maximum
  • 如果仍无法获取,会使用内置已知模型规格兜底表;例如 z-ai/glm-5.2 可补 context_length=1000000max_output_tokens=32768
  • 能力标签来自 API/Build 元数据里的 generalusecasecloudPartnerTypeplaygroundType。包含 visionvlmocrmultimodal 等视为图像/视觉;包含 coding/code 视为 coding;包含 reasoning/thinking/math 视为 reasoning;包含 tool use/function calling/agentic/agent 视为工具调用。

响应状态与错误分类规则

HTTP/异常 test_status error_type
2xx available
请求超时异常或 HTTP 408 timeout timeout
连接异常 network_error network_error
400 invalid_request bad_request
401 unauthorized unauthorized
403 forbidden_or_region_block forbidden_or_region_block
404 model_not_found_or_not_exposed not_found
429 rate_limited rate_limited
5xx server_error server_error
其他请求异常 request_errorunknown_error 对应异常类型

重试规则:每个模型最多请求 --retries + 1 次;遇到 available、401、403、429、400、404 时立即停止该模型后续重试,避免重复打同一个受限接口。

熔断与限流规则

  • 默认首次 429 立即停止整个任务。
  • 如果传入 --continue-after-429,则遇到 429 后暂停 --rate-limit-sleep 秒,并继续依赖连续 429 熔断阈值。
  • 连续 401 达到 2 次,停止任务。
  • 连续 429 达到 --consecutive-429-breaker,停止任务。
  • 连续 403 达到 --consecutive-403-breaker,停止任务。
  • 连续限制类错误达到 6 次,停止任务。限制类包括 403、429、401 或对应错误类型。
  • 连续网络错误达到 --consecutive-network-breaker,停止任务。
  • 已测试超过 10 个模型且失败率大于等于 90%,停止任务,视为疑似地区、IP、DNS、代理或 API Key 权限问题。

输出规则

  • probe_state.json 保存完整状态、环境、配置、原始模型列表、Build 目录、选择摘要、详情页补全摘要和完整结果字段。
  • CSV/XLSX 是精简调用决策表,只保留模型 ID、可用性、延迟、上下文、最大输出 token、能力标签和错误原因等字段。
  • CSV/XLSX 默认把可用模型排在前面,再按 latency_total_ms 从低到高排序。
  • Excel 包含 SummaryAvailableAll ModelsErrorsEnvironment 工作表。
  • Available 只包含 test_status=available 的模型,并按延迟从低到高排序,同延迟时上下文更大的模型更靠前。
  • 如果没有安装 openpyxl,只生成 JSON 和 CSV,不生成 Excel。

自清理规则

  • --cleanup-prompt auto--cleanup-prompt always 会在任务正常完成后询问“任务已完成。是否保留程序文件?”。
  • 正常完成后的提示中,只有输入 y/yes 或图形窗口选择“是”才保留程序。
  • 正常完成后的提示中,直接回车、输入 n/no、最终确认时 Ctrl+C、关闭图形窗口,都会删除程序本体,但不会删除结果文件。
  • 检测过程中按 Ctrl+C 中断时,会先保存当前状态,再询问“检测已被 Ctrl+C 中断。是否删除程序文件?”。此时默认不删除程序,只有输入 y/yes 或图形窗口选择“是”才删除程序。
  • 中断后的删除提示中,直接回车、输入 n/no、再次 Ctrl+C、关闭图形窗口,都会保留程序本体,方便稍后断点续跑。
  • 非交互式终端下:正常完成时默认删除程序本体、保留测试结果;Ctrl+C 中断时默认不删除程序文件。
  • --cleanup-prompt never 不询问并保留程序。
  • 手动运行时会删除 nvidia_probescriptspyproject.tomlrequirements.txtREADME.md.venv.gitbuilddist__pycache__*.egg-info,但会保护已有结果文件路径。
  • 一键脚本默认结果目录在安装目录外;如果需要删除整个安装目录,会通过 NVIDIA_PROBE_CLEANUP_MARKER 延迟到 Python 进程退出后由外层 shell 删除。

运行时实时进度

运行时会持续在终端输出总体和详细检测状态,适合 SSH、tmux、screen 或服务器日志查看。关键输出包括:

  • 已拉取模型总数,以及 Build Free Endpoint 目录总数、抓取数量、与 API 模型匹配数量。
  • 可确认 free、非免费/付费、费用未知模型数量。
  • 可确认 free 且类型匹配的候选数量、30 天 API 调用量覆盖数量、上架时间覆盖数量、混合 TopN 或回退策略说明。
  • 本次实际检测数量,例如“获取 77 个可确认 free 模型;类型匹配候选 77 个;本次检测 20 个模型”。
  • 即将检测的模型列表,包含模型 ID、名称、类型、选择池、调用量排名、折算 30 天热度、模型年龄和选择原因。
  • 每个模型开始时显示“正在检测 [3/20] xxx”。
  • 每个模型完成后显示状态、HTTP 状态、延迟、错误类型,以及累计成功/失败/跳过数量。

示例输出:

Build Free Endpoint 目录: 页面总数=77;已抓取=77;与 API 模型匹配=77。
已拉取模型总数: 121
free 模型统计: 可确认 free=77,非免费/付费=0,费用未知=44
检测计划: 获取 77 个可确认 free 模型;类型匹配候选 77 个;本次检测 24 个模型。
已使用混合 TopN 策略选择候选模型:稳定热门=14,新晋热门=6,新模型保底=0,重要中文模型=4(额外加入=4),已选=24。
正在检测 [15/20] z-ai/glm-5.2 | type=chat | select_rank=15 | bucket=trending_new | usage_rank=35 | trend_rank=4 | 30d_calls=1.8M | projected_30d=32.2M | age=1.7d
完成 [15/20] z-ai/glm-5.2 -> status=available http=200 latency=1234ms error=;累计: 已处理 15/20,成功 12,失败 3,跳过 0

常用运行方式

完整规则和参数见上面的“完整规则与参数”。下面只列常用命令。

默认开启“只测试可确认免费模型”。费用审计字段会保留在 probe_state.json,CSV/XLSX 只输出精简调用决策字段。

如你确认当前 API 账户只暴露免费模型,可手动允许费用未知模型:

nvidia-probe run --allow-unknown-cost

如果不想抓取 NVIDIA Build 页面,只依赖 API 模型列表中的 free 元数据:

nvidia-probe run --no-build-catalog

如果要完全关闭免费过滤,需要显式传入;不建议使用:

nvidia-probe run --no-free-only

快速运行

先做 3 个模型的安全预检。默认已经使用 10 到 25 秒随机间隔、0 重试、首次 429 立即停止:

nvidia-probe run --top-free-models 3 --cleanup-prompt never

或者不安装入口,直接运行模块:

python -m nvidia_probe run --top-free-models 3 --cleanup-prompt never

完整慢速测试

默认完整测试使用 10 到 25 秒随机间隔,兼顾速度和安全:

nvidia-probe run --output-dir results --cleanup-prompt never

更保守模式会使用至少 60 到 120 秒随机间隔、0 重试、首次 429 立即停止:

nvidia-probe run --strict-safe --output-dir results --cleanup-prompt never

只拉取模型列表,不真实调用

nvidia-probe run --dry-run --output-dir results

断点续跑

默认会在输出目录保存 probe_state.json。中断后可继续:

nvidia-probe run --resume --output-dir results

多地区合并

将多个服务器生成的 probe_state.json 或 raw JSON 拷贝到一起,然后执行:

nvidia-probe merge --inputs jp_probe_state.json de_probe_state.json us_probe_state.json --output-dir merged

自清理行为

任务正常结束后默认会询问是否保留程序文件,默认操作是删除程序本体、只保留测试结果。删除程序文件只会卸载工具本体,不会删除刚刚生成的检测结果:

  • 正常完成后的提示中,只有输入 y / yes,或在图形窗口中选择“是”,才会保留程序文件。
  • 正常完成后的提示中,直接回车、输入 n / no、在最终确认提示时按 Ctrl+C、关闭图形窗口,都会删除 nvidia_probe 包、scripts.venv.gitpyproject.tomlrequirements.txtREADME.md、构建目录和安装元数据等程序文件;刚刚生成的检测结果文件会继续保留在结果目录。
  • 如果检测过程中按 Ctrl+C 中断,工具会保存当前状态并询问“检测已被 Ctrl+C 中断。是否删除程序文件?”。这时默认操作是不删除程序;只有输入 y / yes,或在图形窗口中选择“是”,才会删除程序本体。
  • 中断后的删除提示中,直接回车、输入 n / no、再次按 Ctrl+C、关闭图形窗口,都会保留程序文件,方便稍后使用 --resume 断点续跑。
  • 一键运行脚本会把结果默认放在安装目录外的 nvidia_probe_results,因此选择卸载后会先写入卸载标记,再由外层脚本在 Python 进程退出后删除 .nvidia_probe 整个安装目录。
  • 如果任务结束时选择了保留程序,后续可使用上文“远程服务器一条命令运行”中的手动一键卸载命令删除 .nvidia_probe.nvidia_probe_cleanup_marker,同时保留 nvidia_probe_results
  • 如果你手动运行且把 --output-dir 放在项目目录内部,项目根目录会因为包含结果文件而保留,但程序文件仍会被删除。
  • 如果想无提示保留程序文件,请使用 --cleanup-prompt never

如果远程环境没有图形界面,会退化为命令行确认。可通过参数控制:

nvidia-probe run --cleanup-prompt always
nvidia-probe run --cleanup-prompt never
nvidia-probe run --cleanup-prompt auto

安全默认值

配置 默认值
并发 1
每模型请求 1 次
请求间隔 10 到 25 秒随机
超时 60 秒
最大输出 token 8
重试 0 次
429 后暂停 600 秒,仅在显式允许继续时使用
连续 429 熔断 1 次,默认首次 429 立即停止
连续 403 熔断 5 次
连续网络错误熔断 10 次
默认测试类型 chat、embedding、reranker
默认测试数量 混合 TopN 基础池取免费模型 20 个:14 个稳定热门 + 6 个新晋热门 + 0 个新模型保底;随后额外加入未在基础池中的 deepseek、kimi、glm、minimax 重要中文模型,所以最终测试数可能大于 20
免费模型过滤 开启,优先使用 Build Free Endpoint 目录识别约 77 个免费模型
未知费用模型 默认跳过

输出文件

手动运行时默认输出目录为 results;一键运行脚本默认输出到安装目录外的 nvidia_probe_results。结果目录包含:

  • probe_state.json:断点、运行配置、环境信息、完整原始结果;排名、30 天调用量、日均调用量、筛选原因、原始模型响应等审计信息仍保留在这里。
  • nvidia_models_report.csv:精简调用决策表,只保留调用模型时真正有价值的字段,默认把可用模型排在前面,再按连接延迟从低到高排序,并保留日均调用量便于判断模型热度。
  • nvidia_models_report.xlsx:精简 Excel 报告,如果安装 openpyxl。
  • merge_report.csv:多地区合并结果。
  • merge_report.xlsx:多地区合并 Excel,如果安装 openpyxl。

Excel 报告包含多个工作表:

  • Summary:汇总可用数量、失败数量、最快/最慢/平均延迟,以及可用模型中支持图像输入、coding、reasoning、tool/function calling 的数量。
  • Available:推荐优先查看的工作表,只包含可调用成功的模型,并按 latency_total_ms 从低到高排序;用于快速判断当前服务器环境下哪些模型速度更快、最适合调用。
  • All Models:全部测试结果,仍然优先显示可用模型,再显示失败或跳过模型。
  • Errors:只列出调用失败、限流、地区阻断、无权限、网络错误等非可用结果。
  • Environment:服务器公网 IP、国家、系统、Python 版本等环境信息,方便多地区对比。

CSV/XLSX 报告列已经精简为调用决策优先,只保留这些核心字段:

  • model_id / display_name / provider / endpoint_type / model_type:调用时需要识别的模型基础信息。
  • test_status:模型是否可用,available 表示当前服务器、当前 API Key、当前网络环境下调用成功。
  • latency_total_ms:真实探测请求总延迟,越低代表当前环境连接越快。
  • api_calls_per_day_display:日均调用量,优先根据模型上架天数折算;缺少上架时间时按 30 天调用量除以 30 估算,用于直观看模型热度。
  • context_length:模型上下文长度。
  • max_output_tokens:模型最大输出 token 数。
  • supports_image_input:是否支持图像输入或多模态输入。
  • supports_coding:是否偏向代码生成或 coding 场景。
  • supports_reasoning:是否带 reasoning、thinking、math 等推理标签。
  • supports_function_calling / supports_tools:是否带 tool use、function calling、agentic 等工具调用标签。
  • supports_json_mode / supports_streaming / supports_embedding:JSON、流式、embedding 等调用能力。
  • vector_dimension:embedding 模型可用时的向量维度。
  • capability_tags / usecase_tags:从 NVIDIA Build 元数据提取的能力和用途标签。
  • error_type / error_message / http_status / skip_reason:不可用模型的失败或跳过原因。

selection_rankselection_bucketusage_rankapi_calls_30dprojected_30d_callscreated_at_utccontext_length_sourcemax_output_tokens_source 等审计/来源字段不再写入 CSV/XLSX,避免表格臃肿;CSV/XLSX 只保留可读的 api_calls_per_day_display 热度字段。如需排查筛选原因或字段来源,可查看完整的 probe_state.json

注意事项

  • 默认只测试可确认免费的模型,优先通过 NVIDIA Build Free Endpoint 页面识别免费模型集合。
  • 每个模型都会先做一次低成本真实调用,test_status=available 才代表当前服务器环境下真实可调用成功。
  • 上下文长度、最大输出 token、图像、coding、reasoning、tool/function calling 等能力字段主要来自 NVIDIA API 模型元数据、Build Free Endpoint 页面标签、Build 单模型详情页和内置已知规格兜底表;即使某个模型本次不可调用,报告也会尽量保留这些元数据,便于判断是网络/地区/API 权限问题还是模型能力不符合需求。
  • 如果能获取 API calls in the last 30 days 或 Build 页面中的 last_month_api_invocation_count,默认使用混合 TopN 选择基础池前 20 个免费模型,并在报告中输出日均调用量;可用 --top-free-models 调整基础池数量;--priority-models 匹配的重要中文模型会在基础池之外额外加入。
  • 如果完全无法获取 30 天调用量数据,则回退为检测全部可确认免费的候选模型。
  • 如果 NVIDIA 模型列表接口不提供费用元数据,工具会先用 Build Free Endpoint 页面补充 free 标记;仍无法确认免费的模型会被标记为 unknown_cost 并跳过。
  • 默认无重试,避免同一模型失败后短时间重复请求。
  • 默认首次 429 立即停止,避免继续请求带来 API 风险。
  • 如果连续出现 403,脚本会提前熔断,因为这通常代表地区、账号、权限或风控限制。
  • 不要使用高并发测试。
  • 不要使用超长 prompt 探测上下文长度。
  • 不要默认测试图像、视频、音频生成模型。
  • 403 可能是地区、账号、模型权限或 IP 风控导致。
  • 429 表示限流,默认会立即停止;不建议使用 --continue-after-429

About

Safe low-rate NVIDIA Build free model availability probe. Tests which NVIDIA API models work from your server/IP region, measures latency, enriches model metadata, and exports JSON/CSV/Excel reports.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages