{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/graphvite-a-high-performance-cpu-gpu-hybrid","title":"GraphVite: A High-Performance CPU-GPU Hybrid System for Node Embedding","arxiv_id":"1903.00757","date":"2019-03-02","proceeding":null,"authors":["Zhaocheng Zhu","Shizhen Xu","Meng Qu","Jian Tang"],"abstract":"Learning continuous representations of nodes is attracting growing interest\nin both academia and industry recently, due to their simplicity and\neffectiveness in a variety of applications. Most of existing node embedding\nalgorithms and systems are capable of processing networks with hundreds of\nthousands or a few millions of nodes. However, how to scale them to networks\nthat have tens of millions or even hundreds of millions of nodes remains a\nchallenging problem. In this paper, we propose GraphVite, a high-performance\nCPU-GPU hybrid system for training node embeddings, by co-optimizing the\nalgorithm and the system. On the CPU end, augmented edge samples are parallelly\ngenerated by random walks in an online fashion on the network, and serve as the\ntraining data. On the GPU end, a novel parallel negative sampling is proposed\nto leverage multiple GPUs to train node embeddings simultaneously, without much\ndata transfer and synchronization. Moreover, an efficient collaboration\nstrategy is proposed to further reduce the synchronization cost between CPUs\nand GPUs. Experiments on multiple real-world networks show that GraphVite is\nsuper efficient. It takes only about one minute for a network with 1 million\nnodes and 5 million edges on a single machine with 4 GPUs, and takes around 20\nhours for a network with 66 million nodes and 1.8 billion edges. Compared to\nthe current fastest system, GraphVite is about 50 times faster without any\nsacrifice on performance.","url_abs":"http://arxiv.org/abs/1903.00757v1","url_pdf":"http://arxiv.org/pdf/1903.00757v1.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"graphvite-a-high-performance-cpu-gpu-hybrid","repo_url":"https://github.com/DeepGraphLearning/graphvite","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":null,"task_name":"CPU"},{"task_slug":"dimensionality-reduction","task_name":"Dimensionality Reduction"},{"task_slug":null,"task_name":"GPU"},{"task_slug":"knowledge-graph-embedding","task_name":"Knowledge Graph Embedding"},{"task_slug":"link-prediction","task_name":"Link Prediction"},{"task_slug":"network-embedding","task_name":"Network Embedding"},{"task_slug":"node-classification","task_name":"Node Classification"},{"task_slug":"high","task_name":"Vocal Bursts Intensity Prediction"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/link-prediction-on-fb15k","task":"Link Prediction","dataset":"FB15k","model":"SimplE","rank_in_archive_order":12,"of":23,"metrics":{"Hits@1":"0.721","Hits@10":"0.876","Hits@3":"0.818","MR":"74","MRR":"0.779","training time (s)":"2105"},"uses_additional_data":false},{"leaderboard":"/sota/link-prediction-on-fb15k-237","task":"Link Prediction","dataset":"FB15k-237","model":"RotatE","rank_in_archive_order":48,"of":75,"metrics":{"Hits@1":"0.217","Hits@10":"0.511","Hits@3":"0.347","MR":"176","MRR":"0.314","training time (s)":"857"},"uses_additional_data":false},{"leaderboard":"/sota/link-prediction-on-wn18","task":"Link Prediction","dataset":"WN18","model":"SimplE","rank_in_archive_order":19,"of":37,"metrics":{"Hits@1":"0.944","Hits@10":"0.954","Hits@3":"0.950","MR":"412","MRR":"0.948","training time (s)":"1042"},"uses_additional_data":false},{"leaderboard":"/sota/node-classification-on-youtube","task":"Node Classification","dataset":"YouTube","model":"LINE","rank_in_archive_order":1,"of":2,"metrics":{"Macro-F1@2%":"33.69","Micro-F1@2%":"40.61","runtime (s)":"70.09"},"uses_additional_data":false}],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=1903.00757","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1903.00757"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/DeepGraphLearning/graphvite","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"unverified":7},"by_repo_kind":{"listed":{"samples":7,"ran":0,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":0,"samples":[{"code_sha256_prefix":"81f9cf448d698eaf","entry":"assert_in","repo":"DeepGraphLearning/graphvite","repo_kind":"listed","path":"python/graphvite/util.py","file_url":"https://github.com/DeepGraphLearning/graphvite/blob/HEAD/python/graphvite/util.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"81f9cf448d698eaf"}},{"code_sha256_prefix":"78c4c05ac8ba1a72","entry":"find_all_names","repo":"DeepGraphLearning/graphvite","repo_kind":"listed","path":"python/graphvite/helper.py","file_url":"https://github.com/DeepGraphLearning/graphvite/blob/HEAD/python/graphvite/helper.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"78c4c05ac8ba1a72"}},{"code_sha256_prefix":"801fb64b0497c90c","entry":"find_all_templates","repo":"DeepGraphLearning/graphvite","repo_kind":"listed","path":"python/graphvite/helper.py","file_url":"https://github.com/DeepGraphLearning/graphvite/blob/HEAD/python/graphvite/helper.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"801fb64b0497c90c"}},{"code_sha256_prefix":"29ce96b8f084f58d","entry":"recursive_default","repo":"DeepGraphLearning/graphvite","repo_kind":"listed","path":"python/graphvite/util.py","file_url":"https://github.com/DeepGraphLearning/graphvite/blob/HEAD/python/graphvite/util.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"29ce96b8f084f58d"}},{"code_sha256_prefix":"7264853b8d0e9cd8","entry":"recursive_map","repo":"DeepGraphLearning/graphvite","repo_kind":"listed","path":"python/graphvite/util.py","file_url":"https://github.com/DeepGraphLearning/graphvite/blob/HEAD/python/graphvite/util.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"7264853b8d0e9cd8"}},{"code_sha256_prefix":"4a22f661535c9d9d","entry":"signature","repo":"DeepGraphLearning/graphvite","repo_kind":"listed","path":"python/graphvite/helper.py","file_url":"https://github.com/DeepGraphLearning/graphvite/blob/HEAD/python/graphvite/helper.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"4a22f661535c9d9d"}},{"code_sha256_prefix":"73fee353b6999f32","entry":"triplet_prediction","repo":"DeepGraphLearning/graphvite","repo_kind":"listed","path":"python/graphvite/application/application.py","file_url":"https://github.com/DeepGraphLearning/graphvite/blob/HEAD/python/graphvite/application/application.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"73fee353b6999f32"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}