- Google Graph Mining टीम का लक्ष्य ग्राफ एल्गोरिद्म और विश्लेषण के लिए एक उच्च-स्केलेबल लाइब्रेरी बनाना और उसे Google प्रोडक्ट्स में लागू करना है; फिलहाल उपलब्ध दायरा clustering algorithms के संग्रह तक सीमित है
- जिन टूल्स पर विकास हो रहा है, उनमें similarity graph निर्माण, clustering, node classification, node embedding, graph neural network training, graph visualization, विभिन्न sampling, और similarity ranking शामिल हैं
- clustering क्षेत्र में shared-memory parallel algorithms और कई sequential algorithms शामिल हैं, जो सैकड़ों अरब edges वाले ग्राफ तक स्केल हो सकते हैं
- parallel algorithms, HAC, correlation clustering, affinity clustering, और parline से संबंधित शोध-पत्रों पर आधारित implementations हैं
- Graph Neural Network framework एक अलग प्रोजेक्ट TF-GNN में उपलब्ध है
- तेज़ी से चलाने के लिए Bazel इंस्टॉल करने के बाद
bazel run //examples:quickstartचलाएँ - यह Google का आधिकारिक रूप से समर्थित प्रोडक्ट नहीं है; सवाल और राय इस repository में issue बनाकर संभाले जाते हैं
1 टिप्पणियां
Hacker News की रायें
Graph mining करीब 10 साल पहले सचमुच बहुत ट्रेंड में था। GraphX (https://spark.apache.org/graphx/) और GraphLab (https://en.wikipedia.org/wiki/GraphLab), और graph databases याद आते हैं
शायद यह social network वाली लहर के समय के आसपास ही था, और हाल के समय में graphs और दूसरी structures पर machine learning, यानी geometric learning, ध्यान खींच रहा था, लेकिन LLM ने सारी चर्चा अपने नाम कर ली। फिर भी मुझे लगता है कि geometric learning में अभी भी काफी संभावना है, और काश यह और लोकप्रिय हो
ऐसे graphs में आम तौर पर “~से शादी की है”, “वार्षिक औसत तापमान है” जैसी अलग-अलग edge types की संख्या बहुत बड़ी होती है। इसके उलट PageRank या graph centrality जैसे graph algorithms में अक्सर edge type एक ही होता है या बहुत कम होते हैं। कई तरह के edges वाले graph पर भी लागू किए जा सकने वाले general algorithms मौजूद हैं; उदाहरण के लिए SPARQL pattern
?s1 ?p ?o . ?s2 ?p ?o .उन?s1,?s2को ढूंढता है जो किसी?oऔर relation?pको साझा करते हैं, और उनके बीच similarity measure का आधार बनता है। Graphs का आम तौर पर कोई fixed shape नहीं होता, वे किसी भी तरह की structure रख सकते हैं, और memory latency के लिहाज से यह आपदा बन सकता है। पहले मैंने इसी SPARQL pattern का इस्तेमाल करते हुए ऐसा program बना दिया था जिसे चलने में 100 साल लगते; फिर data structure को फिर से pack करके और approximation ढूंढकर उसे 20 मिनट के अंदर calculate करने लायक बनाया। इसलिए practitioners general-purpose graph processing libraries को लेकर संदेह में रहते हैं। वजह यह है कि ऐसे problems आम हैं जिनके लिए build system से जूझने में लगने वाले समय से कम समय में special-purpose code लिखकर उसे 1000 गुना तेज बनाया जा सकता हैफिर भी अगर आप ट्रेंड के साथ चलना चाहते हैं, तो आजकल arXiv पर graph neural network papers की भरमार है, जिन्हें दूसरी जगहों पर उतना hype नहीं मिला है। YOShInOn ने देखने के लिए GNN papers की लंबी सूची बनाई थी, लेकिन मैंने उनमें से कुछ ही देखे हैं; मेरे text analysis problems पर लागू होने की बात करने वाले लेख तो बहुत हैं, मगर वे YOShInOn और मेरे इस्तेमाल वाले systems से खास बेहतर नहीं लगते, इसलिए मुझे कोई जल्दी नहीं है
अगर कोई graphs और machine learning के साथ हाथ आजमाना चाहता है, तो हाल में ArangoDB docs देखते समय मैंने देखा कि उसमें कई graph libraries और machine learning framework integrations शामिल हैं https://docs.arangodb.com/3.11/data-science/adapters/
Graphs में machine learning पर कुछ Jupyter notebooks भी दिखीं https://github.com/arangodb/interactive_tutorials#machine-learning
integrations में NetworkX -- https://networkx.org/, DeepGraphLibrary -- https://www.dgl.ai/, cuGraph (Rapids.ai Graph) -- https://docs.rapids.ai/api/cugraph/stable/, PyG (PyTorch Geometric) -- https://pytorch-geometric.readthedocs.io/en/latest/ शामिल हैं
अगर कोई Bazel से परिचित है, तो क्या बिल्ड करने का तरीका बताने के लिए कोई hint दे सकता है?
bazel buildकुछ करता तो है, लेकिन नतीजे में सिर्फbazel-buildऔरbazel-buildबनते हैं, और कोई साफ़ दिखने वाला build artifact नहीं दिखता//..., make केalltarget जैसा होता हैइसे
bazel build //...,bazel test //...,bazel query //...की तरह इस्तेमाल कर सकते हैं। आख़िरी command, मेरी याद के मुताबिक, सभी targets list कर देगाbazel build //in_memory/connected_components:asynchronous_union_findसे asynchronous_union_find build कर सकते हैंहालांकि
cc_binaryrule के context के बाहर यह शायद बहुत उपयोगी न हो। यह तरीका आपको पूरा repository build किए बिना, दूसरे projects में केवल ज़रूरी packages build करके इस्तेमाल करने देता है। उदाहरण के लिए अगर आप सिर्फ़asynchronous_union_find.hheader इस्तेमाल करना चाहते हैं, तो अपने project कीWORKSPACEfile में कहींgit_repositoryrule के जरिए graph-mining library जोड़ें (WORKSPACE.bazelexample देखें), और project के अंदरBUILDfile में मौजूदcc_libraryrule में@graph-mining//in_memory/connected_components:asynchronous_union_findजोड़ दें। फिर उसे दूसरी जगह header की तरह include किया जा सकेगा, और project build करते समय सिर्फ़ वह package और उसकी dependencies build होंगी; पूरी graph-mining library build नहीं होगीbazelकरना और/usr/local/bin/bazelजैसे path में रखना recommended तरीका हैलेकिन
queryचलाने पर JDK warning आई, औरbuildचलाने परWARNING: Ignoring JAVA_HOME, because it must point to a JDK, not a JRE.के साथ Java न होने की वजह से fail हो गया। मैं Java इस्तेमाल भी नहीं कर रहा, फिर कौन-सा JDK/JRE चाहिए—यह कुछ मिनट खोजा, फिर आगे नहीं कर पाया, तो आज वाला “कभी” फिर किसी और दिन के लिए टल गया। cargo या npm/yarn की आदत इतनी पड़ गई है कि शर्मनाक लगता हैसुधार: https://sdkman.io/ की वजह से चल गया। आखिर में इतना भी बुरा नहीं था
शुरुआती सवाल है: क्या इस library को wrappers या extension libraries के साथ integrate करके graph-based clustering algorithms को एक जगह इकट्ठा करने के candidate के तौर पर देखा जा सकता है? यह मानकर चल रहा हूँ कि यह पहले से ऐसा नहीं है
या फिर इसी functionality को बेहतर तरीके से देने वाला कोई framework पहले से मौजूद है? जैसे NetworkX
हो सकता है मैं समय से काफ़ी पीछे हूँ, लेकिन क्या इसका Pregel से कोई संबंध है?
examples हों तो सच में बहुत मदद मिलेगी
क्या कोई समझा सकता है कि यह library कहाँ उपयोगी है?
GitHub पर C, C++, Starland लिखा है। Starland क्या है?
Bazel यहाँ इस्तेमाल किया गया build system है
graph algorithms में कुछ हद तक standardization की सख़्त ज़रूरत है। BLAS और LAPACK के बारे में सोचें
उम्मीद थी कि यह सचमुच statistical graphs को mine करके anomaly detection करने वाला tool होगा
शुरुआत में यह दिलचस्प और दिखने से ज़्यादा सरल लगता है