"git@developer.sourcefind.cn:OpenDAS/ollama.git" did not exist on "23d23409a02430a700d5e76ac92f97554ec6d9e7"
README.md 5.65 KB
Newer Older
renzhc's avatar
renzhc committed
1
2
3
4
5
# <div align="center"><strong>MMPretrain-MMCV</strong></div>

## 简介

MMPretrain 是 OpenMMLab 的一个开源库,提供多种预训练模型的预训练,支持视觉任务如图像分类、目标检测等。它具有模块化设计的特点,易于定制和扩展,兼容其他 OpenMMLab 工具,支持快速微调和评估模型,适合科研和工业中的计算机视觉应用。
renzhc's avatar
renzhc committed
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

## 环境配置

### Docker(方法一)

推荐使用docker方式运行,拉取提供的docker镜像

```shell
docker pull image.sourcefind.cn:5000/dcu/admin/base/pytorch:2.1.0-ubuntu20.04-dtk24.04.1-py3.10
```

基于拉取的镜像创建容器

```shell
# <your IMAGE ID or NAME>用以上拉取的docker的镜像ID或名称替换 
renzhc's avatar
renzhc committed
21
docker run -it --name=mmpretrain --network=host --ipc=host --shm-size=16g --device=/dev/kfd --device=/dev/dri --device=/dev/mkfd --group-add video --privileged --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -v /opt/hyhal:/opt/hyhal:ro -v $PWD/mmpretrain_mmcv:/home/mmpretrain_mmcv <your IMAGE ID> bash
renzhc's avatar
renzhc committed
22
23
24
25
26
```

克隆git仓库,并安装相关依赖

```shell
renzhc's avatar
renzhc committed
27
28
git clone http://developer.hpccube.com/codes/OpenDAS/mmpretrain-mmcv.git
cd mmpretrain-mmcv 
renzhc's avatar
renzhc committed
29
pip install -e .
renzhc's avatar
renzhc committed
30
31
32
33
34
pip install -r requirements.txt
```

### Dockerfile(方法二)

renzhc's avatar
renzhc committed
35
    cd mmpretrain-mmcv/docker
renzhc's avatar
renzhc committed
36
    docker build --no-cache -t mmpretrain:latest .
renzhc's avatar
renzhc committed
37
    docker run -it --name=mmpretrain --network=host --ipc=host --shm-size=16g  --device=/dev/kfd --device=/dev/dri --device=/dev/mkfd --group-add video --privileged --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -v /opt/hyhal:/opt/hyhal:ro -v $PWD/mmpretrain:/home/mmpretrain <your IMAGE ID> bash
renzhc's avatar
renzhc committed
38
39
40
    pip install -e .
    # 若遇到Dockerfile启动的方式安装环境需要长时间等待,可注释掉里面的pip安装,启动容器后再安装python库:
    pip install -r requirements.txt
renzhc's avatar
renzhc committed
41
42
43
44
45
46
47
48
49
50
51
52
53
54

### Anaconda(方法三)

1、关于本项目DCU显卡所需的特殊深度学习库可从光合开发者社区下载安装: https://developer.hpccube.com/tool/

```shell
DTK驱动: DTK-24.04.1 
python==3.10 
torch==2.1.0 
torchvision==0.16.0+das1.1.git7d45932.abi1.dtk2404.torch2.1 mmcv==2.0.1+das1.1.gite58da25.abi1.dtk2404.torch2.1.0
```

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

renzhc's avatar
renzhc committed
55
56
57
2、安装mmpretrain仓库源码

```shell
renzhc's avatar
renzhc committed
58
cd mmpretrain-mmcv
renzhc's avatar
renzhc committed
59
60
61
62
63
64
65
66
67
pip install -e .
```

3、其它非特殊库参照requirements.txt安装

```shell
pip install -r requirements.txt
```

renzhc's avatar
renzhc committed
68
### 环境验证
renzhc's avatar
renzhc committed
69

renzhc's avatar
renzhc committed
70
71
72
```bash
python -c "import mmpretrain;print(mmpretrain.__version__)"
```
renzhc's avatar
renzhc committed
73

renzhc's avatar
renzhc committed
74
## 数据集准备
renzhc's avatar
renzhc committed
75

renzhc's avatar
renzhc committed
76
### ImageNet
renzhc's avatar
renzhc committed
77

renzhc's avatar
renzhc committed
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
156
157
158
159
160
161
162
163
164
165
166
167
在本项目中可以使用ImageNet数据集。下载ImageNet数据集:https://image-net.org/

可于SCNet快速下载[imagenet-2012](http://113.200.138.88:18080/aidatasets/project-dependency/imagenet-2012)

下载其中的ILSVRC2012_img_train.tar和ILSVRC2012_img_val.tar并按照以下方式解包

```bash
cd mmpretrain-mmcv/data/imagenet
mkdir train && cd train
tar -xvf ILSVRC2012_img_train.tar
```

解包后是1000个tar文件,每个tar对应了一个类别,解包至对应文件夹

```bash
for tarfile in *.tar; do
    dirname="${tarfile%.tar}"
    mkdir "$dirname"
    tar -xvf "$tarfile" -C "$dirname"
done
```

目录结构如下

```
data
└── imagenet
    ├── train
    │   ├── n01440764
    │   │   ├── n01440764_10026.JPEG
    │   │   ├── n01440764_10027.JPEG
    ├──val
    │   ├── n01440764 
    │   │   ├── ILSVRC2012_val_00000293.JPEG
```



### tiny-imagenet-200

由于ImageNet完整数据集较大,可以使用[tiny-imagenet-200](http://cs231n.stanford.edu/tiny-imagenet-200.zip)进行测试,此时需要对配置脚本进行一些修改:

- dataset配置文件(configs/\_\_base\_\_/datasets/xxx.py)中,需要对以下字段进行修改
  
  ```python
  # dataset settings
  dataset_type = 'CustomDataset'  # 修改为CustomDataset
  data_preprocessor = dict(
      num_classes=200,  # 修改类别为200
      ...
  )
  ...
  train_dataloader = dict(
      batch_size=32,
      num_workers=5,
      dataset=dict(
          type=dataset_type,
          data_root='data/imagenet',
          data_prefix='train',  # 改为data_prefix='train',val_dataloader中同理
          pipeline=train_pipeline),
      sampler=dict(type='DefaultSampler', shuffle=True),
  )
  ```

- model配置文件(configs/\_\_base\_\_/models/xxx.py)中,同样需要将类别相关的值设置为200。
  
  ```python
  # model settings
  model = dict(
      type='ImageClassifier',
      ...
      head=dict(
          type='LinearClsHead',
          num_classes=200,  # 将类别数改为200
          ...
      ))
  ```

mmpretrain-mmcv中提供了使用tiny-imagenet-200进行训练的若干配置脚本,可参考进行设置。

将训练数据集解压后放置于mmpretrain-mmcv/data/,对于tiny-imagenet,目录结构如下:

```
data
└── imagenet
    ├── test/
    ├── train/
    ├── val/
    ├── wnids.txt
    └── words.txt
renzhc's avatar
renzhc committed
168
169
170

```

renzhc's avatar
renzhc committed
171
## 启动训练
renzhc's avatar
renzhc committed
172
173
174
175

```shell
bash tools/dist_train.sh <配置文件脚本> <训练用卡数>
```
renzhc's avatar
renzhc committed
176
177
178
179
180
181
182
183
184
185
186
187

如遇端口占用问题,可在tools/dist_train.sh修改端口



更多的配置文件在configs目录下,可根据需要进行修改,继承的基础配置在configs/\_base\_/下,具体地

- configs/\_base\_/datasets/xxx.py 数据集相关配置

- configs/\_base\_/models/xxx.py 模型相关配置

- configs/\_base\_/shedules/xxx.py 训练过程相关配置
renzhc's avatar
renzhc committed
188
189
190
191
192
193
194
195
196
197
198
199

## Known Issue

-

## 参考资料

- [README_ORIGIN](README_ORIGIN.md)

- [README_zh-CN](README_zh-CN.md)

- [open-mmlab/mmpretrain: OpenMMLab Pre-training Toolbox and Benchmark (github.com)](https://github.com/open-mmlab/mmpretrain)