Spaces:
Runtime error
A newer version of the Gradio SDK is available:
5.29.0
VenusFactory 训练模块使用指南
1. 简介
VenusFactory 训练模块是一个强大的工具,允许您使用蛋白质序列数据训练自定义模型。这些模型可以预测蛋白质的各种特性,如亚细胞定位、功能、稳定性等。训练模块提供了直观的界面,使生物学研究人员无需编程知识即可训练高性能的蛋白质预测模型。
2. 支持的蛋白质语言模型
VenusFactory 支持多种先进的蛋白质语言模型,您可以根据任务需求和计算资源选择合适的模型。
模型名称 | 模型参数规模 | 模型数量 | 模型样例 |
---|---|---|---|
ESM2 | 8M/35M/150M/650M/3B/15B | 6 | facebook/esm2_t33_650M_UR50D |
ESM-1b | 650M | 1 | facebook/esm1b_t33_650M_UR50S |
ESM-1v | 650M | 5 | facebook/esm1v_t33_650M_UR90S_1 |
ProtBert-Uniref100 | 420M | 1 | Rostlab/prot_bert_bfd |
ProtBert-BFD100 | 420M | 1 | Rostlab/prot_bert_bfd |
IgBert | 420M | 1 | Exscientia/IgBert |
IgBert_unpaired | 420M | 1 | Exscientia/IgBert_unpaired |
ProtT5-Uniref50 | 3B/11B | 2 | Rostlab/prot_t5_xl_uniref50 |
ProtT5-BFD100 | 3B/11B | 2 | Rostlab/prot_t5_xl_bfd |
IgT5 | 3B | 1 | Exscientia/IgT5 |
IgT5_unpaired | 3B | 1 | Exscientia/IgT5_unpaired |
Ankh | 450M/1.2B | 2 | ElnaggarLab/ankh-base |
ProSST | 110M | 7 | AI4Protein/ProSST-2048 |
ProPrime | 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. 支持的评估指标
- Use Pre-defined Dataset:使用系统预定义的数据集
数据集预览
- 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. 支持的微调方法
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
- 适用于序列长度变化大的数据集
- Batch Size Mode:固定批次大小
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 准备数据集
使用预定义数据集
- 在Dataset Selection中选择"Use Pre-defined Dataset"
- 从Dataset Configuration下拉菜单中选择一个数据集
- 点击Preview Dataset按钮查看数据集统计和样例
使用自定义数据集
- 准备符合要求的数据集并上传到Hugging Face(详见 自定义数据集格式要求)
- 在Dataset Selection中选择"Use Custom Dataset"
- 在Custom Dataset Path中输入Hugging Face数据集路径(格式:
用户名/数据集名
) - 设置Problem Type、Number of Labels和Metrics
- 点击Preview Dataset按钮验证数据集是否正确加载
6.2 选择模型和训练方法
从Protein Language Model下拉菜单中选择一个预训练模型
选择合适的Training Method
选择Pooling Method
如果选择
ses-adapter
,确保在Structure Sequence中指定结构序列类型如果选择
plm-lora
或plm-qlora
,根据需要调整LoRA参数
6.3 配置批处理和训练参数
选择Batch Processing Mode
- 序列长度相近时可以使用Batch Size Mode
- 序列长度差异大时推荐使用Batch Token Mode
设置批次大小或Token数量
- 根据GPU内存调整,出现内存错误时减小值
设置Learning Rate
设置Number of Epochs
- 使用早停机制,设置Early Stopping Patience为10-20,防止过拟合
设置Max Sequence Length
根据需要调整高级参数
- Scheduler Type:推荐使用
linear
或cosine
- Warmup Steps:推荐设置为总步数的5-10%
- Gradient Accumulation Steps:内存不足时增大
- Max Gradient Norm:训练不稳定时设置为1.0-5.0
- Scheduler Type:推荐使用
6.4 设置输出和日志
- 设置 Save Directory 为模型保存路径
- 设置 Output Model Name 为模型文件名
- 如需跟踪训练情况,勾选 Enable W&B Logging 并设置项目信息
6.5 开始训练
- 点击 Preview Command 预览训练命令
- 点击 Start 按钮开始训练
- 观察训练进度和指标变化
- 训练完成后,查看测试结果
- 检查各项评估指标
- 可下载CSV格式的结果
- 如需中止训练,点击Abort按钮
7. 自定义数据集格式要求
要使用自定义数据集,您需要将数据集上传到Hugging Face平台,并确保其符合以下格式要求。
7.1 基本要求
- 数据集必须包含
train
、validation
和test
三个子集 - 每个样本必须包含以下字段:
aa_seq
:氨基酸序列,使用标准单字母代码label
:标签,格式取决于问题类型
7.2 不同问题类型的标签格式
单标签分类(single_label_classification)
label
:整数值,表示类别索引(从0开始)- 例如:0, 1, 2, ...
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 格式示例:
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 格式示例:
aa_seq,label
MKTVRQERLKSIVRILERSKEPVSGAQLAEELSVSRQVIVQDIAYLRSLGYNIVATPRGYVLAGG,0.75
MLKFQQFGKGVLTEQKHALSELVCGLLEGRPFSQHEKETITIGIINIANNNDLFSAYK,-1.2
MSDKIIHLTDDSFDTDVLKADGAILVDFWAEWCGPCKMIAPILDEIADEYQGKLTVAK,3.45
7.3 结构信息(可选)
如果使用ses-adapter
训练方法,可以添加以下结构信息字段:
foldseek_seq
:FoldSeek结构序列,使用单字母代码表示结构元素ss8_seq
:8类二级结构序列,使用单字母代码表示二级结构
CSV 格式示例:
name,aa_seq,labelname,aa_seq,foldseek_seq,ss8_seq,label
Q9LSD8,MPEEDLVELKFRLYDGSDVGPFQYSPTATVSMLKERIVSEWPKDKKIVPKSASDIKLINAGKILENGKTVAQCKAPFDDLPKSVITMHVVVQLSPTKARPEKKIEKEEAPQRSFCSCTIM,DPPQLWAFAWEAEPVRDIDDRDTDHQQQFLLVVLQVCLVRPDPPDPDHAPHSVQKWKDDPNDTGDRNDGNNRRDDPPDDDSPDHHYIYIDGRDPPVVPPVPPPPPPPPPPPPPPPPPPPD,LLLLLLEEEEEELTTSLEEEEEEELTTLBHHHHHHHHHHTLLTTLSSLLSSGGGEEEEETTEELLTTLBHHHHLLLLLLLTTLLEEEEEEELLLLLLLLLLLLLLLLLLLLLLLLLLLLL,0
7.4 上传数据集到Hugging Face
- 为训练集、验证集和测试集分别创建CSV文件:
train.csv
:训练数据validation.csv
:验证数据test.csv
:测试数据
- 将数据集上传至Hugging Face
- 相关步骤如下列图所示:
上传后,在VenusFactory中使用用户名/数据集名
作为Custom Dataset Path