算法能力强但不懂工程化,无法通过实习和面试终面
核心内容:
-
AI系统架构
- 模型服务化部署(FastAPI、TorchServe)
- 异步任务处理(消息队列、Worker)
- 缓存策略(Redis、向量数据库)
-
高性能推理
- 批处理优化(Dynamic Batching)
- 模型并行与流水线并行
- GPU利用率优化
-
数据处理
- 数据清洗与标注流程
- 向量化与检索(Faiss、Milvus)
- 数据增强技术
-
监控与评测
- 模型效果监控
- A/B测试设计
- 可观测性体系
-
安全与合规
- Prompt注入防护
- 内容安全审核
- 隐私保护技术
模型服务化部署
- 模型部署和模型训练有什么区别?部署要考虑哪些问题?
- 模型服务化有哪些方案?Flask、FastAPI、TorchServe各有什么特点?
- FastAPI为什么适合做模型服务?异步处理怎么实现?
- 模型序列化怎么做?PyTorch的.pth和.pt有什么区别?
- ONNX是什么?为什么要转成ONNX格式?
- TorchScript是什么?JIT编译有什么好处?
- 模型推理的性能瓶颈在哪?计算、IO、网络哪个是主要矛盾?
- 批处理(Batching)为什么能提升吞吐量?动态批处理怎么实现?
- 模型推理的延迟(Latency)和吞吐量(Throughput)怎么权衡?
- GPU推理和CPU推理各有什么优缺点?什么时候用CPU就够了?
- 模型量化部署怎么做?INT8推理能省多少显存?
- TensorRT是什么?怎么优化模型推理速度?
- NVIDIA Triton是什么?怎么管理多个模型的部署?
- 模型热更新(Hot Reload)怎么实现?怎么做到不停机更新模型?
- A/B测试怎么做?怎么让一部分流量走新模型,一部分走老模型?
- 模型的灰度发布(Canary Deployment)是什么?怎么逐步上线?
- 模型服务的限流(Rate Limiting)怎么做?怎么防止过载?
- 模型服务的熔断(Circuit Breaker)是什么?怎么防止雪崩?
- 模型的多版本管理怎么做?怎么支持版本回滚?
- 模型服务的健康检查(Health Check)怎么设计?
高性能推理
- 模型推理加速有哪些方法?算子融合、内存优化、并行计算怎么做?
- 算子融合(Operator Fusion)是什么?怎么减少kernel launch开销?
- 内存池(Memory Pool)在推理时有什么用?怎么减少内存分配开销?
- CUDA Kernel优化怎么做?Shared Memory、Global Memory怎么用?
- 混合精度推理怎么做?FP16、INT8混合使用的策略是什么?
- 知识蒸馏(Knowledge Distillation)后的小模型怎么部署?
- 模型剪枝(Pruning)后的稀疏模型怎么加速?
- 模型的并行推理怎么做?数据并行和模型并行在推理时怎么选?
- 流水线并行(Pipeline Parallelism)在推理时有用吗?
- 推理时的Batch Size怎么选?太大太小各有什么问题?
- 动态Shape输入怎么处理?不同长度的输入怎么批处理?
- Padding和Truncation策略怎么选?怎么减少计算浪费?
- 模型的预热(Warmup)为什么重要?冷启动的第一次推理为什么慢?
- ONNX Runtime的优化有哪些?Graph Optimization做了什么?
- 边缘设备上的模型部署有什么特殊考虑?手机、嵌入式怎么跑模型?
分布式训练与推理
- 分布式训练和单机训练有什么区别?为什么要分布式?
- 数据并行(Data Parallelism)是什么?每个GPU处理不同数据怎么同步?
- All-Reduce是什么?梯度怎么在多个GPU之间汇总?
- Ring All-Reduce和Tree All-Reduce有什么区别?
- 模型并行(Model Parallelism)是什么?模型太大一张卡放不下怎么办?
- 张量并行(Tensor Parallelism)怎么切分层内的权重矩阵?
- Megatron-LM的张量并行策略是什么?列切分和行切分怎么配合?
- 流水线并行(Pipeline Parallelism)怎么切分层之间的模型?
- GPipe的流水线并行有什么特点?Bubble Time怎么减少?
- ZeRO(Zero Redundancy Optimizer)是什么?怎么省显存?
- ZeRO的三个阶段(Stage 1/2/3)分别优化了什么?
- DeepSpeed的实现原理是什么?和PyTorch DDP有什么区别?
- FSDP(Fully Sharded Data Parallel)是什么?和ZeRO有什么关系?
- 混合并行(Hybrid Parallelism)怎么设计?3D并行是什么?
- 分布式训练的通信开销怎么优化?梯度压缩、通信overlap怎么做?
数据处理与特征工程
- 数据清洗的常见方法有哪些?重复数据、缺失值、异常值怎么处理?
- 文本数据清洗怎么做?HTML标签、特殊字符、表情符号怎么处理?
- 数据标注怎么做?主动学习(Active Learning)能减少标注成本吗?
- 弱监督学习(Weak Supervision)是什么?怎么利用噪声标签?
- 数据增强(Data Augmentation)在NLP里怎么做?回译、同义词替换有用吗?
- 图像数据增强有哪些方法?旋转、翻转、裁剪、颜色变换怎么用?
- Mixup、CutMix这些数据增强方法是什么?
- 特征工程在深度学习时代还重要吗?
- 类别特征的编码方法有哪些?One-hot、Target Encoding、Embedding?
- 数值特征的归一化方法有哪些?Min-Max、Z-score、Robust Scaler怎么选?
- 特征选择(Feature Selection)怎么做?怎么去掉无用特征?
- 特征重要性怎么计算?SHAP、LIME能解释深度学习模型吗?
- 向量化(Vectorization)怎么做?TF-IDF、Word2Vec、BERT Embedding怎么选?
- 向量数据库(Vector Database)有哪些?Faiss、Milvus、Pinecone怎么选?
- 向量检索的索引怎么构建?IVF、HNSW、PQ各有什么特点?
监控与评测
- 模型的线上监控包括哪些指标?QPS、延迟、错误率怎么监控?
- Prometheus和Grafana怎么用?时序数据怎么存储和可视化?
- 模型的数据漂移(Data Drift)怎么检测?线上数据分布变了怎么办?
- 模型的性能衰减怎么监控?准确率下降了怎么发现?
- A/B测试的统计显著性怎么判断?p-value、置信区间怎么算?
- A/B测试的样本量怎么估算?多少用户才能得出结论?
- 多臂老虎机(Multi-Armed Bandit)和A/B测试有什么区别?
- 模型的可解释性怎么评估?SHAP值、注意力可视化够用吗?
- 对抗样本(Adversarial Examples)怎么检测?模型鲁棒性怎么测试?
- 模型的公平性(Fairness)怎么评估?偏见怎么检测和缓解?
- 模型的安全性测试包括哪些?Prompt注入、数据投毒怎么防?
- 日志系统怎么设计?ELK(Elasticsearch、Logstash、Kibana)怎么用?
- 分布式追踪(Distributed Tracing)是什么?Jaeger、Zipkin怎么用?
- 告警系统怎么设计?怎么避免告警疲劳(Alert Fatigue)?
- 事故复盘(Post-mortem)怎么做?模型出问题了怎么分析根因?