Bug: starcoder2 fp16 engines give wrong output (bf16 and fp32 are correct); fp16 3B/7B fail to build on TensorRT 11.1

Abierto
#2,049 0 comentarios 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
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
48/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Activo
Stack tecnológico
python, pytorch

Línea de trabajo

Start by tracing the StarCoder2 TensorRT engine build and attention compilation paths, then compare fp16 engine logits with the bf16 and fp32 results using the reproducer in the issue. Check the TensorRT 11.1 attention compile failure (Expected 3 live inputs, got 4) alongside the output drift. Done means fp16 matches Hugging Face or is refused with the manifest moved to bf16, and the TensorRT 11.1 build behavior is addressed.

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

Descripción

bug

Affected area: Inference output or task execution

TensorRT-Model-Connect version: main @ 5a2ce7ef59b2089490e99ec9e96209dd31e4fb41

Installation method: Development container

Model and revision: bigcode/starcoder2-3b @ 733247c55e3f73af49ce8e9c7949bf14af205928 (manifest model), bigcode/starcoder2-7b

Environment: Linux, NVIDIA B200, TensorRT 11.4.0.106 and 11.1.0.106; reference Transformers.

Description

Found during the FP8 work of #2006 (Known issue there); independent of FP8.

  1. fp16 engines are wrong. The unquantized fp16 engine does not match Hugging Face, while the bf16 engine of the same build does and an fp32 engine of the 3B matches exactly:

    Model Engine Held-out code KL / top-1 wikitext-2 KL / top-1 / perplexity (HF)
    7B fp16 0.23 / 85.5% 0.76 / 61% / 22.9 (10.3)
    3B fp16 0.34 / 81.7% - / - / 32.6 (15.0)
    3B, 7B bf16 KL 0.0004 to 0.0009 -
    3B fp32 KL 0.0000 / top-1 100% -

    Hugging Face run in fp16 is fine (perplexity 2.684 against 2.684 in fp32), so this is not an fp16 range problem of the model; the cause is in the fp16 TensorRT engine and was not isolated.

  2. fp16 build fails on TensorRT 11.1. The unquantized fp16 3B and 7B builds fail in the attention compile: Expected 3 live inputs, got 4.

The starcoder2-3b manifest builds fp16 and its E2E case passes on main, so CI does not catch this drift.

Minimal reproducer

  1. Build bigcode/starcoder2-3b (manifest revision) twice, fp16 and bf16, and compare teacher-forced next-token logits with Hugging Face on wikitext-2 test or held-out code: fp16 KL 0.3 or more, bf16 KL below 0.001.
  2. With TensorRT 11.1, build the same model at fp16: Expected 3 live inputs, got 4 during the attention compile.

Expected behavior

fp16 engines match Hugging Face as the bf16 engines do, and build on TensorRT 11.1; or fp16 is refused and the manifest moves to bf16.

Actual behavior

fp16 output drifts (top-1 61% to 86%, perplexity 2x HF); the fp16 build fails on 11.1.

Lenguaje dominante
Python
Estrellas
288
Forks
73
Merge medio
1 d 3 h
PR fusionados (30 d)
273

Preparar el entorno

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 NVIDIA/TensorRT-Model-Connect

Todos los issues de NVIDIA/TensorRT-Model-Connect

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.