Este documento describe la estructura binaria de almacenamiento de los tensores de peso de Qwen3-1.7B, el mapeo en memoria y el análisis forense de su tokenizador de 151,936 tokens.
El modelo oficial de Qwen3-1.7B se almacena bajo el formato Safetensors, el cual ofrece deserialización segura (zero-copy memory mapping) y previene ataques de inyección de código binario presentes en formatos Pickle estándar.
- Total de Parámetros: Exactamente 1,720,574,976 parámetros de coma flotante (
bfloat16). - Total de Tensores: 311 matrices y vectores individuales.
- Índice Sharded:
model.safetensors.index.jsonque mapea cada tensor a su respectivo fragmento binario:model-00001-of-00002.safetensors(~3.44 GB): Contiene la matriz de embeddings (model.embed_tokens.weight) y las capas Transformer de la 00 a la 23.model-00002-of-00002.safetensors(~622 MB): Contiene las capas Transformer de la 24 a la 27, la normalización final (model.norm.weight) y la proyección del cabezal de lenguaje (lm_head.weight).
Cada uno de los 28 bloques decodificadores contiene exactamente 11 tensores:
-
model.layers.{l}.input_layernorm.weight: Normalización RMS pre-atención ($[2048]$ ). -
model.layers.{l}.self_attn.q_proj.weight: Proyección Query ($[2048, 2048]$ ). -
model.layers.{l}.self_attn.k_proj.weight: Proyección Key ($[1024, 2048]$ - GQA 8 cabezas). -
model.layers.{l}.self_attn.v_proj.weight: Proyección Value ($[1024, 2048]$ - GQA 8 cabezas). -
model.layers.{l}.self_attn.o_proj.weight: Proyección Output de Atención ($[2048, 2048]$ ). -
model.layers.{l}.self_attn.q_norm.weight: Normalización RMS estabilizadora por cabeza de Query ($[128]$ ). -
model.layers.{l}.self_attn.k_norm.weight: Normalización RMS estabilizadora por cabeza de Key ($[128]$ ). -
model.layers.{l}.post_attention_layernorm.weight: Normalización RMS pre-MLP ($[2048]$ ). -
model.layers.{l}.mlp.gate_proj.weight: Compuerta Swish de SwiGLU ($[6144, 2048]$ ). -
model.layers.{l}.mlp.up_proj.weight: Proyección Lineal de SwiGLU ($[6144, 2048]$ ). -
model.layers.{l}.mlp.down_proj.weight: Proyección Inversa de SwiGLU ($[2048, 6144]$ ).
Al inspeccionar los 151,936 identificadores en model/tokenizer.json mediante experiments/tokenizer_forensics.py, se identifican familias específicas de tokens especializados:
<think>(ID151667)</think>(ID151668)- Propósito: El modelo fue entrenado para emitir razonamientos preliminares paso a paso dentro de estos delimitadores antes de producir la respuesta visible al usuario.
<|fim_prefix|>(ID151659)<|fim_middle|>(ID151660)<|fim_suffix|>(ID151661)<|repo_name|>(ID151664)<|file_sep|>(ID151665)- Propósito: Capacidades de completado de código dentro de repositorios completos y reescritura puntual en IDEs.
<tool_call></tool_call><tool_response></tool_response>- Propósito: Invocación estructurada de funciones JSON Schema y parseo de retornos de APIs externas.
-
Visión:
<|vision_start|>,<|vision_end|>,<|image_pad|>. -
Audio:
<|audio_start|>,<|audio_end|>. -
Detección Espacial de Objetos:
-
<|box_start|>,<|box_end|>(delimitadores de Bounding Boxes$[y_{min}, x_{min}, y_{max}, x_{max}]$ ). -
<|quad_start|>,<|quad_end|>(delimitadores de cuadriláteros orientados para OCR y segmentación gráfica).
-
Comandos útiles:
Inspeccionar cabeceras binarias:python run.py inspect
Analizar tokens del vocabulario:python run.py tokenizer