r/MachineLearning: GraphZero、mmapとzero-copy tensorで巨大graphをRAMごと読み込まず扱うC++ engine
Original: [P] I got tired of PyTorch Geometric OOMing my laptop, so I wrote a C++ zero-copy graph engine to bypass RAM entirely. View original →
GNNのmemory wallをsystems設計で回避しようとする試み
2026年3月15日、r/MachineLearningではGraphZero v0.2のself-postが334 points、27 commentsを集めた。主張はかなり明快で、Papers100Mのようなlarge graph datasetはtrainingを始める前にconsumer machineを落としてしまうことが多い、なぜなら既存libraryがtopologyとfeature matrix全体をRAMへ積もうとするからだ、というものだ。作者はそのload-to-memory modelを捨て、datasetをdisk上に置いたまま扱うC++ engineを作ったと説明している。
Reddit postによれば、GraphZeroはraw CSVを2種類のoptimized binary formatへ変換する。topologyは .gl、featuresは .gd に保存し、その後 mmap で直接memory-mapする。engineは nanobind を使ってraw pointerをNumPyやPyTorchへzero-copy arrayとして渡す。重要なのは、model側からは巨大tensorがRAMにあるように見えても、実際にはbatchが触れた4KB pageだけが必要な瞬間にNVMeから読まれる点だ。さらにOpenMPでneighbor samplingを並列化し、Python GILも解放してdisk I/O、CPU sampling、GPU計算を重ねられるようにしているという。
GitHub READMEでは、より強いbenchmark claimが示されている。例として挙げられる ogbn-papers100M は111 million nodes、1.6 billion edges規模で、GraphZeroは30GBのraw CSVを13GB binaryへ縮めるcompressed CSR風の形式を使うとする。READMEでは16GB RAMのWindows laptop上でpeak RAM usageが約5.1GBのOS cache程度に収まり、同じ条件でPyTorch Geometricは24.1GB超を要求してcrashしたと述べている。加えて、effectively instantなload timeと1,264,000 random-walk steps/sというthroughputも提示している。
このprojectが面白いのは、大規模graph trainingの問題をmodel architectureではなくsystems problemとして捉え直していることだ。より大きなserverを買う代わりに、data layout、file format、memory mapping、sampling pipelineを作り直して対処しようとしている。benchmark numberの外部検証はまだ必要だが、communityが強く反応した理由は分かりやすい。graph MLの実験をconsumer hardwareへ引き戻せる可能性があるからだ。
Primary source: GraphZero GitHub repository. Community discussion: r/MachineLearning.
Related Articles
Kuaishou傘下のAI動画部門Klingが$2.8Bを調達し、評価額は約$18Bに達した。追加投資でラウンドは最大$3Bまで拡大し、Kuaishouの持ち分は68.33%まで下がる可能性がある。
公開Issueに埋め込んだ指示がprivate repositoryへのアクセスにつながる可能性が示され、HNではagent権限の切り方が論点になった。
MetaはMuse ImageをMeta AI、meta.ai、米国のInstagram Stories、一部国のWhatsAppに投入した。検索、コード実行、自己修正、Content Sealを備えた画像生成がソーシャル面に入る点が大きい。