2 पॉइंट द्वारा GN⁺ 2024-08-20 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • यह SafeDocs के लगभग 84 लाख PDF को मूल पाठ के बजाय URL metadata से वर्गीकृत करने का एक प्रयोग है, ताकि बड़े document corpus को व्यावहारिक लागत पर tag किया जा सके
  • पूरे 8TB PDF के बजाय लगभग 8GB metadata और LLM-जनित labels का उपयोग करके, PDF URL classification पर FineWeb-शैली का teacher/student approach लागू किया गया
  • एकल deep learning classifier Alibaba-large-gte-1.5 पर 59.14% accuracy तक ही पहुँचा, लेकिन URL embeddings और XGBoost के संयोजन ने hyperparameter search के बाद 85.26% तक प्रदर्शन किया
  • TF-IDF आधारित XGBoost और LinearRegressor ensemble ने क्रमशः 67.52% और 70.68% दर्ज किए, जिससे साधारण पारंपरिक NLP तरीकों ने शुरुआती deep learning baseline को पार कर लिया
  • अंतिम label dataset, embeddings, मूल download जानकारी, और code सार्वजनिक किए गए हैं, ताकि PDF classification या VLM/Omni मॉडल के data pipeline प्रयोगों में इन्हें दोबारा इस्तेमाल किया जा सके

SafeDocs PDF corpus और classification लक्ष्य

  • Common Crawl इंटरनेट का एक web archive है, और जब यह PDF पाता है तो पूरी file नहीं बल्कि पहला 1MB ही store करता है और बाकी काट देता है
  • SafeDocs या CC-MAIN-2021-31-PDF-UNTRUNCATED Common Crawl snapshot के PDF को दोबारा fetch करके uncut version में बनाया गया corpus है
  • यह dataset लगभग 84 लाख PDF से बना है, और uncompressed आकार में कुल 8TB है
  • लक्ष्य PDF को topic labels में वर्गीकृत करना है
    • उदाहरण: Linear Algebra PDF को Math
    • उदाहरण: Anatomy पाठ्यपुस्तक को Medicine

URL metadata से labels बनाना

  • पूरे 8TB मूल पाठ को सीधे process करने के बजाय, मूल dataset के metadata का उपयोग किया गया
    • metadata लगभग 8GB text है
    • मुख्य column है url
  • URL का filename दस्तावेज़ की प्रकृति का अनुमान लगाने का संकेत देता है
    • उदाहरण: Introduction_to_Python_Programming_-_WEB.pdf
    • इस filename से यह संकेत मिलता है कि दस्तावेज़ शिक्षा या तकनीकी विषय का हो सकता है
  • labeling तरीका FineWeb के approach से लिया गया
    • असंरचित text से labels बनाने वाला teacher के रूप में LLM
    • बने हुए labels से छोटा classifier train करने वाला student
  • prompt और Llama-3-70B को together API के जरिए इस्तेमाल करके शुरुआती 1 लाख labels बनाए गए
  • label distribution असंतुलित था और छोटे classes बहुत थे, इसलिए 250 से कम samples वाले labels को other में मिला दिया गया
  • प्रत्येक label से अधिकतम 5,000 samples लेकर संतुलन बनाया गया, और कुल 59 हजार labels का dataset तैयार किया गया

embedding मॉडल fine-tuning का प्रयास

  • पहला approach यह था कि URL text को embedding model से process किया जाए और classification समस्या के अनुसार fine-tune किया जाए
  • FineWeb Edu ने snowflake-arctic-embed-m का उपयोग किया था, लेकिन प्रयोग में Massive Text Embeddings Benchmark के शीर्ष मॉडलों को भी देखा गया
  • लगभग 7B parameter वाले model से 80 लाख PDF को तेज़ी से वर्गीकृत करना कठिन माना गया, इसलिए छोटे candidates पर प्रयोग किया गया
    • Stella_en_400M
    • gte-large-1.5
    • Arctic Embed
    • all-mpnet-base
    • distillbert
    • flant-t5-small
    • bert-base-uncased
  • Hugging Face का उपयोग करके base model को freeze रखा गया और सिर्फ embeddings व classification head को train किया गया, ताकि यह notebook में भी चल सके
  • इस तरीके में सबसे अच्छा model Alibaba-large-gte-1.5 था, और accuracy 59.14% रही

XGBoost से प्रदर्शन बढ़ाना

  • दूसरा approach यह था कि embedding model को सीधे classifier की तरह इस्तेमाल न करके, पहले URL embeddings बनाई जाएँ और फिर उन्हें XGBoost input के रूप में दिया जाए
  • text को embeddings में बदलने के बाद XGBoost को tabular data की तरह train किया गया
  • सभी PDF links की embeddings बनाई गईं, जिनका uncompressed आकार लगभग 40GB है
    • embedding data Kaggle पर सार्वजनिक है
  • एक बड़े classifier के बजाय class-वार binary classifiers train किए गए
    • यह विचार एक पुराने Kaggle competition से लिया गया
  • XGBoost embedding model का औसत प्रदर्शन इस प्रकार है
    • accuracy: 0.839750
    • precision: 0.859758
    • recall: 0.819733
    • f1: 0.838937
  • इस approach ने शुरुआती deep learning approach की तुलना में 24.83%p अधिक accuracy दी

TF-IDF और LinearRegressor के परिणाम

  • तीसरा approach यह था कि deep learning embeddings के बिना TF-IDF से text features बनाए जाएँ और model train किया जाए
  • TF-IDF वह तरीका है जिसमें ऐसे शब्दों को अधिक weight दिया जाता है जो किसी विशेष document में बार-बार आते हैं लेकिन पूरे corpus में दुर्लभ होते हैं
  • TF-IDF आधारित XGBoost का प्रदर्शन इस प्रकार रहा
    • accuracy: 0.675200
    • precision: 0.683185
    • recall: 0.646316
    • f1: 0.662497
  • TF-IDF आधारित LinearRegressor ensemble पर भी प्रयोग किया गया
    • accuracy: 0.706802
    • precision: 0.723558
    • recall: 0.663038
    • f1: 0.690286
  • दोनों तरीकों ने शुरुआती deep learning baseline 59.14% से बेहतर accuracy दी

अधिक LLM labels के साथ deep learning पर दोबारा प्रयास

  • एकल deep learning classifier का लक्ष्य 70% accuracy रखा गया और अधिक labels बनाए गए
  • अतिरिक्त labels Llama3.1-7B से 4 लाख बनाए गए
    • पहले की तुलना में छोटा model इसलिए चुना गया ताकि inference cost कम रहे
  • प्रयोग में यह परिणाम मिला कि data बढ़ने पर प्रदर्शन बेहतर होता है
  • Meta के The Llama 3 Herd of Models से प्रभावित होकर roberta-base और मौजूदा gte-large पर प्रयोग किया गया
  • gte-large ने training dataset पर अधिकतम 69.22% accuracy दर्ज की

मॉडल-वार अंतिम प्रदर्शन

  • प्रयोग के परिणाम इस प्रकार हैं
Model Name Accuracy
gte-large naïve (59k labels) 59.14%
XGBoost embeddings 83.97%
XGBoost Tf-Idf 67.52%
LinearRegressor Tf-Idf 70.68%
gte-large naïve (400k labels) 69.22%
XGBoost Embeddings HyperParameter Sweep 85.26%
  • अंतिम रूप से सबसे अच्छा model XGBoost embeddings था
  • hyperparameter search लागू किए गए XGBoost embedding model ने 85.26% accuracy के साथ सबसे ऊँचा परिणाम दिया

पूरे corpus का classification और visualization

  • अंतिम code की संरचना सरल है: embeddings को memory में load करके prediction चलाया जाता है
  • पूरे PDF set पर tag prediction करने में लगभग 1 घंटा लगा
    • GPU execution setting सक्षम नहीं थी, इसलिए GPU का उपयोग नहीं हुआ
  • PCA और UMAP से predictions और embeddings को visualize किया गया
  • PCA में पूरे dataset के लगभग 85 लाख points को एक image में visualize किया गया
  • UMAP चलाने के लिए बड़ी machine किराए पर ली गई
    • Azure Standard_E48s_v3
    • 48-core
    • 384GB RAM
    • 768GB disk
    • UMAP को 65 लाख points तक चलाया गया, और उससे आगे memory की कमी जैसी स्थिति आने लगी

सार्वजनिक डेटा और code

  • अंतिम dataset Hugging Face repo पर सार्वजनिक है
  • यदि केवल embeddings चाहिए, तो उन्हें Kaggle dataset से लिया जा सकता है
  • मूल SafeDocs dataset की download जानकारी S3 bucket में है
  • classification code GitHub monorepo के classify_metadata path में है
  • PDF data और images के मिश्रित रूप में होते हैं, इसलिए इन्हें VLM/Omni model training pipelines में अधिक बार उपयोगी माना जा सकता है

1 टिप्पणियां

 
GN⁺ 2024-08-20
Hacker News की राय
  • 2009 के आसपास Elsevier, Springer जैसे वैज्ञानिक प्रकाशकों के लगभग 57 लाख शोध-पत्रों (PDF, निजी corpus) पर मैंने इसी तरह का visualization काम किया था
    Newton, G., A. Callahan & M. Dumontier. 2009. Semantic Journal Mapping for Search Visualization in a Large Scale Article Digital Library. Second Workshop on Very Large Digital Libraries at the European Conference on Digital Libraries (ECDL) 2009. https://lekythos.library.ucy.ac.cy/bitstream/handle/10797/14...
    मैं पहला लेखक हूँ

    • इन सभी papers को mine करने में बहुत काम लगा होगा
      अगर 2009 का benchmark 13 घंटे था, तो सोच रहा हूँ कि आज computation कितनी जल्दी खत्म हो जाएगा
      आजकल होता तो शायद सब लोग उस data को UMAP में डाल देते
    • मुझे जानना है कि authors का order कैसे तय किया जाता है
      और क्या ampersand & का मतलब and से अलग होता है, या यह बस citation format है
  • embeddings का एक फायदा, जिस पर आजकल कम बात होती है, यह है कि मौजूदा statistical modeling techniques को लगभग वैसा ही apply किया जा सकता है, और bonus में stemming जैसी आम natural language processing preprocessing की बारीकियों और pitfalls से बचा जा सकता है
    यह लेख खासकर लंबे documents के लिए natural language processing के पहले step के रूप में सीधे LLM embeddings इस्तेमाल करने की practical वजह अच्छी तरह दिखाता है

    • क्या मतलब है कि embeddings पर ही statistical techniques apply की जा सकती हैं? यह कैसे काम करता है, जानना चाहूँगा
  • मैं लेखक हूँ। उम्मीद नहीं थी कि यह post HN के top पर आ जाएगी; कुछ भी पूछ सकते हैं

    • इस तरह का analysis सीखने के लिए कोई recommended resources हैं?
      मैंने code देखा, लेकिन बहुत-सी चीजें अनजानी थीं; Python से ज्यादा शायद वे analysis techniques थीं जिन्हें मैं नहीं जानता
    • आपने इस्तेमाल की गई कई techniques की accuracy का जिक्र किया था; क्या आप थोड़ा और बता सकते हैं कि वह accuracy कैसे calculate की?
      क्या PDFs पहले से classified थे?
  • रोचक और detail से भरा लेख था। हालांकि one-vs-many binary learning करते समय class balance मिलाना, और inference में maximum probability इस्तेमाल करना समस्या बन सकता है क्योंकि probabilities ठीक से calibrated नहीं हो सकतीं
    argmax लेने से पहले क्या आप अलग से probability calibration करते हैं?

  • 2006 में भी textbooks के 1TB torrent collections कई सारे थे
    अब शायद उनका size और count दोनों बढ़ गए होंगे

    • वह ऐसे materials इकट्ठा करके धुंधले business बनाने का काम बड़े पैमाने पर शुरू होने से पहले की बात थी
      मुझे याद है कि 2008 तक textbooks, solution manuals, संबंधित PDFs और दूसरे materials ढूँढना 6–8 साल बाद की तुलना में कहीं आसान था
      सबसे बड़ा फर्क यह था कि Chegg जैसी कई sites ने ऐसे materials सोखकर किसी न किसी तरीके से resale करना शुरू कर दिया
    • मेरे पास personally पुराने service manuals, datasheets, catalogs, periodicals करीब 350GB हैं
      ज्यादातर electronics और engineering से जुड़े materials हैं, और लगभग 2 साल पहले GraphQL और OSR data से experiment करना चाहता था तब torrents से लिए थे
    • अगर चाहें तो Anna's Archive पर दर्जनों TB scale के torrents बहुत हैं
  • मेरे पास PDF करीब 20–40TB हैं (deduplication से पहले)
    8TB भी काफी है, लेकिन दुनिया में मौजूद सभी PDFs के total scale के आसपास भी नहीं है

    • आप क्या collect करते हैं, जानना चाहूँगा। मुख्यतः LibGen जैसी चीजों को mirror करते हैं?
      मेरे पास भी पढ़ने के लिए इकट्ठी की गई ebooks, PDFs, comics का अच्छा-खासा collection है, लेकिन 20TB की library कितनी बड़ी होगी, कल्पना नहीं कर पा रहा
    • क्या इसे public करने का इरादा है? या उस dataset में इसकी अनुमति नहीं है?
      साफ है कि 8TB से कहीं ज्यादा PDFs मौजूद हैं। शायद उसमें duplicates बहुत होंगे, लेकिन images ज्यादा होने की वजह से deduplication अच्छी तरह नहीं हो पाएगी
  • रोचक और मजेदार लेख है। PDF से tabular data निकालने के लिए कई LLM/generative AI solutions आजमाए, लेकिन results उम्मीद से कम अच्छे रहे
    text strings निकालने या summarize करने, जैसे कुल रकम कितनी है या कब print हुआ, जैसे सवालों पर वे अच्छे हैं, लेकिन CSV में reliably निकालने में काफी errors आते हैं

  • बढ़िया। Airtrain में भी हमने देखा है कि embeddings classification models बनाने में बहुत valuable हैं
    अगर आप बहुत सारे text और embeddings के साथ काम करना चाहते हैं, तो हमने हाल ही में पूरे fineweb-edu (लेख में भी mention है) को deduplicate और embed करके resulting dataset Hugging Face पर डाल दिया है: https://huggingface.co/datasets/airtrain-ai/fineweb-edu-fort...

  • बहुत शानदार idea है। आजकल free time ज्यादा नहीं है, लेकिन कुछ समय पहले मैंने एक मिलता-जुलता पर अलग project करने के बारे में सोचा था
    social sciences के लिए उपयोगी time-series data download करने वाला open-source tool बनाना चाहता था। जैसे grocery prices पर social media comments की time series
    LLMs की वजह से research के कई नए angles खुले लगते हैं जिन्हें अभी लोग ज्यादा इस्तेमाल नहीं कर रहे
    अगर कभी वह side project किया, तो शायद कुछ अच्छे ideas यहाँ से ले सकूँ

  • बेहतरीन काम। national libraries में कभी-कभी अपनाए जाने वाले तरीके जैसा, आपने कई approaches साथ में इस्तेमाल किए। मैंने भी तरह-तरह के embedding → classifier और LDA आजमाए हैं
    prompt को लेकर उत्सुक हूँ: https://github.com/snat-s/m/blob/main/classify_metadata/prom...
    क्या यह असल में URL type के आधार पर classify करने को prompt देने जैसा नहीं है?