DALI 动态模式开发助手
帮助 AI 代理编写、审查和迁移 NVIDIA DALI 命令式动态模式代码。
技能限定为代码指导,不要求密钥或外部凭据,也未包含网络访问、数据外传、破坏性操作或过度权限;但缺少执行前用户确认、数据敏感性边界、依赖完整性验证和回滚说明,因此扣7分。
SKILL.md 对动态模式、批处理、读者状态、异步执行、检查点和故障排查给出较一致的规则与示例;但依赖 NVIDIA DALI/CUDA/PyTorch,未提供版本锁定或本地可复现测试,异常输入覆盖有限。静态证据不足,按上限给9分。
目标受众、适用场景和“不适用于仅 pipeline-mode 任务”的边界清楚,且有迁移、调试和多种批处理示例;但未明确语义触发条件、非适用范围的更多细节、中文支持或中国大陆网络可达性,GPU 依赖也限制环境适配,因此扣5分。
文档结构清晰,包含前置条件、核心类型、读者、设备、执行、检查点、示例、常见错误、迁移、限制和排障;技能声明 Apache-2.0,作者和团队明确,skill-card 提供版本与评估信息。缺少专属 changelog、精确依赖版本、安装步骤和明确更新路径,因此扣5分。
内容直接覆盖 DALI 动态模式编写、审查、迁移和调试,并提供可直接改写的 Python 示例;评估报告显示有限的任务级正确性和有效性结果,但原始数据与代表性输出不可复核,且示例不覆盖全部声称场景,因此按静态上限给7分。
存在源代码迁移样例、断言式 evals 和评估报告,形成一定可审计线索;但报告称数据集不可用,未提供针对该技能关键路径的可执行测试套件或第三方复现材料,且静态审查无法独立验证 API 正确性,因此扣6分。
- 运行示例前需确认已安装兼容版本的 NVIDIA DALI、CUDA/驱动和目标框架;当前材料未锁定版本,也未证明 API 在该修订中可执行。
- 评估报告的原始数据集不可用,结果不能视为独立复现证据。
- 技能涉及本地数据读取、GPU 执行和检查点写入;使用者应自行确认路径、数据敏感性、资源消耗和恢复策略。
- 中国大陆网络可达性未被源材料验证;核心功能依赖本地 NVIDIA 软件与 GPU,而非明确的海外在线服务。
这个 Skill 能做什么,适合哪些场景?
该技能面向 NVIDIA DALI 的命令式动态模式 API,即 nvidia.dali.experimental.dynamic,简称 ndd。它指导代理使用普通 Python 控制流直接调用 DALI 操作,而不是构建和运行 Pipeline 图。内容覆盖 Tensor、Batch、读取器、设备处理、随机数、执行模式、检查点以及 PyTorch 转换。它适合动态模式开发或从 Pipeline 模式迁移代码,不适合仅涉及 Pipeline 模式的任务。
指导代理导入 ndd 并编写直接的 DALI 调用;创建和复用有状态读取器;为随机操作显式传入 batch_size;使用 GPU 解码、Tensor/Batch 切片和 PyTorch 转换;配置同步执行模式以定位错误;设置随机数种子和线程数;为读取器与 RNG 注册、保存和恢复检查点;审查常见错误并将 Pipeline 模式代码映射到动态模式写法。
- DALI 开发者需要用普通 Python 控制流编写动态模式数据加载和预处理代码时。
- 工程师将使用 Pipeline、@pipeline_def 或 pipe.run() 的 DALI 代码迁移到动态模式时。
- 计算机视觉训练流程需要读取图像、GPU 解码、缩放、裁剪和归一化时。
- 开发者需要处理可变形状 Batch,并将其安全转换为带填充的 PyTorch 张量时。
- 分布式训练代码需要配置分片读取、读取器复用或读取器与 RNG 检查点时。
- 调试异步 DALI 操作,需要让错误在调用位置同步暴露时。
这个 Skill 有哪些优点和局限?
- 覆盖动态模式的核心数据类型、读取器、设备推断、执行模式、随机数和检查点。
- 明确区分 batch.tensors[] 的样本选择与 batch.slice[] 的样本内切片。
- 包含从 Pipeline 模式到动态模式的具体 API 对照和常见错误纠正。
- 支持可变形状 Batch 到 PyTorch 的带填充转换说明。
- 动态模式可能比 Pipeline 模式性能略低;追求最大吞吐量时应优先考虑 Pipeline 模式。
- GPU 解码和 GPU 操作需要 CUDA-capable 的 DALI 构建以及可用的 NVIDIA GPU 和驱动。
- Batch 的 PyTorch 转换对不规则形状有限制,需使用 pad=True。
- 源材料未提供独立测试套件、性能基准数字或支持的具体 DALI 版本。
如何安装这个 Skill?
使用 NVIDIA skills CLI 安装指定技能:npx skills add nvidia/skills --skill dali-dynamic-mode --yes。README 未说明该技能的独立版本、额外安装源或固定安装目录;CLI 会处理安装目标。
如何使用这个 Skill?
安装后,在相关任务中向代理提出明确请求,例如:“请使用 nvidia.dali.experimental.dynamic as ndd,帮我把这段 DALI Pipeline 模式代码迁移为动态模式,并遵守 next_epoch(batch_size=64)、device="gpu" 和 Batch 显式切片规则。”仅涉及 Pipeline 模式的任务应跳过该技能。运行或验证代码前,需要确保 nvidia.dali.experimental.dynamic 可导入;使用 .torch() 的示例还需要 PyTorch。
这个 Skill 与同类方案有什么区别?
与 DALI Pipeline 模式相比,动态模式使用普通 Python 直接调用、stateful reader 和 next_epoch(batch_size),并以 device="gpu" 替代 device="mixed"。该技能指出动态模式更灵活,但可能性能略低;追求最大吞吐量时建议使用 Pipeline 模式。