cui-llama.rn 1.0.11 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/android/src/main/java/com/rnllama/LlamaContext.java +6 -0
- package/android/src/main/jni.cpp +4 -0
- package/cpp/common.cpp +57 -7
- package/cpp/common.h +2 -2
- package/cpp/llama-sampling.cpp +92 -0
- package/cpp/llama-sampling.h +1 -0
- package/cpp/llama-vocab.cpp +17 -3
- package/cpp/llama.cpp +28 -6
- package/cpp/llama.h +10 -0
- package/cpp/sampling.cpp +5 -1
- package/cpp/sampling.h +4 -0
- package/lib/commonjs/NativeRNLlama.js.map +1 -1
- package/lib/module/NativeRNLlama.js.map +1 -1
- package/lib/typescript/NativeRNLlama.d.ts +2 -0
- package/lib/typescript/NativeRNLlama.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/NativeRNLlama.ts +2 -0
package/README.md
CHANGED
@@ -11,6 +11,7 @@ The following features have been added for Android:
|
|
11
11
|
- `vocab_only` mode: utilize the llama.cpp tokenizer
|
12
12
|
- tokenizeSync: non-blocking, synchronous tokenizer function
|
13
13
|
- Context Shift taken from [kobold.cpp](https://github.com/LostRuins/koboldcpp)
|
14
|
+
- XTC sampling
|
14
15
|
|
15
16
|
Original repo README.md below.
|
16
17
|
|
@@ -218,6 +218,10 @@ public class LlamaContext {
|
|
218
218
|
params.hasKey("top_p") ? (float) params.getDouble("top_p") : 0.95f,
|
219
219
|
// float min_p,
|
220
220
|
params.hasKey("min_p") ? (float) params.getDouble("min_p") : 0.05f,
|
221
|
+
// float xtc_t,
|
222
|
+
params.hasKey("xtc_t") ? (float) params.getDouble("xtc_t") : 0.00f,
|
223
|
+
// float xtc_p,
|
224
|
+
params.hasKey("xtc_p") ? (float) params.getDouble("xtc_p") : 0.00f,
|
221
225
|
// float tfs_z,
|
222
226
|
params.hasKey("tfs_z") ? (float) params.getDouble("tfs_z") : 1.00f,
|
223
227
|
// float typical_p,
|
@@ -399,6 +403,8 @@ public class LlamaContext {
|
|
399
403
|
int top_k,
|
400
404
|
float top_p,
|
401
405
|
float min_p,
|
406
|
+
float xtc_t,
|
407
|
+
float xtc_p,
|
402
408
|
float tfs_z,
|
403
409
|
float typical_p,
|
404
410
|
int seed,
|
package/android/src/main/jni.cpp
CHANGED
@@ -370,6 +370,8 @@ Java_com_rnllama_LlamaContext_doCompletion(
|
|
370
370
|
jint top_k,
|
371
371
|
jfloat top_p,
|
372
372
|
jfloat min_p,
|
373
|
+
jfloat xtc_t,
|
374
|
+
jfloat xtc_p,
|
373
375
|
jfloat tfs_z,
|
374
376
|
jfloat typical_p,
|
375
377
|
jint seed,
|
@@ -413,6 +415,8 @@ Java_com_rnllama_LlamaContext_doCompletion(
|
|
413
415
|
sparams.typical_p = typical_p;
|
414
416
|
sparams.n_probs = n_probs;
|
415
417
|
sparams.grammar = env->GetStringUTFChars(grammar, nullptr);
|
418
|
+
sparams.xtc_t = xtc_t;
|
419
|
+
sparams.xtc_p = xtc_p;
|
416
420
|
|
417
421
|
sparams.logit_bias.clear();
|
418
422
|
if (ignore_eos) {
|
package/cpp/common.cpp
CHANGED
@@ -83,6 +83,41 @@ char const *LLAMA_BUILD_TARGET = "unknown";
|
|
83
83
|
|
84
84
|
using json = nlohmann::ordered_json;
|
85
85
|
|
86
|
+
//
|
87
|
+
// Environment variable utils
|
88
|
+
//
|
89
|
+
|
90
|
+
template<typename T>
|
91
|
+
static typename std::enable_if<std::is_same<T, std::string>::value, void>::type
|
92
|
+
get_env(std::string name, T & target) {
|
93
|
+
char * value = std::getenv(name.c_str());
|
94
|
+
target = value ? std::string(value) : target;
|
95
|
+
}
|
96
|
+
|
97
|
+
template<typename T>
|
98
|
+
static typename std::enable_if<!std::is_same<T, bool>::value && std::is_integral<T>::value, void>::type
|
99
|
+
get_env(std::string name, T & target) {
|
100
|
+
char * value = std::getenv(name.c_str());
|
101
|
+
target = value ? std::stoi(value) : target;
|
102
|
+
}
|
103
|
+
|
104
|
+
template<typename T>
|
105
|
+
static typename std::enable_if<std::is_floating_point<T>::value, void>::type
|
106
|
+
get_env(std::string name, T & target) {
|
107
|
+
char * value = std::getenv(name.c_str());
|
108
|
+
target = value ? std::stof(value) : target;
|
109
|
+
}
|
110
|
+
|
111
|
+
template<typename T>
|
112
|
+
static typename std::enable_if<std::is_same<T, bool>::value, void>::type
|
113
|
+
get_env(std::string name, T & target) {
|
114
|
+
char * value = std::getenv(name.c_str());
|
115
|
+
if (value) {
|
116
|
+
std::string val(value);
|
117
|
+
target = val == "1" || val == "true";
|
118
|
+
}
|
119
|
+
}
|
120
|
+
|
86
121
|
//
|
87
122
|
// CPU utils
|
88
123
|
//
|
@@ -226,12 +261,6 @@ int32_t cpu_get_num_math() {
|
|
226
261
|
// CLI argument parsing
|
227
262
|
//
|
228
263
|
|
229
|
-
void gpt_params_handle_hf_token(gpt_params & params) {
|
230
|
-
if (params.hf_token.empty() && std::getenv("HF_TOKEN")) {
|
231
|
-
params.hf_token = std::getenv("HF_TOKEN");
|
232
|
-
}
|
233
|
-
}
|
234
|
-
|
235
264
|
void gpt_params_handle_model_default(gpt_params & params) {
|
236
265
|
if (!params.hf_repo.empty()) {
|
237
266
|
// short-hand to avoid specifying --hf-file -> default it to --model
|
@@ -279,7 +308,9 @@ bool gpt_params_parse_ex(int argc, char ** argv, gpt_params & params) {
|
|
279
308
|
|
280
309
|
gpt_params_handle_model_default(params);
|
281
310
|
|
282
|
-
|
311
|
+
if (params.hf_token.empty()) {
|
312
|
+
get_env("HF_TOKEN", params.hf_token);
|
313
|
+
}
|
283
314
|
|
284
315
|
if (params.escape) {
|
285
316
|
string_process_escapes(params.prompt);
|
@@ -299,6 +330,25 @@ bool gpt_params_parse_ex(int argc, char ** argv, gpt_params & params) {
|
|
299
330
|
return true;
|
300
331
|
}
|
301
332
|
|
333
|
+
void gpt_params_parse_from_env(gpt_params & params) {
|
334
|
+
// we only care about server-related params for now
|
335
|
+
get_env("LLAMA_ARG_MODEL", params.model);
|
336
|
+
get_env("LLAMA_ARG_THREADS", params.n_threads);
|
337
|
+
get_env("LLAMA_ARG_CTX_SIZE", params.n_ctx);
|
338
|
+
get_env("LLAMA_ARG_N_PARALLEL", params.n_parallel);
|
339
|
+
get_env("LLAMA_ARG_BATCH", params.n_batch);
|
340
|
+
get_env("LLAMA_ARG_UBATCH", params.n_ubatch);
|
341
|
+
get_env("LLAMA_ARG_N_GPU_LAYERS", params.n_gpu_layers);
|
342
|
+
get_env("LLAMA_ARG_THREADS_HTTP", params.n_threads_http);
|
343
|
+
get_env("LLAMA_ARG_CHAT_TEMPLATE", params.chat_template);
|
344
|
+
get_env("LLAMA_ARG_N_PREDICT", params.n_predict);
|
345
|
+
get_env("LLAMA_ARG_ENDPOINT_METRICS", params.endpoint_metrics);
|
346
|
+
get_env("LLAMA_ARG_ENDPOINT_SLOTS", params.endpoint_slots);
|
347
|
+
get_env("LLAMA_ARG_EMBEDDINGS", params.embedding);
|
348
|
+
get_env("LLAMA_ARG_FLASH_ATTN", params.flash_attn);
|
349
|
+
get_env("LLAMA_ARG_DEFRAG_THOLD", params.defrag_thold);
|
350
|
+
}
|
351
|
+
|
302
352
|
bool gpt_params_parse(int argc, char ** argv, gpt_params & params) {
|
303
353
|
const auto params_org = params; // the example can modify the default params
|
304
354
|
|
package/cpp/common.h
CHANGED
@@ -81,7 +81,7 @@ enum dimre_method {
|
|
81
81
|
struct gpt_params {
|
82
82
|
uint32_t seed = LLAMA_DEFAULT_SEED; // RNG seed
|
83
83
|
|
84
|
-
|
84
|
+
bool vocab_only = false;
|
85
85
|
int32_t n_threads = cpu_get_num_math();
|
86
86
|
int32_t n_threads_draft = -1;
|
87
87
|
int32_t n_threads_batch = -1; // number of threads to use for batch processing (-1 = use n_threads)
|
@@ -279,7 +279,7 @@ struct gpt_params {
|
|
279
279
|
std::string lora_outfile = "ggml-lora-merged-f16.gguf";
|
280
280
|
};
|
281
281
|
|
282
|
-
void
|
282
|
+
void gpt_params_parse_from_env(gpt_params & params);
|
283
283
|
void gpt_params_handle_model_default(gpt_params & params);
|
284
284
|
|
285
285
|
bool gpt_params_parse_ex (int argc, char ** argv, gpt_params & params);
|
package/cpp/llama-sampling.cpp
CHANGED
@@ -171,6 +171,98 @@ void llama_sample_top_p_impl(struct llama_sampling * smpl, llama_token_data_arra
|
|
171
171
|
}
|
172
172
|
}
|
173
173
|
|
174
|
+
void llama_sample_xtc_impl(struct llama_sampling * smpl, llama_token_data_array * candidates, float xtc_threshold, float xtc_probability, size_t min_keep, std::mt19937 & rng) {
|
175
|
+
if(xtc_threshold <= 0.0f || !candidates-> size) {
|
176
|
+
return;
|
177
|
+
}
|
178
|
+
// TODO: xtc impl
|
179
|
+
bool xtc_applied = false;
|
180
|
+
const int64_t t_start_sample_us = lm_ggml_time_us();
|
181
|
+
|
182
|
+
// unsorted iteration
|
183
|
+
if (!candidates->sorted) {
|
184
|
+
std::vector<llama_token_data> top_tokens, low_tokens;
|
185
|
+
|
186
|
+
// split candidates into two arrays for low and high tokens
|
187
|
+
for (size_t i = 0; i < candidates->size; ++i) {
|
188
|
+
if (candidates->data[i].logit >= xtc_threshold) {
|
189
|
+
top_tokens.push_back(candidates->data[i]);
|
190
|
+
} else {
|
191
|
+
low_tokens.push_back(candidates-> data[i]);
|
192
|
+
}
|
193
|
+
}
|
194
|
+
// if there is only one or no top_tokens, do not truncate
|
195
|
+
|
196
|
+
if (top_tokens.size() <= 1) {
|
197
|
+
return;
|
198
|
+
}
|
199
|
+
|
200
|
+
// sort top_tokens
|
201
|
+
std::sort(top_tokens.begin(), top_tokens.end(), [](const llama_token_data & a, const llama_token_data & b) {
|
202
|
+
return a.logit > b.logit;
|
203
|
+
});
|
204
|
+
|
205
|
+
// insert top_tokens with probability. Always insert lowest top_token
|
206
|
+
low_tokens.push_back(top_tokens[0]);
|
207
|
+
std::uniform_real_distribution<float> random_float(0.0 , 1.0);
|
208
|
+
for (size_t i = 1; i < top_tokens.size(); ++i) {
|
209
|
+
if(random_float(rng) <= xtc_probability) {
|
210
|
+
low_tokens.push_back(top_tokens[i]);
|
211
|
+
}
|
212
|
+
}
|
213
|
+
if(low_tokens.size() >= min_keep) {
|
214
|
+
memcpy(candidates->data, low_tokens.data(), low_tokens.size()*sizeof(llama_token_data));
|
215
|
+
candidates->size = low_tokens.size();
|
216
|
+
xtc_applied = true;
|
217
|
+
}
|
218
|
+
}
|
219
|
+
// sorted iteration
|
220
|
+
|
221
|
+
if (!xtc_applied) {
|
222
|
+
// Sort the logits in descending order
|
223
|
+
if (!candidates->sorted) {
|
224
|
+
std::sort(candidates->data, candidates->data + candidates->size, [](const llama_token_data & a, const llama_token_data & b) {
|
225
|
+
return a.logit > b.logit;
|
226
|
+
});
|
227
|
+
candidates->sorted = true;
|
228
|
+
}
|
229
|
+
|
230
|
+
// find last token over threshold
|
231
|
+
|
232
|
+
size_t last_index = 0;
|
233
|
+
|
234
|
+
for (; last_index < candidates -> size; ++last_index) {
|
235
|
+
if(candidates -> data[last_index].logit < xtc_threshold) {
|
236
|
+
break;
|
237
|
+
}
|
238
|
+
}
|
239
|
+
last_index--;
|
240
|
+
// check if only 1 last index token or total less than min_keep
|
241
|
+
if(last_index <= 1 || candidates-> size - last_index < min_keep) {
|
242
|
+
return;
|
243
|
+
}
|
244
|
+
// indexes to be skipped
|
245
|
+
size_t safe_index = 0;
|
246
|
+
// remove tokens until last threshold item
|
247
|
+
candidates -> data;
|
248
|
+
std::uniform_real_distribution<float> random_float(0.0 , 1.0);
|
249
|
+
for (size_t i = 0; i < last_index; i++) {
|
250
|
+
if(random_float(rng) < xtc_probability) {
|
251
|
+
if(i != safe_index) {
|
252
|
+
std::swap(candidates-> data[i], candidates->data[safe_index]);
|
253
|
+
}
|
254
|
+
safe_index++;
|
255
|
+
}
|
256
|
+
}
|
257
|
+
candidates -> data = candidates -> data + safe_index;
|
258
|
+
candidates -> size = candidates -> size - safe_index;
|
259
|
+
}
|
260
|
+
|
261
|
+
if (smpl) {
|
262
|
+
smpl->t_sample_us += lm_ggml_time_us() - t_start_sample_us;
|
263
|
+
}
|
264
|
+
}
|
265
|
+
|
174
266
|
void llama_sample_min_p_impl(struct llama_sampling * smpl, llama_token_data_array * candidates, float p, size_t min_keep) {
|
175
267
|
if (p <= 0.0f || !candidates->size) {
|
176
268
|
return;
|
package/cpp/llama-sampling.h
CHANGED
@@ -32,6 +32,7 @@ void llama_sample_tail_free_impl(struct llama_sampling * smpl, llama_token_data_
|
|
32
32
|
void llama_sample_typical_impl (struct llama_sampling * smpl, llama_token_data_array * candidates, float p, size_t min_keep);
|
33
33
|
void llama_sample_entropy_impl (struct llama_sampling * smpl, llama_token_data_array * candidates, float min_temp, float max_temp, float exponent_val);
|
34
34
|
void llama_sample_temp_impl (struct llama_sampling * smpl, llama_token_data_array * candidates, float temp);
|
35
|
+
void llama_sample_xtc_impl (struct llama_sampling * smpl, llama_token_data_array * candidates, float xtc_threshold, float xtc_probability, size_t min_keep, std::mt19937 & rng);
|
35
36
|
|
36
37
|
void llama_sample_repetition_penalties_impl(
|
37
38
|
struct llama_sampling * smpl,
|
package/cpp/llama-vocab.cpp
CHANGED
@@ -321,6 +321,21 @@ private:
|
|
321
321
|
|
322
322
|
// TODO: there are a lot of common parts between spm and bpe tokenizers, should be refactored and reused
|
323
323
|
|
324
|
+
template<typename T, typename Container = std::vector<T>, typename Compare = std::less<typename Container::value_type>>
|
325
|
+
class llama_priority_queue : public std::priority_queue<T, Container, Compare> {
|
326
|
+
public:
|
327
|
+
using std::priority_queue<T, Container, Compare>::priority_queue;
|
328
|
+
|
329
|
+
T pop_move() {
|
330
|
+
T item = std::move(this->c.front());
|
331
|
+
std::pop_heap(this->c.begin(), this->c.end(), this->comp);
|
332
|
+
this->c.pop_back();
|
333
|
+
return item;
|
334
|
+
}
|
335
|
+
|
336
|
+
void pop() = delete;
|
337
|
+
};
|
338
|
+
|
324
339
|
struct llm_bigram_bpe {
|
325
340
|
struct comparator {
|
326
341
|
bool operator()(const llm_bigram_bpe & l, const llm_bigram_bpe & r) const {
|
@@ -329,7 +344,7 @@ struct llm_bigram_bpe {
|
|
329
344
|
};
|
330
345
|
|
331
346
|
using queue_storage = std::vector<llm_bigram_bpe>;
|
332
|
-
using queue =
|
347
|
+
using queue = llama_priority_queue<llm_bigram_bpe, queue_storage, comparator>;
|
333
348
|
llm_symbol::index left;
|
334
349
|
llm_symbol::index right;
|
335
350
|
std::string text;
|
@@ -520,8 +535,7 @@ struct llm_tokenizer_bpe {
|
|
520
535
|
|
521
536
|
// build token(s)
|
522
537
|
while (!work_queue.empty()) {
|
523
|
-
auto bigram = work_queue.
|
524
|
-
work_queue.pop();
|
538
|
+
auto bigram = work_queue.pop_move();
|
525
539
|
|
526
540
|
auto & left_symbol = symbols[bigram.left];
|
527
541
|
auto & right_symbol = symbols[bigram.right];
|
package/cpp/llama.cpp
CHANGED
@@ -339,6 +339,7 @@ enum llm_kv {
|
|
339
339
|
LLM_KV_SSM_CONV_KERNEL,
|
340
340
|
LLM_KV_SSM_STATE_SIZE,
|
341
341
|
LLM_KV_SSM_TIME_STEP_RANK,
|
342
|
+
LLM_KV_SSM_DT_B_C_RMS,
|
342
343
|
|
343
344
|
LLM_KV_TOKENIZER_MODEL,
|
344
345
|
LLM_KV_TOKENIZER_PRE,
|
@@ -437,6 +438,7 @@ static const std::map<llm_kv, const char *> LLM_KV_NAMES = {
|
|
437
438
|
{ LLM_KV_SSM_INNER_SIZE, "%s.ssm.inner_size" },
|
438
439
|
{ LLM_KV_SSM_STATE_SIZE, "%s.ssm.state_size" },
|
439
440
|
{ LLM_KV_SSM_TIME_STEP_RANK, "%s.ssm.time_step_rank" },
|
441
|
+
{ LLM_KV_SSM_DT_B_C_RMS, "%s.ssm.dt_b_c_rms" },
|
440
442
|
|
441
443
|
{ LLM_KV_TOKENIZER_MODEL, "tokenizer.ggml.model" },
|
442
444
|
{ LLM_KV_TOKENIZER_PRE, "tokenizer.ggml.pre" },
|
@@ -2248,6 +2250,7 @@ struct llama_hparams {
|
|
2248
2250
|
uint32_t ssm_d_inner = 0;
|
2249
2251
|
uint32_t ssm_d_state = 0;
|
2250
2252
|
uint32_t ssm_dt_rank = 0;
|
2253
|
+
bool ssm_dt_b_c_rms = false;
|
2251
2254
|
|
2252
2255
|
float f_clamp_kqv = 0.0f;
|
2253
2256
|
float f_max_alibi_bias = 0.0f;
|
@@ -2297,6 +2300,7 @@ struct llama_hparams {
|
|
2297
2300
|
if (this->ssm_d_inner != other.ssm_d_inner) return true;
|
2298
2301
|
if (this->ssm_d_state != other.ssm_d_state) return true;
|
2299
2302
|
if (this->ssm_dt_rank != other.ssm_dt_rank) return true;
|
2303
|
+
if (this->ssm_dt_b_c_rms != other.ssm_dt_b_c_rms) return true;
|
2300
2304
|
|
2301
2305
|
if (this->dec_start_token_id != other.dec_start_token_id) return true;
|
2302
2306
|
|
@@ -5063,6 +5067,7 @@ static void llm_load_hparams(
|
|
5063
5067
|
ml.get_key(LLM_KV_SSM_INNER_SIZE, hparams.ssm_d_inner);
|
5064
5068
|
ml.get_key(LLM_KV_SSM_STATE_SIZE, hparams.ssm_d_state);
|
5065
5069
|
ml.get_key(LLM_KV_SSM_TIME_STEP_RANK, hparams.ssm_dt_rank);
|
5070
|
+
ml.get_key(LLM_KV_SSM_DT_B_C_RMS, hparams.ssm_dt_b_c_rms, false);
|
5066
5071
|
|
5067
5072
|
ml.get_key(LLM_KV_ATTENTION_LAYERNORM_RMS_EPS, hparams.f_norm_rms_eps);
|
5068
5073
|
|
@@ -5918,6 +5923,7 @@ static void llm_load_print_meta(llama_model_loader & ml, llama_model & model) {
|
|
5918
5923
|
LLAMA_LOG_INFO("%s: ssm_d_inner = %u\n", __func__, hparams.ssm_d_inner);
|
5919
5924
|
LLAMA_LOG_INFO("%s: ssm_d_state = %u\n", __func__, hparams.ssm_d_state);
|
5920
5925
|
LLAMA_LOG_INFO("%s: ssm_dt_rank = %u\n", __func__, hparams.ssm_dt_rank);
|
5926
|
+
LLAMA_LOG_INFO("%s: ssm_dt_b_c_rms = %d\n", __func__, hparams.ssm_dt_b_c_rms);
|
5921
5927
|
}
|
5922
5928
|
|
5923
5929
|
LLAMA_LOG_INFO("%s: model type = %s\n", __func__, llama_model_type_name(model.type));
|
@@ -6183,9 +6189,9 @@ static bool llm_load_tensors(
|
|
6183
6189
|
layer.ffn_up = ml.create_tensor(ctx_split, tn(LLM_TENSOR_FFN_UP, "weight", i), {n_embd, n_ff});
|
6184
6190
|
|
6185
6191
|
// optional MLP bias
|
6186
|
-
layer.ffn_gate_b = ml.create_tensor(
|
6187
|
-
layer.ffn_down_b = ml.create_tensor(
|
6188
|
-
layer.ffn_up_b = ml.create_tensor(
|
6192
|
+
layer.ffn_gate_b = ml.create_tensor(ctx_layer, tn(LLM_TENSOR_FFN_GATE, "bias", i), {n_ff}, llama_model_loader::TENSOR_NOT_REQUIRED);
|
6193
|
+
layer.ffn_down_b = ml.create_tensor(ctx_layer, tn(LLM_TENSOR_FFN_DOWN, "bias", i), {n_embd}, llama_model_loader::TENSOR_NOT_REQUIRED);
|
6194
|
+
layer.ffn_up_b = ml.create_tensor(ctx_layer, tn(LLM_TENSOR_FFN_UP, "bias", i), {n_ff}, llama_model_loader::TENSOR_NOT_REQUIRED);
|
6189
6195
|
} else {
|
6190
6196
|
layer.ffn_gate_inp = ml.create_tensor(ctx_layer, tn(LLM_TENSOR_FFN_GATE_INP, "weight", i), {n_embd, n_expert});
|
6191
6197
|
|
@@ -6509,7 +6515,7 @@ static bool llm_load_tensors(
|
|
6509
6515
|
layer.bv = ml.create_tensor(ctx_layer, tn(LLM_TENSOR_ATTN_V, "bias", i), {n_embd_gqa});
|
6510
6516
|
|
6511
6517
|
layer.wo = ml.create_tensor(ctx_split, tn(LLM_TENSOR_ATTN_OUT, "weight", i), {n_embd, n_embd}); //output_dens
|
6512
|
-
layer.bo = ml.create_tensor(
|
6518
|
+
layer.bo = ml.create_tensor(ctx_layer, tn(LLM_TENSOR_ATTN_OUT, "bias", i), {n_embd}); //output_dens
|
6513
6519
|
|
6514
6520
|
layer.attn_out_norm = ml.create_tensor(ctx_layer, tn(LLM_TENSOR_ATTN_OUT_NORM, "weight", i), {n_embd}); //output_norm
|
6515
6521
|
layer.attn_out_norm_b = ml.create_tensor(ctx_layer, tn(LLM_TENSOR_ATTN_OUT_NORM, "bias", i), {n_embd});
|
@@ -12172,6 +12178,10 @@ struct llm_build_context {
|
|
12172
12178
|
LM_GGML_ASSERT(2 * d_model == d_inner);
|
12173
12179
|
const int64_t d_state = hparams.ssm_d_state;
|
12174
12180
|
const int64_t dt_rank = hparams.ssm_dt_rank;
|
12181
|
+
// Some variants of Mamba arch (e.g. FalconMamba do apply layer norm on B and Dt layers)
|
12182
|
+
const bool ssm_dt_b_c_rms = hparams.ssm_dt_b_c_rms;
|
12183
|
+
// Use the same RMS norm as the final layer norm
|
12184
|
+
const float norm_rms_eps = hparams.f_norm_rms_eps;
|
12175
12185
|
|
12176
12186
|
struct lm_ggml_tensor * cur;
|
12177
12187
|
struct lm_ggml_tensor * inpL;
|
@@ -12252,6 +12262,13 @@ struct llm_build_context {
|
|
12252
12262
|
struct lm_ggml_tensor * B = lm_ggml_view_2d(ctx0, x_db, d_state, n_tokens, x_db->nb[1], lm_ggml_element_size(x_db)*dt_rank);
|
12253
12263
|
struct lm_ggml_tensor * C = lm_ggml_view_2d(ctx0, x_db, d_state, n_tokens, x_db->nb[1], lm_ggml_element_size(x_db)*(dt_rank+d_state));
|
12254
12264
|
|
12265
|
+
// Some Mamba variants (e.g. FalconMamba) apply RMS norm in B, C & Dt layers
|
12266
|
+
if (ssm_dt_b_c_rms) {
|
12267
|
+
dt = lm_ggml_rms_norm(ctx0, dt, norm_rms_eps);
|
12268
|
+
B = lm_ggml_rms_norm(ctx0, B, norm_rms_eps);
|
12269
|
+
C = lm_ggml_rms_norm(ctx0, C, norm_rms_eps);
|
12270
|
+
}
|
12271
|
+
|
12255
12272
|
// {dt_rank, d_inner} * {dt_rank, n_tokens} => {d_inner, n_tokens}
|
12256
12273
|
dt = llm_build_lora_mm(lctx, ctx0, model.layers[il].ssm_dt, dt);
|
12257
12274
|
dt = lm_ggml_add(ctx0, dt, model.layers[il].ssm_dt_b);
|
@@ -16116,6 +16133,9 @@ static lm_ggml_type llama_tensor_get_type(quantize_state_internal & qs, lm_ggml_
|
|
16116
16133
|
case LM_GGML_TYPE_Q6_K: new_type = LM_GGML_TYPE_Q8_0; break;
|
16117
16134
|
default: throw std::runtime_error("\nUnsupported tensor size encountered\n");
|
16118
16135
|
}
|
16136
|
+
if (tensor->ne[0] % lm_ggml_blck_size(new_type) != 0) {
|
16137
|
+
new_type = LM_GGML_TYPE_F16;
|
16138
|
+
}
|
16119
16139
|
LLAMA_LOG_WARN(" - using fallback quantization %s\n", lm_ggml_type_name(new_type));
|
16120
16140
|
++qs.n_fallback;
|
16121
16141
|
}
|
@@ -16444,8 +16464,6 @@ static void llama_model_quantize_internal(const std::string & fname_inp, const s
|
|
16444
16464
|
// do not quantize Mamba's small yet 2D weights
|
16445
16465
|
// NOTE: can't use LLM_TN here because the layer number is not known
|
16446
16466
|
quantize &= name.find("ssm_conv1d.weight") == std::string::npos;
|
16447
|
-
quantize &= name.find("ssm_x.weight") == std::string::npos;
|
16448
|
-
quantize &= name.find("ssm_dt.weight") == std::string::npos;
|
16449
16467
|
|
16450
16468
|
// do not quantize relative position bias (T5)
|
16451
16469
|
quantize &= name.find("attn_rel_b.weight") == std::string::npos;
|
@@ -19541,6 +19559,10 @@ void llama_sample_min_p(struct llama_context * ctx, llama_token_data_array * can
|
|
19541
19559
|
llama_sample_min_p_impl(ctx ? &ctx->sampling : nullptr, candidates, p, min_keep);
|
19542
19560
|
}
|
19543
19561
|
|
19562
|
+
void llama_sample_xtc(struct llama_context * ctx, llama_token_data_array * candidates, float xtc_threshold, float xtc_probability, size_t min_keep, std::mt19937 rng){
|
19563
|
+
llama_sample_xtc_impl(ctx ? &ctx-> sampling: nullptr, candidates, xtc_threshold, xtc_probability, min_keep, rng);
|
19564
|
+
}
|
19565
|
+
|
19544
19566
|
void llama_sample_tail_free(struct llama_context * ctx, llama_token_data_array * candidates, float z, size_t min_keep) {
|
19545
19567
|
llama_sample_tail_free_impl(ctx ? &ctx->sampling : nullptr, candidates, z, min_keep);
|
19546
19568
|
}
|
package/cpp/llama.h
CHANGED
@@ -8,6 +8,7 @@
|
|
8
8
|
#include <stdint.h>
|
9
9
|
#include <stdio.h>
|
10
10
|
#include <stdbool.h>
|
11
|
+
#include <random>
|
11
12
|
|
12
13
|
#ifdef LLAMA_SHARED
|
13
14
|
# if defined(_WIN32) && !defined(__MINGW32__)
|
@@ -1085,6 +1086,15 @@ extern "C" {
|
|
1085
1086
|
float p,
|
1086
1087
|
size_t min_keep);
|
1087
1088
|
|
1089
|
+
/// @details XTC sampling
|
1090
|
+
LLAMA_API void llama_sample_xtc(
|
1091
|
+
struct llama_context * ctx,
|
1092
|
+
llama_token_data_array * candidates,
|
1093
|
+
float xtc_threshold,
|
1094
|
+
float xtc_probability,
|
1095
|
+
size_t min_keep,
|
1096
|
+
std::mt19937 rng);
|
1097
|
+
|
1088
1098
|
/// @details Tail Free Sampling described in https://www.trentonbricken.com/Tail-Free-Sampling/.
|
1089
1099
|
LLAMA_API void llama_sample_tail_free(
|
1090
1100
|
struct llama_context * ctx,
|
package/cpp/sampling.cpp
CHANGED
@@ -229,6 +229,7 @@ std::vector<llama_sampler_type> llama_sampling_types_from_chars(const std::strin
|
|
229
229
|
// no reasons to expose this function in header
|
230
230
|
static void sampler_queue(
|
231
231
|
struct llama_context * ctx_main,
|
232
|
+
struct llama_sampling_context * ctx_sampling,
|
232
233
|
const llama_sampling_params & params,
|
233
234
|
llama_token_data_array & cur_p,
|
234
235
|
size_t min_keep) {
|
@@ -238,6 +239,8 @@ static void sampler_queue(
|
|
238
239
|
const int32_t top_k = params.top_k;
|
239
240
|
const float top_p = params.top_p;
|
240
241
|
const float min_p = params.min_p;
|
242
|
+
const float xtc_t = params.xtc_t;
|
243
|
+
const float xtc_p = params.xtc_p;
|
241
244
|
const float tfs_z = params.tfs_z;
|
242
245
|
const float typical_p = params.typical_p;
|
243
246
|
const std::vector<llama_sampler_type> & samplers_sequence = params.samplers_sequence;
|
@@ -249,6 +252,7 @@ static void sampler_queue(
|
|
249
252
|
case llama_sampler_type::TYPICAL_P: llama_sample_typical (ctx_main, &cur_p, typical_p, min_keep); break;
|
250
253
|
case llama_sampler_type::TOP_P : llama_sample_top_p (ctx_main, &cur_p, top_p, min_keep); break;
|
251
254
|
case llama_sampler_type::MIN_P : llama_sample_min_p (ctx_main, &cur_p, min_p, min_keep); break;
|
255
|
+
case llama_sampler_type::XTC : llama_sample_xtc (ctx_main, &cur_p, xtc_t, xtc_p, min_keep, ctx_sampling->rng); break;
|
252
256
|
case llama_sampler_type::TEMPERATURE:
|
253
257
|
if (dynatemp_range > 0) {
|
254
258
|
float dynatemp_min = std::max(0.0f, temp - dynatemp_range);
|
@@ -302,7 +306,7 @@ static llama_token llama_sampling_sample_impl(
|
|
302
306
|
// temperature sampling
|
303
307
|
size_t min_keep = std::max(1, params.min_keep);
|
304
308
|
|
305
|
-
sampler_queue(ctx_main, params, cur_p, min_keep);
|
309
|
+
sampler_queue(ctx_main, ctx_sampling, params, cur_p, min_keep);
|
306
310
|
|
307
311
|
id = llama_sample_token_with_rng(ctx_main, &cur_p, ctx_sampling->rng);
|
308
312
|
|
package/cpp/sampling.h
CHANGED
@@ -14,6 +14,7 @@ enum class llama_sampler_type : char {
|
|
14
14
|
TOP_K = 'k',
|
15
15
|
TOP_P = 'p',
|
16
16
|
MIN_P = 'm',
|
17
|
+
XTC = 'x',
|
17
18
|
TFS_Z = 'f',
|
18
19
|
TYPICAL_P = 'y',
|
19
20
|
TEMPERATURE = 't'
|
@@ -27,6 +28,8 @@ typedef struct llama_sampling_params {
|
|
27
28
|
int32_t top_k = 40; // <= 0 to use vocab size
|
28
29
|
float top_p = 0.95f; // 1.0 = disabled
|
29
30
|
float min_p = 0.05f; // 0.0 = disabled
|
31
|
+
float xtc_t = 0.0f; // 0.0 = disabled
|
32
|
+
float xtc_p = 0.0f; // controls the probability of XTC removal
|
30
33
|
float tfs_z = 1.00f; // 1.0 = disabled
|
31
34
|
float typical_p = 1.00f; // 1.0 = disabled
|
32
35
|
float temp = 0.80f; // <= 0.0 to sample greedily, 0.0 to not output probabilities
|
@@ -48,6 +51,7 @@ typedef struct llama_sampling_params {
|
|
48
51
|
llama_sampler_type::TYPICAL_P,
|
49
52
|
llama_sampler_type::TOP_P,
|
50
53
|
llama_sampler_type::MIN_P,
|
54
|
+
llama_sampler_type::XTC,
|
51
55
|
llama_sampler_type::TEMPERATURE
|
52
56
|
};
|
53
57
|
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_default","TurboModuleRegistry","get","exports","default"],"sourceRoot":"..\\..\\src","sources":["NativeRNLlama.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAAkD,IAAAC,QAAA,
|
1
|
+
{"version":3,"names":["_reactNative","require","_default","TurboModuleRegistry","get","exports","default"],"sourceRoot":"..\\..\\src","sources":["NativeRNLlama.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAAkD,IAAAC,QAAA,GA+JnCC,gCAAmB,CAACC,GAAG,CAAO,SAAS,CAAC;AAAAC,OAAA,CAAAC,OAAA,GAAAJ,QAAA"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["TurboModuleRegistry","get"],"sourceRoot":"..\\..\\src","sources":["NativeRNLlama.ts"],"mappings":"AACA,SAASA,mBAAmB,QAAQ,cAAc;
|
1
|
+
{"version":3,"names":["TurboModuleRegistry","get"],"sourceRoot":"..\\..\\src","sources":["NativeRNLlama.ts"],"mappings":"AACA,SAASA,mBAAmB,QAAQ,cAAc;AA+JlD,eAAeA,mBAAmB,CAACC,GAAG,CAAO,SAAS,CAAC"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"NativeRNLlama.d.ts","sourceRoot":"","sources":["../../src/NativeRNLlama.ts"],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"NativeRNLlama.d.ts","sourceRoot":"","sources":["../../src/NativeRNLlama.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED