MCPcopy Create free account
hub / github.com/Tiiny-AI/PowerInfer / test_top_k

Function test_top_k

tests/test-sampling.cpp:22–41  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

20#define DUMP(__candidates) do { printf("%s:%d (%s)\n", __FILE__, __LINE__, __func__); dump((__candidates)); printf("-\n"); } while(0)
21
22static void test_top_k(const std::vector<float> & probs, const std::vector<float> & expected_probs, int k) {
23 size_t n_vocab = probs.size();
24 std::vector<llama_token_data> candidates;
25 candidates.reserve(n_vocab);
26 for (llama_token token_id = 0; token_id < (llama_token)n_vocab; token_id++) {
27 float logit = log(probs[token_id]);
28 candidates.emplace_back(llama_token_data{token_id, logit, 0.0f});
29 }
30
31 llama_token_data_array candidates_p = { candidates.data(), candidates.size(), false };
32 llama_sample_softmax(nullptr, &candidates_p);
33 DUMP(&candidates_p);
34 llama_sample_top_k(nullptr, &candidates_p, k, 1);
35 DUMP(&candidates_p);
36
37 GGML_ASSERT(candidates_p.size == expected_probs.size());
38 for (size_t i = 0; i < candidates_p.size; i++) {
39 GGML_ASSERT(fabs(candidates_p.data[i].p - expected_probs[i]) < 1e-5);
40 }
41}
42
43static void test_top_p(const std::vector<float> & probs, const std::vector<float> & expected_probs, float p) {
44 size_t n_vocab = probs.size();

Callers 1

mainFunction · 0.70

Calls 6

logFunction · 0.85
llama_sample_softmaxFunction · 0.85
llama_sample_top_kFunction · 0.85
reserveMethod · 0.80
sizeMethod · 0.45
dataMethod · 0.45

Tested by

no test coverage detected