# 4090 审核系统 v3.0 · 服务器部署依赖全清单 + 离线镜像站

> **用途**：把"从裸机到系统跑起来"过程中**所有需要从公网下载的文件**收口成一份机读清单，并全部镜像到
> **`https://file.liaoms.net`**，供所有 4090 GPU 节点 / CPU 节点 / 构建机统一拉取（国内直连、无需翻墙、可断点续传）。
>
> **事实源**：本清单与 `4090审核系统-v3.0-完整实施文档/06_服务器部署与软件安装手册.md`（附录 C 版本基线）、
> `4090_check/deploy/models/freeze-manifest.json`、`4090_check/deploy/k8s/*.yaml`、各 `services/*/requirements.txt`、
> `4090_check/ml/triton-models/*/1/README.md`、`Dockerfile.triton` 同源。版本若与上述冲突，以**附录 C + 各 requirements.txt 钉死值**为准。
>
> 生成日期：2026-06-12

---

## 0. 镜像站信息与使用方式

| 项 | 值 |
|---|---|
| 域名 | **file.liaoms.net** → 43.98.160.69（DNS A 记录已配置） |
| 协议 | HTTPS（Let's Encrypt，自动续期）；HTTP 自动 301 跳 HTTPS |
| 根目录 | 服务器 `/srv/mirror`（nginx autoindex 目录浏览，支持 Range 断点续传） |
| 目录结构 | `models/` 大模型权重 · `images/` 容器镜像 tar · `charts/` Helm 包 · `installers/` 系统包/manifest/二进制 · `pip/` Python wheel 仓 · `scripts/` 拉取脚本 · `checksums/` SHA256 校验 |
| 浏览 | 浏览器直接打开 https://file.liaoms.net 即可逐目录浏览 |

**4090 / CPU 节点拉取范式**：

```bash
# ① 拉单个文件（容器镜像 tar / chart / deb）
curl -fL -O https://file.liaoms.net/images/vllm-openai-v0.11.0.tar.zst
zstd -d vllm-openai-v0.11.0.tar.zst -c | sudo ctr -n k8s.io image import -    # 或 docker load

# ② 拉整个模型目录（HuggingFace 格式，vLLM 直接挂载）
#    用镜像站自带的 pull 脚本（按模型名递归 wget，自动续传 + 校验）
bash <(curl -fsSL https://file.liaoms.net/scripts/pull_model.sh) qwen3-8b-instruct /var/lib/model-cache

# ③ 离线 pip 安装（wheel 仓）
pip install --no-index --find-links https://file.liaoms.net/pip/ -r requirements.txt
```

---

## 1. 大模型权重（GPU 节点的主要拉取对象）

镜像站路径前缀：`models/`。目录名严格对齐 `06 §9.1` 与 k8s `/models/<目录名>`。

### 1.1 vLLM 四池 + ASR（官方 hub ID，国内首选 ModelScope/魔搭）

| 池 | 镜像站目录 | Hub ID（ModelScope = HuggingFace 同名） | 引擎 | 量化 | 纯权重量级 |
|---|---|---|---|---|---|
| A 文本-Guard | `models/qwen3guard/` | `Qwen/Qwen3Guard-Gen-8B` | vLLM | BF16 | ≈16.4 GB |
| B 文本-Main | `models/qwen3-8b-instruct/` | `Qwen/Qwen3-8B` | vLLM | BF16 | ≈16.4 GB |
| C 视频-VL | `models/qwen3-vl-8b-instruct/` | `Qwen/Qwen3-VL-8B-Instruct` | vLLM | BF16 | ≈17 GB |
| D 房间-Fusion | `models/qwen3-14b-instruct-awq/` | `Qwen/Qwen3-14B-AWQ` | vLLM | AWQ INT4 | ≈9 GB |
| E 音频-ASR | `models/qwen3-asr-1.7b/` | `Qwen/Qwen3-ASR-1.7B` | Triton python backend | BF16 | ≈3.5 GB |

> - D 池 4090 无 GPU 不能自量化，必须用**官方预量化** `Qwen/Qwen3-14B-AWQ`（镜像站直接给量化权重）。
> - Qwen3 文本系官方**无 `-Instruct` 后缀**（目录名沿用历史，`--model` 指目录不影响）。
> - ASR 若官方仓不可达，兜底 SenseVoice/FunASR（判据见 `ml/triton-models/qwen3_asr/1/README.md`）。

### 1.2 Triton 小模型（E/F 池，权重/导出产物）

镜像站路径 `models/triton/<name>/`。**起步必交**部分已放置可加载产物；自训/导出类给出来源。

| 模型 | 镜像站产物 | 公网来源 | 许可 | 状态 |
|---|---|---|---|---|
| nudenet | `triton/nudenet/detector_640.onnx` | GitHub `notAI-tech/NudeNet` releases `v3.4-weights/640m.onnx` | MIT | ✅ 起步必交 |
| paddleocr | `triton/paddleocr/{det.onnx,rec.onnx}` + 原始 tar | `paddleocr.bj.bcebos.com/PP-OCRv4/chinese/ch_PP-OCRv4_{det,rec}_infer.tar` → paddle2onnx | Apache-2.0 | ✅ 起步必交 |
| rtdetr | `triton/rtdetr/rtdetrv2_r18vd.onnx` + 原始 .pth | GitHub `lyuwenyu/storage` releases `v0.2/rtdetrv2_r18vd_120e_coco_rerun_48.1.pth` → 官方 export_onnx | Apache-2.0 | ✅ 起步必交（替代 AGPL 的 yolov10） |
| sed (PANNs CNN14) | `triton/sed/{cnn14.onnx,class_labels_indices.csv}` + 原始 .pth | `Cnn14_16k_mAP=0.438.pth`（zenodo，见 README）+ class 表（googleapis）→ torch→ONNX | Apache-2.0 | ✅ 起步必交 |
| ecapa_tdnn | `triton/ecapa_tdnn/model.onnx` | HF `speechbrain/spkrec-ecapa-voxceleb` → torch→ONNX | Apache-2.0 | ✅ 起步必交 |
| aasist | （骨架）`triton/aasist/` | 业务样本**自训**（骨架参考 GitHub `clovaai/aasist`，预训练权重 CC-BY-NC 仅联调） | 自训权重业务所有 | ✅ 骨架，权重需自训 |
| **P2 可选（默认禁用，video-worker `ENABLE_*=false`）** | | | | |
| movinet | `triton/movinet/movinet_a0.onnx` | TF-Hub `tensorflow/movinet/a0/base/kinetics-600` → tf2onnx | Apache-2.0 | P2 |
| deepfake | `triton/deepfake/` | 业务样本自训/微调 | 自有 | P2 |
| syncnet | `triton/syncnet/` | GitHub `joonson/syncnet_python` → TorchScript | 见仓库 | P2 |
| yolov10 | `triton/yolov10/`（回切档） | GitHub `THU-MIG/yolov10` → export onnx | **AGPL-3.0** | 已退役，法务过审前不交付 |

> LightGBM 房间评分模型（`room-bot-v1.onnx`）为**业务样本自训**产物，不从公网下载，不入镜像站。

---

## 2. 容器镜像（镜像站 `images/`，以 `docker save`→ `.tar.zst` 形式分发）

> 纯文件服务器无法当 Docker registry，故镜像以 **tar 形式离线分发**；节点用 `ctr image import` 或 `docker load` 导入
> （对应 `06 附录 D` 离线方案）。每个 tar 旁带 `.sha256`。**自研 9 个 CPU 服务镜像 + triton-custom 由构建机本地构建推 Harbor，不在镜像站。**

### 2.1 推理引擎（必备，最大）
| 镜像 | tag | 来源 | 用途 |
|---|---|---|---|
| `vllm/vllm-openai` | `v0.11.0` | docker.io | A/B/C/D 四池 vLLM（钉死，v0.10 不支持 Qwen3-VL/structured-outputs） |
| `nvcr.io/nvidia/tritonserver` | `24.08-py3` | NGC | triton-custom **基础镜像**（构建机据此 + torch/transformers 构建 triton-custom:v3.0.1） |

### 2.2 GPU 栈 / 冒烟
| 镜像 | tag | 用途 |
|---|---|---|
| `nvidia/cuda` | `12.6.2-base-ubuntu22.04` | GPU 容器冒烟（§4.5） |
| `oguzpastirmaci/gpu-burn` | `1.1` | 烤机老化（§4.7） |

### 2.3 中间件（bitnami / strimzi，由对应 chart 渲染出的镜像 tag）
| 组件 | chart | 关键镜像（tag 以 `helm template` 渲染为准） |
|---|---|---|
| Kafka | strimzi-kafka-operator 0.43.0 | `quay.io/strimzi/operator`、`quay.io/strimzi/kafka:*-kafka-3.7.0`、kaniko/bridge 等 |
| Redis | bitnami/redis 20.6.0 | `bitnami/redis:7.4*`、`bitnami/redis-exporter`（拉不到换 `bitnamilegacy/*`，附录 D.4） |
| PostgreSQL | bitnami/postgresql 16.7.27 | `bitnami/postgresql:17*` |
| MinIO | bitnami/minio 14.8.5 | `bitnami/minio:*`、`minio/mc:RELEASE.2024-10-08T09-37-26Z`（建桶用，单列） |
| ClickHouse | bitnami/clickhouse 6.3.3 | `bitnami/clickhouse:24.*` |
| kcat（验收） | — | `edenhill/kcat:1.7.1` |

### 2.4 K8s 平台组件
| 组件 | 版本 | 镜像/来源 |
|---|---|---|
| 控制面（kubeadm 拉取） | v1.33.4 | kube-apiserver/controller-manager/scheduler/kube-proxy + pause + coredns + etcd（`registry.k8s.io`，国内换 `registry.aliyuncs.com/google_containers`） |
| Calico | v3.28.0 | cni / node / kube-controllers / typha |
| MetalLB | v0.14.8 | controller / speaker |
| ingress-nginx | chart 4.11.3 | controller |
| cert-manager | chart v1.16.2 | controller / webhook / cainjector / acmesolver / startupapicheck |
| GPU Operator | chart v24.6.2 | device-plugin / dcgm-exporter / node-feature-discovery / gpu-feature-discovery / validator（driver、toolkit 关闭，不拉 driver 镜像） |
| local-path-provisioner | v0.0.30 | rancher/local-path-provisioner |
| alpine（warm-cache initContainer） | 3.20 | `alpine:3.20` |
| nfs-subdir-provisioner（可选共享 FS） | — | registry.k8s.io/sig-storage/nfs-subdir-external-provisioner |

### 2.5 监控栈
| 组件 | chart | 镜像 |
|---|---|---|
| kube-prometheus-stack | 65.5.1 | prometheus / grafana / alertmanager / node-exporter / kube-state-metrics / prometheus-operator / config-reloader |
| Loki + Promtail | loki 6.18.0 | grafana/loki / grafana/promtail |

### 2.6 私有仓 / 发布
| 组件 | chart/版本 | 镜像 |
|---|---|---|
| Harbor | chart 1.16.0 | goharbor/{core,portal,jobservice,registry,registryctl,harbor-db,redis,trivy,nginx,exporter} |
| Argo Rollouts | v1.7.2 | quay.io/argoproj/argo-rollouts（+ kubectl-argo-rollouts 插件二进制） |

---

## 3. Helm Charts（镜像站 `charts/`，`.tgz`）

`helm pull <repo>/<chart> --version <ver>` 产出，可离线 `helm install ./xxx.tgz`。

| Chart | 版本 | 仓库 URL |
|---|---|---|
| gpu-operator | v24.6.2 | https://helm.ngc.nvidia.com/nvidia |
| ingress-nginx | 4.11.3 | https://kubernetes.github.io/ingress-nginx |
| cert-manager | v1.16.2 | https://charts.jetstack.io |
| harbor | 1.16.0 | https://helm.goharbor.io |
| strimzi-kafka-operator | 0.43.0 | https://strimzi.io/charts/ |
| redis | 20.6.0 | https://charts.bitnami.com/bitnami |
| postgresql | 16.7.27 | https://charts.bitnami.com/bitnami |
| minio | 14.8.5 | https://charts.bitnami.com/bitnami |
| clickhouse | 6.3.3 | https://charts.bitnami.com/bitnami |
| kube-prometheus-stack | 65.5.1 | https://prometheus-community.github.io/helm-charts |
| loki | 6.18.0 | https://grafana.github.io/helm-charts |
| promtail | 6.16.6 | https://grafana.github.io/helm-charts |
| nfs-subdir-external-provisioner（可选） | 4.0.18 | https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/ |

---

## 4. 原始 manifest / 系统包 / 二进制（镜像站 `installers/`）

| 文件 | 版本 | 公网来源 |
|---|---|---|
| `calico.yaml` | v3.28.0 | raw.githubusercontent.com/projectcalico/calico/v3.28.0/manifests/calico.yaml |
| `metallb-native.yaml` | v0.14.8 | raw.githubusercontent.com/metallb/metallb/v0.14.8/config/manifests/metallb-native.yaml |
| `local-path-storage.yaml` | v0.0.30 | raw.githubusercontent.com/rancher/local-path-provisioner/v0.0.30/deploy/local-path-storage.yaml |
| `argo-rollouts-install.yaml` + `kubectl-argo-rollouts-linux-amd64` | v1.7.2 | github.com/argoproj/argo-rollouts/releases/v1.7.2 |
| `cuda-keyring_1.1-1_all.deb` | 1.1-1 | developer.download.nvidia.com/.../ubuntu2204/x86_64/ |
| `helm-v3.16.2-linux-amd64.tar.gz` | v3.16.2 | get.helm.sh / 华为云镜像 |
| NVIDIA 驱动 | 570.x-open | CUDA apt 仓（`nvidia-driver-570-open`）；离线可下 `.run` |
| NVIDIA Container Toolkit | 1.16.2 | nvidia.github.io/libnvidia-container（deb） |
| kubeadm/kubelet/kubectl | 1.33.4 | pkgs.k8s.io/core:/stable:/v1.33/deb |
| containerd | 发行版自带 | Ubuntu apt（`containerd`） |
| Ubuntu Server ISO（可选） | 22.04.5 | 清华/中科大/阿里镜像 |
| Grafana DCGM 看板 | ID 12239 | grafana.com/grafana/dashboards/12239（JSON） |

> APT/pip 国内源、containerd registry mirror 配置见 `06 §2.6 / 附录 D`，属节点本地配置，不入镜像站。

---

## 5. Python 依赖（镜像站 `pip/` wheel 仓 + 各 requirements）

> 服务器与 4090 同为 x86_64 Linux，wheel 通用。`pip download` 落 wheel 仓后节点 `--no-index --find-links` 离线装。

### 5.1 业务 9 服务运行依赖（钉死，与各 `requirements.txt` 一致）
`fastapi==0.115.0` · `uvicorn[standard]==0.30.6` · `pydantic==2.9.2` · `pyyaml==6.0.2` ·
`confluent-kafka==2.5.3` · `redis==5.0.8` · `boto3==1.35.20` · `httpx==0.27.2` ·
`structlog==24.4.0` · `prometheus-client==0.20.0` · `psycopg[binary,pool]==3.2.3` ·
`onnxruntime==1.19.2` · `numpy==1.26.4` · `lightgbm==4.5` ·
`tritonclient[http]==2.49.0` · `opencv-python-headless==4.10.0.84` · `soundfile` · `webrtcvad==2.0.10` ·（video 另：`av`/`decord` 可选）

### 5.2 triton-custom 镜像构建依赖（`Dockerfile.triton`，v3.0.1）
`torch==2.4.0`（cu124，download.pytorch.org/whl/cu124）· `transformers==4.57.6` · `accelerate==1.12.0` ·
`qwen-asr==0.0.6` · `onnxruntime-gpu==1.19.2` · `opencv-python-headless==4.10.0.84` ·
`pyclipper==1.3.0.post5` · `shapely==2.0.6` · `numpy==1.26.4` · `pillow==10.4.0`

### 5.3 模型下载/导出工具链（仅下载机/构建机用）
`modelscope` · `huggingface_hub[hf_transfer]` · `autoawq`（若自量化 14B）· `paddle2onnx`（paddleocr 导出）·
`tf2onnx`+`tensorflow_hub`（movinet）· `speechbrain`（ecapa 导出）· `ultralytics`（yolov10 回切，可选）· `git-lfs`

---

## 6. 校验与一致性

- 每个大文件（模型权重目录、镜像 tar、chart、deb）旁带 `.sha256`；目录级 `checksums/SHA256SUMS` 汇总。
- 模型 revision / LICENSE / 权重 hash 的**生产冻结**口径见 `freeze-manifest.json` 与 `07 §4.1/4.2`，本镜像站只负责"把文件搬到内网可拉取"，不替代冻结门禁。
- 镜像 tag 全部钉死（附录 C）；升级任一版本须同步改本清单 + 对应章节命令 + 走 `07 §4` 变更登记。

---

## 7. 体量与磁盘预算（镜像站服务器 /srv/mirror）

| 类别 | 估算 |
|---|---|
| 模型权重（4 vLLM + ASR + Triton 小模型） | ≈ 64 GB |
| 容器镜像 tar（vLLM + triton base + 中间件 + 平台 + 监控 + harbor，zstd 压缩并即拉即删 docker 层） | ≈ 45–55 GB |
| Helm charts + manifest + 系统包 + 二进制 | ≈ 3 GB |
| pip wheel 仓 | ≈ 3–5 GB |
| **合计** | **≈ 115–127 GB**（服务器 180 GB 可用，余量充足） |
