Spaces:
Runtime error
Runtime error
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
- 相关步骤如下列图所示:




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