cuPyNumeric 分片并行加载
为分片磁盘数据构建按处理器并行的 cuPyNumeric 加载路径。
证据显示技能限定为读取用户指定的共享文件系统并写入目标数组,未见凭据窃取、隐蔽外传或恶意行为;同时明确披露第三方读取器、GPU/CPU数据路径和共享文件系统要求。但示例的write流程会清理旧分片和_meta.json,未要求确认、备份或回滚,权限边界和敏感数据处理也未充分说明;许可证虽在文件中声明,但给定许可证元数据为NOASSERTION,因此扣10分。
SKILL.md、示例脚本和evals.json共同描述了元数据发现、异构分片、分区、三种任务变体、异常输入和执行栅栏,且示例报告称外部评测通过。但本次仅静态阅读,没有可独立复现的CI或测试套件,依赖和安装前提不完整,部分跨格式指导仍需用户自行适配,因此扣11分。
目标用户、分片场景、单文件替代方案、异构行数约束及不适用的单文件情况描述较清楚,触发边界总体可判定。可是描述较长且缺少明确负向触发词,评测中明确指出可能过度触发;Zarr评测场景也未在技能正文中覆盖,中文支持和大陆网络适配未说明,因此扣5分。
文档分层、格式表、示例、变体、常见陷阱、版本1.0.0、作者、上游和许可证信息较完整,维护归属和更新路径有一定线索。评测报告指出缺少明确Purpose、prerequisites和limitations章节,且没有变更日志;给定许可证元数据为NOASSERTION,故扣6分。
技能直接提供可复制的Python/Bash模式,覆盖.npy、原始二进制、HDF5、Parquet/Arrow及异构分片,并以评测报告中的正确性、发现性和有效性结果支持其价值。静态校准限制最高只能给7分;缺乏本次独立执行验证,其他格式和生产环境仍需改写,因此未超过上限。
源文件包含引用实现、evals.json中的预期行为与基准报告,关键设计主张可追溯,支持有限复核。没有提交的CI工作流、覆盖关键路径的测试套件或独立可核验结果,且基准细节不足以达到完全可验证,因此扣6分。
- 执行write子命令前确认目标目录,因为示例会删除旧的shard_*.npy和_meta.json,且未提供回滚机制。
- 先核对Legate、cuPyNumeric、NumPy及格式读取器的版本和安装情况;技能正文没有完整的前置依赖清单。
- 不要把该技能用于单文件.npy或单文件HDF5;Zarr等未在正文明确覆盖的布局需要额外验证。
- 共享文件系统路径会被每个rank读取,避免将敏感数据路径或未经信任的第三方读取器直接交给自动执行流程。
这个 Skill 能做什么,适合哪些场景?
该技能指导用户将共享文件系统上的分片数据加载为分布式 cuPyNumeric ndarray。它通过手动划分 axis 0、手动启动 Legate Python 任务,并根据 CPU、OMP 或 GPU 变体读取各文件的重叠区间。示例覆盖分片 `.npy`,并说明如何替换为原始二进制、HDF5、Parquet/Arrow 或自定义布局的读取器。它适合没有现成单调用加载器、或各分片行数不一致的场景。
扫描每个分片的格式元数据,读取行数、dtype、尾部形状并建立累计行偏移表;创建并分块一个 cuPyNumeric 输出数组;按可用处理器数量计算 tile;注册 CPU、OMP 和 GPU 任务变体;在任务中通过 NumPy 或 CuPy 视图读取文件切片并写入本地输出 tile;执行栅栏以等待完成。
- 需要把共享文件系统中的多个 `.npy` 分片并行加载到多 GPU 或多节点 cuPyNumeric 数组的数据工程师。
- 各分片 axis 0 行数不同,但 dtype 和尾部维度一致,需要保持完整拼接结果的用户。
- 希望将顺序 `np.concatenate` 文件读取改为按 GPU 并行读取的 Python 开发者。
- 使用 Parquet/Arrow、HDF5、固定形状原始二进制或自定义布局,且没有适用内置加载器的用户。
这个 Skill 有哪些优点和局限?
- 支持分片行数不同,并通过累计偏移表处理跨文件 tile。
- 同一手动任务可注册 CPU、OMP 和 GPU 变体。
- 明确区分内置加载器与自定义并行加载路径,并提供 `.npy` 工作示例。
- 按可用处理器而非文件数量划分任务,并支持过度分解以改善负载均衡。
- 要求所有分片的 dtype 和 shape[1:] 一致。
- 多节点场景必须使用共享文件系统;节点本地路径只适用于单节点演示。
- 需要手动编写格式元数据发现和任务内读取器,使用门槛高于单调用加载器。
- 源材料未提供测试套件、性能基准结果或各列出平台的实测证据。
如何安装这个 Skill?
使用仓库 README 支持的 Skills CLI 安装指定技能:npx skills add nvidia/skills --skill cupynumeric-parallel-data-load --yes。源材料没有说明 Legate、cuPyNumeric、NumPy 或可选格式读取库的具体安装步骤。
如何使用这个 Skill?
将技能目录放入 Agent Skills CLI 的安装目标后,在相关任务中触发它,例如请求“将共享文件系统中的不等长 .npy 分片并行加载为 cuPyNumeric 数组”。运行示例可使用:legate --gpus 4 --fbmem 4000 --min-gpu-chunk 1 assets/examples/parallel_npy_load.py read --shard-dir /shared/scratch/demo。多节点运行要求所有节点能访问同一共享文件系统。
这个 Skill 与同类方案有什么区别?
对于单个 .npy 文件,应优先使用 cupynumeric.load;对于单文件 HDF5,应优先使用 legate.io.hdf5.from_file 或 from_file_batched。该技能主要补足多文件分片、Parquet/Arrow、原始二进制和自定义布局的加载。