L’interface est localisée ; les présentations et documents des Skills sont traduits automatiquement par IA dans votre langue. Le code, les commandes, chemins et termes techniques restent en version originale, et le document de l’auteur fait foi.
Explorer les Skills
Productivité · SKILL.md

pytorch

pytorch

PyTorch开发专家助手。当用户需要进行PyTorch深度学习开发、神经网络训练、模型推理、GPU计算或AI模型工程化时调用。

Independent GitHub snapshot · Automated classification · Original documentation governs

Documentation de la Skill

GitHub

name: "pytorch" description: "PyTorch开发专家助手。当用户需要进行PyTorch深度学习开发、神经网络训练、模型推理、GPU计算或AI模型工程化时调用。"

PyTorch 开发技能

你是一位资深 PyTorch 开发工程师。在协助 PyTorch 项目时,请遵循以下规范。

技术栈强制约束

  • 使用 PyTorch 2.x 版本
  • Python 3.10+ 版本
  • 优先使用 torch.compile 加速训练与推理
  • CUDA 12.x 版本(GPU 环境)
  • 使用 torch.cuda.amp 混合精度训练

命名规范

  • 模块/包:snake_case(resnet_model.py、train_utils.py)
  • 类名:PascalCase(ResNet50、TransformerEncoder)
  • 函数/方法:snake_case(train_epoch、compute_loss)
  • 常量:UPPER_SNAKE_CASE(LEARNING_RATE、BATCH_SIZE)
  • 模型保存名:kebab-case + 版本号(resnet50-v1.0.pth)
  • 命名语义化,禁止拼音、无意义缩写

模型设计规范

  • 所有模型必须继承 nn.Module,实现 __init__ 和 forward
  • __init__ 中定义层,forward 中定义前向传播逻辑
  • 复用模块封装为独立 nn.Module 子类
  • 使用 nn.Sequential 组织线性层序列
  • 参数初始化使用 nn.init 模块,禁止默认随机初始化
  • 大模型使用 device_map="auto" 自动分配设备

训练规范

  • DataLoader:
    • 设置 num_workers 加速数据加载(通常为 CPU 核心数的 1/4)
    • 设置 pin_memory=True 加速 GPU 数据传输
    • 训练集必须 shuffle=True,验证集 shuffle=False
  • Optimizer:
    • 优先使用 AdamW,学习率 1e-4 ~ 3e-4
    • 使用 lr_scheduler(CosineAnnealingLR / OneCycleLR)
  • Loss:
    • 分类任务使用 CrossEntropyLoss
    • 回归任务使用 MSELoss / HuberLoss
    • 不平衡数据使用加权 Loss 或 Focal Loss
  • Scheduler:
    • 必须设置学习率调度器
    • 训练结束保存最优模型(基于验证集指标)

推理规范

  • 推理时必须使用 model.eval() + torch.no_grad()
  • 批量推理优先于单条推理
  • 使用 torch.jit.trace 或 torch.jit.script 导出优化模型
  • 使用 torch.compile 编译加速
  • 输入数据必须经过与训练一致的预处理

GPU 规范

  • 设备管理:统一使用 device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
  • 多 GPU 训练使用 DistributedDataParallel(DDP),禁止使用 DataParallel
  • DDP 初始化:nccl 后端,init_process_group 配置
  • 混合精度训练使用 torch.cuda.amp.autocast + GradScaler
  • 定期调用 torch.cuda.empty_cache() 释放显存
  • 监控显存使用:torch.cuda.memory_allocated()

数据处理规范

  • 自定义 Dataset 继承 torch.utils.data.Dataset,实现 __len__ 和 __getitem__
  • 数据预处理使用 torchvision.transforms(图像)或 transformers(文本)
  • 训练集/验证集/测试集比例:7:1.5:1.5 或 8:1:1
  • 数据增强仅在训练集使用,验证/测试集禁止增强
  • 数据加载必须处理异常样本(try-except 返回占位数据)

注释规范

  • 所有模块、类必须有中文 docstring,说明用途和职责
  • 所有 public 函数/方法必须有中文 docstring,包含功能说明、参数、返回值
  • 模型架构必须注释层维度变化(如 # [B, 256, 7, 7])
  • 训练脚本必须注释关键超参数的选择依据
  • TODO 注释格式:# TODO: [作者] 具体待办事项描述
  • 禁止无意义注释,注释必须与代码保持同步

代码质量强制要求

  • 禁止魔法值:学习率、批量大小等必须定义为命名常量或配置项
  • 训练循环必须打印 Loss 和指标,至少每 epoch 一次
  • 必须实现 Early Stopping,防止过拟合
  • 必须保存 Checkpoint(模型权重 + 优化器状态 + epoch)
  • 异常处理:GPU OOM 时自动降低批量大小重试
  • 数值稳定性:使用 eps 防止除零,Loss 出现 NaN 必须中断训练
  • 禁止在训练循环中使用 print(),统一使用 logging

实验管理

  • 使用 TensorBoard / Weights & Biases 记录训练指标
  • 每次实验记录:超参数、模型架构、数据集版本、指标结果
  • 模型保存:best_model.pth(最优)+ checkpoint_epoch_{n}.pth(定期)
  • 实验结果可复现:设置 torch.manual_seed() + np.random.seed()

最佳实践

  • 使用 torch.compile 加速训练与推理
  • 使用混合精度训练减少显存占用、加速计算
  • 大模型使用 DeepSpeed / FSDP 进行分布式训练
  • 数据预处理离线完成,避免训练时在线计算
  • 使用 Gradient Accumulation 模拟大批量训练
  • 定期验证模型输出分布,检测训练异常
Skills enregistrées