物理修复(400 失败点归因,见 docs/failed400_nan_pseudo_convergence_2026_08_17.md): - runner: 阶段 converged 后复查 fort.7,含 NaN/Inf 即否决(fort.9 全零伪收敛, 曾致 261 点误跳过 nl_direct 回退);否决阶段不产出种子,阻断污染传播 - runner: nl_tight 回退——仅能量边际失败时以 CHMAX 收紧 10× 从自身模型续迭代, 残差降幅 ~10×;execute_tlusty_stage 抽取供主链与回退共用 - conv_check: fort.14 为 Eddington 通量 Hλ,积分需乘 4π 再比 σTeff⁴ (旧版 ratio 稳定 0.0796=1/4π,全点系统性假阳性)+ 回归测试 - nst_writer: 单行超 80 字符被 TLUSTY 静默截断,IFALI/JALI/TRAD 等从未生效; 按 75 字符自动换行 - seed_finder: Teff 容忍度改含边界 <=,相邻 5000K 档恢复互为种子 + 回归测试 谱线表与网格: - 默认线表 gfVIS99 → gfATO(全波段 18-23000Å),TaskSpec.linelist 支持工作流 级覆盖,节点按需下载(进程互斥锁防并发重复下载 238MB) - sdB_cno Teff 加密至 5000K 步长,432 → 9216 点;tlusty/synspec 静态二进制更新 统计与部署: - grid 汇总改按 tlusty_status/synspec_status 分项计数,新增 tlusty_failed/ synspec_failed/synspec_pending,前端详情页双视图适配 - deploy/fetch_results 支持跳板机 ProxyJump 与 SSH 主连接复用,fetch 新增 --force; - Docker 构建支持 CARGO_MIRROR/USE_MIRRORS 国内镜像参数;移除 tools/ 拷贝 - 新增 tlusty-synspec-test skill 与 6 篇根因分析/验证文档
89 lines
3.6 KiB
YAML
89 lines
3.6 KiB
YAML
# =============================================================================
|
|
# DCTS (Distributed Computing TLUSTY/SYNSPEC) Docker Compose 容器集群部署编排
|
|
# =============================================================================
|
|
#
|
|
# 快速启动:
|
|
# 1. docker compose up -d --build
|
|
# 2. 访问 Dashboard 控制台: http://localhost:8090
|
|
#
|
|
# 增加/减少计算节点:
|
|
# 每个物理设备部署一个 node 容器(多 slot 并行由 DCTS_MAX_SLOTS 控制),
|
|
# 通过修改本文件 node 服务的 image / env 或在多台设备上分别运行实现分布式计算。
|
|
#
|
|
# 停止集群:
|
|
# docker compose down
|
|
# =============================================================================
|
|
|
|
services:
|
|
# ─── 1. DCTS 主控/Web 节点 (Server + Dashboard) ─────────────────────────────
|
|
server:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile.server
|
|
# 国内网络构建时在 .env 里设 USE_MIRRORS=1 / CARGO_MIRROR=1 换国内源;默认 0 直连官方源。
|
|
args:
|
|
USE_MIRRORS: ${USE_MIRRORS:-0}
|
|
CARGO_MIRROR: ${CARGO_MIRROR:-0}
|
|
image: dcts-server:latest
|
|
container_name: dcts-server
|
|
restart: unless-stopped
|
|
# 开发/内网模式:直接暴露 8090。
|
|
# 公网模式(--profile public)下由 proxy 容器接管 443,此处端口暴露建议关闭或改为 127.0.0.1。
|
|
ports:
|
|
- "${DCTS_PORT:-8090}:8090"
|
|
env_file:
|
|
- .env
|
|
environment:
|
|
- DCTS_PORT=8090
|
|
- TZ=Asia/Shanghai
|
|
- DCTS_DB_PATH=/app/data/dcts.db
|
|
- DCTS_QUEUE_DB_PATH=/app/data/dcts_queue.db
|
|
- DCTS_SEEDS_DIR=/app/data/seeds
|
|
- DCTS_BACKUP_DIR=/app/data/backups
|
|
- DCTS_ASSETS_DIR=/app/assets
|
|
- LOG_DIR=/app/data/logs
|
|
- DCTS_LOG=info,server=debug
|
|
|
|
volumes:
|
|
- ./assets:/app/assets:ro
|
|
- ./workflows:/app/workflows:ro
|
|
- ./data:/app/data
|
|
healthcheck:
|
|
test: ["CMD", "wget", "-q", "--spider", "http://127.0.0.1:8090/healthz"]
|
|
interval: 15s
|
|
timeout: 5s
|
|
retries: 3
|
|
start_period: 10s
|
|
|
|
|
|
# ─── 2. DCTS Fortran 计算 Worker 节点 ──────────────────────────────────────
|
|
node:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile.node
|
|
# 同 server:国内网络构建时在 .env 里设 USE_MIRRORS=1 / CARGO_MIRROR=1。
|
|
args:
|
|
USE_MIRRORS: ${USE_MIRRORS:-0}
|
|
CARGO_MIRROR: ${CARGO_MIRROR:-0}
|
|
image: dcts-node:latest
|
|
container_name: dcts-node
|
|
restart: unless-stopped
|
|
env_file:
|
|
- .env
|
|
environment:
|
|
- TZ=Asia/Shanghai
|
|
- DCTS_SERVER_URL=${DCTS_SERVER_URL:-http://dcts-server:8090}
|
|
- DCTS_MAX_SLOTS=${DCTS_MAX_SLOTS:-4}
|
|
- DCTS_HEARTBEAT_SEC=${DCTS_HEARTBEAT_SEC:-15}
|
|
- LOG_DIR=${LOG_DIR:-/app/data/logs}
|
|
- DCTS_LOG=${DCTS_LOG:-info,node=debug}
|
|
# 完整计算结果归档目录:科学产物(.spec/.cont/.iden/各阶段快照/日志)落盘位置,
|
|
# 上报成功后从沙盒拷贝至此避免丢失。挂载在 ./data 下,已随卷持久化。
|
|
# DCTS_ARCHIVE_DIR 为旧名,向后兼容回退(node 代码优先读 DCTS_RESULT_DIR)。
|
|
- DCTS_RESULT_DIR=${DCTS_RESULT_DIR:-${DCTS_ARCHIVE_DIR:-/app/data/result}}
|
|
volumes:
|
|
# 注:不再挂载 ./assets —— node 经 include_bytes! 嵌入 tlusty/synspec 二进制 +
|
|
# 从 server /api/data/* 下载原子数据文件,从不读取 /app/assets,挂载它纯属搬运
|
|
# 2.1GB 空数据、浪费磁盘与带宽。
|
|
- ./data:/app/data
|