File size: 17,483 Bytes
8918ac7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
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
41
42
43
44
45
46
47
48
49
50
51
52
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
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
# VenusFactory 训练模块使用指南

## 1. 简介

VenusFactory 训练模块是一个强大的工具,允许您使用蛋白质序列数据训练自定义模型。这些模型可以预测蛋白质的各种特性,如亚细胞定位、功能、稳定性等。训练模块提供了直观的界面,使生物学研究人员无需编程知识即可训练高性能的蛋白质预测模型。

## 2. 支持的蛋白质语言模型

VenusFactory 支持多种先进的蛋白质语言模型,您可以根据任务需求和计算资源选择合适的模型。

| 模型名称                                                    | 模型参数规模          | 模型数量                | 模型样例                        |
| ------------------------------------------------------------ | ----------------------- | -------- | ------------------------------- |
| [ESM2](https://huggingface.co/facebook/esm2_t33_650M_UR50D)  | 8M/35M/150M/650M/3B/15B | 6        | facebook/esm2_t33_650M_UR50D    |

| [ESM-1b](https://huggingface.co/facebook/esm1b_t33_650M_UR50S) | 650M                    | 1        | facebook/esm1b_t33_650M_UR50S   |
| [ESM-1v](https://huggingface.co/facebook/esm1v_t33_650M_UR90S_1) | 650M                    | 5        | facebook/esm1v_t33_650M_UR90S_1 |
| [ProtBert-Uniref100](https://huggingface.co/Rostlab/prot_bert) | 420M                    | 1        | Rostlab/prot_bert_bfd           |
| [ProtBert-BFD100](https://huggingface.co/Rostlab/prot_bert_bfd) | 420M                    | 1        | Rostlab/prot_bert_bfd           |
| [IgBert](https://huggingface.co/Exscientia/IgBert) | 420M                    | 1        | Exscientia/IgBert           |
| [IgBert_unpaired](https://huggingface.co/Exscientia/IgBert_unpaired) | 420M                    | 1        | Exscientia/IgBert_unpaired           |

| [ProtT5-Uniref50](https://huggingface.co/Rostlab/prot_t5_xl_uniref50) | 3B/11B                  | 2        | Rostlab/prot_t5_xl_uniref50     |
| [ProtT5-BFD100](https://huggingface.co/Rostlab/prot_t5_xl_bfd) | 3B/11B                  | 2        | Rostlab/prot_t5_xl_bfd          |

| [IgT5](https://huggingface.co/Exscientia/IgT5) | 3B                  | 1        | Exscientia/IgT5          |

| [IgT5_unpaired](https://huggingface.co/Exscientia/IgT5_unpaired) | 3B                  | 1        | Exscientia/IgT5_unpaired          |
| [Ankh](https://huggingface.co/ElnaggarLab/ankh-base)         | 450M/1.2B               | 2        | ElnaggarLab/ankh-base           |
| [ProSST](https://huggingface.co/AI4Protein/ProSST-2048)  |110M                     | 7        | AI4Protein/ProSST-2048     |
| [ProPrime](https://huggingface.co/AI4Protein/Prime_690M)  |690M                     | 1        | AI4Protein/Prime_690M     |



## 3. 支持的微调方法



VenusFactory 提供多种训练方法,每种方法有其特定的优势和适用场景。



| 微调方法 | 描述 | 数据类型 | 内存使用 | 训练速度 | 性能 |

|---------|------|------------|---------|---------|------|

| **Freeze** | 冻结预训练模型,只训练分类器 | 序列信息 | 低 | 快速 | 良好 |

| **Full** | 全参数微调,训练所有参数 | 序列信息 | 高 | 慢速 | 优秀 |

| **LoRA** | 使用LoRA (Low-Rank Adaptation)方法训练,减少参数量 | 序列信息 | 低 | 快速 | 良好 |

| **DoRA** | 使用DoRA (Weight-Decomposed Low-Rank Adaptation)方法训练 | 序列信息 | 低 | 中等 | 较好 |

| **AdaLoRA** | 使用AdaLoRA (Adaptive Low-Rank Adaptation)方法训练 | 序列信息 | 低 | 中等 | 较好 |

| **IA3** | 使用IA³ (Infused Adapter by Inhibiting and Amplifying Inner Activations)方法训练 | 序列信息 | 极低 | 快速 | 良好 |

| **QLoRA** | 使用QLoRA (Quantized Low-Rank Adaptation)方法训练,降低内存需求 | 序列信息 | 极低 | 较慢 | 良好 |

| **SES-Adapter** | 使用结构增强适配器训练,融合序列和结构信息 | 序列信息 & 结构信息 | 中等 | 中等 | 较好 |



*注:具体的模型表现取决于特定问题和数据集,上表中的性能评估仅供参考。*



## 4. 支持的评估指标



VenusFactory 提供多种评估指标,用于评估模型性能。



| 简称 | 指标名称 | 适用问题类型 | 说明 | 优化方向 |

|---------|------|------------|------|---------|

| **Accuracy** | 准确率 (Accuracy) | 单标签/多标签分类 | 正确预测的样本比例,适用于平衡的数据集 | 越大越好 |

| **Recall** | 召回率 (Recall) | 单标签/多标签分类 | 正确识别出的正类比例,关注减少假阴性 | 越大越好 |

| **Precision** | 精确率 (Precision) | 单标签/多标签分类 | 正确预测为正类的比例,关注减少假阳性 | 越大越好 |

| **F1** | F1分数 (F1Score) | 单标签/多标签分类 | 精确率和召回率的调和平均,适用于不平衡的数据集 | 越大越好 |

| **MCC** | Matthews相关系数 (MatthewsCorrCoef) | 单标签/多标签分类 | 综合考虑所有混淆矩阵元素的指标,对不平衡数据集更公平 | 越大越好 |

| **AUROC** | ROC曲线下面积 (AUROC) | 单标签/多标签分类 | 评估不同阈值下的分类性能 | 越大越好 |

| **F1_max** | 最大F1分数 (F1ScoreMax) | 多标签分类 | 不同阈值下的最大F1值,适用于多标签分类 | 越大越好 |

| **Spearman_corr** | Spearman相关系数 (SpearmanCorrCoef) | 回归 | 评估预测值与真实值的单调关系,范围为[-1,1] | 越大越好 |

| **MSE** | 均方误差 (MeanSquaredError) | 回归 | 评估回归模型的预测误差 | 越小越好 |



## 5. 训练界面详解



训练界面分为几个主要部分,每个部分包含特定的配置选项。



### 5.1 模型和数据集配置



#### 蛋白质语言模型选择

- **Protein Language Model**:从下拉菜单中选择一个预训练模型

  - 选择时考虑您的计算资源和任务复杂度

  - 较大的模型需要更多计算资源



#### 数据集选择

- **Dataset Selection**:选择数据集来源

  - **Use Pre-defined Dataset**:使用系统预定义的数据集

    - **Dataset Configuration**:从下拉菜单中选择一个数据集

    - 系统会自动加载数据集的问题类型、标签数量和评估指标

  - **Use Custom Dataset**:使用自定义数据集

    - **Custom Dataset Path**:输入Hugging Face数据集路径(格式:`用户名/数据集名`)

    - **Problem Type**:选择问题类型

      - `single_label_classification`:单标签分类

      - `multi_label_classification`:多标签分类

      - `regression`:回归

    - **Number of Labels**:设置标签数量(分类问题)

    - **Metrics**:选择评估指标(可多选)

      - `accuracy`:准确率 (Accuracy)

      - `f1`:F1分数 (F1Score)

      - `precision`:精确率 (Precision)

      - `recall`:召回率 (Recall)

      - `mcc`:Matthews相关系数 (MatthewsCorrCoef)

      - `auroc`:ROC曲线下面积 (AUROC)

      - `f1max`:最大F1分数 (F1ScoreMax)

      - `spearman_corr`:Spearman相关系数 (SpearmanCorrCoef)
      - `mse`:均方误差 (MeanSquaredError)

      具体信息参考 [4. 支持的评估指标](#header-4)



#### 数据集预览
- **Preview Dataset**:点击此按钮预览所选数据集
  - 显示数据集统计信息:训练集、验证集和测试集的样本数量
  - 显示数据集样例:包括序列和标签

### 5.2 训练方法配置

- **Training Method**:选择训练方法
  - `freeze`:冻结预训练模型,只训练分类器
  - `full`:全参数微调,训练所有参数
  - `plm-lora`:使用LoRA (Low-Rank Adaptation)方法训练,减少参数量
  - `dora`:使用DoRA (Weight-Decomposed Low-Rank Adaptation)方法训练
  - `adalora`:使用AdaLoRA (Adaptive Low-Rank Adaptation)方法训练
  - `ia3`:使用IA³ (Infused Adapter by Inhibiting and Amplifying Inner Activations)方法训练
  - `plm-qlora`:使用QLoRA (Quantized Low-Rank Adaptation)方法训练,降低内存需求
  - `ses-adapter`:使用结构增强适配器训练,融合序列和结构信息

  具体信息参考 [3. 支持的微调方法](#header-3)

- **Pooling Method**:选择池化方法
  - `mean`:平均池化
  - `attention1d`:注意力池化
  - `light_attention`:轻量级注意力池化

- **Structure Sequence**(当选择`ses-adapter`时可见):
  - 选择结构序列类型(可多选),默认为多选`foldseek_seq``ss8_seq`

- **LoRA Parameters**(当选择`plm-lora``plm-qlora`时可见):
  - **LoRA Rank**:LoRA的秩,默认为8,影响参数量和性能
  - **LoRA Alpha**:LoRA的alpha值,默认为32,影响缩放因子
  - **LoRA Dropout**:LoRA的dropout率,默认为0.1,影响正则化
  - **LoRA Target Modules**:LoRA应用的目标模块,默认为`query,key,value`

### 5.3 批处理配置

- **Batch Processing Mode**:选择批处理模式
  - **Batch Size Mode**:固定批次大小
    - **Batch Size**:设置每批处理的样本数量,默认为16
  - **Batch Token Mode**:固定Token数量
    - **Tokens per Batch**:设置每批处理的Token数量,默认为10000
    - 适用于序列长度变化大的数据集

### 5.4 训练参数

- **Learning Rate**:学习率,默认为5e-4
  - 影响模型训练的步长,较大值可能导致不收敛,较小值可能导致训练缓慢

- **Number of Epochs**:训练轮数,默认为100
  - 完整数据集的训练次数
  - 实际训练可能因早停而提前结束

- **Early Stopping Patience**:早停轮数 N,默认为10
  - 如果验证性能在连续 N 轮没有提升,训练将提前停止

- **Max Sequence Length**:最大序列长度,默认为None(-1表示无限制)
  - 处理的最大蛋白质序列长度

- **Scheduler Type**:学习率调度器类型
  - `linear`:线性衰减
  - `cosine`:余弦衰减
  - `step`:阶梯式衰减
  - `None`:不使用调度器

- **Warmup Steps**:预热步数,默认为0
  - 学习率从小到设定值逐渐增加的步数
  - 有助于稳定训练初期

- **Gradient Accumulation Steps**:梯度累积步数,默认为1
  - 累积多个批次的梯度后再更新模型
  - 可以模拟更大的批次大小

- **Max Gradient Norm**:梯度裁剪阈值,默认为-1(不裁剪)
  - 限制梯度的最大范数,防止梯度爆炸
  - 推荐范围:1.0到5.0

- **Number of Workers**:数据加载的工作线程数,默认为4
  - 影响数据加载速度
  - 根据CPU核心数调整

### 5.5 输出和日志设置

- **Save Directory**:保存目录,默认为`ckpt`
  - 模型和训练结果的保存路径

- **Output Model Name**:输出模型名称,默认为`model.pt`
  - 保存的模型文件名

- **Enable W&B Logging**:是否启用Weights & Biases日志
  - 勾选后可设置W&B项目名称和实体
  - 用于实验跟踪和可视化

### 5.6 训练控制和输出

- **Preview Command**:预览将要执行的训练命令
  - 点击后显示完整的命令行参数

- **Abort**:中止当前训练过程

- **Start**:开始训练过程

- **Model Statistics**:显示模型参数统计
  - 训练模型、预训练模型和组合模型的参数量
  - 可训练参数的百分比

- **Training Progress**:显示训练进度
  - 当前阶段(训练、验证、测试)
  - 进度百分比
  - 已用时间和预估剩余时间
  - 当前损失值和梯度步数

- **Best Performance**:显示最佳模型信息
  - 最佳轮次和对应的评估指标

- **Training and Validation Loss**:损失曲线图
  - 训练损失和验证损失随时间变化

- **Validation Metrics**:验证集评估指标图
  - 各项评估指标随时间变化

- **Test Results**:测试结果
  - 在测试集上的最终性能指标
  - 可下载CSV格式的评估指标

## 6. 训练流程指南

以下是使用VenusFactory训练模块的完整流程指南,从数据准备到模型评估。

### 6.1 准备数据集

#### 使用预定义数据集
1.**Dataset Selection**中选择"Use Pre-defined Dataset"
2.**Dataset Configuration**下拉菜单中选择一个数据集
3. 点击**Preview Dataset**按钮查看数据集统计和样例

#### 使用自定义数据集
1. 准备符合要求的数据集并上传到Hugging Face(详见 [自定义数据集格式要求](#header-7))
2.**Dataset Selection**中选择"Use Custom Dataset"
3.**Custom Dataset Path**中输入Hugging Face数据集路径(格式:`用户名/数据集名`4. 设置**Problem Type****Number of Labels****Metrics**
5. 点击**Preview Dataset**按钮验证数据集是否正确加载

### 6.2 选择模型和训练方法

1.**Protein Language Model**下拉菜单中选择一个预训练模型

2. 选择合适的**Training Method**

3. 选择**Pooling Method**

4. 如果选择`ses-adapter`,确保在**Structure Sequence**中指定结构序列类型
5. 如果选择`plm-lora``plm-qlora`,根据需要调整LoRA参数

### 6.3 配置批处理和训练参数

1. 选择**Batch Processing Mode**
   - 序列长度相近时可以使用**Batch Size Mode**
   - 序列长度差异大时推荐使用**Batch Token Mode**

2. 设置批次大小或Token数量
   - 根据GPU内存调整,出现内存错误时减小值

3. 设置**Learning Rate**

4. 设置**Number of Epochs**
   - 使用早停机制,设置**Early Stopping Patience**为10-20,防止过拟合

5. 设置**Max Sequence Length**

6. 根据需要调整高级参数
   - **Scheduler Type**:推荐使用`linear``cosine`
   - **Warmup Steps**:推荐设置为总步数的5-10%
   - **Gradient Accumulation Steps**:内存不足时增大
   - **Max Gradient Norm**:训练不稳定时设置为1.0-5.0

### 6.4 设置输出和日志

1. 设置 **Save Directory** 为模型保存路径
2. 设置 **Output Model Name** 为模型文件名
3. 如需跟踪训练情况,勾选 **Enable W&B Logging** 并设置项目信息

### 6.5 开始训练

1. 点击 **Preview Command** 预览训练命令
2. 点击 **Start** 按钮开始训练
3. 观察训练进度和指标变化
4. 训练完成后,查看测试结果
   - 检查各项评估指标
   - 可下载CSV格式的结果
5. 如需中止训练,点击**Abort**按钮

## 7. 自定义数据集格式要求

要使用自定义数据集,您需要将数据集上传到Hugging Face平台,并确保其符合以下格式要求。

### 7.1 基本要求

- 数据集必须包含`train``validation``test`三个子集
- 每个样本必须包含以下字段:
  - `aa_seq`:氨基酸序列,使用标准单字母代码
  - `label`:标签,格式取决于问题类型

### 7.2 不同问题类型的标签格式

#### 单标签分类(single_label_classification)
- `label`:整数值,表示类别索引(从0开始)
- 例如:0, 1, 2, ...

CSV 格式示例:
```csv

aa_seq,label

MKTVRQERLKSIVRILERSKEPVSGAQLAEELSVSRQVIVQDIAYLRSLGYNIVATPRGYVLAGG,1

MLKFQQFGKGVLTEQKHALSELVCGLLEGRPFSQHEKETITIGIINIANNNDLFSAYK,0

MSDKIIHLTDDSFDTDVLKADGAILVDFWAEWCGPCKMIAPILDEIADEYQGKLTVAK,2

```


#### 多标签分类(multi_label_classification)
- `label`:以逗号分隔的类别索引字符串,表示存在的类别
- 例如:"373,449,584,674,780,883,897,911,1048,1073,1130,1234"

CSV 格式示例:
```csv

aa_seq,label

MKTVRQERLKSIVRILERSKEPVSGAQLAEELSVSRQVIVQDIAYLRSLGYNIVATPRGYVLAGG,"373,449,584,674,780,883,897,911,1048,1073,1130,1234"

MLKFQQFGKGVLTEQKHALSELVCGLLEGRPFSQHEKETITIGIINIANNNDLFSAYK,"15,42,87,103,256"

MSDKIIHLTDDSFDTDVLKADGAILVDFWAEWCGPCKMIAPILDEIADEYQGKLTVAK,"7,98,120,256,512,789"

```

#### 回归(regression)
- `label`:浮点数,表示连续值
- 例如:0.75, -1.2, ...

CSV 格式示例:
```csv

aa_seq,label

MKTVRQERLKSIVRILERSKEPVSGAQLAEELSVSRQVIVQDIAYLRSLGYNIVATPRGYVLAGG,0.75

MLKFQQFGKGVLTEQKHALSELVCGLLEGRPFSQHEKETITIGIINIANNNDLFSAYK,-1.2

MSDKIIHLTDDSFDTDVLKADGAILVDFWAEWCGPCKMIAPILDEIADEYQGKLTVAK,3.45

```

### 7.3 结构信息(可选)

如果使用`ses-adapter`训练方法,可以添加以下结构信息字段:

- `foldseek_seq`:FoldSeek结构序列,使用单字母代码表示结构元素
- `ss8_seq`:8类二级结构序列,使用单字母代码表示二级结构

CSV 格式示例:
```csv

name,aa_seq,labelname,aa_seq,foldseek_seq,ss8_seq,label

Q9LSD8,MPEEDLVELKFRLYDGSDVGPFQYSPTATVSMLKERIVSEWPKDKKIVPKSASDIKLINAGKILENGKTVAQCKAPFDDLPKSVITMHVVVQLSPTKARPEKKIEKEEAPQRSFCSCTIM,DPPQLWAFAWEAEPVRDIDDRDTDHQQQFLLVVLQVCLVRPDPPDPDHAPHSVQKWKDDPNDTGDRNDGNNRRDDPPDDDSPDHHYIYIDGRDPPVVPPVPPPPPPPPPPPPPPPPPPPD,LLLLLLEEEEEELTTSLEEEEEEELTTLBHHHHHHHHHHTLLTTLSSLLSSGGGEEEEETTEELLTTLBHHHHLLLLLLLTTLLEEEEEEELLLLLLLLLLLLLLLLLLLLLLLLLLLLL,0

```

### 7.4 上传数据集到Hugging Face

1. 为训练集、验证集和测试集分别创建CSV文件:
  - `train.csv`:训练数据
  - `validation.csv`:验证数据
  - `test.csv`:测试数据

2. 将数据集上传至Hugging Face

- 相关步骤如下列图所示:

![HF1](/img/HuggingFace/HF1.png)
![HF2](/img/HuggingFace/HF2.png)
![HF3](/img/HuggingFace/HF3.png)
![HF4](/img/HuggingFace/HF4.png)

上传后,在VenusFactory中使用`用户名/数据集名`作为Custom Dataset Path