TinyChatEngine
Loading...
Searching...
No Matches
llm
include
LLaMATokenizer.h
1
/*
2
3
Adapted from llama.cpp:
4
https://github.com/ggerganov/llama.cpp
5
6
*/
7
8
#ifndef LLaMA_TOKENIZER_H
9
#define LLaMA_TOKENIZER_H
10
11
#include <cstdint>
12
#include <cstdio>
13
#include <iostream>
14
#include <map>
15
#include <queue>
16
#include <string>
17
#include <unordered_map>
18
#include <vector>
19
20
static
int
llama_token_bos() {
return
1; }
21
22
static
int
llama_token_eos() {
return
2; }
23
24
static
int
llama_token_nl() {
return
13; }
25
26
struct
llama_vocab
{
27
struct
token_score
{
28
std::string tok;
29
float
score;
30
};
31
32
std::unordered_map<std::string, int32_t> token_to_id;
33
std::vector<token_score> id_to_token;
34
};
35
36
/*
37
* Tokenizer
38
*/
39
static
size_t
utf8_len(
char
src) {
40
const
size_t
lookup[] = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 3, 4};
41
uint8_t highbits =
static_cast<
uint8_t
>
(src) >> 4;
42
43
return
lookup[highbits];
44
}
45
46
struct
llama_sp_symbol
{
47
using
index = int;
48
index prev;
49
index next;
50
const
char
* text;
51
size_t
n;
52
};
53
54
struct
llama_sp_bigram
{
55
struct
comparator
{
56
bool
operator()(
llama_sp_bigram
& l,
llama_sp_bigram
& r) {
57
return
(l.score < r.score) || (l.score == r.score && l.left > r.left);
58
}
59
};
60
using
queue_storage = std::vector<llama_sp_bigram>;
61
using
queue = std::priority_queue<llama_sp_bigram, queue_storage, comparator>;
62
llama_sp_symbol::index left;
63
llama_sp_symbol::index right;
64
float
score;
65
size_t
size;
66
};
67
68
llama_vocab
llama_init_vocab(
const
char
* vocab_file);
69
70
const
char
* llama_id_to_token(
const
llama_vocab
& vocab,
int
id
);
71
72
int
llama_tokenize(
const
llama_vocab
& vocab,
const
char
* text,
int
* tokens,
int
n_max_tokens,
bool
add_bos);
73
74
#endif
llama_sp_bigram::comparator
Definition
LLaMATokenizer.h:55
llama_sp_bigram
Definition
LLaMATokenizer.h:54
llama_sp_symbol
Definition
LLaMATokenizer.h:46
llama_vocab::token_score
Definition
LLaMATokenizer.h:27
llama_vocab
Definition
LLaMATokenizer.h:26
Generated by
1.11.0