README.md 4 KB
Newer Older
dcuai's avatar
dcuai committed
1
particle_transformer
mashun's avatar
mashun committed
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40

## 论文

`Particle Transformer for Jet Tagging`

* https://arxiv.org/abs/2202.03772

## 模型结构

该模型是一种基于 Transformer 的架构,通过成对粒子交互功能进行了增强,这些功能作为softmax之前的偏差合并到多头注意力中。

<img src="readme_imgs/arch.png" style="zoom:70%">

## 算法原理

该算法利用 Transformer 架构处理粒子云数据。Transformer 通过自注意力机制捕捉粒子之间的复杂关系,并学习粒子的全局特征。

<img src="readme_imgs/alg.png" style="zoom:100%">


## 环境配置

### Docker(方法一)
    
    docker pull image.sourcefind.cn:5000/dcu/admin/base/pytorch:2.1.0-ubuntu22.04-dtk24.04.3-py3.10

    docker run --shm-size 50g --network=host --name=pt --privileged --device=/dev/kfd --device=/dev/dri --group-add video --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -v 项目地址(绝对路径):/home/ -v /opt/hyhal:/opt/hyhal:ro -it <your IMAGE ID> bash


### Dockerfile(方法二)

    docker build -t <IMAGE_NAME>:<TAG> .

    docker run --shm-size 50g --network=host --name=pt --privileged --device=/dev/kfd --device=/dev/dri --group-add video --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -v 项目地址(绝对路径):/home/ -v /opt/hyhal:/opt/hyhal:ro -it <your IMAGE ID> bash


### Anaconda (方法三)

1、关于本项目DCU显卡所需的特殊深度学习库可从光合开发者社区下载安装:
chenzk's avatar
chenzk committed
41
https://developer.sourcefind.cn/tool/
mashun's avatar
mashun committed
42
43
44
45
46
47
48
49
50
51

    DTK驱动:dtk24.04.3
    python:python3.10
    torch: 2.1.0
    torchvision: 0.16.0

Tips:以上dtk驱动、python、torch等DCU相关工具版本需要严格一一对应

## 数据集

chenzk's avatar
chenzk committed
52
可使用脚本下载数据集:
mashun's avatar
mashun committed
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
```bash
./get_datasets.py [JetClass|QuarkGluon|TopLandscape] [-d DATA_DIR]
```

```
datasets/
├── JetClass
│   └── Pythia
│       ├── test_20M
│       ├── train_100M
│       └── val_5M
├── QuarkGluon
│   ├── test_file_*.parquet
│   └── train_file_*.parquet
└── TopLandscape
    ├── test_file.parquet
    ├── train_file.parquet
    └── val_file.parquet

```

## 训练

```bash
pip install 'weaver-core>=0.4'
```

```bash
# 在JetClass数据集上训练
./train_JetClass.sh [ParT|PN|PFN|PCNN] [kin|kinpid|full] ...

# 在QuarkGluon数据集上训练
./train_QuarkGluon.sh [ParT|ParT-FineTune|PN|PN-FineTune|PFN|PCNN] [kin|kinpid|kinpidplus] ...

# 在TopLandscape数据集上训练
./train_TopLandscape.sh [ParT|ParT-FineTune|PN|PN-FineTune|PFN|PCNN] [kin] ...
```

其中第一个参数表示使用的网络,分别是

- ParT: Particle Transformer
- PN: ParticleNet
- PFN: Particle Flow Network
- PCNN: P-CNN
- xxx-FineTune: 使用预训练模型微调

第二个参数表示输入的特征集合,分别是

- kin: only kinematic inputs
- kinpid: kinematic inputs + particle identification
- full: kinematic inputs + particle identification + trajectory displacement


### 多卡训练

```bash
# DP - pytorch
./train_JetClass.sh ParT full --gpus 0,1,2,3 --batch-size [total_batch_size] ...

# DDP - pytorch
DDP_NGPUS=4 ./train_JetClass.sh ParT full --batch-size [batch_size_per_gpu] ...
```

## 推理

```bash
bash test_QuarkGluon_demo.sh
```
注意:该推理脚本仅供参考,具体见[weaver-core](https://github.com/hqucms/weaver-core)

## result

![alt text](readme_imgs/result.png)

### 精度

所有模型均选择ParT,以下结果仅展示不同加速卡在相同配置下的训练精度差异,并不代表可得到的最高精度。

仅记录AvgAcc.

|加速卡|JetClass|QuarkGluon(kinpidplus)|TopLandscape(kin)|
|:---:|:---:|:---:|:---:|
|K100_AI|0.6219|0.8495|0.93975|
|GPU|0.620|0.84921|0.93987|


## 应用场景

### 算法类别

`ai for science`

### 热点应用行业

`高能物理,医疗,金融`

## 源码仓库及问题反馈

* https://developer.sourcefind.cn/codes/modelzoo/particle_transformer_pytorch

## 参考资料

* https://github.com/jet-universe/particle_transformer
mashun1's avatar
mashun1 committed
156
* https://github.com/hqucms/weaver-core