VenusFactory / src /web /manual /TrainingManual_ZH.md
2dogey's picture
Upload folder using huggingface_hub
8918ac7 verified

A newer version of the Gradio SDK is available: 5.29.0

Upgrade

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. 支持的评估指标

数据集预览

  • 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_seqss8_seq
  • LoRA Parameters(当选择plm-loraplm-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(详见 自定义数据集格式要求
  2. Dataset Selection中选择"Use Custom Dataset"
  3. Custom Dataset Path中输入Hugging Face数据集路径(格式:用户名/数据集名
  4. 设置Problem TypeNumber of LabelsMetrics
  5. 点击Preview Dataset按钮验证数据集是否正确加载

6.2 选择模型和训练方法

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

  2. 选择合适的Training Method

  3. 选择Pooling Method

  4. 如果选择ses-adapter,确保在Structure Sequence中指定结构序列类型

  5. 如果选择plm-loraplm-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:推荐使用linearcosine
    • 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 基本要求

  • 数据集必须包含trainvalidationtest三个子集
  • 每个样本必须包含以下字段:
    • 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

  1. 为训练集、验证集和测试集分别创建CSV文件:
  • train.csv:训练数据
  • validation.csv:验证数据
  • test.csv:测试数据
  1. 将数据集上传至Hugging Face
  • 相关步骤如下列图所示:

HF1 HF2 HF3 HF4

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