实战Pipeline模板

实战Pipeline模板


一、NLP分类Pipeline

1.1 项目结构

project/
|-- config.py          # 超参数配置
|-- dataset.py         # 数据加载与预处理
|-- model.py           # 模型定义
|-- trainer.py         # 训练逻辑
|-- inference.py       # 推理与提交
|-- utils.py           # 工具函数
|-- main.py            # 入口

1.2 核心Pipeline

Step 1: 数据预处理
  - 文本清洗(HTML/特殊字符/编码)
  - 对抗验证(训练/测试分布检测)
  - K-Fold划分(5折stratified)

Step 2: 模型训练(每折)
  - 预训练模型加载(DeBERTa-v3-large)
  - 对抗训练(FGM, epsilon=1.0)
  - 学习率调度(CosineWarmup)
  - 早停(patience=3)
  - 保存最佳模型和OO F预测

Step 3: 伪标签(可选)
  - 用5折模型给测试集打伪标签
  - 筛选置信度>0.9的样本
  - 加入训练集重新训练

Step 4: 融合
  - 多模型OOF预测加权平均
  - 多模型测试预测加权平均
  - 权重通过OOF分数优化

Step 5: 后处理
  - 阈值搜索(网格搜索最优阈值)
  - 规则修正(业务规则)
  - 生成提交文件

1.3 关键超参数

参数 推荐值 说明
max_length 256/512 根据文本长度分布选择
batch_size 16/32 根据GPU显存调整
learning_rate 2e-5 分类头学习率
layer_lr_decay 0.9 底层学习率衰减
weight_decay 0.01 L2正则
warmup_ratio 0.1 预热步数占比
epochs 5~10 配合早停
fgm_epsilon 1.0 对抗训练扰动幅度
rdrop_alpha 5.0 R-Drop KL散度权重

二、CV分类Pipeline

2.1 项目结构

project/
|-- config.py          # 超参数配置
|-- dataset.py         # 数据加载与增强
|-- model.py           # 模型定义
|-- train.py           # 训练逻辑
|-- inference.py       # TTA推理
|-- ensemble.py        # 模型融合
|-- main.py            # 入口

2.2 核心Pipeline

Step 1: 数据准备
  - 图像EDA(尺寸/通道/类别分布)
  - 对抗验证
  - K-Fold划分(5折stratified)

Step 2: 数据增强
  - 训练: RandAugment + CutMix + Mixup
  - 验证: CenterCrop + Normalize
  - 推理: MultiCropTTA

Step 3: 模型训练(每折)
  - Backbone: EfficientNetV2-M/L 或 ConvNeXt-S/B
  - 损失: CE + LabelSmoothing(0.1) 或 ArcFace
  - 优化器: AdamW + CosineWarmup
  - 混合精度训练(FP16)
  - EMA(decay=0.999)
  - 保存最佳模型和OOF预测

Step 4: TTA推理
  - 原图 + 水平翻转 + 垂直翻转
  - 多尺度(0.75x/1.0x/1.25x)
  - 多裁剪(5-crop/10-crop)
  - 取softmax平均

Step 5: 融合
  - 多模型softmax概率加权平均
  - 权重通过OOF分数优化

Step 6: 后处理
  - 阈值搜索
  - 规则修正
  - 生成提交文件

2.3 关键超参数

参数 推荐值 说明
image_size 384/512/640 越大越准但越慢
batch_size 16/32 FP16下可增大
learning_rate 1e-4 ~ 3e-4 比NLP大
warmup_epochs 5 预热epoch数
epochs 30~50 配合早停
label_smoothing 0.1 标签平滑
mixup_alpha 0.2 Mixup参数
cutmix_alpha 1.0 CutMix参数
ema_decay 0.999 EMA衰减

三、CV检测Pipeline

3.1 核心Pipeline

Step 1: 数据分析
  - 目标尺寸分布(决定Anchor/输入尺寸)
  - 类别分布(是否不均衡)
  - 图像尺寸分布(是否需要SAHI)

Step 2: Anchor定制
  - K-means聚类目标框尺寸
  - 计算IoU评估Anchor质量
  - 替换默认Anchor

Step 3: 模型训练
  - YOLOv5/X 或 EfficientDet 或 DINO
  - 多尺度训练(img_size=640~1280)
  - Mosaic + Mixup增强
  - 类别权重(不均衡时)

Step 4: SAHI推理(小目标)
  - 切片大小: 1024x1024
  - 重叠率: 0.25
  - 合并方式: WBF

Step 5: TTA推理
  - 翻转(水平/垂直)
  - 多尺度(0.8x/1.0x/1.2x)

Step 6: 融合
  - 多模型WBF融合(iou_thr=0.6)
  - 置信度阈值搜索

Step 7: 后处理
  - Soft-NMS
  - 类别特定阈值
  - 极小框过滤

3.2 关键超参数

参数 推荐值 说明
img_size 640/1024/1280 根据目标大小选择
batch_size 4/8 检测模型显存占用大
learning_rate 1e-3 ~ 1e-2 比分类大
mosaic_prob 0.5 Mosaic增强概率
mixup_prob 0.1 Mixup概率
iou_thr_wbf 0.5~0.7 WBF IoU阈值
skip_box_thr 0.0001 WBF低分框过滤
conf_thr 网格搜索 置信度阈值

四、CV分割Pipeline

4.1 核心Pipeline

Step 1: 数据分析
  - 图像尺寸分布
  - 类别像素占比
  - 边界复杂度

Step 2: 模型训练
  - Encoder: EfficientNetV2 / ConvNeXt / Swin
  - Decoder: UNet++ / DeepLabV3+ / FPN
  - 损失: BCE + Dice 或 BCE + Lovasz
  - 增强强增强(旋转/翻转/弹性变形/CutMix)

Step 3: 多尺度推理
  - 0.75x/1.0x/1.25x/1.5x
  - 取sigmoid平均

Step 4: TTA
  - 翻转(水平/垂直/对角)
  - 旋转(90/180/270度)

Step 5: 融合
  - 多模型概率平均
  - 多尺度概率平均

Step 6: 后处理
  - CRF精修边界
  - 阈值搜索(每类别独立阈值)
  - 小区域过滤
  - 生成提交文件(RLE编码)

4.2 关键超参数

参数 推荐值 说明
image_size 256/384/512 分割通常比分类小
batch_size 8/16 分割显存占用大
learning_rate 1e-4 ~ 5e-4 -
encoder_lr 1e-5 encoder学习率更小
loss_bce_weight 0.5 BCE损失权重
loss_dice_weight 0.5 Dice损失权重
tta_scales [0.75,1.0,1.25] TTA尺度

五、时序预测Pipeline

5.1 核心Pipeline

Step 1: 时间线分析
  - 检测分布变化点
  - 对抗验证(训练/测试分布)
  - 确定验证策略(时间划分/滚动验证)

Step 2: 特征工程
  - 时间特征: year/month/day/dayofweek/hour
  - 周期编码: sin(2*pi*day/7), cos(2*pi*day/7)
  - 滞后特征: lag_1/lag_7/lag_14/lag_28
  - 滚动统计: rolling_mean_7/rolling_std_14
  - 扩展统计: expanding_mean/expanding_std
  - 差分特征: diff_1/diff_7
  - 交叉特征: 类别x时间统计

Step 3: 模型训练
  - LightGBM(主力)
  - XGBoost(多样性)
  - CatBoost(类别特征)
  - 多折时间序列CV

Step 4: 融合
  - 加权平均(权重=OOF分数)
  - Stacking(可选)

Step 5: 后处理
  - 截断(预测值限制在合理范围)
  - 平滑(移动平均)
  - 规则修正

5.2 关键超参数

参数 推荐值 说明
num_leaves 31/63/127 LightGBM叶子数
learning_rate 0.01~0.05 配合n_estimators
n_estimators 1000~10000 配合早停
max_depth -1(不限制) 时序通常不限制深度
min_child_samples 20/50 防止过拟合
reg_alpha 0.1~1.0 L1正则
reg_lambda 0.1~1.0 L2正则
lag_window [1,7,14,28] 滞后窗口

六、推荐系统Pipeline

6.1 核心Pipeline

Step 1: 数据分析
  - 用户/物品分布
  - 冷启动比例
  - 交互稀疏度

Step 2: 召回阶段(多路)
  - ItemCF(相似物品召回)
  - UserCF(相似用户召回)
  - 热门物品召回
  - 向量召回(双塔DNN)
  - 序列召回(SASRec)
  - 合并去重(1000~3000候选)

Step 3: 特征工程
  - 用户统计特征(点击率/活跃度)
  - 物品统计特征(热度/类别)
  - 交叉统计特征(用户-类别点击率)
  - 序列特征(最近N个交互物品的Embedding)

Step 4: 排序模型
  - DeepFM / DCN V2 / DIN
  - 多目标(MMOE/PLE)
  - 特征重要性筛选

Step 5: 重排
  - 多样性过滤(同类去重)
  - 新鲜度加权
  - 业务规则修正

Step 6: 融合
  - 多模型排序分数加权
  - 倒数排名融合(RRF)

6.2 关键超参数

参数 推荐值 说明
recall_top_k 100~500 每路召回数量
embed_dim 64/128 Embedding维度
hidden_dims [256,128,64] 隐藏层维度
learning_rate 1e-3 推荐模型通常较大
batch_size 4096/8192 推荐数据量大
neg_sample_ratio 1:4 正负样本比
dnn_dropout 0.1~0.3 DNN Dropout

七、通用实验管理模板

7.1 实验记录表

字段 说明
experiment_id 实验编号
description 改动描述
model 模型名称
hyperparams 关键超参数
cv_score CV分数
lb_score LB分数(如有)
oof_path OOF预测文件路径
model_path 模型文件路径
notes 备注

7.2 提交记录表

字段 说明
submit_id 提交编号
model_ids 使用的模型编号
ensemble_method 融合方式
lb_score LB分数
cv_score CV分数
timestamp 提交时间