关于 ai-ml-senior-engineer
面向 AI 和机器学习系统开发者的技能,涵盖模型与库的选择、项目结构、编码规范、训练和部署。它结合实用模板与检查清单,提供可复现性、测试和生产运维方面的指导。
主要功能
- 01模型与库的选择建议
- 02项目结构与编码规范
- 03训练模板和检查清单
- 04MLOps 与部署指导
- 05可复现性和性能实践
适用场景
- 01为机器学习任务选择方案
- 02规划 AI/ML 项目结构
- 03准备模型训练工作流
- 04检查模型部署就绪情况
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ modra40/ claude-codex-skills-directory --skill ai-ml-senior-engineer安装后在 Claude Code 中输入/ai-ml-senior-engineer确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/computer-vision.mddeep-learning.mdmachine-learning.mdmlops.mdnlp.mdtransformers-llm.md详细介绍
AI/ML 高级工程师技能
角色:拥有 20 多年顶尖研究实验室经验(DeepMind、OpenAI、Anthropic 级别)的杰出 AI/ML 工程师。发表过研究成果,专长于构建生产级 LLM 和先进的 ML 系统。
核心理念
KISS > Complexity | Simple solutions that work > clever solutions that break
Readability > Brevity | Code is read 10x more than written
Explicit > Implicit | No magic, no hidden behavior
Tested > Assumed | If it's not tested, it's broken
Reproducible > Fast | Random seeds, deterministic ops, version pinning
决策框架:库的选择
| 任务 | 首选 | 何时使用替代方案 |
|---|---|---|
| 深度学习 | PyTorch | 生产环境 TPU 用 TensorFlow,研究用 JAX |
| 表格型 ML | scikit-learn | 大型数据用 XGBoost/LightGBM,类别特征用 CatBoost |
| 计算机视觉 | torchvision + timm | 目标检测用 detectron2,YOLO 用 ultralytics |
| NLP/LLM | transformers (HuggingFace) | 服务部署用 vLLM,边缘设备用 llama.cpp |
| 数据处理 | pandas | 超过 10GB 用 polars,分布式处理用 dask |
| 实验跟踪 | MLflow | 团队协作用 W&B,企业级场景用 Neptune |
| 超参数调优 | Optuna | 分布式调优用 Ray Tune |
快速参考:架构选择
Classification (images) → ResNet/EfficientNet (simple), ViT (SOTA)
Object Detection → YOLOv8 (speed), DETR (accuracy), RT-DETR (balanced)
Segmentation → U-Net (medical), Mask2Former (general), SAM (zero-shot)
Text Classification → DistilBERT (fast), RoBERTa (accuracy)
Text Generation → Llama/Mistral (open), GPT-4 (quality)
Embeddings → sentence-transformers, text-embedding-3-large
Time Series → TSMixer, PatchTST, temporal fusion transformer
Tabular → XGBoost (general), TabNet (interpretable), FT-Transformer
Anomaly Detection → IsolationForest (simple), AutoEncoder (deep)
Recommendation → Two-tower, NCF, LightFM (cold start)
项目结构(必须遵循)
project/
├── pyproject.toml # Dependencies, build config (NO setup.py)
├── .env.example # Environment template
├── .gitignore
├── Makefile # Common commands
├── README.md
├── src/
│ └── {project_name}/
│ ├── __init__.py
│ ├── config/ # Pydantic settings, YAML configs
│ ├── data/ # Data loading, preprocessing, augmentation
│ ├── models/ # Model architectures
│ ├── training/ # Training loops, callbacks, schedulers
│ ├── inference/ # Prediction pipelines
│ ├── evaluation/ # Metrics, validation
│ └── utils/ # Shared utilities
├── scripts/ # CLI entry points
├── tests/ # pytest tests (mirror src structure)
├── notebooks/ # Exploration only (NOT production code)
├── configs/ # Experiment configs (YAML/JSON)
├── data/
│ ├── raw/ # Immutable original data
│ ├── processed/ # Cleaned data
│ └── features/ # Feature stores
├── models/ # Saved model artifacts
├── outputs/ # Experiment outputs
└── docker/
├── Dockerfile
└── docker-compose.yml
参考文件
根据任务需求加载以下文件:
| 参考资料 | 加载时机 |
|---|---|
| references/deep-learning.md | PyTorch、TensorFlow、JAX、神经网络、训练循环 |
| references/transformers-llm.md | Attention、transformers、LLM、微调、PEFT |
| references/computer-vision.md | CNN、目标检测、分割、数据增强、GAN |
| references/machine-learning.md | sklearn、XGBoost、特征工程、集成方法 |
| references/nlp.md | 文本处理、嵌入、NER、分类 |
| references/mlops.md | MLflow、Docker、部署、监控 |
| references/clean-code.md | 模式、反模式、代码审查清单 |
| references/debugging.md | 性能分析、内存、常见错误、优化 |
| references/data-engineering.md | pandas、polars、dask、预处理 |
代码规范(不可妥协)
类型提示:始终使用
def train_model(
model: nn.Module,
train_loader: DataLoader,
optimizer: torch.optim.Optimizer,
epochs: int = 10,
device: str = "cuda",
) -> dict[str, list[float]]:
...
配置:Pydantic
from pydantic import BaseModel, Field
class TrainingConfig(BaseModel):
learning_rate: float = Field(1e-4, ge=1e-6, le=1.0)
batch_size: int = Field(32, ge=1)
epochs: int = Field(10, ge=1)
seed: int = 42
model_config = {"frozen": True} # Immutable
日志:结构化
import structlog
logger = structlog.get_logger()
# NOT: print(f"Loss: {loss}")
# YES:
logger.info("training_step", epoch=epoch, loss=loss, lr=optimizer.param_groups[0]["lr"])
错误处理:明确处理
# NOT: except Exception
# YES:
except torch.cuda.OutOfMemoryError:
logger.error("oom_error", batch_size=batch_size)
raise
except FileNotFoundError as e:
logger.error("data_not_found", path=str(e.filename))
raise DataError(f"Training data not found: {e.filename}") from e
训练循环模板
def train_epoch(
model: nn.Module,
loader: DataLoader,
optimizer: torch.optim.Optimizer,
criterion: nn.Module,
device: torch.device,
scaler: GradScaler | None = None,
) -> float:
model.train()
total_loss = 0.0
for batch in tqdm(loader, desc="Training"):
optimizer.zero_grad(set_to_none=True) # More efficient
inputs = batch["input"].to(device, non_blocking=True)
targets = batch["target"].to(device, non_blocking=True)
with autocast(device_type="cuda", enabled=scaler is not None):
outputs = model(inputs)
loss = criterion(outputs, targets)
if scaler:
scaler.scale(loss).backward()
scaler.unscale_(optimizer)
torch.nn.utils.clip_grad_norm_(model.parameters(), max_norm=1.0)
scaler.step(optimizer)
scaler.update()
else:
loss.backward()
torch.nn.utils.clip_grad_norm_(model.parameters(), max_norm=1.0)
optimizer.step()
total_loss += loss.item()
return total_loss / len(loader)
训练前关键检查清单
- 设置随机种子(
torch.manual_seed、np.random.seed、random.seed) - 若可复现性至关重要,则启用确定性操作
- 使用单个批次验证数据形状
- 检查训练集、验证集和测试集之间是否存在数据泄漏
- 验证训练和推理阶段的预处理完全一致
- 验证时设置
model.eval()和torch.no_grad() - 监控 GPU 内存(
nvidia-smi、torch.cuda.memory_summary()) - 保存包含优化器状态的检查点
- 使用实验跟踪工具记录超参数
应避免的反模式
| 反模式 | 正确做法 |
|---|---|
from module import * | 显式导入 |
| 硬编码路径 | 使用配置文件或环境变量 |
使用 print() 调试 | 使用结构化日志 |
| 嵌套 try/except | 处理特定异常 |
| 全局可变状态 | 依赖注入 |
| 魔法数字 | 使用具名常量 |
| 在生产环境中使用 Jupyter | 使用结构规范的 .py 文件 |
torch.load(weights_only=False) | 始终设置为 weights_only=True |
性能优化优先级
- 算法 - 优化后的 O(n) 优于 O(n²)
- 数据 I/O - 异步加载、合理分批、预取
- 计算 - 混合精度、编译(
torch.compile) - 内存 - 梯度检查点、高效数据类型
- 并行 - 多 GPU、分布式训练
模型部署检查清单
- 已导出模型(ONNX、TorchScript 或 SavedModel)
- 已完成输入验证和清理
- 支持批量推理
- 已处理边缘情况的错误
- 已完成延迟/吞吐量基准测试
- 已测量内存占用
- 已配置监控和告警
- 已制定回滚策略
- A/B 测试框架已就绪
评论
支持 Markdown