🚀 快速安装
复制以下命令并运行,立即安装此 Skill:
npx skills add https://skills.sh/aradotso/trending-skills/llmfit-hardware-model-matcher
💡 提示:需要 Node.js 和 NPM
llmfit 硬件模型匹配器
技能来自 ara.so — 每日 2026 技能合集。
llmfit 检测你的系统内存、CPU 和 GPU,然后对数百个 LLM 模型进行质量、速度、适配度和上下文维度评分——准确地告诉你哪些模型可以在你的硬件上良好运行。它附带一个交互式 TUI 和一个 CLI,支持多 GPU、MoE 架构、动态量化以及本地运行时提供商(Ollama、llama.cpp、MLX、Docker Model Runner)。
安装
macOS / Linux (Homebrew)
brew install llmfit
快速安装脚本
curl -fsSL https://llmfit.axjns.dev/install.sh | sh
# 不使用 sudo,安装到 ~/.local/bin
curl -fsSL https://llmfit.axjns.dev/install.sh | sh -s -- --local
Windows (Scoop)
scoop install llmfit
Docker / Podman
docker run ghcr.io/alexsjones/llmfit
# 使用 jq 进行脚本处理
podman run ghcr.io/alexsjones/llmfit recommend --use-case coding | jq '.models[].name'
从源码安装 (Rust)
git clone https://github.com/AlexsJones/llmfit.git
cd llmfit
cargo build --release
# 二进制文件位于 target/release/llmfit
核心概念
- 适配等级:
perfect(运行极佳)、good(运行良好)、marginal(可运行但紧张)、too_tight(无法运行) - 评分维度:质量、速度(tok/s 估算)、适配度(内存余量)、上下文容量
- 运行模式:GPU、CPU+GPU 卸载、仅 CPU、MoE
- 量化:自动为你的硬件选择最佳量化方案(例如 Q4_K_M、Q5_K_S、mlx-4bit)
- 提供商:Ollama、llama.cpp、MLX、Docker Model Runner
主要命令
启动交互式 TUI
llmfit
CLI 表格输出
llmfit --cli
显示系统硬件检测
llmfit system
llmfit --json system # JSON 输出
列出所有模型
llmfit list
搜索模型
llmfit search "llama 8b"
llmfit search "mistral"
llmfit search "qwen coding"
适配度分析
# 所有可运行模型按适配度排序
llmfit fit
# 仅完美适配模型,前 5 个
llmfit fit --perfect -n 5
# JSON 输出
llmfit --json fit -n 10
模型详情
llmfit info "Mistral-7B"
llmfit info "Llama-3.1-70B"
推荐
# 前 5 个推荐(默认 JSON)
llmfit recommend --json --limit 5
# 按用例过滤:general, coding, reasoning, chat, multimodal, embedding
llmfit recommend --json --use-case coding --limit 3
llmfit recommend --json --use-case reasoning --limit 5
硬件规划(反向:我需要什么硬件?)
llmfit plan "Qwen/Qwen3-4B-MLX-4bit" --context 8192
llmfit plan "Qwen/Qwen3-4B-MLX-4bit" --context 8192 --quant mlx-4bit
llmfit plan "Qwen/Qwen3-4B-MLX-4bit" --context 8192 --target-tps 25 --json
llmfit plan "Qwen/Qwen2.5-Coder-0.5B-Instruct" --context 8192 --json
REST API 服务器(用于集群调度)
llmfit serve
llmfit serve --host 0.0.0.0 --port 8787
硬件覆盖
当自动检测失败时(虚拟机、损坏的 nvidia-smi、直通设置):
# 覆盖 GPU VRAM
llmfit --memory=32G
llmfit --memory=24G --cli
llmfit --memory=24G fit --perfect -n 5
llmfit --memory=24G recommend --json
# 兆字节
llmfit --memory=32000M
# 适用于任何子命令
llmfit --memory=16G info "Llama-3.1-70B"
可接受的后缀:G/GB/GiB、M/MB/MiB、T/TB/TiB(不区分大小写)。
上下文长度限制
# 估算 4K 上下文下的内存适配度
llmfit --max-context 4096 --cli
# 与子命令一起使用
llmfit --max-context 8192 fit --perfect -n 5
llmfit --max-context 16384 recommend --json --limit 5
# 环境变量替代方案
export OLLAMA_CONTEXT_LENGTH=8192
llmfit recommend --json
REST API 参考
启动服务器:
llmfit serve --host 0.0.0.0 --port 8787
端点
# 健康检查
curl http://localhost:8787/health
# 节点硬件信息
curl http://localhost:8787/api/v1/system
# 带过滤器的完整模型列表
curl "http://localhost:8787/api/v1/models?min_fit=marginal&runtime=llamacpp&sort=score&limit=20"
# 此节点的最佳可运行模型(关键调度端点)
curl "http://localhost:8787/api/v1/models/top?limit=5&min_fit=good&use_case=coding"
# 按模型名称/提供商搜索
curl "http://localhost:8787/api/v1/models/Mistral?runtime=any"
/models 和 /models/top 的查询参数
| 参数 | 值 | 描述 |
|---|---|---|
limit / n |
整数 | 返回的最大行数 |
min_fit |
perfect|good|marginal|too_tight |
最低适配等级 |
perfect |
true|false |
强制仅完美适配 |
runtime |
any|mlx|llamacpp |
按运行时过滤 |
use_case |
general|coding|reasoning|chat|multimodal|embedding |
用例过滤器 |
provider |
字符串 | 提供商子串匹配 |
search |
字符串 | 在名称/提供商/大小/用例中的自由文本搜索 |
sort |
score|tps|params|mem|ctx|date|use_case |
排序列 |
include_too_tight |
true|false |
包含不可运行模型 |
max_context |
整数 | 每次请求的上下文限制 |
脚本与自动化示例
Bash:以 JSON 格式获取最佳编程模型
#!/bin/bash
# 获取完美适配的前 3 个编程模型
llmfit recommend --json --use-case coding --limit 3 | \
jq -r '.models[] | "\(.name) (\(.score)) - \(.quantization)"'
Bash:检查特定模型是否适配
#!/bin/bash
MODEL="Mistral-7B"
RESULT=$(llmfit info "$MODEL" --json 2>/dev/null)
FIT=$(echo "$RESULT" | jq -r '.fit')
if [[ "$FIT" == "perfect" || "$FIT" == "good" ]]; then
echo "$MODEL 将运行良好 (适配度: $FIT)"
else
echo "$MODEL 可能无法良好运行 (适配度: $FIT)"
fi
Bash:自动拉取最佳 Ollama 模型
#!/bin/bash
# 获取最佳适配模型名称并使用 Ollama 拉取
TOP_MODEL=$(llmfit recommend --json --limit 1 | jq -r '.models[0].name')
echo "正在拉取: $TOP_MODEL"
ollama pull "$TOP_MODEL"
Python:查询 REST API
import requests
BASE_URL = "http://localhost:8787"
def get_system_info():
resp = requests.get(f"{BASE_URL}/api/v1/system")
return resp.json()
def get_top_models(use_case="coding", limit=5, min_fit="good"):
params = {
"use_case": use_case,
"limit": limit,
"min_fit": min_fit,
"sort": "score"
}
resp = requests.get(f"{BASE_URL}/api/v1/models/top", params=params)
return resp.json()
def search_models(query, runtime="any"):
resp = requests.get(
f"{BASE_URL}/api/v1/models/{query}",
params={"runtime": runtime}
)
return resp.json()
# 使用示例
system = get_system_info()
print(f"GPU: {system.get('gpu_name')} | VRAM: {system.get('vram_gb')}GB")
models = get_top_models(use_case="reasoning", limit=3)
for m in models.get("models", []):
print(f"{m['name']}: score={m['score']}, fit={m['fit']}, quant={m['quantization']}")
Python:面向代理的硬件感知模型选择器
import subprocess
import json
def get_best_model_for_task(use_case: str, min_fit: str = "good") -> dict:
"""使用 llmfit 为给定任务选择最佳模型。"""
result = subprocess.run(
["llmfit", "recommend", "--json", "--use-case", use_case, "--limit", "1"],
capture_output=True,
text=True
)
data = json.loads(result.stdout)
models = data.get("models", [])
return models[0] if models else None
def plan_hardware_requirements(model_name: str, context: int = 4096) -> dict:
"""获取运行特定模型的硬件要求。"""
result = subprocess.run(
["llmfit", "plan", model_name, "--context", str(context), "--json"],
capture_output=True,
text=True
)
return json.loads(result.stdout)
# 选择最佳编程模型
best = get_best_model_for_task("coding")
if best:
print(f"最佳编程模型: {best['name']}")
print(f" 量化方案: {best['quantization']}")
print(f" 估算 tok/s: {best['tps']}")
print(f" 内存使用率: {best['mem_pct']}%")
# 规划特定模型的硬件需求
plan = plan_hardware_requirements("Qwen/Qwen3-4B-MLX-4bit", context=8192)
print(f"所需最小 VRAM: {plan['hardware']['min_vram_gb']}GB")
print(f"推荐 VRAM: {plan['hardware']['recommended_vram_gb']}GB")
Docker Compose:节点调度器模式
version: "3.8"
services:
llmfit-api:
image: ghcr.io/alexsjones/llmfit
command: serve --host 0.0.0.0 --port 8787
ports:
- "8787:8787"
environment:
- OLLAMA_CONTEXT_LENGTH=8192
devices:
- /dev/nvidia0:/dev/nvidia0 # 透传 GPU
TUI 按键参考
| 按键 | 操作 |
|---|---|
↑/↓ 或 j/k |
导航模型 |
/ |
搜索(名称、提供商、参数、用例) |
Esc/Enter |
退出搜索 |
Ctrl-U |
清除搜索 |
f |
循环适配度筛选:全部 → 可运行 → 完美 → 良好 → 临界 |
a |
循环可用性:全部 → GGUF 可用 → 已安装 |
s |
循环排序:评分 → 参数 → 内存% → 上下文 → 日期 → 用例 |
t |
循环颜色主题(自动保存) |
v |
可视模式(多选进行比较) |
V |
选择模式(基于列的筛选) |
p |
规划模式(此模型需要什么硬件?) |
P |
提供商筛选弹窗 |
U |
用例筛选弹窗 |
C |
能力筛选弹窗 |
m |
标记模型以便比较 |
c |
比较视图(标记的与选中的) |
d |
下载模型(通过检测到的运行时) |
r |
从运行时刷新已安装模型 |
Enter |
切换详情视图 |
g/G |
跳转到顶部/底部 |
q |
退出 |
主题
t 循环:默认 → Dracula → Solarized → Nord → Monokai → Gruvbox
主题保存到 ~/.config/llmfit/theme
GPU 检测详情
| GPU 供应商 | 检测方法 |
|---|---|
| NVIDIA | nvidia-smi(多 GPU,聚合 VRAM) |
| AMD | rocm-smi |
| Intel Arc | sysfs(独立)/ lspci(集成) |
| Apple Silicon | system_profiler(统一内存 = VRAM) |
| Ascend | npu-smi |
常见模式
“我的 16GB M2 Mac 能运行什么?”
llmfit fit --perfect -n 10
# 或交互式
llmfit
# 按 'f' 筛选到完美适配
“我有一块 3090(24GB VRAM),哪些编程模型适配?”
llmfit recommend --json --use-case coding | jq '.models[]'
# 如果检测失败,手动覆盖
llmfit --memory=24G recommend --json --use-case coding
“Llama 70B 能在我的机器上运行吗?”
llmfit info "Llama-3.1-70B"
# 规划你需要的硬件
llmfit plan "Llama-3.1-70B" --context 4096 --json
“只显示 Ollama 中已安装的模型”
llmfit
# 按 'a' 循环到已安装筛选器
# 或
llmfit fit -n 20 # 运行后,在 TUI 中按 'i' 进行已安装优先排序
“脚本:找到最佳模型并启动 Ollama”
MODEL=$(llmfit recommend --json --limit 1 | jq -r '.models[0].name')
ollama serve &
ollama run "$MODEL"
“API:为集群调度器轮询节点能力”
# 检查节点,获取前 3 个良好+推理模型
curl -s "http://node1:8787/api/v1/models/top?limit=3&min_fit=good&use_case=reasoning" | \
jq '.models[].name'
故障排除
GPU 未检测到 / 报告的 VRAM 错误
# 验证检测
llmfit system
# 手动覆盖
llmfit --memory=24G --cli
未找到 nvidia-smi 但你有 NVIDIA GPU
# 安装 CUDA 工具包或 nvidia-utils,然后重试
# 或手动覆盖:
llmfit --memory=8G fit --perfect
模型显示为 too_tight 但你有足够的内存
# llmfit 可能使用了上下文放大的估算;限制上下文
llmfit --max-context 2048 fit --perfect -n 10
REST API:测试端点
# 启动服务器并运行验证套件
python3 scripts/test_api.py --spawn
# 测试已在运行的服务器
python3 scripts/test_api.py --base-url http://127.0.0.1:8787
Apple Silicon:VRAM 显示为系统内存(符合预期)
# 这是正确的——Apple Silicon 使用统一内存
# llmfit 会自动处理此情况
llmfit system # 应显示后端:Metal
上下文长度环境变量
export OLLAMA_CONTEXT_LENGTH=4096
llmfit recommend --json # 使用 4096 作为上下文上限
📄 原始文档
完整文档(英文):
https://skills.sh/aradotso/trending-skills/llmfit-hardware-model-matcher
💡 提示:点击上方链接查看 skills.sh 原始英文文档,方便对照翻译。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

评论(0)