1 पॉइंट द्वारा GN⁺ 2024-08-21 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Transformers.rb एक लाइब्रेरी है जो Hugging Face के Transformers को Ruby में इस्तेमाल करने योग्य बनाती है, और Ruby कोड के साथ नवीनतम transformer models चलाने पर फोकस करती है
  • इंस्टॉलेशन के लिए पहले Torch.rb इंस्टॉल करना होता है, फिर Gemfile में gem "transformers-rb" जोड़ना होता है
  • समर्थित उदाहरणों में embedding, sparse embedding, reranking models शामिल हैं, और sentence-transformers, mixedbread-ai, BAAI, Snowflake, OpenSearch परिवार के models के उपयोग का तरीका दिखाया गया है
  • pipelines को text और vision में बाँटा गया है, और NER, sentiment analysis, question answering, image classification, image feature extraction आदि को Transformers.pipeline रूप में कॉल किया जाता है
  • API Transformers Python API का पालन करता है, और फिलहाल BERT, DeBERTa-v2, DistilBERT, MPNet, ViT, XLM-RoBERTa architectures को सपोर्ट करता है

Ruby में Transformers का उपयोग

  • Transformers.rb Ruby के लिए आधुनिक transformers लाइब्रेरी है
  • अगर तेज inference की ज़रूरत हो, तो Informers देखने की सलाह दी गई है

इंस्टॉलेशन का तरीका

  • पहले Torch.rb इंस्टॉलेशन की ज़रूरत होती है
  • इसके बाद application की Gemfile में नीचे दी गई लाइन जोड़ें
gem "transformers-rb"

समर्थित models के उदाहरण

  • README, model usage examples को Embedding, sparse embedding, और reranking में बाँटकर देता है
  • Embedding

  • Sparse embedding

    • opensearch-project/opensearch-neural-sparse-encoding-v1: AutoModelForMaskedLM और AutoTokenizer को सीधे लोड करके sparse embedding की गणना करता है
    • tokenizer output में padding, truncation, return_tensors: "pt", return_token_type_ids: false का उपयोग होता है
    • output values पर attention mask लागू करके, Torch.max, Torch.log, Torch.relu के बाद embedding array बनाई जाती है
    • special token positions के values को 0 पर सेट किया जाता है
  • Reranking

    • mixedbread-ai/mxbai-rerank-base-v1: query और document list लेकर reranking result बनाता है
    • BAAI/bge-reranker-base: इसी तरह query और document array को input के रूप में लेने वाला reranking example है

पाइपलाइन

  • Text pipeline नीचे दिए गए tasks को सपोर्ट करती है
    • embedding: text embedding बनाना
    • reranking: query और document array की ranking को फिर से व्यवस्थित करना
    • ner: named-entity recognition
    • sentiment-analysis: sentiment analysis
    • question-answering: प्रश्न और context को input में लेकर उत्तर बनाना
    • feature-extraction: text feature extraction
  • Vision pipeline नीचे दिए गए tasks को सपोर्ट करती है
    • image-classification: image classification
    • image-feature-extraction: image feature extraction

API और समर्थित architectures

  • यह लाइब्रेरी Transformers Python API का पालन करती है
  • फिलहाल समर्थित model architectures ये हैं
    • BERT
    • DeBERTa-v2
    • DistilBERT
    • MPNet
    • ViT
    • XLM-RoBERTa

विकास और योगदान

  • बदलावों का इतिहास changelog में देखा जा सकता है
  • योगदान के तरीकों में bug report करना, bug fix और pull request भेजना, documentation लिखना·स्पष्ट करना·सुधारना, और नए features का सुझाव देना या जोड़ना शामिल है
  • development शुरू करने के commands repository clone, bundle install, bundle exec rake download:files, bundle exec rake test के क्रम में दिए गए हैं

1 टिप्पणियां

 
GN⁺ 2024-08-21
Hacker News टिप्पणियाँ
  • Ankane का Ruby के लिए ONNX runtime इतना आसान है कि हैरानी होती है कि official JavaScript repository इतनी समझ से बाहर क्यों लगती है
    इस व्यक्ति ने जो काम किया है, उसकी अभी बस सतह ही देखी है, फिर भी वह हीरो जैसा लगता है

  • सच में, क्या यह व्यक्ति इंसान है? अगर कोई व्यक्ति इतना प्रतिभाशाली हो, तो मैं उसमें 1 अरब डॉलर भी निवेश करना चाहूँगा

    • मैं उसकी प्रतिभा का लगभग 1/100 हूँ, लेकिन 1 करोड़ डॉलर के निवेश के लिए तैयार हूँ
  • शायद वह यह सब इसके लिए नहीं कर रहा होगा, लेकिन अगर कोई आभार जताना चाहता है, तो मैंने Ankane को Rails 2024 Luminary award के लिए nominate कर दिया है
    https://rubyonrails.org/2024/8/2/nominations-open-for-2024-l...

    • सहमत। Ankane समुदाय को जितनी उपयोगी work output दे रहा है, वह सच में अवास्तविक-सी लगती है
  • Ruby community को ऐसी contributions की सच में ज़रूरत है, और यह project भी दिलचस्प दिखता है

    • बिल्कुल। कुल मिलाकर ऐसी contributions की कमी, या उनके आने की गति धीमी होने की वजह से मुझे लगता है कि Ruby community धीमी पड़ रही है
      इस मामले में Ruby को अचानक एक शानदार library मिल गई है, और यह अपने-आप में वाकई आभार योग्य उपलब्धि है। लेकिन “community” ने ऐसी चीज़ Python, JavaScript, TypeScript, Rust, Go वगैरह में वही library आने के कई महीनों या सालों बाद जाकर “बनाई” है
      यह सिर्फ machine learning/artificial intelligence में ही नहीं, बल्कि नई technologies को संभालने वाली Ruby libraries यानी gems में भी हो रहा है। पहले SaaS या startups शुरुआत से ही official Rubygem देते थे, और कई बार दूसरे platforms या languages से पहले दे देते थे। आजकल Notion, Slack, Cloudflare जैसी चीज़ों से integrate करना हो, तो Ruby option नहीं होता, या कम से कम official option तो नहीं होता
      यह दुखद है। Ruby, Rails से कहीं व्यापक language है, और Rails को लेकर झिझक या विरोध समझ में आता है। फिर भी Ruby, Python से ज्यादा, और JavaScript से तो निश्चित ही बहुत ज्यादा, आनंददायक language है काम करने के लिए। Ruby आज Python वाली जगह ले सकती थी, और मुझे पूरा भरोसा है कि अगर ऐसा होता तो हजारों developers आज की तुलना में थोड़ा ज्यादा खुश होते
  • Ankane अकेले ही industry को सच में बहुत तरीकों से जबरदस्त contribution वापस दे रहा है। कमाल है

  • सोचता हूँ कि कोई एक व्यक्ति इतना productive कैसे हो सकता है। काम, परिवार वगैरह के साथ जीवन काफी व्यस्त होता होगा

  • Ankane के gems के लिए मैं कितना आभारी हूँ, यह बताना मुश्किल है। उसने जो बनाया है वह मेरी कुछ apps में ज़रूरी हिस्सा रहा है, और मुझे लगता है कि वह ecosystem की खाली जगहें भरता है

  • इस व्यक्ति के बनाए tools सच में शानदार हैं। और भी आएँ तो अच्छा होगा

  • मेरी जानकारी में Andrew Kane pgvector, pgvector-ruby, neighbor के author भी हैं, और ये सभी काफी बेहतरीन हैं
    उन्होंने इसके अलावा भी बहुत कुछ बनाया है
    शायद उन्होंने बहुत पहले अकेले ही artificial intelligence/machine learning सुलझा ली हो, और उसी का इस्तेमाल करके इतने productive हों
    [0] https://github.com/pgvector/pgvector
    [1] https://github.com/pgvector/pgvector-ruby
    [2] https://github.com/ankane/neighbor
    [3] https://github.com/ankane/

    • उन्होंने artificial intelligence के अलावा भी बहुत कुछ बनाया है
      https://github.com/ankane/pretender Rails apps में किसी दूसरे user के रूप में impersonate करना बहुत आसान बना देता है
      https://github.com/ankane/ahoy Rails के लिए self-hosted analytics tool है
      https://github.com/ankane/blazer Rails के अंदर चलने वाला business intelligence tool है
      https://github.com/ankane/field_test A/B testing के लिए है
      ये चीज़ें सामान्य web app में Rails productivity बढ़ाती हैं। हर एक के लिए बेहतर vendor products या specialized solutions हो सकते हैं, लेकिन अगर gem जोड़कर और थोड़ी configuration करके 80% समाधान मिल जाए, तो बहुत तेजी से launch किया जा सकता है
    • फिर Chartkick, Ahoy, Searchkick भी हैं
      Chartkick Ruby के लिए chart library है, Ahoy Rails analytics library है, और Searchkick Rails search library है
      उनके GitHub profile में 370 से ज्यादा repositories हैं
    • हम अपने production repository में भी Andrew Kane के बहुत सारे tools इस्तेमाल करते हैं। उनके packages की वजह से Rails में artificial intelligence applications बनाए जा सकते हैं
    • अगर आप Ruby इस्तेमाल करते हैं और अभी ankane को नहीं जानते, तो उनके GitHub पर बहुत उपयोगी tools हैं
      उदाहरण के लिए /disco एक बहुत सरल collaborative filtering implementation है, जिसका इस्तेमाल कहीं भी जल्दी से recommendation feature जोड़ने के लिए किया जा सकता है
      अगर आप Ruby में machine learning से जुड़ी कोई चीज़ ढूँढ रहे हैं, तो ankane आमतौर पर उसे पहले ही एक बार देख चुके होते हैं
    • वे मेरे जानने वालों में सबसे prolific लोगों में से एक हैं
  • Ruby community में Andrew Kane और Chris Oliver निजी तौर पर मेरे लिए सबसे बेहतरीन लोगों में से हैं। भले ही मैं उनके हर contribution का इस्तेमाल न करूँ, ऐसी contributions हमेशा स्वागत योग्य हैं