如何配置环境并运行 PyG 的 CPU 训练基准测试 training_benchmark.py?
如何配置环境并运行 PyG 的 CPU 训练基准测试 training_benchmark.py【免费下载链接】pytorch_geometricGraph Neural Network Library for PyTorch项目地址: https://gitcode.com/GitHub_Trending/py/pytorch_geometric这篇文章对应一个明确的性能测量任务在 CPU 环境下用 PyTorch GeometricPyG自带的训练基准脚本 training_benchmark.py 对指定 GNN 模型GCN、GraphSAGE、GAT 等在指定数据集上跑固定步数的训练得到吞吐samples/s和单样本延迟ms用于对比不同参数配置如普通图存储与--use-sparse-tensor稀疏张量存储下的训练性能。官方说明见 benchmark/training/README.md。适用前提已装好 PyG 的 Linux CPU 环境numactl绑核步骤需要系统装有numactl命令。环境准备按 benchmark/training/README.md 的 Environment setup 一节依次完成以下安装。${workspace}在原文档中是占位符替换为你自己选定的、有写权限的工作目录例如你的仓库克隆目录或任意性能测试目录。确认 PyG 已正确安装。安装 OGB 数据集包ogbn-products数据集依赖它加载pip install ogb安装基准测试套件。进入benchmark/目录后执行 benchmark/README.md 给出的安装命令它会把torch_geometric_benchmark包含脚本依赖的benchmark/utils工具模块如数据集加载与模型构造见 benchmark/utils/utils.py以可编辑模式写入当前 Python 环境cd benchmark pip install -e .构建jemalloc内存分配器这是官方标注的 performance benchmark 依赖。副作用说明下面命令会把 jemalloc 源码克隆到${workspace}/jemalloc并在${workspace}/jemalloc-bin下生成安装产物不修改系统目录./autogen.sh需要系统已安装autoconfbenchmark/inference/README.md 中明确列为 jemalloc setup 的前置依赖。cd ${workspace} git clone https://github.com/jemalloc/jemalloc.git cd jemalloc git checkout 5.2.1 ./autogen.sh ./configure --prefix${workspace}/jemalloc-bin make make install设置环境变量README 要求在运行基准前先设置一组环境变量。其中env_name是占位符替换为你自己的 conda 环境名或等价的激活命令${workspace}替换为你上一步构建 jemalloc 的目录。LD_PRELOAD指向的就是刚才构建出的libjemalloc.sosource activate env_name export DNNL_PRIMITIVE_CACHE_CAPACITY1024 export KMP_BLOCKTIME1 export KMP_AFFINITYgranularityfine,compact,1,0 jemalloc_lib${workspace}/jemalloc-bin/lib/libjemalloc.so export LD_PRELOAD$jemalloc_lib export MALLOC_CONFoversize_threshold:1,background_thread:true,metadata_thp:auto,dirty_decay_ms:9000000000,muzzy_decay_ms:9000000000可选的绑核步骤README 给出用numactl把进程绑定到单 socket 前若干核的模板${CORES}与${LAST_CORE}按你的机器核心数替换0-${LAST_CORE}为核编号范围-m 0指定内存节点。docs/source/advanced/cpu_affinity.rst 中给出的建议是OMP_NUM_THREADS的起点取N - num_workersN 为核心数OMP_NUM_THREADS${CORES} numactl -C 0-${LAST_CORE} -m 0 CMD......其中CMD......即下一条要执行的training_benchmark.py命令。运行基准training_benchmark.py的--device参数默认就是cpu所以下面的命令直接跑 CPU 路径。以下是 README 原样给出的两条示例命令第一条测 GCN Reddit第二条加--use-sparse-tensor便于对比稀疏张量存储的性能python training_benchmark.py --modelsgcn --datasetsReddit --num-workers0 --batch-sizes512 --num-layers2 --num-hidden-channels64 --num-steps50 python training_benchmark.py --modelsgcn --datasetsReddit --num-workers0 --batch-sizes512 --num-layers2 --num-hidden-channels64 --num-steps50 --use-sparse-tensorREADME 还给了--modelssage --datasetsogbn-products的对应示例参数完全相同。对影响执行的几个参数做说明均取自脚本的参数定义--num-steps训练步数-1默认表示遍历全部训练数据示例用50配合--batch-sizes固定采样总量使不同配置可对比。--num-workers0示例中关闭多进程 DataLoader文档建议若需要并行加载可设num_workers 0一个较好的估计范围是[2, 4]复杂数据集可尝试更大值见 docs/source/advanced/cpu_affinity.rst。--root数据集查找的相对路径默认../../data该相对基准在benchmark/utils/utils.py内解析即数据集会放在仓库根目录下的data/数据集名/数据在首次运行时下载。数据集与模型的合法组合由脚本内supported_sets限定数据集支持的模型Redditedge_cnn、gat、gcn、pna、sageogbn-productsedge_cnn、gat、gcn、pna、sageogbn-magrgat、rgcn传入组合外的模型时脚本打印Configuration of dataset model not supported. Skipping.并跳过而不是报错。其他常用参数默认值--batch-sizes [512, 1024, 2048, 4096, 8192]、--num-layers [2, 3]、--num-hidden-channels [64, 128, 256]、--num-neighbors [10]、--num-epochs 1、--warmup 1、--num-heads 2仅对gat、rgat生效。核对运行结果每个配置下脚本按以下顺序打印信息可据此判断运行是否进入正轨启动行BENCHMARK STARTS随后是Running on CPU--device为默认值时的输出。数据集行Dataset: Reddit加载阶段会下载/读取数据ogbn-mag会先打印Calculated degree for ...仅当模型为pna时。每个模型Training bench for gcn:之后打印当前配置回显行例如Batch size512, Layers amount2, Num_neighbors[10], Hidden features size64, Sparse tensorFalse。训练结束后输出两个指标脚本按总样本数/总时间与总时间/总样本数*1000计算具体数值取决于硬件与参数配置文档未给出固定预期值Throughput: xxx.xxx samples/s Latency: xxx.xxx ms这两行就是本次基准的结果对比两条示例命令加与不加--use-sparse-tensor的Throughput即可看到存储格式差异带来的差别。可选的结果落盘--write-csv bench把各配置的TIME (s)、MODEL、DATASET、CONFIG、SPARSE追加写入benchmark/results/TOTAL_training_benchmark.csv脚本自动创建该目录见 benchmark/utils/utils.py 的write_to_csv。写 CSV 依赖pandas仓库根pyproject.toml的benchmark可选依赖组中包含它。--write-csv prof写 PyTorch profiler 数据到TOTAL_prof_training_benchmark.csv必须同时加--profile否则脚本只打印警告 Cannot write profile data to CSV because profiling is disabled。另外注意若加上--evaluate每个 epoch 会打印Val Accuracy: x.xxxx训练结束打印Test Accuracy: x.xxxx但脚本注释明确说明评估模式下 throughput 与 latency 不准确纯测性能时不要加--evaluate。性能调优的可选分支README 的示例已经把最常用的一组开关放进命令里docs/source/advanced/cpu_affinity.rst 则以training_benchmark.py为例给出了完整的 CPU 亲和性调优指南测试 DataLoader 是否有益、绑物理核、用numactl分隔主进程与 worker 核、OMP_NUM_THREADS起点取N - num_workers、用jemalloc替换默认分配器等其中给出的完整命令形态为LD_PRELOAD(path)/libjemalloc.so (path)/libiomp5.so MALLOC_CONFoversize_threshold:1,background_thread:true,metadata_thp:auto OMP_NUM_THREADS(N-num_workers) KMP_AFFINITYgranularityfine,compact,1,0 KMP_BLOCKTIME0 numactl -C num_workers-(N-1) --localalloc python training_benchmark.py --cpu-affinity --num-workers ...文档示例中的(path)/...与N、num_workers为示意值需按实际路径与核心数替换。对应到脚本参数--cpu-affinity开启 DataLoader worker 核亲和--loader-cores指定 DataLoader worker 使用的核编号列表双 socket 机器还可参考文档中的 socket 分离写法numactl -C ... -m 1。脚本提供的其余与训练性能相关的开关--use-sparse-tensor改用torch_sparse.SparseTensor作为图存储格式、--bf16CPU 上启用 bfloat16 autocast、--compile用torch_geometric.compile编译模型、--trim启用trim_to_layer优化异构图暂不支持会打印警告、--measure-load-time单独计时数据集加载。限制与边界设备参数支持cpu/cuda/mps/xpu本文只覆盖cpu默认值CPU 路径下bf16通过torch.cpu.amp.autocast生效。ogbn-mag是异构数据集仅支持rgat/rgcn且对它的 trim 优化尚未实现脚本会警告。默认参数下--num-steps -1、多个 batch size × 层数 × 隐藏通道数的组合扫描空间很大、耗时明显增加做单点对比时像 README 示例一样把--batch-sizes、--num-layers、--num-hidden-channels、--num-steps固定为单值是更稳妥的做法。文档未给出固定的 Throughput/Latency 预期值任何一次运行的具体数字都应与同机器、同参数的另一次运行对比而不是跨硬件对比。【免费下载链接】pytorch_geometricGraph Neural Network Library for PyTorch项目地址: https://gitcode.com/GitHub_Trending/py/pytorch_geometric创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Arduino-ESP32 项目全解析:ESP32 系列 SoC 的 Arduino 核心架构、芯片支持矩阵与开发调试实践

Arduino-ESP32 项目全解析:ESP32 系列 SoC 的 Arduino 核心架构、芯片支持矩阵与开发调试实践

Arduino-ESP32 项目全解析:ESP32 系列 SoC 的 Arduino 核心架构、芯片支持矩阵与开发调试实践 【免费下载链接】arduino-esp32 Arduino core for the ESP32 family of SoCs 项目地址: https://gitcode.com/GitHub_Trending/ar/arduino-esp32 本文以官方仓库 …

2026/9/13 19:50:14 阅读更多 →
STM32 VS Code开发环境搭建与实战调试指南

STM32 VS Code开发环境搭建与实战调试指南

1. 为什么STM32开发者正在集体迁入VS Code——不是跟风,是工具链演进的必然结果 最近三个月,我带的三个嵌入式新人项目组里,有两位主动把开发环境从Keil MDK切到了VS Code GCC ARM工具链。不是因为“VS Code看起来酷”,而是他们在…

2026/9/13 19:49:13 阅读更多 →
machine-learning-for-trading 如何用 Docker 配置 NVIDIA GPU 并验证 CUDA 可用

machine-learning-for-trading 如何用 Docker 配置 NVIDIA GPU 并验证 CUDA 可用

machine-learning-for-trading 如何用 Docker 配置 NVIDIA GPU 并验证 CUDA 可用 【免费下载链接】machine-learning-for-trading Code for Machine Learning for Trading, 3rd edition — from data sourcing to live execution. 项目地址: https://gitcode.com/GitHub_Tren…

2026/9/13 19:49:13 阅读更多 →

最新新闻

永磁同步风力发电机Simulink建模与仿真实践

永磁同步风力发电机Simulink建模与仿真实践

1. 永磁同步风力发电机仿真模型概述永磁同步风力发电机(PMSG)因其高效率、高功率密度和免维护特性,已成为现代风力发电系统的主流选择。Simulink作为MATLAB中的动态系统仿真平台,为风力发电机建模与控制策略验证提供了理想环境。这个仿真模型的核心价值在…

2026/9/14 21:51:17 阅读更多 →
LangChain Runnable组件:AI应用开发的核心接口设计

LangChain Runnable组件:AI应用开发的核心接口设计

1. LangChain中的Runnable组件概述 在LangChain框架中,Runnable接口是整个生态系统的核心抽象之一。它定义了一套标准化的执行协议,使得不同类型的组件(如语言模型、输出解析器、检索器等)能够以统一的方式被调用和组合。这种设计…

2026/9/14 21:51:17 阅读更多 →
AutoGraph框架:核电站数字化控制的智能知识图谱技术

AutoGraph框架:核电站数字化控制的智能知识图谱技术

1. 项目背景与核心价值清华大学最新发布的AutoGraph框架,标志着核电站数字化控制领域的一次重大技术突破。这个基于知识图谱的智能程序执行系统,本质上是在解决核电站控制室操作中的三个核心痛点:信息过载、决策延迟和人为失误风险。在传统核…

2026/9/14 21:51:17 阅读更多 →
MCP Toolbox Looker 连接数据库工具实战:looker-get-connection-databases 配置与原理全解析

MCP Toolbox Looker 连接数据库工具实战:looker-get-connection-databases 配置与原理全解析

MCP Toolbox Looker 连接数据库工具实战:looker-get-connection-databases 配置与原理全解析 【免费下载链接】mcp-toolbox MCP Toolbox for Databases is an open source MCP server for databases. 项目地址: https://gitcode.com/GitHub_Trending/ge/mcp-toolb…

2026/9/14 21:51:17 阅读更多 →
EBSD技术全解析:从原理到应用,材料微观表征的晶体学手术刀

EBSD技术全解析:从原理到应用,材料微观表征的晶体学手术刀

说实话,在材料微观表征这个圈子里,EBSD(电子背散射衍射,Electron Backscatter Diffraction)早就不是新鲜词了。但这几年我明显感觉到一个趋势:越来越多的课题组和企业实验室,把EBSD从"锦上…

2026/9/14 21:51:17 阅读更多 →
React Native在OpenHarmony实现图片选择与裁剪

React Native在OpenHarmony实现图片选择与裁剪

1. 项目背景与核心价值在移动应用开发领域,跨平台框架与新兴操作系统的结合往往能碰撞出令人惊喜的火花。这次我们要探讨的正是React Native在OpenHarmony平台上实现图片选择与裁剪功能的完整技术方案。选择这个技术组合主要基于三个现实考量:首先&#…

2026/9/14 21:50:16 阅读更多 →

日新闻

AI音乐侵权案中的测试工程与版权保护技术

AI音乐侵权案中的测试工程与版权保护技术

1. 项目概述:当测试工程师遇上AI音乐侵权案去年夏天,我作为技术顾问参与了一起特殊的著作权纠纷案——某音乐平台AI作曲功能被指控批量侵权。这起案件的特殊性在于:原告方并非传统音乐人,而是一家拥有百万级曲库的数字音乐发行商&…

2026/9/14 0:00:26 阅读更多 →
嵌入式面试I2C与SPI深度解析:从协议到量产调试

嵌入式面试I2C与SPI深度解析:从协议到量产调试

1. 这份“高频知识点洞察”到底是什么,又为什么值得你花时间细读? 如果你最近在刷嵌入式开发岗位的招聘JD,或者正坐在工位上改第7版简历,又或者刚被面试官一句“讲讲I2C和SPI的区别”问得手心冒汗——那你不是一个人。过去两年我带…

2026/9/14 0:00:26 阅读更多 →
51单片机开环控制磁阻传感器的硬件匹配与代码实现

51单片机开环控制磁阻传感器的硬件匹配与代码实现

简介:本资源是一份面向嵌入式初学者与单片机课程实践者的51单片机开关磁阻电机(SRM)开环控制教学方案,聚焦磁阻位置检测、固定时序驱动与基础状态可视化。资源包含1个C语言主程序文件(zhuang600.c)实现电机…

2026/9/14 0:00:26 阅读更多 →

周新闻

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验 【免费下载链接】ai The AI Toolkit for TypeScript. From the creators of Next.js, the AI SDK is a free open-source library for building AI-powered applications and ag…

2026/9/14 5:45:49 阅读更多 →
Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化 【免费下载链接】refine A React Framework for building internal tools, admin panels, dashboards & B2B apps with unmatched flexibility. 项目地址: https://gitcode.com/GitH…

2026/9/14 0:52:26 阅读更多 →
Flutter应用改名全指南:从Android到iOS的配置与工具实践

Flutter应用改名全指南:从Android到iOS的配置与工具实践

刚接一个外包项目时,甲方要求把工程里临时用的应用名改成正式产品名。我本来觉得“改名”这种小事,打开配置文件改一行不就完了?结果真动手才发现,Flutter项目里“应用名称”根本不是一处配置,而是一整套散落在 Androi…

2026/9/14 0:06:41 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/14 17:35:10 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/14 16:59:29 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/14 5:45:14 阅读更多 →