build: local stack, container images and the end-to-end smoke script
docker-compose brings up PostgreSQL 16 with pgvector and Redis 7 on non-standard host ports so it never collides with an existing local database. scripts/smoke.sh is the proof: compose, migrate, boot the API, issue a token, call the real DeepSeek API and print the resulting ob_ai_call and bl_ledger rows. services/vision and services/matting are placeholders noting that the local RTX 5090 makes BiRefNet and RTMPose developable without cloud GPU.
This commit is contained in:
Executable
+33
@@ -0,0 +1,33 @@
|
||||
# `services/` — 独立部署的 AI 能力服务
|
||||
|
||||
架构 §3.2:业务域做单体,**AI 能力做独立服务**。理由是资源画像完全不同 ——
|
||||
GPU 依赖、模型文件体积、推理并发模型、扩缩容节奏。混在一个进程里会导致
|
||||
「换装排队把 API 拖慢」。
|
||||
|
||||
| 目录 | 服务 | 资源 | 状态 |
|
||||
| --- | --- | --- | --- |
|
||||
| `vision/` | 人像分割、人体关键点、色值采样、体型测算、人脸属性 | CPU + ONNX | 占位 |
|
||||
| `matting/` | BiRefNet 批量抠图 + 白底标准化 + 规格校验 | GPU(按需) | 占位 |
|
||||
| `tryon/` | 换装三工作流、发型更换与发色 | GPU | 占位(现有服务改造纳管) |
|
||||
|
||||
## 本地有 RTX 5090
|
||||
|
||||
开发机带一块 **RTX 5090(32GB VRAM)**。`vision` 的 RTMPose ONNX 推理
|
||||
(TD-05/TD-06)与 `matting` 的 BiRefNet 抠图(TD-07)**完全可以在本地开发、
|
||||
调参和跑批,不需要租云 GPU**。素材生产期的批量抠图也可以先在本地跑通再决定
|
||||
要不要上云。
|
||||
|
||||
## 服务边界规矩
|
||||
|
||||
- 对上以**内部 API** 暴露,不共享进程内存。即使 V1 某个能力先做成进程内包,
|
||||
接口也要按远程调用设计(明确超时、可序列化的入参出参)。
|
||||
- 服务间调用必须带**服务间令牌**,且只允许内网访问(架构 §4.4)。
|
||||
- 每次推理必须返回**资源消耗**(如 `gpu_seconds`)与**模型/工作流版本号**,
|
||||
否则成本无法归因、效果变化无法回溯。
|
||||
- 接受 `idempotency_key`,重复提交返回同一结果。
|
||||
- 明确对外暴露**最大并发数**,让上游队列按容量限流。
|
||||
|
||||
## 不能放什么
|
||||
|
||||
- 业务判断。这里只做推理,「该不该做这次推理」是业务域的事。
|
||||
- 直接访问业务库。需要数据由调用方传入。
|
||||
@@ -0,0 +1 @@
|
||||
"""独立部署的 AI 能力服务(架构文档 §4.3)。"""
|
||||
@@ -0,0 +1,17 @@
|
||||
# `services/matting/` — 抠图批处理(占位)
|
||||
|
||||
架构 §4.3。离线批处理,GPU 按需。
|
||||
|
||||
- **BiRefNet**(TD-07 / ADR-08)。**禁用 RMBG-2.0**(许可证原因)。
|
||||
- 输出白底标准化图 + 规格校验,写 `kb_asset.tryon_ready`
|
||||
|
||||
## 本地有 RTX 5090(32GB VRAM)
|
||||
|
||||
**BiRefNet 抠图可以完全在本地开发、调参和跑批,不需要租云 GPU。**
|
||||
素材生产期(TD-26:300 件 `tryon_ready` 是关键路径)先在本地测出每周产能,
|
||||
再决定要不要上云扩产能。
|
||||
|
||||
## 验收
|
||||
|
||||
FR-KB-08:10 件样本走通全流程;`tryon_ready` 标志准确;
|
||||
抠图人工质检通过率 ≥ 90%。
|
||||
@@ -0,0 +1 @@
|
||||
"""抠图批处理(占位):BiRefNet 抠图 + 白底标准化 + 规格校验。"""
|
||||
@@ -0,0 +1,14 @@
|
||||
# `services/tryon/` — 换装服务(占位)
|
||||
|
||||
现有自有服务,需按架构 §4.4 改造后纳管。**不改造它会成为整个系统的不稳定源。**
|
||||
|
||||
| 改造项 | 要求 |
|
||||
| --- | --- |
|
||||
| 鉴权 | 改为内部服务,仅内网/网关调用,带服务间令牌 |
|
||||
| 调用模式 | 同步长连接 → **提交任务 + 回调通知**(或任务查询接口) |
|
||||
| 幂等 | 接受 `idempotency_key`,重复提交返回同一结果 |
|
||||
| 并发控制 | 明确最大并发数并对外暴露,让上游队列按容量限流 |
|
||||
| 成本埋点 | 每次推理返回 `gpu_seconds` 与模型版本,供成本归因 |
|
||||
| 结果存储 | 阿里云 OSS → 腾讯云 COS;历史数据迁移或双读 |
|
||||
| 输入校验 | 前置校验图片规格、人脸存在性、单品白底图规格,尽早失败 |
|
||||
| 版本管理 | 模型/工作流版本号随结果返回,便于回溯效果变化 |
|
||||
@@ -0,0 +1 @@
|
||||
"""换装服务(占位):现有 GPU 服务改造纳管。"""
|
||||
@@ -0,0 +1,30 @@
|
||||
# `services/vision/` — 视觉服务(占位)
|
||||
|
||||
架构 §8.2。独立服务,CPU + ONNX。
|
||||
|
||||
```
|
||||
POST /internal/vision/analyze
|
||||
├─ segment_portrait 腾讯云 SegmentPortraitPic → 前景掩膜
|
||||
├─ body_keypoints RTMPose ONNX(自建,腾讯云已下线,ADR-06)
|
||||
├─ face_landmarks 腾讯云 AnalyzeFace(90点) / AnalyzeDenseLandmarks(888点)
|
||||
├─ face_attributes 腾讯云 DetectFaceAttributes
|
||||
├─ color_sampling 自研:按关键点定位采样区 → Lab,稳健统计(去高光/阴影)
|
||||
└─ body_measure 自研:掩膜宽度剖面法(TD-06、ADR-07)
|
||||
返回:结构化特征 + 每项置信度 + 质量问题标记
|
||||
```
|
||||
|
||||
## 本地有 RTX 5090
|
||||
|
||||
**RTMPose ONNX 推理可以完全在本地开发和调参,不需要租云 GPU。**
|
||||
准确率验证(体型 ≥ 80%、季型 ≥ 75%、脸型 ≥ 80%,各 30~50 样本,FR-RPT-05)
|
||||
也可以在本地跑完。
|
||||
|
||||
## 质量门禁必须前置
|
||||
|
||||
架构 §8.2:图片质量不达标(多人、遮挡、侧脸过大、光线过暗)应在分析**前**就
|
||||
返回明确的重拍指引,而不是硬算出一个低置信度结果。
|
||||
**用户宁愿重拍一次,也不愿收到一份错的报告。**
|
||||
|
||||
## 人脸原图
|
||||
|
||||
不落盘。处理完立即删除(TD-20 / CR-02)。只返回派生特征。
|
||||
@@ -0,0 +1 @@
|
||||
"""视觉推理服务(占位):分割/关键点/色值采样/体型测算/人脸属性。"""
|
||||
Reference in New Issue
Block a user