Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Qwen3.8-Flash-Next: transformers 5.16 drops \p{M} from the pre-tokenizer, so combining-mark text gets different ids

Abierto Apto para principiantes
#648 1 comentario 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
78/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
python
Área
backend

Línea de trabajo

Empieza en utils/hf.py e inspecciona cómo load_tokenizer usa AutoTokenizer; compara su salida con la del tokenizador cargado directamente desde tokenizer.json, como en la reproducción del issue. Comprueba la versión fijada de transformers y confirma que los ejemplos reportados con marcas combinantes produzcan IDs coincidentes después del cambio. Se considera terminado cuando el tokenizador cargado coincide con tokenizer.json para esos ejemplos, sin cambiar el comportamiento de ASCII y del latín precompuesto que no se ve afectado.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

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.
  • 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.

Lenguaje dominante
Python
Estrellas
14.2k
Forks
1.4k
Merge medio
1 d 28 min
PR fusionados (30 d)
89

Preparar el entorno

Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de FlashML-org/FreeToken

Todos los issues de FlashML-org/FreeToken

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.