dsh-plugin-local-infer 0.0.0-stage → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/LICENSE +7 -0
  2. package/README.md +96 -2
  3. package/cordis.patch.yml +42 -0
  4. package/docs/screenshot-20261014.png +0 -0
  5. package/docs/zh/README.md +97 -0
  6. package/dsh/client.js +3656 -0
  7. package/dsh/host.js +15 -0
  8. package/package.json +103 -3
  9. package/packages/core/lib/adapter.d.ts +156 -0
  10. package/packages/core/lib/adapter.js +12 -0
  11. package/packages/core/lib/config.d.ts +20 -0
  12. package/packages/core/lib/config.js +2 -0
  13. package/packages/core/lib/debug.d.ts +44 -0
  14. package/packages/core/lib/debug.js +43 -0
  15. package/packages/core/lib/defaults.d.ts +101 -0
  16. package/packages/core/lib/defaults.js +95 -0
  17. package/packages/core/lib/deps.d.ts +151 -0
  18. package/packages/core/lib/deps.js +168 -0
  19. package/packages/core/lib/estimator.d.ts +138 -0
  20. package/packages/core/lib/estimator.js +238 -0
  21. package/packages/core/lib/guideline.d.ts +64 -0
  22. package/packages/core/lib/guideline.js +118 -0
  23. package/packages/core/lib/hardware.d.ts +67 -0
  24. package/packages/core/lib/hardware.js +60 -0
  25. package/packages/core/lib/index.d.ts +35 -0
  26. package/packages/core/lib/index.js +21 -0
  27. package/packages/core/lib/launch-record.d.ts +83 -0
  28. package/packages/core/lib/launch-record.js +80 -0
  29. package/packages/core/lib/logs.d.ts +44 -0
  30. package/packages/core/lib/logs.js +71 -0
  31. package/packages/core/lib/models.d.ts +76 -0
  32. package/packages/core/lib/models.js +92 -0
  33. package/packages/core/lib/parameter.d.ts +96 -0
  34. package/packages/core/lib/parameter.js +2 -0
  35. package/packages/core/lib/registrar.d.ts +157 -0
  36. package/packages/core/lib/registrar.js +208 -0
  37. package/packages/core/lib/reserve.d.ts +89 -0
  38. package/packages/core/lib/reserve.js +93 -0
  39. package/packages/core/lib/status.d.ts +65 -0
  40. package/packages/core/lib/status.js +54 -0
  41. package/packages/core/package.json +31 -0
  42. package/packages/providers/lib/adapters.d.ts +232 -0
  43. package/packages/providers/lib/adapters.js +858 -0
  44. package/packages/providers/lib/debug.d.ts +35 -0
  45. package/packages/providers/lib/debug.js +112 -0
  46. package/packages/providers/lib/deps.d.ts +224 -0
  47. package/packages/providers/lib/deps.js +221 -0
  48. package/packages/providers/lib/engines.d.ts +27 -0
  49. package/packages/providers/lib/engines.js +46 -0
  50. package/packages/providers/lib/guidelines.d.ts +29 -0
  51. package/packages/providers/lib/guidelines.js +61 -0
  52. package/packages/providers/lib/hyperqwen.d.ts +31 -0
  53. package/packages/providers/lib/hyperqwen.js +161 -0
  54. package/packages/providers/lib/index.d.ts +53 -0
  55. package/packages/providers/lib/index.js +75 -0
  56. package/packages/providers/lib/llamacpp.d.ts +52 -0
  57. package/packages/providers/lib/llamacpp.js +151 -0
  58. package/packages/providers/lib/model-defaults.d.ts +33 -0
  59. package/packages/providers/lib/model-defaults.js +84 -0
  60. package/packages/providers/lib/ninfer.d.ts +49 -0
  61. package/packages/providers/lib/ninfer.js +343 -0
  62. package/packages/providers/lib/presets.d.ts +35 -0
  63. package/packages/providers/lib/presets.js +161 -0
  64. package/packages/providers/lib/strata.d.ts +15 -0
  65. package/packages/providers/lib/strata.js +14 -0
  66. package/packages/providers/lib/vram.d.ts +24 -0
  67. package/packages/providers/lib/vram.js +250 -0
  68. package/packages/providers/package.json +43 -0
  69. package/packages/service/lib/index.d.ts +405 -0
  70. package/packages/service/lib/index.js +1253 -0
  71. package/packages/service/lib/types.d.ts +230 -0
  72. package/packages/service/lib/types.js +2 -0
  73. package/packages/service/package.json +41 -0
  74. package/packages/tool/lib/index.d.ts +27 -0
  75. package/packages/tool/lib/index.js +25 -0
  76. package/packages/tool/package.json +41 -0
  77. package/packages/ui/lib/deps.d.ts +66 -0
  78. package/packages/ui/lib/deps.js +39 -0
  79. package/packages/ui/lib/form.d.ts +98 -0
  80. package/packages/ui/lib/form.js +101 -0
  81. package/packages/ui/lib/index.d.ts +41 -0
  82. package/packages/ui/lib/index.js +45 -0
  83. package/packages/ui/lib/meter.d.ts +60 -0
  84. package/packages/ui/lib/meter.js +43 -0
  85. package/packages/ui/lib/route.d.ts +406 -0
  86. package/packages/ui/lib/route.js +1486 -0
  87. package/packages/ui/lib/warnings.d.ts +56 -0
  88. package/packages/ui/lib/warnings.js +69 -0
  89. package/packages/ui/package.json +42 -0
package/LICENSE ADDED
@@ -0,0 +1,7 @@
1
+ Copyright Derek "cybtachyon" Reese
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4
+
5
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6
+
7
+ THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
package/README.md CHANGED
@@ -1,3 +1,97 @@
1
- # Temporary Holding Version
1
+ # dsh-plugin-local-infer
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ [中文 (Chinese)](docs/zh/README.md)
4
+
5
+ > For those who want more performance out of their specific hardware than what Unsloth gives out of the box.
6
+
7
+ [![License: MIT](https://img.shields.io/badge/license-MIT-green)](https://github.com/cybtachyon/dsh-plugin-local-infer/blob/main/LICENSE)
8
+ [![DSH 0.2.1-alpha.3](https://img.shields.io/badge/DSH-0.2.1--alpha.3-blue)](https://www.npmjs.com/package/@deepseek-ai/dsh)
9
+ [![Type: DSH Plugin](https://img.shields.io/badge/Type-DSH%20Plugin-8A2BE2)](https://github.com/topics/dsh-plugin)
10
+
11
+ A DeepSeek Harness plugin that manages local inference engines:
12
+
13
+ - llama.cpp
14
+ - NInfer
15
+ - Hyper-Qwen (vLLM)
16
+ - Strata
17
+ - ...with more coming soon.
18
+
19
+ ![Plugin Screenshot](docs/screenshot-20261014.png)
20
+
21
+ Pick a model and an engine, tune the parameters, watch a live **VRAM Est.** meter, see **hardware warnings** the moment a value (or a parameter itself) is unsafe for the detected hardware, then the plugin manages **build, deploy, and health-check** for each engine and **automatically register it as a DSH model** once it is confirmed working. No hand-editing of finicky yaml or launchers.
22
+
23
+ ## Install
24
+
25
+ Command line:
26
+
27
+ ```bash
28
+ dsh plugin --profile web add https://github.com/cybtachyon/dsh-plugin-local-infer
29
+ ```
30
+
31
+ Web UI: click **Plugins** → **Add Plugin** → paste `https://github.com/cybtachyon/dsh-plugin-local-infer`.
32
+
33
+ ## Using the plugin
34
+
35
+ The **Engine settings** card mounts on the Plugins page (older hosts: the Settings page).
36
+
37
+ - **Pick an engine and model**, then tune the parameters. Each field renders by its type: checkboxes, dropdowns, sliders, text, directory pickers, and a chat-template combo (known templates plus free text).
38
+ - **Watch the VRAM Est. meter.** It prices weights, KV cache, overhead, and workspace against your card as you adjust values, and shows the verdict (`fits` / `tight` / `over`) and the largest context that fits.
39
+ - **Read the warnings.** Red banners and inline field warnings fire when a parameter value, or the presence of a parameter, is unsafe for your detected hardware.
40
+ - **Satisfy the system dependencies.** The panel lists each missing host dependency (docker, CUDA toolkit, ffmpeg, hf CLI, ...) with its purpose, a copy/paste install string for your OS, and an optional one-click **Run** (sudo). The **Get** button stays disabled until every dependency reports satisfied.
41
+ - **Launch / Stop.** `Launch` clones or pulls the engine, downloads the model, starts it, and polls its health endpoint. `Stop` shuts it down.
42
+ - **Register / Remove.** `Register` publishes the confirmed-working engine to DSH as a model (optionally as the agent default model) through the settings service, so the change is revision-tracked and undoable. `Remove` pulls the entry back.
43
+
44
+ All values persist to `~/.dsh/local-infer/config.json`; the browser never sees a value it did not store.
45
+
46
+ ## Supported Platforms
47
+
48
+ ### Operating systems
49
+
50
+ | OS | State | Notes |
51
+ |------------------------------|-----------|---------------------------------------------------------------------------------------------------------------------|
52
+ | Linux (Debian/Ubuntu, `apt`) | Supported | Install blocks mirror the working NInfer launcher: the CUDA keyring sequence plus the compile toolchain. |
53
+ | Linux (Arch, `pacman`) | Supported | `pacman` blocks plus the `/opt/cuda` export lines. |
54
+ | Linux (Fedora, `dnf`) | Untested | Command set present, flagged untested on a live host. |
55
+ | macOS (`brew`) | Partial | CPU/docker path (llama.cpp). No NVIDIA Container Toolkit on macOS, so the CUDA engines' docker path is unavailable. |
56
+ | Windows (WSL2) | Untested | WSL2 is detected and the dflash2 pin-memory rule fires; the command set is flagged untested. |
57
+ | Windows | Partial | Code paths are only partially written; further development needed. |
58
+
59
+ ### Engines
60
+
61
+ | Engine | Docker | Local build | State |
62
+ |-------------------|---------------|--------------------|------------------------------------------------------------------------------|
63
+ | NInfer | Yes | Yes (cmake + CUDA) | The reference engine. Measured VRAM models for the Qwen 27B/35B artifacts. |
64
+ | Hyper-Qwen (vLLM) | Yes (compose) | No | `.env`-driven docker-compose profiles. |
65
+ | vLLM | No | No | Work-in-progress. |
66
+ | llama.cpp | Yes | Yes | Specified, not verified until the binary is available. |
67
+ | Strata | Yes | No | Placeholder engine; its parameter surface is empty until the flag set lands. |
68
+
69
+ Runtime requirements: Node `^22.19.0 || >=24.0.0`, pnpm 12.11.2 (pinned by `mise.toml`), and the `@deepseek-ai/cordis >= 4.0.1` peer dependency.
70
+
71
+ ## Hardware guide
72
+
73
+ What each common machine gets you in practice. Capability impressions are sourced from [r/LocalLLaMA](https://www.reddit.com/r/LocalLLaMA/) user threads. "Shared" means unified memory (the model and the OS share the pool).
74
+
75
+ | Hardware | Memory | What you get |
76
+ | ------------------------------- | --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
77
+ | NVIDIA RTX 5090 | 32 GB VRAM | Reliably fits model weights up to 23 GB with 240k+ context and vision. Handles complex coding and vision tasks, but needs special tooling for very long or complex tasks. |
78
+ | NVIDIA RTX 4090 | 24 GB VRAM | The community workhorse. 30B-class models fit at Q4 and drive coding agents; 70B needs slow CPU offload. Best speed-per-dollar single card. |
79
+ | NVIDIA RTX 3090 | 24 GB VRAM | The used-card value king. Same 24 GB as a 4090 but an older generation: 32B at Q4 with modest context, no FP8. A single card is limiting; the common advice is to pair two. |
80
+ | NVIDIA RTX PRO 6000 | 96 GB VRAM | Near-frontier dense models (70B–80B) fit fully in memory with long context, and 32B models can even be fine-tuned (LoRA, full FT). The prosumer ceiling. |
81
+ | NVIDIA RTX PRO 5500 | 84 GB VRAM | The rack-oriented 84 GB tier: 70B-class models with headroom, close to the PRO 6000 at a lower price point. |
82
+ | NVIDIA Tesla V100 | 32 GB VRAM | Cheap used HBM2 server card. 30B-class at Q4/Q8 at respectable speed (bandwidth is what matters for inference); no FP8, power-hungry. A budget homelab pick. |
83
+ | NVIDIA Tesla V100 | 16 GB VRAM | The budget entry. 13B–14B at Q8, or 30B with offload. NVLink pairs double the capacity. Slow by modern standards, surprisingly solid for inference. |
84
+ | NVIDIA RTX 5090 Laptop | 24 GB VRAM | The mobile 4090. 32B at Q4 just fits; realistically ~17B at Q4 once you subtract context. |
85
+ | NVIDIA RTX 4090 Laptop | 16 GB VRAM | The GPU is overkill for LLMs and the VRAM is underkill: 8B–14B at Q4/Q5 with small context. |
86
+ | NVIDIA GB10 (DGX Spark) | 128 GB shared | The desktop AI dev box. A 35B MoE runs at ~100 tok/s; 120B+ MoE fits but is slow. Capacity over speed. |
87
+ | NVIDIA GB10 (DGX Spark) | 64 GB shared | Half the pool: 32B–35B MoE with context; 70B is tight. |
88
+ | NVIDIA RTX N1X | 128 GB shared | The next-generation GB10-class laptop: DGX Spark-class capacity in a laptop. Very new, little real-world data. |
89
+ | NVIDIA RTX N1X | 64 GB shared | The 64 GB tier: 32B-class with context. |
90
+ | Apple M4 Ultra | 256 GB shared | The capacity king. 200B+ MoE and 70B at 128K context fit; expect ~5 tok/s on 70B. Slow per token, unmatched capacity. |
91
+ | Apple M4 Ultra | 128 GB shared | 70B–120B-class fits with room; ~5 tok/s. Great for capacity, slow for speed. |
92
+ | AMD Radeon AI PRO R9700 | 32 GB VRAM | AMD's 32 GB Vulkan card. 32B at Q8 around $1,300, good value; the `radv` driver is not a conformant Vulkan implementation. |
93
+ | AMD Ryzen AI Max+ PRO 495 | 160 GB shared | The UMA monster. 120B+ MoE fits and coding agents run well (Qwen3-Coder-class models are tuned for UMA); $7k+ systems, slower than a discrete GPU. |
94
+ | 2x NVIDIA RTX 3090 | 48 GB VRAM | The community's "minimum for a usable local LLM": 70B at Q4/Q5. |
95
+ | 2x NVIDIA RTX 4090 | 48 GB VRAM | 70B at Q4 with context; exllama2 quantizations run fast. |
96
+ | 2x NVIDIA RTX 5090 | 64 GB VRAM | 120B MoE (GPT-OSS-120B) with 128k context at ~10 tok/s with offload. |
97
+ | 2x NVIDIA Tesla V100 (NVLink) | 64 GB VRAM | The budget 64 GB: 70B at lower quant with NVLink bandwidth; older arch, no FP8. |
@@ -0,0 +1,42 @@
1
+ # The dsh-plugin-local-infer bundle patch: mounts the whole local-inference
2
+ # capability as ONE layer over an existing dsh profile.
3
+ #
4
+ # Row order carries no load semantics — activation is service-availability
5
+ # driven — so the seam may appear before or after the providers that fill it.
6
+ # The user's own profile patch layer can address any row below by `id` to
7
+ # retune it (last write per row wins).
8
+
9
+ - insert:
10
+ # Client carrier: mounts the bare package name so the client-module scan
11
+ # keys the `dsh.client` declaration on it and loads dsh/client.js (the
12
+ # browser "Engine settings" card) into the boot graph. The scan only maps
13
+ # a bare package-root entry to its `dsh.client` field, never a subpath, so
14
+ # this row is what makes the client half reachable. The host module is a
15
+ # no-op; the capability lives in the four subpath rows below.
16
+ - id: local-infer
17
+ name: 'dsh-plugin-local-infer'
18
+
19
+ # Service Definition: publishes ctx.localInfer, the engine/preset/guideline
20
+ # registries, and the orchestration entry points (estimate, guidelines,
21
+ # deps, installString, runInstall, launch, registerModel). Carries no store
22
+ # of its own.
23
+ - id: local-infer-service
24
+ name: 'dsh-plugin-local-infer/service'
25
+
26
+ # Service Providers: the concrete engine adapters (ninfer, hyperqwen,
27
+ # llamacpp, strata), the NInfer VramModel, the built-in presets, the
28
+ # built-in guidelines, and the per-OS SystemDep install command data. Each
29
+ # registers itself with ctx.localInfer.
30
+ - id: local-infer-providers
31
+ name: 'dsh-plugin-local-infer/providers'
32
+
33
+ # Consumer: the model-facing local_infer_* tools (estimate, launch, status,
34
+ # register), their system-prompt section, and their per-tool timeout budgets.
35
+ - id: local-infer-tool
36
+ name: 'dsh-plugin-local-infer/tool'
37
+
38
+ # Web UI: the parameter form (form-type aware), the VRAM meter, the
39
+ # red-warning banner, the engine lifecycle controls, and the register-as-
40
+ # model confirmation.
41
+ - id: local-infer-ui
42
+ name: 'dsh-plugin-local-infer/ui'
Binary file
@@ -0,0 +1,97 @@
1
+ # dsh-plugin-local-infer
2
+
3
+ > 本中文翻译由 Qwen3.8-27B 生成。欢迎提交 Pull Request 改进翻译。
4
+
5
+ > 面向那些希望从特定硬件中获得比 Unsloth 开箱即用更高性能的用户。
6
+
7
+ [![License: MIT](https://img.shields.io/badge/license-MIT-green)](https://github.com/cybtachyon/dsh-plugin-local-infer/blob/main/LICENSE)
8
+ [![DSH 0.2.1-alpha.2](https://img.shields.io/badge/DSH-0.2.1--alpha.2-blue)](https://www.npmjs.com/package/@deepseek-ai/dsh)
9
+ [![Type: DSH Plugin](https://img.shields.io/badge/Type-DSH%20Plugin-8A2BE2)](https://github.com/topics/dsh-plugin)
10
+
11
+ 一个 DeepSeek Harness 插件,用于管理本地推理引擎:
12
+
13
+ - llama.cpp
14
+ - NInfer
15
+ - Hyper-Qwen (vLLM)
16
+ - Strata
17
+ - ...更多即将推出。
18
+
19
+ ![插件截图](../screenshot-20261014.png)
20
+
21
+ 选择一个模型和引擎,调节参数,实时观察 **VRAM 估算** 仪表,当某个值(或参数本身)对检测到的硬件不安全时立即看到 **硬件警告**,随后该插件会管理每个引擎的 **构建、部署和健康检查**,并在确认其正常工作后 **自动将其注册为 DSH 模型**。无需手动编辑易出错的 yaml 或启动器。
22
+
23
+ ## 安装
24
+
25
+ 命令行:
26
+
27
+ ```bash
28
+ dsh plugin --profile web add https://github.com/cybtachyon/dsh-plugin-local-infer
29
+ ```
30
+
31
+ Web UI:点击 **插件** → **添加插件** → 粘贴 `https://github.com/cybtachyon/dsh-plugin-local-infer`。
32
+
33
+ ## 使用插件
34
+
35
+ **引擎设置** 卡片挂载在插件页面(旧版本主机:设置页面)。
36
+
37
+ - **选择引擎和模型**,然后调节参数。每个字段根据其类型渲染:复选框、下拉框、滑块、文本、目录选择器,以及一个聊天模板组合框(已知模板加上自由文本)。
38
+ - **观察 VRAM 估算仪表。** 当你调整值时,它根据你的显卡对权重、KV 缓存、开销和工作区进行估算,并显示判定结果(`fits` / `tight` / `over`)以及能容纳的最大上下文。
39
+ - **阅读警告。** 当某个参数值,或某个参数的存在,对你的检测到的硬件不安全时,红色横幅和内联字段警告会触发。
40
+ - **满足系统依赖项。** 面板列出每个缺失的主机依赖项(docker、CUDA toolkit、ffmpeg、hf CLI、...),并附有其用途、针对你操作系统的复制粘贴安装字符串,以及可选的一键 **运行**(sudo)。**获取** 按钮在所有依赖项报告满足之前保持禁用状态。
41
+ - **启动 / 停止。** `启动` 克隆或拉取引擎、下载模型、启动它,并轮询其健康端点。`停止` 将其关闭。
42
+ - **注册 / 移除。** `注册` 通过设置服务将确认工作正常的引擎作为模型发布到 DSH(可选地作为代理默认模型),因此该变更可被修订跟踪并可撤销。`移除` 将该条目拉回。
43
+
44
+ 所有值都持久化到 `~/.dsh/local-infer/config.json`;浏览器永远不会看到它未存储的值。
45
+
46
+ ## 支持的平台
47
+
48
+ ### 操作系统
49
+
50
+ | 操作系统 | 状态 | 说明 |
51
+ | ---------------------------- | -------- | --------------------------------------------------------------------------------------------------------- |
52
+ | Linux (Debian/Ubuntu, `apt`) | 已支持 | 安装块镜像可用的 NInfer 启动器:CUDA keyring 序列加上编译工具链。 |
53
+ | Linux (Arch, `pacman`) | 已支持 | `pacman` 块加上 `/opt/cuda` 导出行。 |
54
+ | Linux (Fedora, `dnf`) | 未测试 | 命令集已存在,在实时主机上标记为未测试。 |
55
+ | macOS (`brew`) | 部分支持 | CPU/docker 路径(llama.cpp)。macOS 上没有 NVIDIA Container Toolkit,因此 CUDA 引擎的 docker 路径不可用。 |
56
+ | Windows (WSL2) | 未测试 | WSL2 被检测,dflash2 固定内存规则触发;命令集标记为未测试。 |
57
+ | Windows | 部分支持 | 代码路径仅部分编写;需要进一步开发。 |
58
+
59
+ ### 引擎
60
+
61
+ | 引擎 | Docker | 本地构建 | 状态 |
62
+ | ----------------- | ------------ | ----------------- | -------------------------------------------------- |
63
+ | NInfer | 是 | 是 (cmake + CUDA) | 参考引擎。针对 Qwen 27B/35B 制品的实测 VRAM 模型。 |
64
+ | Hyper-Qwen (vLLM) | 是 (compose) | 否 | 由 `.env` 驱动的 docker-compose 配置。 |
65
+ | vLLM | 否 | 否 | 进行中。 |
66
+ | llama.cpp | 是 | 是 | 已指定,在二进制可用之前未验证。 |
67
+ | Strata | 是 | 否 | 占位符引擎;在其标志集落地之前,其参数表面为空。 |
68
+
69
+ 运行时要求:Node `^22.19.0 || >=24.0.0`、pnpm 12.11.2(由 `mise.toml` 固定),以及 `@deepseek-ai/cordis >= 4.0.1` 同级依赖。
70
+
71
+ ## 硬件指南
72
+
73
+ 每台常见机器在实际中能为你带来什么。能力印象来源于 [r/LocalLLaMA](https://www.reddit.com/r/LocalLLaMA/) 用户帖子。"共享" 指统一内存(模型和操作系统共享内存池)。
74
+
75
+ | 硬件 | 内存 | 你能得到的 |
76
+ | ----------------------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------ |
77
+ | NVIDIA RTX 5090 | 32 GB VRAM | 可靠地容纳最多 23 GB 的模型权重,支持 240k+ 上下文和视觉。能处理复杂的编码和视觉任务,但需要特殊工具来处理非常长或复杂的任务。 |
78
+ | NVIDIA RTX 4090 | 24 GB VRAM | 社区主力。Q4 量化下可容纳 30B 级模型并驱动编码代理;70B 需要缓慢的 CPU 卸载。性价比最高的单卡。 |
79
+ | NVIDIA RTX 3090 | 24 GB VRAM | 二手卡的性价比之王。与 4090 相同的 24 GB,但属于较旧的世代:Q4 量化下 32B 及适度的上下文,不支持 FP8。单卡有限制;常见建议是配两张。 |
80
+ | NVIDIA RTX PRO 6000 | 96 GB VRAM | 接近前沿的稠密模型(70B–80B)可完全装入内存并支持长上下文,32B 模型甚至可以进行微调(LoRA、全量 FT)。消费级上限。 |
81
+ | NVIDIA RTX PRO 5500 | 84 GB VRAM | 面向机架的 84 GB 级别:70B 级模型有余量,价格更低且接近 PRO 6000。 |
82
+ | NVIDIA Tesla V100 | 32 GB VRAM | 便宜的二手 HBM2 服务器卡。Q4/Q8 量化下 30B 级模型,速度可观(带宽对推理而言才是关键);不支持 FP8,功耗高。预算型家庭实验室之选。 |
83
+ | NVIDIA Tesla V100 | 16 GB VRAM | 预算入门。Q8 量化下 13B–14B,或带卸载的 30B。NVLink 双卡翻倍容量。以现代标准来看较慢,但对推理而言出乎意料地扎实。 |
84
+ | NVIDIA RTX 5090 Laptop | 24 GB VRAM | 移动端 4090。Q4 量化下 32B 勉强容纳;扣除上下文后现实上约为 Q4 的 ~17B。 |
85
+ | NVIDIA RTX 4090 Laptop | 16 GB VRAM | GPU 对 LLM 而言过剩,而 VRAM 却不足:Q4/Q5 量化下 8B–14B,上下文较小。 |
86
+ | NVIDIA GB10 (DGX Spark) | 128 GB 共享 | 桌面 AI 开发机。35B MoE 以 ~100 tok/s 运行;120B+ MoE 可容纳但较慢。容量优先于速度。 |
87
+ | NVIDIA GB10 (DGX Spark) | 64 GB 共享 | 一半内存池:带上下文的 32B–35B MoE;70B 较为紧张。 |
88
+ | NVIDIA RTX N1X | 128 GB 共享 | 下一代 GB10 级笔记本:笔记本中的 DGX Spark 级容量。非常新,几乎没有真实世界数据。 |
89
+ | NVIDIA RTX N1X | 64 GB 共享 | 64 GB 级别:带上下文的 32B 级。 |
90
+ | Apple M4 Ultra | 256 GB 共享 | 容量之王。200B+ MoE 和 128K 上下文的 70B 均可容纳;70B 预期 ~5 tok/s。单 token 较慢,容量无出其右。 |
91
+ | Apple M4 Ultra | 128 GB 共享 | 70B–120B 级可容纳且有余量;~5 tok/s。容量出色,速度较慢。 |
92
+ | AMD Radeon AI PRO R9700 | 32 GB VRAM | AMD 的 32 GB Vulkan 卡。Q8 量化下 32B 约 $1,300,性价比较高;`radv` 驱动并非符合规范的 Vulkan 实现。 |
93
+ | AMD Ryzen AI Max+ PRO 495 | 160 GB 共享 | UMA 怪兽。120B+ MoE 可容纳,编码代理运行良好(Qwen3-Coder 级模型针对 UMA 调优);$7k+ 系统,速度慢于独立 GPU。 |
94
+ | 2x NVIDIA RTX 3090 | 48 GB VRAM | 社区的"可用作本地 LLM 的最低配置":Q4/Q5 量化下的 70B。 |
95
+ | 2x NVIDIA RTX 4090 | 48 GB VRAM | 带上下文的 Q4 量化 70B;exllama2 量化运行快速。 |
96
+ | 2x NVIDIA RTX 5090 | 64 GB VRAM | 带卸载的 ~10 tok/s,支持 128k 上下文的 120B MoE(GPT-OSS-120B)。 |
97
+ | 2x NVIDIA Tesla V100 (NVLink) | 64 GB VRAM | 预算型 64 GB:NVLink 带宽下低量化的 70B;较旧的架构,不支持 FP8。 |