File size: 1,109 Bytes
9b19fd8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#pragma once

#include "llama.h"
#include "common.h"

struct common_speculative;

struct common_speculative_params {
    int n_draft = 16;  // max drafted tokens
    int n_reuse = 256;

    float p_min = 0.75f; // min probability required to accept a token in the draft
};

struct common_speculative * common_speculative_init(

        struct llama_context * ctx_tgt,

        struct llama_context * ctx_dft

);

void common_speculative_free(struct common_speculative * spec);

bool common_speculative_are_compatible(

        const struct llama_context * ctx_tgt,

        const struct llama_context * ctx_dft);

void common_speculative_add_replacement_tgt_dft(

        struct common_speculative * spec,

        const char *source, const char *dest);

// sample up to n_draft tokens and add them to the batch using the draft model
llama_tokens common_speculative_gen_draft(

               struct common_speculative * spec,

        struct common_speculative_params   params,

                      const llama_tokens & prompt,

                             llama_token   id_last);