Об этом проекте
Swift Tokenizers — это Swift-пакет, оборачивающий Rust-крейт `tokenizers` от Hugging Face, обеспечивающий высокопроизводительную токенизацию для Swift-приложений. В отличие от Swift Transformers, он фокусируется только на токенизации и не зависит от Hugging Face Hub, поэтому файлы моделей загружаются отдельно и загружаются из локального каталога.
Требования и поддержка платформ: Swift 6.2 или новее (Xcode 26 на платформах Apple), macOS 14+, iOS 17+, а также Linux на x86_64 и aarch64. Rust-бэкенд поставляется как единый артефакт-бандл staticLibrary SE-0482, содержащий срезы для Apple и Linux, поэтому одна зависимость работает на всех платформах без условной логики в манифесте. Бинарные файлы Linux нацелены на glibc в Ubuntu 22.04 и совместимы с более новыми образами Ubuntu LTS; musl не поддерживается. Более старые инструментальные цепочки не могут разрешить пакет, поскольку тип артефакта появился в Swift 6.2.
Основные возможности:
- Загрузка токенизаторов из локального каталога, содержащего tokenizer.json и вспомогательные файлы, такие как tokenizer_config.json, config.json и chat_template.jinja.
- Кодирование текста в идентификаторы токенов и декодирование идентификаторов токенов обратно в текст.
- encodeWithMetadata возвращает более полные данные кодирования, включая строки токенов, маски, индексы последовательностей, индексы слов и диапазоны смещений.
- StreamingDetokenizer выдает фрагменты текста, как только доступны полные скалярные значения Unicode, с ограниченным внутренним состоянием, которое не растет с длиной потока. Его можно заполнить предыдущими токенами при возобновлении прерванного потока.
- Применение чат-шаблонов через applyChatTemplate, включая вызовы инструментов с определениями функций.
- Пакетное кодирование и операции токенизации.
API выбрасывает TokenizerError при сбое (недопустимые идентификаторы токенов, несоответствия конфигурации, внутренние ошибки Rust), используя типизированные throws, чтобы вызывающие могли исчерпывающе обрабатывать случаи. Раздел миграции документирует переход от молчаливого возврата пустых результатов к выбрасыванию ошибок, а другой раздел охватывает миграцию с Swift Transformers, включая замену зависимости пакета и переход от загрузки на основе Hub к загрузке из локального каталога.
README включает таблицу бенчмарков, сравнивающую Swift Tokenizers 0.5.0 с Swift Transformers 1.3.2 на M3 MacBook Pro, сообщая о более быстрой загрузке токенизатора, токенизации, декодировании и загрузке моделей. Бенчмарки скрыты за переменной окружения TOKENIZERS_ENABLE_BENCHMARKS, чтобы обычные потребители не тянули mlx-swift-lm, который требует Metal и доступен только на macOS. Бенчмарки загрузки моделей требуют Metal и должны запускаться через xcodebuild; бенчмарки только для токенизатора можно запускать с помощью swift test в конфигурации release.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.