Update example and notes

This commit is contained in:
2026-01-09 02:14:20 +08:00
parent 200bdf6136
commit c0639386be
18 changed files with 31656 additions and 0 deletions

27
CONVERSATION.md Normal file
View File

@@ -0,0 +1,27 @@
# 对话记录
日期: 2025-02-14
用户要求我先阅读 `/home/anay/Dev/diffusion/mask-ddpm` 中的 MD 文档,并按照该文档说明来推进工作。同时,在该项目中新增一个 MD 文件用于记录我们的对话,方便后续 AI 了解上下文。
已阅读文档:
- `/home/anay/Dev/diffusion/mask-ddpm/TODO-FOR-AI.md`
当前状态:
- 完成了文档阅读。
- 已创建本对话记录文件。
后续记录:
- 已开始检查数据集。发现 HAI 的 CSV 文件是 Git LFS 指针文件需要拉取真实内容Modbus 数据集当前可见的 CSV 主要是攻击日志(字段如 Timestamp/TargetIP/Attack/TransactionID其主体数据为 PCAP需要额外特征提取。
- 已阅读 `/home/anay/Dev/diffusion/dataset/hai/README.md`。关键信息HAI CSV 是时间序列特征数据,第一列为时间戳,后续为 SCADA 点位末尾为攻击标签列HAI 22.04 起使用 Git LFS 下载实际 CSV 内容。
- 用户尝试 `git lfs pull` 时遇到 LFS 配额超限(上游仓库配额不足),导致无法拉取 HAI 的真实 CSV 内容。
- 用户选择从 Kaggle 下载 HAI 数据集并手动放入本地目录。
- 在本地发现可读取的 HAI CSV 为 gzip 格式:`/home/anay/Dev/diffusion/dataset/hai/hai-20.07/*.csv.gz``/home/anay/Dev/diffusion/dataset/hai/hai-21.03/*.csv.gz`,列名包含大量 SCADA 点位与攻击标签列。
- 基于 `hai-21.03/train1.csv.gz` 前 5000 行的启发式统计,初步划分了离散/连续特征(离散多为开关、状态与攻击标签;连续为传感器/过程变量)。
-`/home/anay/Dev/diffusion/mask-ddpm/example` 中创建了示例文件夹,包含 `analyze_hai21_03.py` 和结果输出(`results/feature_split.txt``results/summary.txt`)。
- 已补充示例代码与文档:`feature_split.json``hybrid_diffusion.py``train_stub.py``model_design.md`,并更新了 `/home/anay/Dev/diffusion/mask-ddpm/example/README.md`
- 新增可运行脚本与数据准备:`data_utils.py``prepare_data.py``train.py``sample.py`,并修正 `train_stub.py` 以匹配新的离散掩码接口。
- 已运行 `prepare_data.py` 生成 `results/cont_stats.json``results/disc_vocab.json`(采样 50k 行)。
- 用户计划使用 conda 创建新环境并安装 GPU 版 PyTorch建议环境名 `mask-ddpm`Python 3.10,使用 cu121 安装源。
- 已运行 `example/train.py`CPU 回退CUDA 初始化警告),生成 `example/results/model.pt`;已运行 `example/sample.py` 得到采样张量形状 `(2, 64, 53)``(2, 64, 30)`,并将加载方式改为 `weights_only=True`
- 已将 `train.py``sample.py` 改为自动选择 GPU可用则使用否则回退 CPU并记录当前环境下 `/dev/nvidia*` 不存在导致 CUDA 不可用。