このプロジェクトについて

Swift Tokenizersは、Hugging FaceのRust製`tokenizers`クレートをラップするSwiftパッケージで、Swiftアプリケーション向けの高性能トークン化を提供します。Swift Transformersとは異なり、トークン化のみに焦点を当てており、Hugging Face Hubには依存しないため、モデルファイルは個別にダウンロードされ、ローカルディレクトリから読み込まれます。 要件とプラットフォームサポート: Swift 6.2以降(AppleプラットフォームではXcode 26)、macOS 14+、iOS 17+、およびx86_64とaarch64上のLinux。Rustバックエンドは、AppleとLinuxのスライスを含む単一のSE-0482 staticLibrary artifactbundleとして提供されるため、条件付きマニフェストロジックなしで単一の依存関係が全プラットフォームで機能します。LinuxバイナリはUbuntu 22.04上のglibcを対象としており、新しいUbuntu LTSイメージとの前方互換性があります。muslはサポートされていません。アーティファクトタイプがSwift 6.2で導入されたため、古いツールチェーンではパッケージを解決できません。 主な機能: - tokenizer.jsonと、tokenizer_config.json、config.json、chat_template.jinjaなどのサイドカーファイルを含むローカルディレクトリからトークナイザーを読み込みます。 - テキストをトークンIDにエンコードし、トークンIDをテキストにデコードします。 - encodeWithMetadataは、トークン文字列、マスク、シーケンスインデックス、単語インデックス、オフセットスパンを含む、よりリッチなエンコードデータを返します。 - StreamingDetokenizerは、完全なUnicodeスカラーが利用可能になり次第テキストチャンクを出力し、内部状態はストリーム長に応じて成長しないように制限されています。中断されたストリームを再開する際に、以前のトークンでシードできます。 - applyChatTemplateによるチャットテンプレート適用(関数定義によるツール呼び出しを含む)。 - バッチエンコードおよびトークン化操作。 APIは、失敗時(無効なトークンID、設定の不一致、内部Rustエラー)にTokenizerErrorをスローし、型付きスローを使用するため、呼び出し元はケースを網羅的にキャッチできます。移行セクションでは、空の結果を静かに返すことからスローへの変更が文書化されており、別のセクションではSwift Transformersからの移行(パッケージ依存関係の置き換えと、ハブベースの読み込みからローカルディレクトリ読み込みへの切り替えを含む)について説明しています。 READMEには、M3 MacBook Pro上でSwift Tokenizers 0.5.0とSwift Transformers 1.3.2を比較したベンチマーク表が含まれており、トークナイザーの読み込み、トークン化、デコード、モデル読み込み時間の高速化が報告されています。ベンチマークはTOKENIZERS_ENABLE_BENCHMARKS環境変数の背後にゲートされており、通常のユーザーがMetalを必要としmacOS専用のmlx-swift-lmを引き込まないようにしています。モデル読み込みベンチマークにはMetalが必要で、xcodebuildを通じて実行する必要があります。トークナイザーのみのベンチマークは、リリース構成でswift testを使用して実行できます。