À propos du projet

Swift Tokenizers est un package Swift qui encapsule la crate Rust tokenizers de Hugging Face, fournissant une tokenisation haute performance pour les applications Swift. Contrairement à Swift Transformers, il se concentre uniquement sur la tokenisation et ne dépend pas du Hugging Face Hub, les fichiers de modèle étant donc téléchargés séparément et chargés depuis un répertoire local. Exigences et prise en charge des plateformes : Swift 6.2 ou version plus récente (Xcode 26 sur les plateformes Apple), macOS 14+, iOS 17+, et Linux sur x86_64 et aarch64. Le backend Rust est livré sous forme d'artifactbundle staticLibrary unique SE-0482 contenant des tranches Apple et Linux, de sorte qu'une seule dépendance fonctionne sur toutes les plateformes sans logique de manifeste conditionnelle. Les binaires Linux ciblent glibc sur Ubuntu 22.04 et sont rétrocompatibles avec les images LTS Ubuntu plus récentes ; musl n'est pas pris en charge. Les anciennes toolchains ne peuvent pas résoudre le package car le type d'artifact a été introduit dans Swift 6.2. Capacités principales : - Charger des tokenizers depuis un répertoire local contenant tokenizer.json et des fichiers sidecar tels que tokenizer_config.json, config.json et chat_template.jinja. - Encoder du texte en IDs de tokens et décoder les IDs de tokens pour les reconvertir en texte. - encodeWithMetadata renvoie des données d'encodage plus riches incluant les chaînes de tokens, les masques, les indices de séquence, les indices de mots et les plages de décalage. - Un StreamingDetokenizer émet des morceaux de texte dès que des scalaires Unicode complets sont disponibles, avec un état interne borné qui ne croît pas avec la longueur du flux. Il peut être amorcé avec des tokens antérieurs lors de la reprise d'un flux interrompu. - Application de modèles de chat via applyChatTemplate, incluant l'appel d'outils avec des définitions de fonctions. - Opérations d'encodage et de tokenisation par lots. L'API lève TokenizerError en cas d'échec (IDs de tokens invalides, incohérences de configuration, erreurs internes Rust), en utilisant des throws typés pour que les appelants puissent capturer les cas de manière exhaustive. Une section de migration documente le changement consistant à passer d'une renvoi silencieux de résultats vides à des levées d'erreurs, et une autre section couvre la migration depuis Swift Transformers, incluant le remplacement de la dépendance de package et le passage du chargement basé sur le Hub au chargement depuis un répertoire local. Le README inclut un tableau de benchmark comparant Swift Tokenizers 0.5.0 à Swift Transformers 1.3.2 sur un MacBook Pro M3, signalant des temps plus rapides pour le chargement du tokenizer, la tokenisation, le décodage et le chargement du modèle. Les benchmarks sont activés via la variable d'environnement TOKENIZERS_ENABLE_BENCHMARKS afin que les consommateurs ordinaires n'incluent pas mlx-swift-lm, qui nécessite Metal et est exclusif à macOS. Les benchmarks de chargement de modèle nécessitent Metal et doivent être exécutés via xcodebuild ; les benchmarks de tokenizer uniquement peuvent être exécutés avec swift test en configuration release.