Una de las novedades de Llama 3 ha Sido un enorme tokenizador con 128k tokens. Un tokenizador tan grande aporta dos ventajas. Soporta textos mayores usando el mismo número de tokens. El tamaño del contexto es el mismo pero «caben» textos más grandes.
Para comprobar si es tan bueno cómo prometen vamos a compararlo con el anterior tokenizador usado por Llama 1 y 2.
Cómo el número de tokens depende del tipo de texto también. Vamos a probar varios tipos de textos: inglés, español, código en C, Python y TypeScript.
Para estas pruebas he usado dos aplicaciones web que permiten comprobar como funcionan ambos tokenizadores:
Tokenizador llama 1-2: https://belladoreai.github.io/llama-tokenizer-js/example-demo/build/
Tokenizador llama 3: https://belladoreai.github.io/llama3-tokenizer-js/example-demo/build/
Texto:
| Llama | Llama 3 | 1 – (Llama 3 / Llama) | |
| Ingles | 11729 | 9591 | 0,18 |
| Español | 6483 | 5659 | 0,12 |
Textos usados:
Texto (en): https://en.wikipedia.org/wiki/Llama
Texto (es): https://es.wikipedia.org/wiki/Lama_glama
Código:
| Llama | Llama 3 | 1 – (Llama 3 / Llama) | |
| C | 12342 | 9300 | 0,24 |
| Python | 23569 | 17132 | 0,27 |
| TypeScript | 4874 | 3827 | 0,21 |
Textos Usados:
Código C: https://raw.githubusercontent.com/ggerganov/llama.cpp/master/sgemm.cpp
Código Python: https://raw.githubusercontent.com/abetlen/llama-cpp-python/main/llama_cpp/llama.py
Código TypeScript: https://raw.githubusercontent.com/ngxson/wllama/master/src/wllama.ts
Puedes ver el vídeo en Youtube sobre esta entrada pulsando en la imagen:
