1. 环境配置
服务器环境
需要10.2的cuda版本
conda环境
包的版本:
python 3.6.13
pytorch 1.9.1
torch-cluster 1.5.9
torch-scatter 2.0.9
torch-sparse 0.6.12
torch-spline-conv 1.2.1
torch-geometric 1.4.3
环境bug
这里环境搭建好以后,就可以正常解析数据集,但test时会报错:
Traceback (most recent call last):
File "test_streamspot.py", line 8, in <module>
from torch_geometric.datasets import Planetoid
File "/home/xxx/.conda/envs/myenv/lib/python3.6/site-packages/torch_geometric/__init__.py", line 5, in <module>
import torch_geometric.data
File "/home/xxx/.conda/envs/myenv/lib/python3.6/site-packages/torch_geometric/data/__init__.py", line 6, in <module>
from .dataloader import DataLoader, DataListLoader, DenseDataLoader
File "/home/xxx/.conda/envs/myenv/lib/python3.6/site-packages/torch_geometric/data/dataloader.py", line 5, in <module>
from torch._six import container_abcs, string_classes, int_classes
ImportError: cannot import name 'container_abcs'
这是因为1.8版本之后container_abcs就已经被移除了,int_classes的错误是因为正在执行的代码和正在使用的 PyTorch 版本不兼容。
解决方法:
# from torch._six import container_abcs, string_classes, int_classes
int_classes = int
TORCH_MAJOR = int(torch.__version__.split('.')[0])
TORCH_MINOR = int(torch.__version__.split('.')[1])
if TORCH_MAJOR == 1 and TORCH_MINOR < 8:
from torch._six import container_abcs
else:
import collections.abc as container_abcs
将注释的这一行替换为下方代码即可
2. 复现实验
(1)准备数据集
- 从 [https://github.com/sbustreamspot/sbustreamspot-data] 下载 StreamSpot 数据集(all.tar.gz)
- 拷贝 all.tar.gz 到 root/threaTrace/graphchi-cpp-master/graph_data/streamspot/ 目录下
- 在 root/threaTrace/scripts 目录下运行
python parse_streamspot.py
(2)评估 StreamSpot 数据集
test 和 train 文件权限修改
cd /root/threaTrace/graphchi-cpp-master/bin/example_apps/
chmod 755 *
训练模型
在 root/threaTrace/scripts 目录下运行
python setup.py
python train_streamspot.py
测试模型
使用 ThreaTrace 测试 StreamSpot 数据集:
cd root/threaTrace/scripts
sh run_benign.sh
sh run_attack.sh
测试过程可以使用 ll | grep .txt
查看向 result_benign.txt 和 result_attack.txt 文件中的写入时间
评估性能
在 root/threaTrace/scripts 目录下运行
python evaluate_streamspot.py
评估结果: