VenusFactory / src /web /manual /TrainingManual_ZH.md
2dogey's picture
Upload folder using huggingface_hub
8918ac7 verified
# 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