2026 年 10 月 15 日考试 · 26 天计划 · 8 个模块 · 中文讲解与英文术语
本资料为独立、非官方的原创备考整理;不是 NVIDIA 官方教材或真实考试题库。考试信息核对日期:2026-09-19。具体考试安排以报名通知为准。
每次学习先解释概念,再运行小例子,最后做题。标准日 90 分钟:35 分钟知识、35 分钟实操、20 分钟练习。短日 30 分钟:15 分钟重点、10 分钟题目、5 分钟错因。自定准备目标为未见题闭卷模拟达到 80%,这不是官方通过分数线。
| 模块 | 权重 |
|---|---|
| 数据处理与准备 | 23% |
| RAPIDS 机器学习 | 16% |
| 工作流与自动化 | 13% |
| 描述统计与可视化 | 13% |
| 加速数据科学基础 | 12% |
| MLOps 入门 | 10% |
| 时间序列与图 | 7% |
| 软件与环境管理 | 6% |
文档:NVIDIA 中国:NCA-ADS 考试与考纲 · NVIDIA:Associate 官方学习指南(当前入口)
| 日期 | 任务与完成标准 | 分钟 |
|---|---|---|
| 2026-09-19 Day 1 | 基线诊断与起步 读考试概况;完成 16 题诊断;记录不熟悉的术语。 完成标准:能解释 8 个模块及自己的前三个薄弱点。 | 60 |
| 2026-09-20 Day 2 | GPU 工具地图 学习基础模块;手算整体加速比;复习 6 张术语卡。 完成标准:不看资料说出 cuDF / CuPy / cuML / cuGraph 的分工。 | 90 |
| 2026-09-21 Day 3 | 环境检查与 Python 回顾 读环境模块;完成实操 1;确认 notebook 解释器与架构。 完成标准:保存版本报告;区分驱动与 CUDA 运行时。 | 90 |
| 2026-09-22 Day 4 | 数据审计、缺失与单位 读数据模块前半;完成实操 2 的输入检查。 完成标准:列出行数、键、缺失、单位和异常值规则。 | 90 |
| 2026-09-23 Day 5 | 连接与聚合 手算一对多、多对多 join;运行实操 2。 完成标准:解释输出为何是 A=3、B=8,并检查行数。 | 90 |
| 2026-09-24 Day 6 | 特征编码与缩放 读编码和泄漏;训练集拟合、验证集转换;做数据模块题。 完成标准:能指出先标准化再切分的错误。 | 90 |
| 2026-09-25 Day 7 | 不平衡与数据格式 学习类权重、采样、Parquet;复盘本模块错题。 完成标准:能解释 98% accuracy 为什么可能没有价值。 | 90 |
| 2026-09-26 Day 8 | PCA 与准备模块复盘 比较 PCA 与特征选择;完成数据模块剩余练习。 完成标准:数据模块首次正确率达到自定 80% 目标或明确错因。 | 120 |
| 2026-09-27 Day 9 | 机器学习任务与基线 学习回归、分类、聚类;运行实操 3 CPU 路径。 完成标准:得到按受试者切分的基线及完整混淆矩阵。 | 120 |
| 2026-09-28 Day 10 | 模型评估与手算 复习 precision / recall / F1 / MAE / RMSE / R²;做指标题。 完成标准:不看答案计算例题,解释阈值改变的影响。 | 90 |
| 2026-09-29 Day 11 | 验证与调参 比较分层、分组、时间验证;读 GPU XGBoost 配置。 完成标准:能为重复测量和未来预测分别选对切分。 | 90 |
| 2026-09-30 Day 12 | GPU 模型与错误复盘 有兼容环境时运行 GPU 路径;否则逐行解释代码。 完成标准:记录真实结果和运行环境,不预设加速倍数。 | 90 |
| 2026-10-01 Day 13 | 可复现流水线 学习任务图、幂等、切分及检查点;梳理端到端流程。 完成标准:写出每一步输入、输出、校验与版本信息。 | 90 |
| 2026-10-02 Day 14 | Dask 与可扩展性 比较 compute / persist;分析分区和 shuffle;做工作流题。 完成标准:说明小任务为什么可能不需要分布式。 | 90 |
| 2026-10-03 Day 15 | EDA 与图形选择 按分析问题选图;用实操数据检查分布、分组和缺失。 完成标准:识别均值图遗漏的信息以及实际独立样本单位。 | 120 |
| 2026-10-04 Day 16 | 统计解释与可视化复盘 学习 p 值、置信区间、多重比较;完成 EDA 练习。 完成标准:能纠正“p=0.03 说明原假设有 3% 概率为真”。 | 120 |
| 2026-10-05 Day 17 | 时间序列 学习时间切分、lag、rolling;完成实操 5。 完成标准:确认所有预测特征都在预测时可获得。 | 90 |
| 2026-10-06 Day 18 | 图与关系网络 读节点、边、权重、degree、PageRank;做结构模块题。 完成标准:能把小型脑区网络写成边列表并解释中心性限制。 | 90 |
| 2026-10-07 Day 19 | 实验追踪和模型保存 学习构件与实验记录;完成实操 6。 完成标准:保存并重载模型和预处理器,核对固定样本输出。 | 90 |
| 2026-10-08 Day 20 | 漂移、监控和性能测量 完成实操 4;区分数据漂移、概念漂移和性能退化。 完成标准:计时包含同步,区分稳态与首次执行。 | 90 |
| 2026-10-09 Day 21 | 环境管理与全模块查漏 复盘兼容链、Docker、Git;完成剩余模块练习。 完成标准:8 模块都已读过,每个错题都有原因。 | 90 |
| 2026-10-10 Day 22 | 模拟 A:55 题 / 60 分钟 闭卷完成模拟 A;用 60 分钟复盘错题和不确定题。 完成标准:建立按模块的失分清单;记录首次模拟成绩。 | 120 |
| 2026-10-11 Day 23 | 集中修复两个薄弱模块 优先处理高权重且正确率低的模块;重跑相关小实验。 完成标准:能不看解析解释正确项及错误选项为何不成立。 | 120 |
| 2026-10-12 Day 24 | 模拟 B:55 题 / 60 分钟 闭卷完成未做过的模拟 B;核对时间分配与漏题。 完成标准:自定目标 ≥80%;仅作准备度参考,不代表官方分数线。 | 120 |
| 2026-10-13 Day 25 | 错题闭环与口述流程 只练错题;口述读取到部署的完整流程;复习公式。 完成标准:8 模块没有完全空白;避免用背答案代替解释。 | 90 |
| 2026-10-14 Day 26 | 轻量复习与考前确认 浏览速查和术语;确认考试通知、时间、地点、证件与路线。 完成标准:停止新增大实验;提前休息。考试安排以本人通知为准。 | 45 |
Foundations of Accelerated Data Science
学习目标:能解释一段数据科学流程为什么值得用 GPU,以及为什么也可能变慢。
NumPy 的 ndarray 适合规则的同类型数值数组;pandas 的 DataFrame 适合列类型不同、带标签的表格。Jupyter 是交互式工作环境,不会自动把 Python 运算搬到 GPU。先明确样本单位、特征和预测目标,再做读取、清洗、划分、训练与评估。
例如每行是一名受试者一次 EEG 记录的特征:年龄、频段功率、反应时、组别。受试者 ID 用于关联和划分,通常不能直接当作有意义的连续预测特征。随机拆分记录之前,要先判断同一受试者是否重复出现。
| 概念 | 擅长的任务 | 需要付出的代价 |
|---|---|---|
| CPU | 分支复杂、串行控制、小任务与一般 I/O | 大规模相似运算的吞吐量可能受限 |
| GPU | 大量可并行的同类计算,例如聚合、矩阵运算 | 启动、调度、数据迁移和显存占用 |
| 分布式计算 | 把任务与数据分给多个进程、设备或节点 | 网络通信、shuffle、调度和容错 |
| Dask + GPU | 对合适的 GPU 分区计算进行调度 | 需要显式选用 GPU 后端和资源配置 |
GPU 加速和分布式是两个维度。单块 GPU 可以很快;很多 CPU 也可以形成分布式集群。安装 Dask 不会让所有代码自动使用 GPU。
| 工具 | 主要用途 | 常见误解 |
|---|---|---|
| cuDF | GPU DataFrame,清洗、连接和分组聚合 | 原生 cuDF 并不保证支持 pandas 的每一个行为 |
| cuDF.pandas | 以 pandas 接口运行,支持部分运算回退 CPU | “能运行”不等于“全部运行于 GPU” |
| CuPy | NumPy 风格的 GPU 数组计算 | 并非 GPU DataFrame |
| cuML | 回归、分类、聚类和降维等 GPU 算法 | CPU/GPU 结果不必逐位一致 |
| cuGraph | 图算法和关系网络分析 | 不能用普通分组聚合替代所有图算法 |
| XGBoost | 梯度提升树,可选 GPU 执行 | 不是只有 CPU 版本,也不是所有操作都在 GPU |
总耗时 = 读取 + 预处理 + 传输 + 计算 + 输出。只展示训练时间会遗漏真正的瓶颈。尽量把连续的大数据步骤留在 GPU,最后把较小的预测结果或汇总表传回 CPU。避免在循环里反复 to_pandas()。
教学算例:原流程 100 秒,只有 40 秒能加速到 10 倍,其余仍是 60 秒,则新耗时为 60 + 40/10 = 64 秒,整体加速约 1.56 倍。GPU 计算快 10 倍不等于整个流程快 10 倍。
DGX Spark 使用统一内存架构;仍需关注对象转换、数据访问与计算后端,不应简单照搬独立显卡的所有传输成本假设。
模型参数由训练数据学习,如线性回归系数;超参数由训练过程外指定,如树深度、正则化强度和聚类数。训练成绩优秀但验证成绩较差通常提示过拟合;两者都差可能是模型表达能力不足、特征不够或训练设置不合适。
先建立简单基线,再改变一项假设进行比较。GPU 缩短试验时间,但不能修复标签错误、数据泄漏或不恰当的评估设计。
| 术语 | 解释 |
|---|---|
| GPU | Graphics Processing Unit,图形处理器;这里用于并行通用计算。 |
| ETL | Extract, Transform, Load:提取、转换、加载。 |
| Throughput | 吞吐量:单位时间完成的工作量。 |
| Latency | 延迟:一次请求从开始到完成的时间。 |
| Host / Device | 主机侧 / 设备侧;理解计算与数据实际位于哪里。 |
| Generalization | 泛化:面对未见样本时的表现。 |
文档:NVIDIA 中国:NCA-ADS 考试与考纲 · cuDF pandas accelerator · NVIDIA cuML 文档 · NVIDIA cuGraph 文档 · CuPy:性能测量 · NVIDIA DGX Spark:架构与规格
Data Manipulation and Preparation
学习目标:面对脏表、多表和高维数据,能选择正确且避免泄漏的处理顺序。
先检查行数、列类型、单位、缺失比例、唯一键与取值范围。ID 即使看起来像数字,也可能应存为字符串以保留前导零。缺失值不等于 0;“未测量”与“测量为零”含义不同。异常值先追查原因,再决定修正、保留、截尾或删除,并记录规则。
一个神经科学表中的 duration 若混合秒和毫秒,GPU 只能更快地算出错误结果。数据字典应记录单位、合法范围、编码与缺失语义。用于公开练习的数据应有使用许可;去掉姓名也不代表已充分去标识化。
| 操作 | 保留内容 | 检查点 |
|---|---|---|
| inner join | 两边能匹配的键 | 丢失了哪些样本? |
| left join | 左表所有行及匹配右表 | 右表的键是否唯一? |
| outer join | 两边全部键 | 新增缺失值如何解释? |
| concat | 沿行或列拼接 | 列、索引和顺序是否对齐? |
同一键在左表出现 2 次、右表出现 3 次,匹配部分会产生 2 × 3 = 6 行。left join 并不保证行数不变。先确定一对一、一对多或多对多,再选择去重、预聚合或保留重复。神经记录常是多次测量对应一名受试者,应确保受试者信息表每个 ID 一行。
先划分训练与验证数据,再在训练数据拟合填补器、编码器、缩放器、特征选择器及 PCA;验证数据只调用已拟合的转换。交叉验证时,每一折也要重新拟合这些步骤。
| 方法 | 适用理由 | 注意 |
|---|---|---|
| 中位数填补 | 数值变量且希望降低极端值影响 | 可能需要同时添加缺失指示列 |
| One-hot 编码 | 无自然次序的类别 | 类别数很多会增加内存和维度 |
| Ordinal 编码 | 类别有明确顺序 | 不能随意把脑区编码成具有距离含义的数值 |
| 标准化 z=(x−μ)/σ | 距离模型、线性正则化模型、PCA 常受尺度影响 | 树模型一般不要求同样的缩放 |
| Target encoding | 利用类别与目标关系编码 | 必须采用折内或交叉拟合设计防止目标泄漏 |
少数类只有 2% 时,全预测多数类仍可达 98% accuracy。应同时看召回、精确率、PR 曲线和业务成本。类权重、欠采样、过采样都可能有用,但没有一种方法在所有任务上最好。
重采样与合成数据生成只用于训练部分;验证和测试应尽可能保留目标部署分布。先对全体数据做 SMOTE 再切分,会让衍生自相关样本的合成点跨入测试集。合成样本不等于新的独立受试者,也不能凭空增加真实生物学证据。
特征选择保留原始特征的子集;PCA 构造最大化保留方差的线性组合,并不使用类别标签,因此大方差方向不一定最有分类价值。高维 EEG 特征可先去掉无信息列,再在训练集上拟合 PCA。稀疏数据应考虑会不会被中心化或转换意外变成稠密矩阵。
Parquet 是列式格式,适合只读部分列、压缩及按条件减少读取;CSV 易交换和人工查看,但文本解析与类型恢复可能更昂贵。Parquet 文件变小不代表计算时对象同样小:解压、临时数组与连接仍会消耗内存。
ETL 框架选型也属于考纲:RAPIDS 提供 GPU 数据处理库,Dask 可调度分区计算,Apache Spark 是另一种分布式处理生态。现有 Spark 作业能否加速,要核对所用 GPU 加速组件与算子支持;不能把“运行在 Spark 上”直接当作“运行在 GPU 上”。
import cudf
records = cudf.DataFrame({
"subject_id": [1, 1, 2, 3],
"power": [2.0, 4.0, None, 8.0]})
people = cudf.DataFrame({"subject_id": [1, 2, 3],
"site": ["A", "A", "B"]})
# 右表键必须唯一;重复会放大连接行数
assert len(people) == people.subject_id.nunique()
joined = records.merge(people, on="subject_id", how="left")
summary = joined.groupby("site")["power"].mean()
print(summary) # A: 3.0, B: 8.0;缺失未当作零此示例仅演示数据审计与聚合;若填补值用于模型,应只从训练部分估计。输出顺序可能不同,以键和值比较结果。
| 术语 | 解释 |
|---|---|
| Cardinality | 连接基数:一对一、一对多或多对多。 |
| Data leakage | 数据泄漏:训练或选模使用了本不该见到的信息。 |
| One-hot encoding | 独热编码:每个类别对应指示列。 |
| Class imbalance | 类别不平衡:不同类别的样本数相差悬殊。 |
| PCA | Principal Component Analysis,主成分分析。 |
| Parquet | 具有类型信息和压缩能力的列式存储格式。 |
文档:pandas:合并与连接 · pandas:缺失数据 · scikit-learn:预处理 · scikit-learn:常见陷阱 · scikit-learn:分解与 PCA · Apache Parquet:格式概览
Machine Learning with RAPIDS
学习目标:能区分任务、选择验证方案,计算和解释指标,并识别现代 GPU 训练设置。
| 任务 | 输出 | 入门算法与要点 |
|---|---|---|
| 回归 Regression | 连续值,如反应时 | 线性回归、随机森林回归;对照均值或中位数基线 |
| 分类 Classification | 离散类别或类别概率 | 逻辑回归、随机森林、XGBoost;类别概率还需要阈值 |
| 聚类 Clustering | 无监督分组 | K-means 需要 k,受尺度影响;DBSCAN 可识别噪声点 |
| 降维 Dimensionality reduction | 低维表示 | PCA 保方差;二维聚类图不能单独证实细胞类型 |
cuML 延续熟悉的 fit / predict / transform 思路。不要把聚类编号直接当作已经证实的生物学类别;需要独立证据。
独立同分布分类样本可用分层划分,保持类别比例。同一受试者多次测量应按受试者分组,让新受试者评估更可信。时间预测应以过去训练、未来验证,不能随意打乱。
训练集用来拟合;验证或交叉验证用来选模型、超参数与阈值;测试集只用于冻结方案后的最终评估。超参数调优多次比较会产生选择偏倚,严格评价可采用嵌套交叉验证。
| 实际\预测 | 预测阴性 | 预测阳性 |
|---|---|---|
| 实际阴性 | TN 真阴性 | FP 假阳性 |
| 实际阳性 | FN 假阴性 | TP 真阳性 |
Accuracy = (TP + TN) / N
Precision = TP / (TP + FP)
Recall = TP / (TP + FN)
F1 = 2TP / (2TP + FP + FN)例:TP=30,FP=10,FN=20,TN=140,则 accuracy=85%,precision=75%,recall=60%,F1≈66.7%。降低判为阳性的阈值,通常提高 recall,但 precision 往往下降。样本、模型和阈值固定时再比较指标。
| 指标 | 解释与用途 |
|---|---|
| PR-AUC / Average precision | 聚焦阳性检出质量;少数阳性类很少时尤其有用。二者的面积计算约定并非完全一样。 |
| ROC-AUC | 跨阈值的排序能力;需要分数或概率,而不是只看某个阈值后的类别。 |
| MAE | 平均绝对误差,与目标同单位。 |
| RMSE | 平方误差均值开根号;对大误差更敏感,与目标同单位。 |
| R² | 相对均值预测基线的解释能力;可以为负。 |
| Silhouette | 簇内紧密、簇间分离的一个度量;不保证生物学意义。 |
网格搜索系统枚举有限组合;随机搜索可把预算分配到更广范围。先设定指标和验证策略,再调学习率、深度、正则化等。Early stopping 应使用验证数据,不要用最终测试集决定训练轮数。
from xgboost import XGBClassifier
# 现代 XGBoost 写法;旧材料的 gpu_hist 需结合版本理解
model = XGBClassifier(tree_method="hist", device="cuda",
max_depth=4, n_estimators=100,
learning_rate=0.1, random_state=42)
# model.fit(X_train, y_train)这是配置示例;运行前需有兼容的 GPU 环境、输入数据和依赖。比较 CPU 与 GPU 时应控制数据、切分和参数,允许合理浮点误差,不预设 GPU 一定获胜。
| 术语 | 解释 |
|---|---|
| Precision | 精确率:预测为阳性的样本中多少是真的。 |
| Recall / sensitivity | 召回率 / 灵敏度:实际阳性中检出了多少。 |
| Cross-validation | 交叉验证:多次训练与验证以估计泛化表现。 |
| Hyperparameter | 超参数:训练外设定的模型或优化配置。 |
| Early stopping | 早停:验证表现不再改善时结束训练。 |
| Clustering | 聚类:在没有已知标签的情况下寻找分组。 |
文档:NVIDIA cuML 文档 · XGBoost:GPU 支持 · scikit-learn:评价指标 · scikit-learn:交叉验证 · scikit-learn:常见陷阱
Data Science Pipelines and Workflow Automation
学习目标:能设计可重复、可扩展的完整流程,识别 Dask 何时有帮助以及何时带来负担。
给每一步定义输入、输出和质量检查:原始数据 → 校验与清洗 → 按任务切分 → 训练部分拟合变换 → 训练/调优 → 冻结评估 → 保存构件。原始数据保持可追溯;转换结果放到明确的版本目录。
处理步骤应尽可能幂等:同一输入和配置重跑,不产生重复行或不受控追加。日志记录任务状态、输入版本和错误;失败后能从可靠检查点恢复。只保存最后一个 notebook 输出不足以重现实验。
Dask 可先构建任务图,直到需要结果时才执行。compute() 返回具体结果,DataFrame 的结果通常集中到当前进程;结果太大可能导致客户端内存耗尽。persist() 触发并保存分区结果供后续复用,不等于把结果写入磁盘永久保存。
太小的分区导致调度开销高;太大的分区可能使内存不足。按实际峰值内存与操作类型调节,不背诵一个通用最佳大小。全局排序、重分区及部分 join 会产生 shuffle,带来通信与临时内存成本。
先优化列选择、过滤和算法,再评估单 GPU 能否完成;确需扩展时使用合适的 Dask GPU 后端和调度配置。多 GPU 不意味着线性加速;数据倾斜和通信可使新增资源无效。已经很小的聚合结果可转到 CPU 做可视化。
# 在安装了兼容 dask-cuda / dask-cudf 的环境中执行
from dask_cuda import LocalCUDACluster
from dask.distributed import Client
import dask_cudf
if __name__ == "__main__":
with LocalCUDACluster() as cluster, Client(cluster):
df = dask_cudf.read_parquet("records/*.parquet",
columns=["site", "power"])
result = df.groupby("site").power.mean().compute()
print(result)此段是扩展模板,需自行提供数据路径。仅有一块 GPU 时仍可学习分区与任务图,但不能把它当作真实多 GPU 性能实验。
训练与验证都差时,先排查标签和特征,再考虑增加合适复杂度、减弱过强正则化或改进训练。训练好、验证差时,检查泄漏和切分,考虑简化模型、加强正则化、收集更具代表性的数据。
数据增强必须符合任务语义。把未来信息加入当前时点特征,即使性能提升也不可用。反馈数据用于再训练之前,必须先质控、处理选择偏倚,并经过离线评估和受控发布,不能自动把所有新数据都当作可靠标签。
| 术语 | 解释 |
|---|---|
| Lazy evaluation | 惰性执行:先描述计算,稍后触发执行。 |
| Partition | 分区:数据的一个块,也是并行任务的基本单位之一。 |
| Shuffle | 按键重新分布数据,可能产生大量通信。 |
| Idempotent | 幂等:重复运行不造成额外副作用。 |
| Pipeline | 流水线:串联预处理、模型与相关步骤。 |
| Data flywheel | 数据反馈循环:经验证的新数据持续改善模型。 |
文档:Dask:最佳实践 · Dask DataFrame:最佳实践 · scikit-learn:常见陷阱 · NVIDIA:Associate 官方学习指南(当前入口)
Descriptive Analysis and Visualization
学习目标:用合适的汇总、图形和统计解释理解数据,避免把显著性或相关性说过头。
均值受极端值影响较大,中位数通常更稳健;标准差描述离散程度,四分位距 IQR=Q3−Q1 描述中间 50% 数据的跨度。画分布图比单看均值更容易发现偏态、双峰和异常点。
同时检查每组样本量和缺失比例。10 名受试者每人 100 次测量不等于 1,000 名独立受试者。汇总时要区分受试者层面和记录层面,避免把重复测量误当作独立证据。
| 想回答什么 | 优先考虑 | 常见错误 |
|---|---|---|
| 连续变量的分布 | 直方图、密度图 | 把分箱造成的形状当作客观分组 |
| 各组分布差异 | 箱线图、散点叠加、提琴图 | 只画柱形均值,隐藏离散与样本量 |
| 两个连续变量的关系 | 散点图、密度散点 | 仅凭相关系数断言因果 |
| 随时间变化 | 按时间排序的折线图 | 用无顺序类别做连续趋势线 |
| 类别频数或比例 | 条形图 | 数量变化其实来自分母变化 |
| 矩阵结构 | 热图 | 色标不同却直接比较颜色深浅 |
Pearson 相关关注线性关系;Spearman 基于秩,适合考察单调关系。一个接近零的 Pearson 相关仍可能存在明显非线性模式。离群点也可能主导相关结果。
整体样本看见的关系可能由站点、年龄或采样批次驱动。先分层作图,再考虑适当建模;组间分布差异并不能单凭观察数据确证因果。数据可视化是发现问题的工具,也是质量检查的一部分。
在原假设及模型假设成立时,p 值衡量观测到当前或更极端结果的概率。它不是“原假设为真的概率”,也不是效果大小。小 p 值可能对应很小的实际差异;不显著也不等于两组完全相同。
独立两组均值比较在条件合适时可考虑 Welch t 检验;同一人的前后测量有配对关系,应选相应分析。还需检视独立性、分布、离群点与研究设计。大量重复检验时应预先规划并进行适当多重比较控制。
95% 置信区间的频率学解释针对反复抽样的区间覆盖率;单个区间不是直接给固定参数赋予 95% 概率。报告区间和效应量有助于解释不确定性。
上千万点直接传回 CPU 并在浏览器绘制,可能使加速收益消失。先在 GPU 上计算直方图分箱、分组统计或空间密度,再传回小结果。确需抽样时使用代表性方案,并说明少数类和罕见事件可能被普通随机抽样遗漏。
读取图时固定四个问题:轴与单位是什么?一个点代表什么?分母和样本量是多少?图形是否隐藏了分组或缺失?
| 术语 | 解释 |
|---|---|
| EDA | Exploratory Data Analysis,探索性数据分析。 |
| IQR | Interquartile Range,四分位距。 |
| Confounder | 混杂因素:同时关联解释变量和结果的因素。 |
| p-value | p 值:在原假设及相关假设下对结果极端性的度量。 |
| Effect size | 效应量:差异或关联的大小。 |
| Aggregation | 聚合:按组或区间计算汇总统计。 |
文档:SciPy:独立样本 t 检验 · scikit-learn:评价指标 · Dask DataFrame:最佳实践
Introductory MLOps Practices
学习目标:能够追踪实验、保存可复用模型,监控质量、漂移、性能和成本。
| 对象 | 例子 | 目的 |
|---|---|---|
| 参数 Parameters | 树深度、学习率、随机种子 | 知道本次配置 |
| 指标 Metrics | 验证 F1、耗时、峰值内存 | 公平比较结果 |
| 构件 Artifacts | 模型文件、图、转换器、数据字典 | 复用和核查产物 |
| 版本信息 | 代码提交、依赖、数据版本和切分 ID | 追溯完整上下文 |
MLflow、Weights & Biases 或结构化自定义日志都可用于实验追踪。记录种子很有帮助,但不同硬件、库版本或并行实现仍可能产生差异;不能只靠一个 seed 承诺逐位复现。
模型推理需要相同的列、类型、单位、特征顺序、类别映射和缩放参数。仅保存最终分类器,遗漏填补器或编码器,可能导致预测错误。保存后重新加载,使用固定小批样本比较输出,并记录依赖版本。
加载 pickle/joblib 等模型文件需要可信来源,因为反序列化可能执行代码。跨版本或跨硬件加载应查对应库支持,不要假定所有模型构件完全通用。
| 变化 | 含义 | 观察方式 |
|---|---|---|
| 数据漂移 | 输入分布 P(X) 改变 | 缺失率、数值分布、类别比例与训练参照比较 |
| 概念漂移 | 输入与标签的关系 P(Y|X) 改变 | 需结合标签、误差或业务证据分析 |
| 性能退化 | 预测效果变差 | 标签到达后计算切片和总体指标 |
| 系统异常 | 请求失败、延迟或资源异常 | 错误率、p95 延迟、吞吐量、内存等 |
输入分布变动可能是预期变化,也可能预示风险;应调查原因,不能仅凭一次漂移告警直接覆盖线上模型。标签有延迟时,输入监控和服务监控仍能先发现问题。
明确比较范围:纯算法、包含传输的计算,还是读取到写出的端到端流程。CPU/GPU 都应先预热,使用相同输入和合理对应配置,重复测量;报告中位耗时、波动、峰值内存和输出正确性。
GPU 执行常是异步的,计时结束前要等待对应计算完成,或使用 CUDA 事件。首次调用可能包含上下文初始化或编译时间,应与稳态测量分开。最终选择还要考虑成本、吞吐量和部署约束。
import mlflow
with mlflow.start_run(run_name="eeg_baseline"):
mlflow.log_params({"seed": 42, "split": "subject_group"})
# 替换为本次运行实际得到的指标,勿把示例数值冒充结果
# mlflow.log_metric("valid_f1", valid_f1)
# mlflow.log_artifact("environment.txt")上线流程应能够先验证候选模型,再逐步发布,并保留回滚构件;回流数据进入下一次训练前仍要做质量检查。
| 术语 | 解释 |
|---|---|
| Experiment tracking | 实验追踪:保存配置、指标与产物的对应关系。 |
| Artifact | 构件:模型、文件、图表等实验产物。 |
| Data drift | 数据漂移:输入分布发生变化。 |
| Concept drift | 概念漂移:输入与目标的关系发生变化。 |
| p95 latency | 第 95 百分位延迟:关注较慢请求的体验。 |
| Benchmark | 基准测试:在规定条件下可比较的性能测量。 |
文档:MLflow:实验追踪 · CuPy:性能测量 · scikit-learn:常见陷阱 · NVIDIA cuML 文档
Advanced Data Structures
学习目标:能处理时间顺序、缺失时间戳和图的基本表示,避免预测中的未来信息泄漏。
先解析时间类型和时区,再检查排序、重复时间戳、采样间隔与缺失区间。重采样是把数据归到新的时间网格;聚合用于降采样,插值用于估计缺失。两者都依赖数据语义,不能自动证明信号真实存在。
线性插值默认可能按行位置理解间隔;不规则时间戳应核对所用库和版本的时间插值支持。不能把 pandas 的全部插值方法假定为 cuDF 支持。先小例子验证结果,再扩展到大数据。
预测 t 时点时,特征只能来自预测时已知的信息。包含 t 的滚动均值可能泄露当前目标;含未来点的中心滚动窗口更危险。通常先 shift(1) 再做过去窗口的滚动计算,并明确预测窗口。
# 示例:用前三个已经观测到的值预测下一步
df = df.sort_values("time")
df["lag1"] = df["value"].shift(1)
df["past_mean3"] = df["value"].shift(1).rolling(3).mean()多个受试者的序列必须按受试者分别计算 lag,避免跨边界串线。离线补齐历史记录和在线预测的可用信息不同,不能用未来值反向填补预测时尚未知的信息。
采用扩展窗口或滚动窗口:早期训练、后期验证,随后移动边界。特征窗口与预测区间有重叠风险时考虑设置间隔。一个简单但重要的基线是“下一步等于最后一次观测”,有季节性时可比较季节性朴素预测。
MAE 与 RMSE 可用于预测误差;MAPE 在真实值为零或接近零时可能失真。不同受试者、时间段或站点需要分组检查,避免总体均值掩盖局部失败。
| 概念 | 如何理解 | 神经科学示例 |
|---|---|---|
| 节点 Vertex | 实体 | 脑区 |
| 边 Edge | 节点间的关系 | 脑区间结构或功能连接 |
| 有向图 | 边具有方向 | 从某脑区投向另一个脑区 |
| 加权图 | 边包含权重 | 连接强度 |
| Degree | 邻接边/邻居数量,依定义区分入度出度 | 直接连接的多少 |
| PageRank | 与连接来源的重要性和转移结构有关 | 网络中的结构性重要性,不是因果证据 |
边列表以 source、destination、weight 存储;邻接矩阵用二维关系表示。稀疏大图用稠密邻接矩阵可能浪费内存。图可视化受布局影响,视觉中心不一定是算法中心性最高的节点。
| 术语 | 解释 |
|---|---|
| Lag feature | 滞后特征:从过去时点提取的值。 |
| Resampling | 重采样:改变时间网格并按规则汇总或补齐。 |
| Interpolation | 插值:利用已知点估计缺失位置的值。 |
| Walk-forward validation | 向前滚动验证:用过去训练并在随后时间段评估。 |
| Edge list | 边列表:用源节点和目标节点表示关系。 |
| Centrality | 中心性:根据指定图结构准则衡量节点重要性。 |
文档:scikit-learn:交叉验证 · NVIDIA cuGraph 文档 · pandas:缺失数据 · scikit-learn:评价指标
Software and Environment Management
学习目标:理解驱动、CUDA、库、Python 和架构的兼容链,并能给出可追溯的运行环境。
硬件架构 → 驱动 → CUDA 运行时 → RAPIDS 与其他库 → Python → 项目代码。每层都有兼容条件。nvidia-smi 显示的 CUDA Version 主要表示驱动支持的 CUDA 版本上限,并不证明当前 Python 环境安装了同版本 Toolkit。
DGX Spark 的 aarch64/arm64 架构与 x86_64 不同。使用 RAPIDS 官方安装选择器选择当前兼容组合;检查镜像/软件包的 ARM 支持及对应 GPU 架构支持。不要直接复制面向 amd64 的安装包或随意升级工作机驱动。
uname -m
nvidia-smi
python --version
python -m pip --version
python -m pip check
python -c "import cupy as cp; print(cp.cuda.runtime.getDeviceCount())"
python -c "import cudf, cuml; print(cudf.__version__, cuml.__version__)"在准备运行 notebook 的同一环境里检查。终端能导入库而 notebook 失败,常需确认 kernel 对应的解释器。容器内部看不到 GPU,应检查设备可见性和 NVIDIA Container Toolkit 配置,不能单凭重装 pandas 修复。
| 工具 | 用途 | 复现要点 |
|---|---|---|
| Conda | 隔离环境并管理 Python/部分非 Python 依赖 | 环境文件、包版本、渠道与平台 |
| pip | 在当前 Python 环境安装包 | 使用 python -m pip;记录实际版本 |
| Docker | 打包用户态运行环境 | 固定镜像版本/摘要;仍依赖主机驱动 |
| Git | 追踪代码版本 | 记录 commit;不要提交密钥和私有原始数据 |
环境文件应记录实际成功的配置。pip freeze 能保存 Python 包列表,但不能完整捕获驱动、系统库或硬件。不同平台的精确锁定文件未必直接通用。
先确认报错发生在哪一层:设备不可见、驱动/运行时不兼容、包缺失、版本冲突、输入类型不支持,还是内存不足。按证据处理对应层,不要每次从“重装全部软件”开始。
先用一个小 DataFrame 和简单聚合验证环境,再跑模型与大数据。CPU 练习能验证分析逻辑,但不能验证 GPU 安装、实际加速或多 GPU 通信。本站实操同时提供 CPU 路径;GPU 路径需在你的兼容环境中运行。
| 术语 | 解释 |
|---|---|
| Driver | 驱动:连接操作系统与 GPU 硬件。 |
| CUDA runtime | CUDA 运行时:程序执行 GPU 工作所需的运行组件。 |
| Kernel | 此处指 Jupyter 内核;与 CUDA 计算 kernel 需按上下文区分。 |
| aarch64 / arm64 | 64 位 ARM 架构的常见标识。 |
| Container image | 容器镜像:封装用户态软件与环境。 |
| Commit | Git 提交:代码状态的可追溯快照。 |
文档:RAPIDS 安装选择器与兼容性 · cuDF pandas accelerator · NVIDIA cuML 文档 · NVIDIA DGX Spark:架构与规格
配套文件:Jupyter Notebook、Python 脚本。默认 CPU 路径已在本地验证;GPU 路径未在你的 DGX Spark 上执行,需兼容 RAPIDS 环境。全部样本为合成数据。
导出架构、Python 和包版本;区分 CPU 能运行与 GPU 可用。
核验:CPU 分支应能导入 NumPy、pandas、scikit-learn;GPU 分支另外检查 cuDF、cuML、CuPy。
用完全合成的小表验证键唯一性、缺失值语义和分组均值。
核验:A 组均值 3.0,B 组均值 8.0;左连接仍为 4 行。
用合成特征完成分组切分、训练集填补/缩放、分类和指标计算。
核验:输出受试者交集为 0;指标来自实际运行,CPU/GPU 数值可以略有差异。
比较相同聚合工作并解释预热、同步、传输和数据规模。
核验:报告三次耗时与中位数;不要求 GPU 必须更快。
对一段合成时间序列生成滞后和滚动特征,再做时间切分。
核验:t=3 的 past_mean3 等于 t=0、1、2 的均值;验证时间晚于训练时间。
保存模型、预处理和元信息,并检查重载后的预测。
核验:同一环境中重载后的类别预测一致;输出 JSON 报告和模型文件。
两套模拟各 55 题、60 分钟,各卷独立不重复。本站模拟每题 1 分,多选全对计分;只是练习规则。建议首轮 45 分钟,最后 15 分钟处理疑问和漏题。考前一天确认本人通知中的时间、城市、证件与路线,避免临时更换环境或熬夜安装软件。
旧 nvdam 短链接及 gpusolution 第三方页面本次未能取得正文;官方学习指南已从当前 NVIDIA 认证页取得。软件版本不断变化,命令和 API 需与实际安装版本核对。