इस प्रोजेक्ट के बारे में
Swift Tokenizers एक Swift पैकेज है जो Hugging Face के Rust `tokenizers` crate को रैप करता है, जिससे Swift एप्लिकेशन के लिए उच्च-प्रदर्शन वाला टोकनाइजेशन उपलब्ध होता है। Swift Transformers के विपरीत, यह केवल टोकनाइजेशन पर केंद्रित है और Hugging Face Hub पर निर्भर नहीं है, इसलिए मॉडल फाइलें अलग से डाउनलोड की जाती हैं और स्थानीय निर्देशिका से लोड की जाती हैं।
आवश्यकताएँ और प्लेटफ़ॉर्म समर्थन: Swift 6.2 या नया संस्करण (Apple प्लेटफ़ॉर्म पर Xcode 26), macOS 14+, iOS 17+, और x86_64 तथा aarch64 पर Linux। Rust बैकएंड एक एकल SE-0482 staticLibrary artifactbundle के रूप में आता है जिसमें Apple और Linux स्लाइस शामिल होते हैं, इसलिए एक ही निर्भरता सभी प्लेटफ़ॉर्म पर काम करती है और मैनिफेस्ट में शर्तीय तर्क की आवश्यकता नहीं होती। Linux बाइनरीज़ Ubuntu 22.04 पर glibc को लक्ष्य करती हैं और नए Ubuntu LTS इमेज के साथ फॉरवर्ड-कम्पैटिबल होती हैं; musl का समर्थन नहीं है। पुराने टूलचेन पैकेज को रिज़ॉल्व नहीं कर सकते क्योंकि आर्टिफैक्ट प्रकार Swift 6.2 में आया था।
मुख्य क्षमताएँ:
- एक स्थानीय निर्देशिका से टोकनाइज़र लोड करें जिसमें tokenizer.json और साइडकार फाइलें जैसे कि tokenizer_config.json, config.json और chat_template.jinja हों।
- टेक्स्ट को टोकन आईडी में एन्कोड करें और टोकन आईडी को वापस टेक्स्ट में डिकोड करें।
- encodeWithMetadata अधिक समृद्ध एन्कोडिंग डेटा लौटाता है जिसमें टोकन स्ट्रिंग्स, मास्क, सीक्वेंस इंडेक्स, वर्ड इंडेक्स और ऑफसेट स्पैन शामिल होते हैं।
- एक StreamingDetokenizer जैसे ही पूर्ण यूनिकोड स्केलर उपलब्ध होते हैं, टेक्स्ट चंक्स उत्पन्न करता है, जिसकी आंतरिक स्थिति सीमित होती है और स्ट्रीम की लंबाई के साथ नहीं बढ़ती है। बाधित स्ट्रीम को फिर से शुरू करते समय इसे पूर्व टोकन से सीड किया जा सकता है।
- applyChatTemplate के माध्यम से चैट टेम्पलेट लागू करना, जिसमें फंक्शन डेफिनिशन के साथ टूल कॉलिंग शामिल है।
- बैच एन्कोडिंग और टोकनाइज़ ऑपरेशन।
API विफल होने पर TokenizerError फेंकता है (अमान्य टोकन आईडी, कॉन्फ़िगरेशन बेमेल, आंतरिक Rust त्रुटियाँ), और टाइप्ड थ्रो का उपयोग करता है ताकि कॉलर सभी मामलों को व्यापक रूप से कैच कर सकें। एक माइग्रेशन सेक्शन चुपचाप खाली परिणाम लौटाने से फेंकने में बदलाव का दस्तावेजीकरण करता है, और एक अन्य सेक्शन Swift Transformers से माइग्रेशन को कवर करता है, जिसमें पैकेज निर्भरता को बदलना और Hub-आधारित लोडिंग से स्थानीय-निर्देशिका लोडिंग में स्विच करना शामिल है।
README में M3 MacBook Pro पर Swift Tokenizers 0.5.0 की तुलना Swift Transformers 1.3.2 के साथ करने वाला एक बेंचमार्क तालिका शामिल है, जिसमें तेज़ टोकनाइज़र लोड, टोकनाइजेशन, डिकोडिंग, और मॉडल लोडिंग समय की रिपोर्ट की गई है। बेंचमार्क TOKENIZERS_ENABLE_BENCHMARKS एनवायरनमेंट वेरिएबल के पीछे गेट किए गए हैं ताकि सामान्य उपभोक्ता mlx-swift-lm को खींच न सकें, जिसे Metal की आवश्यकता होती है और यह केवल macOS के लिए होता है। मॉडल लोडिंग बेंचमार्क के लिए Metal की आवश्यकता होती है और उन्हें xcodebuild के माध्यम से चलाना पड़ता है; केवल टोकनाइज़र बेंचमार्क रिलीज़ कॉन्फ़िगरेशन में swift test के साथ चल सकते हैं।
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.