প্রকল্প সম্পর্কে

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 স্লাইস থাকে, তাই শর্তসাপেক্ষ manifest লজিক ছাড়াই একটি নির্ভরতা সব প্ল্যাটফর্মে কাজ করে। Linux বাইনারিগুলো Ubuntu 22.04-এর glibc লক্ষ্য করে এবং নতুন Ubuntu LTS ইমেজের সাথে ফরওয়ার্ড-কম্প্যাটিবল; musl সমর্থিত নয়। পুরোনো টুলচেইন প্যাকেজটি রিজলভ করতে পারে না কারণ artifact টাইপটি Swift 6.2-তে এসেছে। মূল সক্ষমতা: - tokenizer.json এবং tokenizer_config.json, config.json ও chat_template.jinja-এর মতো সাইডকার ফাইল সম্বলিত একটি লোকাল ডিরেক্টরি থেকে টোকেনাইজার লোড করা। - টেক্সটকে টোকেন ID-তে এনকোড করা এবং টোকেন ID আবার টেক্সটে ডিকোড করা। - encodeWithMetadata আরও সমৃদ্ধ এনকোডিং ডেটা ফেরত দেয়, যার মধ্যে টোকেন স্ট্রিং, মাস্ক, সিকোয়েন্স ইনডেক্স, ওয়ার্ড ইনডেক্স ও অফসেট স্প্যান থাকে। - একটি StreamingDetokenizer সম্পূর্ণ Unicode স্ক্যালার পাওয়া মাত্রই টেক্সট চাঙ্ক নির্গত করে, সীমাবদ্ধ অভ্যন্তরীণ অবস্থা নিয়ে যা স্ট্রিমের দৈর্ঘ্যের সাথে বাড়ে না। একটি বিঘ্নিত স্ট্রিম পুনরায় শুরু করার সময় এটি পূর্ববর্তী টোকেন দিয়ে সিড করা যায়। - applyChatTemplate-এর মাধ্যমে chat template প্রয়োগ, যার মধ্যে ফাংশন ডেিনিশনসহ tool calling অন্তর্ভুক্ত। - ব্যাচ এনকোডিং ও tokenize অপারেশন। API ব্যর্থ হলে TokenizerError থ্রো করে (অবৈধ টোকেন ID, কনফিগারেশন মিসম্যাচ, অভ্যন্তরীণ Rust ত্রুটি), typed throws ব্যবহার করে যাতে কলাররা সব কেস সম্পূর্ণভাবে ক্যাচ করতে পারে। একটি মাইগ্রেশন সেকশনে নীরবে খালি ফলাফল ফেরত দেওয়া থেকে থ্রো করার পরিবর্তন নথিভুক্ত করা হয়েছে, এবং আরেকটি সেকশনে 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-এর মাধ্যমে চালাতে হয়; শুধু টোকেনাইজার বেঞ্চমার্ক release কনফিগারেশনে swift test দিয়ে চালানো যায়।