Qwen3.8-Flash-Next: transformers 5.16 drops \p{M} from the pre-tokenizer, so combining-mark text gets different ids
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
調査の方向性
utils/hf.pyから始めて、load_tokenizerがAutoTokenizerをどのように使用するかを調べ、issueの再現例のようにtokenizer.jsonから直接読み込んだトークナイザーと出力を比較してください。transformersの固定バージョンを確認し、報告されている結合文字の例で、変更後にIDが一致することを確認してください。完了条件は、影響を受けないASCIIおよび合成済みラテン文字の動作を変えずに、読み込んだトークナイザーがそれらの例でtokenizer.jsonと一致することです。
索引モデルが issue の本文から書いたものです。
説明
load_tokenizer (utils/hf.py) uses AutoTokenizer. With the pinned transformers 5.16.x, this checkpoint loads as Qwen2Tokenizer, which replaces the tokenizer.json pre-tokenizer with a split regex that lacks \p{M}. Text with combining marks then gets different ids than the model was trained on: नमस्ते दुनिया gives 10 ids instead of 6, and สวัสดีครับ gives 7 instead of 3. ASCII and precomposed Latin text are unaffected. It is the same on 5.15.1 and 5.17.0, and correct on 5.18.0+, which loads Qwen3_5Tokenizer.
from freetoken.utils.hf import load_tokenizer
from tokenizers import Tokenizer
p = "<local nvidia/Qwen3.8-Flash-Next-NVFP4 dir>"; t = "नमस्ते दुनिया"
print(len(load_tokenizer(p).encode(t, add_special_tokens=False)),
len(Tokenizer.from_file(p + "/tokenizer.json").encode(t, add_special_tokens=False).ids)) # 10 6
Expected: ids match tokenizer.json. For example, raise the pin to >=5.18, or keep the file's pre-tokenizer in load_tokenizer.
Environment: main 07813248 (CPU-only check), transformers 5.16.1, Python 3.14.
Scope (transformers 5.16.1 Qwen2Tokenizer against tokenizer.json):
- Identical:
- emoji with variation selectors (
⚠️,✅,❤️,✔️,1️⃣); - Latin with a combining accent (
café), precomposed Latin, Japanese, Korean, Greek, Cyrillic; - all 770 text files of this repository (
.py,.md,.json,.sh,.cu, ...); - the last 3,000 commit messages.
- emoji with variation selectors (
- Different: scripts whose marks combine inside a word, e.g. Devanagari (
नमस्ते) and Thai (สวัสดี).
ASCII and code-heavy traffic is unaffected. Indic and Southeast Asian text gets out-of-distribution ids.
- 主要言語
- Python
- スター
- 14.2k
- フォーク
- 1.4k
- 平均マージ
- 1日 10時間
- マージ済み PR(30日)
- 107
環境構築
このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
FlashML-org/FreeToken のほかの issue
-
Desktop feature
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
FlashML-org/FreeToken#800 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
/v1/completions: `prompt: []` returns 200 with no choices, and both completions paths drop the error code (context_length_exceeded)対応中かも @techsaurabh-394 が 2 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 84/100
FlashML-org/FreeToken#767 ·
メンテナーはふだん 1 日以内に返信
-
test_gemv_path_matches_the_transcription fails on sm_120 (bf16 rounding tie exceeds the tolerance)対応中かも @void-mckenzie が 22 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 77/100
FlashML-org/FreeToken#649 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
FlashML-org/FreeToken#646 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
FlashML-org/FreeToken#645 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
FlashML-org/FreeToken の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
autowarefoundation/autoware_carla_scenario#1485 ·
メンテナーはふだん 1 日以内に返信
-
needs-area-label
難易度 2/5 1〜3時間 初心者へのやさしさ 66/100
メンテナーはふだん 2 日以内に返信
-
enhancement good first issue
難易度 2/5 1〜3時間 初心者へのやさしさ 84/100
Official-Space-AI/OpenPhysGraspGen#114 ·
メンテナーはふだん 2 日以内に返信
-
changelog investigate
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
ramnes/notion-sdk-py#441 ·
-
copy_tree splits same-file errors into characters対応中かも @Gambit-Checkmate が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
メンテナーはふだん 14 日以内に返信