Spaces:
Runtime error
Runtime error
# 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 |