@@ -316,6 +316,13 @@ static uint32_t get_rng_seed(uint32_t seed) {
316
316
317
317
// llama_sampler API
318
318
319
+ struct llama_sampler * llama_sampler_init (const struct llama_sampler_i * iface, llama_sampler_context_t ctx) {
320
+ return new llama_sampler {
321
+ /* .iface = */ iface,
322
+ /* .ctx = */ ctx,
323
+ };
324
+ }
325
+
319
326
const char * llama_sampler_name (const struct llama_sampler * smpl) {
320
327
if (!smpl->iface ) {
321
328
return " (null)" ;
@@ -347,10 +354,10 @@ struct llama_sampler * llama_sampler_clone(const struct llama_sampler * smpl) {
347
354
}
348
355
349
356
if (smpl->ctx == nullptr ) {
350
- return new llama_sampler {
357
+ return llama_sampler_init (
351
358
/* .iface = */ smpl->iface ,
352
- /* .ctx = */ nullptr ,
353
- } ;
359
+ /* .ctx = */ nullptr
360
+ ) ;
354
361
}
355
362
356
363
GGML_ABORT (" the sampler does not support cloning" );
@@ -472,15 +479,15 @@ static struct llama_sampler_i llama_sampler_chain_i = {
472
479
};
473
480
474
481
struct llama_sampler * llama_sampler_chain_init (struct llama_sampler_chain_params params) {
475
- return new llama_sampler {
482
+ return llama_sampler_init (
476
483
/* .iface = */ &llama_sampler_chain_i,
477
484
/* .ctx = */ new llama_sampler_chain {
478
485
/* .params = */ params,
479
486
/* .samplers = */ {},
480
487
/* .t_sample_us = */ 0 ,
481
488
/* .n_sample = */ 0 ,
482
- },
483
- } ;
489
+ }
490
+ ) ;
484
491
}
485
492
486
493
void llama_sampler_chain_add (struct llama_sampler * chain, struct llama_sampler * smpl) {
@@ -546,10 +553,10 @@ static struct llama_sampler_i llama_sampler_greedy_i = {
546
553
};
547
554
548
555
struct llama_sampler * llama_sampler_init_greedy () {
549
- return new llama_sampler {
556
+ return llama_sampler_init (
550
557
/* .iface = */ &llama_sampler_greedy_i,
551
- /* .ctx = */ nullptr ,
552
- } ;
558
+ /* .ctx = */ nullptr
559
+ ) ;
553
560
}
554
561
555
562
// dist
@@ -608,14 +615,14 @@ static struct llama_sampler_i llama_sampler_dist_i = {
608
615
609
616
struct llama_sampler * llama_sampler_init_dist (uint32_t seed) {
610
617
auto seed_cur = get_rng_seed (seed);
611
- return new llama_sampler {
618
+ return llama_sampler_init (
612
619
/* .iface = */ &llama_sampler_dist_i,
613
620
/* .ctx = */ new llama_sampler_dist {
614
621
/* .seed = */ seed,
615
622
/* .seed_cur = */ seed_cur,
616
623
/* .rng = */ std::mt19937 (seed_cur),
617
- },
618
- } ;
624
+ }
625
+ ) ;
619
626
}
620
627
621
628
// softmax
@@ -638,10 +645,10 @@ static struct llama_sampler_i llama_sampler_softmax_i = {
638
645
};
639
646
640
647
struct llama_sampler * llama_sampler_init_softmax () {
641
- return new llama_sampler {
648
+ return llama_sampler_init (
642
649
/* .iface = */ &llama_sampler_softmax_i,
643
- /* .ctx = */ nullptr ,
644
- } ;
650
+ /* .ctx = */ nullptr
651
+ ) ;
645
652
}
646
653
647
654
// top-k
@@ -678,12 +685,12 @@ static struct llama_sampler_i llama_sampler_top_k_i = {
678
685
};
679
686
680
687
struct llama_sampler * llama_sampler_init_top_k (int32_t k) {
681
- return new llama_sampler {
688
+ return llama_sampler_init (
682
689
/* .iface = */ &llama_sampler_top_k_i,
683
690
/* .ctx = */ new llama_sampler_top_k {
684
691
/* .k = */ k,
685
- },
686
- } ;
692
+ }
693
+ ) ;
687
694
}
688
695
689
696
// top-p
@@ -744,13 +751,13 @@ static struct llama_sampler_i llama_sampler_top_p_i = {
744
751
};
745
752
746
753
struct llama_sampler * llama_sampler_init_top_p (float p, size_t min_keep) {
747
- return new llama_sampler {
754
+ return llama_sampler_init (
748
755
/* .iface = */ &llama_sampler_top_p_i,
749
756
/* .ctx = */ new llama_sampler_top_p {
750
757
/* .p = */ p,
751
758
/* .min_keep = */ min_keep,
752
- },
753
- } ;
759
+ }
760
+ ) ;
754
761
}
755
762
756
763
// min-p
@@ -840,13 +847,13 @@ static struct llama_sampler_i llama_sampler_min_p_i = {
840
847
};
841
848
842
849
struct llama_sampler * llama_sampler_init_min_p (float p, size_t min_keep) {
843
- return new llama_sampler {
850
+ return llama_sampler_init (
844
851
/* .iface = */ &llama_sampler_min_p_i,
845
852
/* .ctx = */ new llama_sampler_min_p {
846
853
/* .p = */ p,
847
854
/* .min_keep = */ min_keep,
848
- },
849
- } ;
855
+ }
856
+ ) ;
850
857
}
851
858
852
859
// typical
@@ -939,13 +946,13 @@ static struct llama_sampler_i llama_sampler_typical_i = {
939
946
};
940
947
941
948
struct llama_sampler * llama_sampler_init_typical (float p, size_t min_keep) {
942
- return new llama_sampler {
949
+ return llama_sampler_init (
943
950
/* .iface = */ &llama_sampler_typical_i,
944
951
/* .ctx = */ new llama_sampler_typical {
945
952
/* .p = */ p,
946
953
/* .min_keep = */ min_keep,
947
- },
948
- } ;
954
+ }
955
+ ) ;
949
956
}
950
957
951
958
// temp
@@ -983,12 +990,12 @@ static struct llama_sampler_i llama_sampler_temp_i = {
983
990
};
984
991
985
992
struct llama_sampler * llama_sampler_init_temp (float temp) {
986
- return new llama_sampler {
993
+ return llama_sampler_init (
987
994
/* .iface = */ &llama_sampler_temp_i,
988
995
/* .ctx = */ new llama_sampler_temp {
989
996
/* .temp = */ temp,
990
- },
991
- } ;
997
+ }
998
+ ) ;
992
999
}
993
1000
994
1001
// temp-ext
@@ -1093,14 +1100,14 @@ static struct llama_sampler_i llama_sampler_temp_ext_i = {
1093
1100
};
1094
1101
1095
1102
struct llama_sampler * llama_sampler_init_temp_ext (float temp, float delta, float exponent) {
1096
- return new llama_sampler {
1103
+ return llama_sampler_init (
1097
1104
/* .iface = */ &llama_sampler_temp_ext_i,
1098
1105
/* .ctx = */ new llama_sampler_temp_ext {
1099
1106
/* .temp = */ temp,
1100
1107
/* .delta = */ delta,
1101
1108
/* .exponent = */ exponent,
1102
- },
1103
- } ;
1109
+ }
1110
+ ) ;
1104
1111
}
1105
1112
1106
1113
// xtc
@@ -1185,7 +1192,7 @@ static struct llama_sampler_i llama_sampler_xtc_i = {
1185
1192
1186
1193
struct llama_sampler * llama_sampler_init_xtc (float p, float t, size_t min_keep, uint32_t seed) {
1187
1194
auto seed_cur = get_rng_seed (seed);
1188
- return new llama_sampler {
1195
+ return llama_sampler_init (
1189
1196
/* .iface = */ &llama_sampler_xtc_i,
1190
1197
/* .ctx = */ new llama_sampler_xtc {
1191
1198
/* .probability = */ p,
@@ -1194,8 +1201,8 @@ struct llama_sampler * llama_sampler_init_xtc(float p, float t, size_t min_keep,
1194
1201
/* .seed = */ seed,
1195
1202
/* .seed_cur = */ seed_cur,
1196
1203
/* .rng = */ std::mt19937 (seed_cur),
1197
- },
1198
- } ;
1204
+ }
1205
+ ) ;
1199
1206
}
1200
1207
1201
1208
// mirostat
@@ -1292,7 +1299,7 @@ static struct llama_sampler_i llama_sampler_mirostat_i = {
1292
1299
1293
1300
struct llama_sampler * llama_sampler_init_mirostat (int32_t n_vocab, uint32_t seed, float tau, float eta, int32_t m) {
1294
1301
auto seed_cur = get_rng_seed (seed);
1295
- return new llama_sampler {
1302
+ return llama_sampler_init (
1296
1303
/* .iface = */ &llama_sampler_mirostat_i,
1297
1304
/* .ctx = */ new llama_sampler_mirostat {
1298
1305
/* .n_vocab = */ n_vocab,
@@ -1303,8 +1310,8 @@ struct llama_sampler * llama_sampler_init_mirostat(int32_t n_vocab, uint32_t see
1303
1310
/* .m = */ m,
1304
1311
/* .mu = */ 2 .0f *tau,
1305
1312
/* .rng = */ std::mt19937 (seed_cur),
1306
- },
1307
- } ;
1313
+ }
1314
+ ) ;
1308
1315
}
1309
1316
1310
1317
// mirostat v2
@@ -1391,7 +1398,7 @@ static struct llama_sampler_i llama_sampler_mirostat_v2_i = {
1391
1398
1392
1399
struct llama_sampler * llama_sampler_init_mirostat_v2 (uint32_t seed, float tau, float eta) {
1393
1400
auto seed_cur = get_rng_seed (seed);
1394
- return new llama_sampler {
1401
+ return llama_sampler_init (
1395
1402
/* .iface = */ &llama_sampler_mirostat_v2_i,
1396
1403
/* .ctx = */ new llama_sampler_mirostat_v2 {
1397
1404
/* .seed = */ seed,
@@ -1400,8 +1407,8 @@ struct llama_sampler * llama_sampler_init_mirostat_v2(uint32_t seed, float tau,
1400
1407
/* .eta = */ eta,
1401
1408
/* .mu = */ 2 .0f *tau,
1402
1409
/* .rng = */ std::mt19937 (seed_cur),
1403
- },
1404
- } ;
1410
+ }
1411
+ ) ;
1405
1412
}
1406
1413
1407
1414
// grammar
@@ -1528,10 +1535,10 @@ static struct llama_sampler * llama_sampler_init_grammar_impl(
1528
1535
};
1529
1536
}
1530
1537
1531
- return new llama_sampler {
1538
+ return llama_sampler_init (
1532
1539
/* .iface = */ &llama_sampler_grammar_i,
1533
- /* .ctx = */ ctx,
1534
- } ;
1540
+ /* .ctx = */ ctx
1541
+ ) ;
1535
1542
}
1536
1543
1537
1544
struct llama_sampler * llama_sampler_init_grammar (
@@ -1678,7 +1685,7 @@ struct llama_sampler * llama_sampler_init_penalties(
1678
1685
float penalty_present) {
1679
1686
penalty_last_n = std::max (penalty_last_n, 0 );
1680
1687
1681
- return new llama_sampler {
1688
+ return llama_sampler_init (
1682
1689
/* .iface = */ &llama_sampler_penalties_i,
1683
1690
/* .ctx = */ new llama_sampler_penalties {
1684
1691
/* .penalty_last_n = */ penalty_last_n,
@@ -1687,8 +1694,8 @@ struct llama_sampler * llama_sampler_init_penalties(
1687
1694
/* .penalty_present = */ penalty_present,
1688
1695
/* .prev = */ ring_buffer<llama_token>(penalty_last_n),
1689
1696
/* .token_count = */ {},
1690
- },
1691
- } ;
1697
+ }
1698
+ ) ;
1692
1699
}
1693
1700
1694
1701
// DRY
@@ -2041,7 +2048,7 @@ struct llama_sampler * llama_sampler_init_dry(const struct llama_vocab * vocab,
2041
2048
}
2042
2049
}
2043
2050
2044
- return new llama_sampler {
2051
+ return llama_sampler_init (
2045
2052
/* .iface = */ &llama_sampler_dry_i,
2046
2053
/* .ctx = */ new llama_sampler_dry {
2047
2054
/* .total_context_size = */ context_size,
@@ -2053,8 +2060,8 @@ struct llama_sampler * llama_sampler_init_dry(const struct llama_vocab * vocab,
2053
2060
/* .dry_repeat_count = */ dry_enabled ? std::vector<int >(effective_dry_penalty_last_n, 0 ) : std::vector<int >{},
2054
2061
/* .dry_max_token_repeat = */ {},
2055
2062
/* .last_tokens = */ dry_enabled ? ring_buffer<llama_token>(effective_dry_penalty_last_n) : ring_buffer<llama_token>(0 ),
2056
- },
2057
- } ;
2063
+ }
2064
+ ) ;
2058
2065
}
2059
2066
2060
2067
// wrapper for test-sampling.cpp
@@ -2155,14 +2162,14 @@ struct llama_sampler * llama_sampler_init_logit_bias(
2155
2162
int32_t n_vocab,
2156
2163
int32_t n_logit_bias,
2157
2164
const llama_logit_bias * logit_bias) {
2158
- return new llama_sampler {
2165
+ return llama_sampler_init (
2159
2166
/* .iface = */ &llama_sampler_logit_bias_i,
2160
2167
/* .ctx = */ new llama_sampler_logit_bias {
2161
2168
/* .n_vocab = */ n_vocab,
2162
2169
/* .logit_bias = */ std::vector<llama_logit_bias>(logit_bias, logit_bias + n_logit_bias),
2163
2170
/* .to_search = */ {},
2164
- },
2165
- } ;
2171
+ }
2172
+ ) ;
2166
2173
}
2167
2174
2168
2175
// infill
@@ -2377,14 +2384,14 @@ static struct llama_sampler_i llama_sampler_infill_i = {
2377
2384
};
2378
2385
2379
2386
struct llama_sampler * llama_sampler_init_infill (const struct llama_vocab * vocab) {
2380
- return new llama_sampler {
2387
+ return llama_sampler_init (
2381
2388
/* .iface = */ &llama_sampler_infill_i,
2382
2389
/* .ctx = */ new llama_sampler_infill {
2383
2390
/* .vocab = */ vocab,
2384
2391
/* .buf0 = */ std::vector<char >(512 ),
2385
2392
/* .buf1 = */ std::vector<char >(512 ),
2386
- },
2387
- } ;
2393
+ }
2394
+ ) ;
2388
2395
}
2389
2396
2390
2397
// utils
0 commit comments