Tokens

Tokens Tokens

Tokenslink image 2

Agora que os LLLMs estão na moda, continuamos ouvindo sobre o número de tokens suportados por cada modelo, mas o que são tokens? São as unidades mínimas de representação de palavras.

Este caderno foi traduzido automaticamente para torná-lo acessível a mais pessoas, por favor me avise se você vir algum erro de digitação..

Para explicar o que são tokens, vamos primeiro dar uma olhada em um exemplo prático: vamos usar o tokenizador da OpenAI, chamado [tiktoken] (https://github.com/openai/tiktoken).

Então, primeiro instalamos o pacote:

pip install tiktoken
      ```
      

Depois de instalado, criamos um tokenizador usando o modelo cl100k_base, que o notebook de exemplo [How to count tokens with tiktoken] (https://github.com/openai/openai-cookbook/blob/main/examples/How_to_count_tokens_with_tiktoken.ipynb) explica que é usado pelos modelos gpt-4, gpt-3.5-turbo e text-embedding-ada-002.

	
import tiktoken
encoder = tiktoken.get_encoding("cl100k_base")
Copy

Agora, criamos uma palavra de amostra tara e a tokenizamos

	
import tiktoken
encoder = tiktoken.get_encoding("cl100k_base")
example_word = "breakdown"
Copy

E nós o simbolizamos

	
import tiktoken
encoder = tiktoken.get_encoding("cl100k_base")
example_word = "breakdown"
tokens = encoder.encode(example_word)
tokens
Copy
	
[9137, 2996]

A palavra foi dividida em 2 tokens, o 9137 e o 2996. Vamos ver a quais palavras elas correspondem

	
word1 = encoder.decode([tokens[0]])
word2 = encoder.decode([tokens[1]])
word1, word2
Copy
	
('break', 'down')

O tokenizador OpenAI dividiu a palavra breakdown nas palavras break e down. Ou seja, ele dividiu a palavra em duas palavras mais simples.

Isso é importante porque, quando se diz que um LLM suporta x tokens`, não significa que ele suporta x palavras, mas que suporta x unidades mínimas de representação de palavras.

Se você tiver um texto e quiser ver o número de tokens que ele tem para o tokenizador OpenAI, poderá visualizá-lo na página Tokenizer, que mostra cada token em uma cor diferente.

tokenizer

Vimos o tokenizador OpenAI, mas cada LLM poderá usar outro.

Como dissemos, os tokens são as unidades mínimas de representação de palavras, portanto, vamos ver quantos tokens diferentes o tiktoken tem.

	
n_vocab = encoder.n_vocab
print(f"Vocab size: {n_vocab}")
Copy
	
Vocab size: 100277

Vamos ver como ele tokeniza outros tipos de palavras.

	
def encode_decode(word):
tokens = encoder.encode(word)
decode_tokens = []
for token in tokens:
decode_tokens.append(encoder.decode([token]))
return tokens, decode_tokens
Copy
	
def encode_decode(word):
tokens = encoder.encode(word)
decode_tokens = []
for token in tokens:
decode_tokens.append(encoder.decode([token]))
return tokens, decode_tokens
word = "dog"
tokens, decode_tokens = encode_decode(word)
print(f"Word: {word} ==> tokens: {tokens}, decode_tokens: {decode_tokens}")
word = "tomorrow..."
tokens, decode_tokens = encode_decode(word)
print(f"Word: {word} ==> tokens: {tokens}, decode_tokens: {decode_tokens}")
word = "artificial intelligence"
tokens, decode_tokens = encode_decode(word)
print(f"Word: {word} ==> tokens: {tokens}, decode_tokens: {decode_tokens}")
word = "Python"
tokens, decode_tokens = encode_decode(word)
print(f"Word: {word} ==> tokens: {tokens}, decode_tokens: {decode_tokens}")
word = "12/25/2023"
tokens, decode_tokens = encode_decode(word)
print(f"Word: {word} ==> tokens: {tokens}, decode_tokens: {decode_tokens}")
word = "😊"
tokens, decode_tokens = encode_decode(word)
print(f"Word: {word} ==> tokens: {tokens}, decode_tokens: {decode_tokens}")
Copy
	
Word: dog ==> tokens: [18964], decode_tokens: ['dog']
Word: tomorrow... ==> tokens: [38501, 7924, 1131], decode_tokens: ['tom', 'orrow', '...']
Word: artificial intelligence ==> tokens: [472, 16895, 11478], decode_tokens: ['art', 'ificial', ' intelligence']
Word: Python ==> tokens: [31380], decode_tokens: ['Python']
Word: 12/25/2023 ==> tokens: [717, 14, 914, 14, 2366, 18], decode_tokens: ['12', '/', '25', '/', '202', '3']
Word: 😊 ==> tokens: [76460, 232], decode_tokens: ['�', '�']

Por fim, vamos dar uma olhada em palavras em outro idioma

	
word = "perro"
tokens, decode_tokens = encode_decode(word)
print(f"Word: {word} ==> tokens: {tokens}, decode_tokens: {decode_tokens}")
word = "perra"
tokens, decode_tokens = encode_decode(word)
print(f"Word: {word} ==> tokens: {tokens}, decode_tokens: {decode_tokens}")
word = "mañana..."
tokens, decode_tokens = encode_decode(word)
print(f"Word: {word} ==> tokens: {tokens}, decode_tokens: {decode_tokens}")
word = "inteligencia artificial"
tokens, decode_tokens = encode_decode(word)
print(f"Word: {word} ==> tokens: {tokens}, decode_tokens: {decode_tokens}")
word = "Python"
tokens, decode_tokens = encode_decode(word)
print(f"Word: {word} ==> tokens: {tokens}, decode_tokens: {decode_tokens}")
word = "12/25/2023"
tokens, decode_tokens = encode_decode(word)
print(f"Word: {word} ==> tokens: {tokens}, decode_tokens: {decode_tokens}")
word = "😊"
tokens, decode_tokens = encode_decode(word)
print(f"Word: {word} ==> tokens: {tokens}, decode_tokens: {decode_tokens}")
Copy
	
Word: perro ==> tokens: [716, 299], decode_tokens: ['per', 'ro']
Word: perra ==> tokens: [79, 14210], decode_tokens: ['p', 'erra']
Word: mañana... ==> tokens: [1764, 88184, 1131], decode_tokens: ['ma', 'ñana', '...']
Word: inteligencia artificial ==> tokens: [396, 39567, 8968, 21075], decode_tokens: ['int', 'elig', 'encia', ' artificial']
Word: Python ==> tokens: [31380], decode_tokens: ['Python']
Word: 12/25/2023 ==> tokens: [717, 14, 914, 14, 2366, 18], decode_tokens: ['12', '/', '25', '/', '202', '3']
Word: 😊 ==> tokens: [76460, 232], decode_tokens: ['�', '�']

Podemos ver que, para palavras semelhantes, mais tokens são gerados em espanhol do que em inglês, portanto, para o mesmo texto, com um número semelhante de palavras, o número de tokens será maior em espanhol do que em inglês.

Continuar lendo

Últimos posts -->

Você viu esses projetos?

Subtify

Subtify Subtify

Gerador de legendas para vídeos no idioma que você desejar. Além disso, coloca uma legenda de cor diferente para cada pessoa

Ver todos os projetos -->

Quer aplicar IA no seu projeto? Entre em contato!

Quer melhorar com essas dicas?

Últimos tips -->

Use isso localmente

Os espaços do Hugging Face nos permitem executar modelos com demos muito simples, mas e se a demo quebrar? Ou se o usuário a deletar? Por isso, criei contêineres docker com alguns espaços interessantes, para poder usá-los localmente, aconteça o que acontecer. Na verdade, se você clicar em qualquer botão de visualização de projeto, ele pode levá-lo a um espaço que não funciona.

Flow edit

Flow edit Flow edit

Edite imagens com este modelo de Flow. Baseado em SD3 ou FLUX, você pode editar qualquer imagem e gerar novas

FLUX.1-RealismLora

FLUX.1-RealismLora FLUX.1-RealismLora
Ver todos os contêineres -->

Quer aplicar IA no seu projeto? Entre em contato!

Você quer treinar seu modelo com esses datasets?

short-jokes-dataset

Dataset com piadas em inglês

opus100

Dataset com traduções de inglês para espanhol

netflix_titles

Dataset com filmes e séries da Netflix

Ver mais datasets -->