llama_cpp 0.10.3 → 0.11.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +13 -0
- data/LICENSE.txt +1 -1
- data/ext/llama_cpp/extconf.rb +35 -110
- data/ext/llama_cpp/llama_cpp.cpp +52 -28
- data/lib/llama_cpp/version.rb +2 -2
- data/sig/llama_cpp.rbs +3 -1
- data/vendor/include/.gitkeep +0 -0
- data/vendor/lib/.gitkeep +0 -0
- data/vendor/tmp/llama.cpp/Makefile +758 -0
- data/{ext/llama_cpp/src → vendor/tmp/llama.cpp}/ggml-backend.c +6 -2
- data/{ext/llama_cpp/src → vendor/tmp/llama.cpp}/ggml-cuda.cu +73 -63
- data/{ext/llama_cpp/src → vendor/tmp/llama.cpp}/ggml-impl.h +1 -0
- data/{ext/llama_cpp/src → vendor/tmp/llama.cpp}/ggml-metal.m +43 -20
- data/{ext/llama_cpp/src → vendor/tmp/llama.cpp}/ggml-metal.metal +464 -245
- data/vendor/tmp/llama.cpp/ggml-opencl.h +25 -0
- data/{ext/llama_cpp/src → vendor/tmp/llama.cpp}/ggml-quants.c +61 -57
- data/{ext/llama_cpp/src → vendor/tmp/llama.cpp}/ggml.c +171 -5
- data/{ext/llama_cpp/src → vendor/tmp/llama.cpp}/ggml.h +1 -0
- data/{ext/llama_cpp/src → vendor/tmp/llama.cpp}/llama.cpp +222 -105
- data/{ext/llama_cpp/src → vendor/tmp/llama.cpp}/llama.h +31 -32
- data/vendor/tmp/llama.cpp/scripts/get-flags.mk +38 -0
- metadata +30 -27
- data/ext/llama_cpp/src/ggml-opencl.h +0 -25
- data/ext/llama_cpp/src/llama-util.h +0 -546
- /data/{ext/llama_cpp/src → vendor/tmp/llama.cpp}/LICENSE +0 -0
- /data/{ext/llama_cpp/src → vendor/tmp/llama.cpp}/ggml-alloc.c +0 -0
- /data/{ext/llama_cpp/src → vendor/tmp/llama.cpp}/ggml-alloc.h +0 -0
- /data/{ext/llama_cpp/src → vendor/tmp/llama.cpp}/ggml-backend-impl.h +0 -0
- /data/{ext/llama_cpp/src → vendor/tmp/llama.cpp}/ggml-backend.h +0 -0
- /data/{ext/llama_cpp/src → vendor/tmp/llama.cpp}/ggml-cuda.h +0 -0
- /data/{ext/llama_cpp/src → vendor/tmp/llama.cpp}/ggml-metal.h +0 -0
- /data/{ext/llama_cpp/src → vendor/tmp/llama.cpp}/ggml-mpi.c +0 -0
- /data/{ext/llama_cpp/src → vendor/tmp/llama.cpp}/ggml-mpi.h +0 -0
- /data/{ext/llama_cpp/src → vendor/tmp/llama.cpp}/ggml-opencl.cpp +0 -0
- /data/{ext/llama_cpp/src → vendor/tmp/llama.cpp}/ggml-quants.h +0 -0
- /data/{ext/llama_cpp/src → vendor/tmp/llama.cpp}/unicode.h +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 58b6e91201c53b1ced4db60f325d3ced3fa486e24a84d53b0e5c62f613e33fc9
|
4
|
+
data.tar.gz: 7b1c4594a79c8ac86aef84be3608dbd51e397c8fe4226d65b3ee87aa1fc800b2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: aece2e7a49f08d0799ff6eb24904ef176fc916eeb57380916b2c8397ea3236991b52fd806aa8c76822a7c1beac86348f3ceb7094880c8d79015debc62babaa0c
|
7
|
+
data.tar.gz: 2049d26027e8be4e47bbbb12a9a521776c369ca45d05743dec3c96249a09fe67e31a21aa09dcb8d717f39ee29904ee082bcbfa292fd6c1e956d6e319809ca31c
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,16 @@
|
|
1
|
+
## [[0.11.0](https://github.com/yoshoku/llama_cpp.rb/compare/v0.10.3...v0.11.0)] - 2024-01-07
|
2
|
+
|
3
|
+
- Add `set_n_seq_id` and `get_n_seq_id` methods to `Batch`.
|
4
|
+
|
5
|
+
**Breaking Changes**
|
6
|
+
- Change to build shared and static libraries of llama.cpp using its Makefile.
|
7
|
+
- Change keyword arguments of `Batch` constructor.
|
8
|
+
- Remove upper limit check for index value in `Batch` methods.
|
9
|
+
|
10
|
+
## [[0.10.4](https://github.com/yoshoku/llama_cpp.rb/compare/v0.10.3...v0.10.4)] - 2024-01-06
|
11
|
+
|
12
|
+
- Bump bundled llama.cpp from b1710 to b1768.
|
13
|
+
|
1
14
|
## [[0.10.3](https://github.com/yoshoku/llama_cpp.rb/compare/v0.10.2...v0.10.3)] - 2023-12-29
|
2
15
|
|
3
16
|
- Bump bundled llama.cpp from b1686 to b1710.
|
data/LICENSE.txt
CHANGED
data/ext/llama_cpp/extconf.rb
CHANGED
@@ -2,119 +2,44 @@
|
|
2
2
|
|
3
3
|
require 'mkmf'
|
4
4
|
require 'fileutils'
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
if with_config('
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
$CFLAGS << ' -DGGML_USE_OPENBLAS'
|
38
|
-
end
|
39
|
-
|
40
|
-
if with_config('accelerate')
|
41
|
-
abort 'Accelerate framework is not found.' unless have_framework('Accelerate')
|
42
|
-
|
43
|
-
$CFLAGS << ' -DGGML_USE_ACCELERATE'
|
44
|
-
end
|
45
|
-
|
46
|
-
if with_config('metal')
|
47
|
-
$CFLAGS << ' -DGGML_USE_METAL'
|
48
|
-
$CXXFLAGS << ' -DGGML_USE_METAL'
|
49
|
-
$LDFLAGS << ' -framework Foundation -framework Metal -framework MetalKit'
|
50
|
-
$objs = %w[ggml.o ggml-backend.o ggml-alloc.o ggml-quants.o ggml-metal.o llama.o llama_cpp.o]
|
51
|
-
end
|
52
|
-
|
53
|
-
if with_config('cublas')
|
54
|
-
$CFLAGS << ' -DGGML_USE_CUBLAS -I/usr/local/cuda/include'
|
55
|
-
$CXXFLAGS << ' -DGGML_USE_CUBLAS -I/usr/local/cuda/include'
|
56
|
-
$LDFLAGS << ' -lcublas -lculibos -lcudart -lcublasLt -lpthread -ldl -lrt -L/usr/local/cuda/lib64'
|
57
|
-
$objs = %w[ggml.o ggml-backend.o ggml-alloc.o ggml-quants.o ggml-cuda.o llama.o llama_cpp.o]
|
58
|
-
end
|
59
|
-
|
60
|
-
if with_config('clblast')
|
61
|
-
abort 'libclblast is not found.' unless have_library('clblast')
|
62
|
-
|
63
|
-
$CFLAGS << ' -DGGML_USE_CLBLAST'
|
64
|
-
$CXXFLAGS << ' -DGGML_USE_CLBLAST'
|
65
|
-
if RUBY_PLATFORM.match?(/darwin/)
|
66
|
-
$LDFLAGS << ' -framework OpenCL'
|
67
|
-
else
|
68
|
-
abort 'libOpenCL is not found.' unless have_library('OpenCL')
|
5
|
+
require 'open3'
|
6
|
+
|
7
|
+
VENDOR_DIR = File.expand_path("#{__dir__}/../../vendor")
|
8
|
+
VENDOR_LIB_DIR = "#{VENDOR_DIR}/lib"
|
9
|
+
VENDOR_INC_DIR = "#{VENDOR_DIR}/include"
|
10
|
+
LLAMA_CPP_DIR = "#{VENDOR_DIR}/tmp/llama.cpp"
|
11
|
+
|
12
|
+
make_envs = +''
|
13
|
+
make_envs << ' LLAMA_DEBUG=1' if with_config('debug')
|
14
|
+
make_envs << ' LLAMA_QKK_64=1' if with_config('qkk-64')
|
15
|
+
make_envs << ' LLAMA_NO_ACCELERATE=1' if with_config('no-accelerate')
|
16
|
+
make_envs << ' LLAMA_OPENBLAS=1' if with_config('openblas')
|
17
|
+
make_envs << ' LLAMA_BLIS=1' if with_config('blis')
|
18
|
+
make_envs << ' LLAMA_CUBLAS=1' if with_config('cublas')
|
19
|
+
make_envs << ' LLAMA_CLBLAST=1' if with_config('clblast')
|
20
|
+
make_envs << ' LLAMA_HIPBLAS=1' if with_config('hipblas')
|
21
|
+
make_envs << ' LLAMA_MPI=1' if with_config('mpi')
|
22
|
+
|
23
|
+
Dir.chdir(LLAMA_CPP_DIR) do
|
24
|
+
_mkstdout, _mkstderr, mkstatus = Open3.capture3("make lib #{make_envs}".strip)
|
25
|
+
abort('Failed to build llama.cpp.') unless mkstatus.success?
|
26
|
+
|
27
|
+
FileUtils.cp(Dir.glob('libllama.*'), VENDOR_LIB_DIR)
|
28
|
+
FileUtils.cp(Dir.glob('*.h'), "#{VENDOR_DIR}/include/")
|
29
|
+
end
|
30
|
+
|
31
|
+
if RUBY_PLATFORM.match?(/darwin/)
|
32
|
+
Dir.chdir(VENDOR_LIB_DIR) do
|
33
|
+
_mkstdout, _mkstderr, mkstatus = Open3.capture3("install_name_tool -id #{VENDOR_LIB_DIR}/libllama.dylib libllama.dylib")
|
34
|
+
abort('Failed to set installation path for libllama.dylib.') unless mkstatus.success?
|
35
|
+
FileUtils.cp("#{LLAMA_CPP_DIR}/ggml-metal.metal", VENDOR_LIB_DIR)
|
69
36
|
end
|
70
37
|
end
|
71
38
|
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
$CFLAGS << ' -DGGML_USE_MPI -Wno-cast-qual'
|
77
|
-
$CXXFLAGS << ' -DGGML_USE_MPI -Wno-cast-qual'
|
78
|
-
end
|
79
|
-
|
80
|
-
# @!visibility private
|
81
|
-
UNAME_M = RbConfig::CONFIG['build_cpu'] || RbConfig::CONFIG['host_cpu'] || RbConfig::CONFIG['target_cpu']
|
39
|
+
abort('libstdc++ is not found.') unless have_library('stdc++')
|
40
|
+
abort('libllama is not found.') unless find_library('llama', nil, VENDOR_LIB_DIR)
|
41
|
+
abort('llama.h is not found.') unless find_header('llama.h', nil, VENDOR_INC_DIR)
|
82
42
|
|
83
|
-
|
84
|
-
if UNAME_M.match?(/x86_64|i686/) && try_compile('#include <stdio.h>', '-march=native -mtune=native')
|
85
|
-
$CFLAGS << ' -march=native -mtune=native'
|
86
|
-
$CXXFLAGS << ' -march=native -mtune=native'
|
87
|
-
elsif UNAME_M.match?(/aarch64/) && try_compile('#include <stdio.h>', '-mcpu=native')
|
88
|
-
$CFLAGS << ' -mcpu=native'
|
89
|
-
$CXXFLAGS << ' -mcpu=native'
|
90
|
-
elsif UNAME_M.match?(/armv6/) && try_compile('#include <stdio.h>', '-mfpu=neon-fp-armv8 -mfp16-format=ieee -mno-unaligned-access')
|
91
|
-
$CFLAGS << ' -mfpu=neon-fp-armv8 -mfp16-format=ieee -mno-unaligned-access'
|
92
|
-
$CXXFLAGS << ' -mfpu=neon-fp-armv8 -mfp16-format=ieee -mno-unaligned-access'
|
93
|
-
elsif UNAME_M.match?(/armv7/) && try_compile('#include <stdio.h>', '-mfpu=neon-fp-armv8 -mfp16-format=ieee -mno-unaligned-access -funsafe-math-optimizations')
|
94
|
-
$CFLAGS << ' -mfpu=neon-fp-armv8 -mfp16-format=ieee -mno-unaligned-access -funsafe-math-optimizations'
|
95
|
-
$CXXFLAGS << ' -mfpu=neon-fp-armv8 -mfp16-format=ieee -mno-unaligned-access -funsafe-math-optimizations'
|
96
|
-
elsif UNAME_M.match?(/armv8/) && try_compile('#include <stdio.h>', '-mfp16-format=ieee -mno-unaligned-access')
|
97
|
-
$CFLAGS << ' -mfp16-format=ieee -mno-unaligned-access'
|
98
|
-
$CXXFLAGS << ' -mfp16-format=ieee -mno-unaligned-access'
|
99
|
-
end
|
100
|
-
# rubocop:enable Layout/LineLength
|
43
|
+
$CXXFLAGS << ' -std=c++11'
|
101
44
|
|
102
45
|
create_makefile('llama_cpp/llama_cpp')
|
103
|
-
|
104
|
-
if with_config('cublas')
|
105
|
-
File.open('Makefile', 'a') do |f|
|
106
|
-
f.puts 'ggml-cuda.o: ggml-cuda.cu ggml-cuda.h'
|
107
|
-
f.puts "\tnvcc -shared -Xcompiler -fPIC -arch=native -c -o $@ $<"
|
108
|
-
end
|
109
|
-
end
|
110
|
-
|
111
|
-
if with_config('metal')
|
112
|
-
File.open('Makefile', 'a') do |f|
|
113
|
-
f.puts 'ggml-metal.o: ggml-metal.m ggml-metal.h'
|
114
|
-
f.puts "\t$(CC) $(CFLAGS) -c $< -o $@"
|
115
|
-
end
|
116
|
-
|
117
|
-
metal_path = File.expand_path("#{__dir__}/src/ggml-metal.metal")
|
118
|
-
dest_path = File.expand_path("#{__dir__}/../../lib/llama_cpp/")
|
119
|
-
FileUtils.cp(metal_path, dest_path)
|
120
|
-
end
|
data/ext/llama_cpp/llama_cpp.cpp
CHANGED
@@ -64,6 +64,8 @@ public:
|
|
64
64
|
rb_define_method(rb_cLLaMABatch, "get_token", RUBY_METHOD_FUNC(_llama_batch_get_token), 1);
|
65
65
|
rb_define_method(rb_cLLaMABatch, "set_pos", RUBY_METHOD_FUNC(_llama_batch_set_pos), 2);
|
66
66
|
rb_define_method(rb_cLLaMABatch, "get_pos", RUBY_METHOD_FUNC(_llama_batch_get_pos), 1);
|
67
|
+
rb_define_method(rb_cLLaMABatch, "set_n_seq_id", RUBY_METHOD_FUNC(_llama_batch_set_n_seq_id), 2);
|
68
|
+
rb_define_method(rb_cLLaMABatch, "get_n_seq_id", RUBY_METHOD_FUNC(_llama_batch_get_n_seq_id), 1);
|
67
69
|
rb_define_method(rb_cLLaMABatch, "set_seq_id", RUBY_METHOD_FUNC(_llama_batch_set_seq_id), 3);
|
68
70
|
rb_define_method(rb_cLLaMABatch, "get_seq_id", RUBY_METHOD_FUNC(_llama_batch_get_seq_id), 2);
|
69
71
|
rb_define_method(rb_cLLaMABatch, "set_logits", RUBY_METHOD_FUNC(_llama_batch_set_logits), 2);
|
@@ -75,30 +77,30 @@ private:
|
|
75
77
|
|
76
78
|
static VALUE _llama_batch_initialize(int argc, VALUE* argv, VALUE self) {
|
77
79
|
VALUE kw_args = Qnil;
|
78
|
-
ID kw_table[3] = { rb_intern("
|
80
|
+
ID kw_table[3] = { rb_intern("max_n_token"), rb_intern("n_embd"), rb_intern("max_n_seq") };
|
79
81
|
VALUE kw_values[3] = { Qundef, Qundef, Qundef };
|
80
82
|
rb_scan_args(argc, argv, ":", &kw_args);
|
81
83
|
rb_get_kwargs(kw_args, kw_table, 3, 0, kw_values);
|
82
84
|
|
83
85
|
if (!RB_INTEGER_TYPE_P(kw_values[0])) {
|
84
|
-
rb_raise(rb_eArgError, "
|
86
|
+
rb_raise(rb_eArgError, "max_n_token must be an integer");
|
85
87
|
return Qnil;
|
86
88
|
}
|
87
89
|
if (!RB_INTEGER_TYPE_P(kw_values[1])) {
|
88
|
-
rb_raise(rb_eArgError, "
|
90
|
+
rb_raise(rb_eArgError, "n_embd must be an integer");
|
89
91
|
return Qnil;
|
90
92
|
}
|
91
93
|
if (!RB_INTEGER_TYPE_P(kw_values[2])) {
|
92
|
-
rb_raise(rb_eArgError, "
|
94
|
+
rb_raise(rb_eArgError, "max_n_seq must be an integer");
|
93
95
|
return Qnil;
|
94
96
|
}
|
95
97
|
|
96
|
-
const int32_t
|
97
|
-
const int32_t
|
98
|
-
const int32_t
|
98
|
+
const int32_t max_n_token = NUM2INT(kw_values[0]);
|
99
|
+
const int32_t n_embd = NUM2INT(kw_values[1]);
|
100
|
+
const int32_t max_n_seq = NUM2INT(kw_values[2]);
|
99
101
|
|
100
102
|
LLaMABatchWrapper* ptr = get_llama_batch(self);
|
101
|
-
ptr->batch = llama_batch_init(
|
103
|
+
ptr->batch = llama_batch_init(max_n_token, n_embd, max_n_seq);
|
102
104
|
|
103
105
|
return Qnil;
|
104
106
|
}
|
@@ -155,8 +157,8 @@ private:
|
|
155
157
|
static VALUE _llama_batch_set_token(VALUE self, VALUE idx, VALUE value) {
|
156
158
|
LLaMABatchWrapper* ptr = get_llama_batch(self);
|
157
159
|
const int32_t id = NUM2INT(idx);
|
158
|
-
if (id < 0
|
159
|
-
rb_raise(rb_eArgError, "
|
160
|
+
if (id < 0) {
|
161
|
+
rb_raise(rb_eArgError, "id must be greater or equal to 0");
|
160
162
|
return Qnil;
|
161
163
|
}
|
162
164
|
ptr->batch.token[id] = NUM2INT(value);
|
@@ -166,8 +168,8 @@ private:
|
|
166
168
|
static VALUE _llama_batch_get_token(VALUE self, VALUE idx) {
|
167
169
|
LLaMABatchWrapper* ptr = get_llama_batch(self);
|
168
170
|
const int32_t id = NUM2INT(idx);
|
169
|
-
if (id < 0
|
170
|
-
rb_raise(rb_eArgError, "id must be
|
171
|
+
if (id < 0) {
|
172
|
+
rb_raise(rb_eArgError, "id must be greater or equal to 0");
|
171
173
|
return Qnil;
|
172
174
|
}
|
173
175
|
return INT2NUM(ptr->batch.token[id]);
|
@@ -177,8 +179,8 @@ private:
|
|
177
179
|
static VALUE _llama_batch_set_pos(VALUE self, VALUE idx, VALUE value) {
|
178
180
|
LLaMABatchWrapper* ptr = get_llama_batch(self);
|
179
181
|
const int32_t id = NUM2INT(idx);
|
180
|
-
if (id < 0
|
181
|
-
rb_raise(rb_eArgError, "id must be
|
182
|
+
if (id < 0) {
|
183
|
+
rb_raise(rb_eArgError, "id must be greater or equal to 0");
|
182
184
|
return Qnil;
|
183
185
|
}
|
184
186
|
ptr->batch.pos[id] = NUM2INT(value);
|
@@ -188,24 +190,46 @@ private:
|
|
188
190
|
static VALUE _llama_batch_get_pos(VALUE self, VALUE idx) {
|
189
191
|
LLaMABatchWrapper* ptr = get_llama_batch(self);
|
190
192
|
const int32_t id = NUM2INT(idx);
|
191
|
-
if (id < 0
|
192
|
-
rb_raise(rb_eArgError, "id must be
|
193
|
+
if (id < 0) {
|
194
|
+
rb_raise(rb_eArgError, "id must be greater or equal to 0");
|
193
195
|
return Qnil;
|
194
196
|
}
|
195
197
|
return INT2NUM(ptr->batch.pos[id]);
|
196
198
|
}
|
197
199
|
|
200
|
+
// n_seq_id
|
201
|
+
static VALUE _llama_batch_set_n_seq_id(VALUE self, VALUE idx, VALUE value) {
|
202
|
+
LLaMABatchWrapper* ptr = get_llama_batch(self);
|
203
|
+
const int32_t id = NUM2INT(idx);
|
204
|
+
if (id < 0) {
|
205
|
+
rb_raise(rb_eArgError, "id must be greater or equal to 0");
|
206
|
+
return Qnil;
|
207
|
+
}
|
208
|
+
ptr->batch.n_seq_id[id] = NUM2INT(value);
|
209
|
+
return INT2NUM(ptr->batch.n_seq_id[id]);
|
210
|
+
}
|
211
|
+
|
212
|
+
static VALUE _llama_batch_get_n_seq_id(VALUE self, VALUE idx) {
|
213
|
+
LLaMABatchWrapper* ptr = get_llama_batch(self);
|
214
|
+
const int32_t id = NUM2INT(idx);
|
215
|
+
if (id < 0) {
|
216
|
+
rb_raise(rb_eArgError, "id must be greater or equal to 0");
|
217
|
+
return Qnil;
|
218
|
+
}
|
219
|
+
return INT2NUM(ptr->batch.n_seq_id[id]);
|
220
|
+
}
|
221
|
+
|
198
222
|
// seq_id
|
199
223
|
static VALUE _llama_batch_set_seq_id(VALUE self, VALUE i_, VALUE j_, VALUE value) {
|
200
224
|
LLaMABatchWrapper* ptr = get_llama_batch(self);
|
201
225
|
const int32_t i = NUM2INT(i_);
|
202
|
-
if (i < 0
|
203
|
-
rb_raise(rb_eArgError, "i must be
|
226
|
+
if (i < 0) {
|
227
|
+
rb_raise(rb_eArgError, "i must be greater or equal to 0");
|
204
228
|
return Qnil;
|
205
229
|
}
|
206
230
|
const int32_t j = NUM2INT(j_);
|
207
|
-
if (j < 0
|
208
|
-
rb_raise(rb_eArgError, "j must be
|
231
|
+
if (j < 0) {
|
232
|
+
rb_raise(rb_eArgError, "j must be greater or equal to 0");
|
209
233
|
return Qnil;
|
210
234
|
}
|
211
235
|
ptr->batch.seq_id[i][j] = NUM2INT(value);
|
@@ -215,13 +239,13 @@ private:
|
|
215
239
|
static VALUE _llama_batch_get_seq_id(VALUE self, VALUE i_, VALUE j_) {
|
216
240
|
LLaMABatchWrapper* ptr = get_llama_batch(self);
|
217
241
|
const int32_t i = NUM2INT(i_);
|
218
|
-
if (i < 0
|
219
|
-
rb_raise(rb_eArgError, "i must be
|
242
|
+
if (i < 0) {
|
243
|
+
rb_raise(rb_eArgError, "i must be greater or equal to 0");
|
220
244
|
return Qnil;
|
221
245
|
}
|
222
246
|
const int32_t j = NUM2INT(j_);
|
223
|
-
if (j < 0
|
224
|
-
rb_raise(rb_eArgError, "j must be
|
247
|
+
if (j < 0) {
|
248
|
+
rb_raise(rb_eArgError, "j must be greater or equal to 0");
|
225
249
|
return Qnil;
|
226
250
|
}
|
227
251
|
return INT2NUM(ptr->batch.seq_id[i][j]);
|
@@ -231,8 +255,8 @@ private:
|
|
231
255
|
static VALUE _llama_batch_set_logits(VALUE self, VALUE idx, VALUE value) {
|
232
256
|
LLaMABatchWrapper* ptr = get_llama_batch(self);
|
233
257
|
const int32_t id = NUM2INT(idx);
|
234
|
-
if (id < 0
|
235
|
-
rb_raise(rb_eArgError, "id must be
|
258
|
+
if (id < 0) {
|
259
|
+
rb_raise(rb_eArgError, "id must be greater or equal to 0");
|
236
260
|
return Qnil;
|
237
261
|
}
|
238
262
|
ptr->batch.logits[id] = RTEST(value) ? true : false;
|
@@ -242,8 +266,8 @@ private:
|
|
242
266
|
static VALUE _llama_batch_get_logits(VALUE self, VALUE idx) {
|
243
267
|
LLaMABatchWrapper* ptr = get_llama_batch(self);
|
244
268
|
const int32_t id = NUM2INT(idx);
|
245
|
-
if (id < 0
|
246
|
-
rb_raise(rb_eArgError, "id must be
|
269
|
+
if (id < 0) {
|
270
|
+
rb_raise(rb_eArgError, "id must be greater or equal to 0");
|
247
271
|
return Qnil;
|
248
272
|
}
|
249
273
|
return ptr->batch.logits[id] ? Qtrue : Qfalse;
|
data/lib/llama_cpp/version.rb
CHANGED
@@ -3,8 +3,8 @@
|
|
3
3
|
# llama_cpp.rb provides Ruby bindings for the llama.cpp.
|
4
4
|
module LLaMACpp
|
5
5
|
# The version of llama_cpp.rb you install.
|
6
|
-
VERSION = '0.
|
6
|
+
VERSION = '0.11.0'
|
7
7
|
|
8
8
|
# The version of llama.cpp bundled with llama_cpp.rb.
|
9
|
-
LLAMA_CPP_VERSION = '
|
9
|
+
LLAMA_CPP_VERSION = 'b1768'
|
10
10
|
end
|
data/sig/llama_cpp.rbs
CHANGED
@@ -149,7 +149,7 @@ module LLaMACpp
|
|
149
149
|
class Batch
|
150
150
|
public
|
151
151
|
|
152
|
-
def initialize: (
|
152
|
+
def initialize: (max_n_token: Integer, n_embd: Integer, max_n_seq: Integer) -> void
|
153
153
|
def n_tokens=: (Integer) -> Integer
|
154
154
|
def n_tokens: () -> Integer
|
155
155
|
def all_pos_zero=: (Integer) -> Integer
|
@@ -162,6 +162,8 @@ module LLaMACpp
|
|
162
162
|
def get_token: (Integer) -> Integer
|
163
163
|
def set_pos: (Integer, Integer) -> Integer
|
164
164
|
def get_pos: (Integer) -> Integer
|
165
|
+
def set_n_seq_id: (Integer, Integer) -> Integer
|
166
|
+
def get_n_seq_id: (Integer) -> Integer
|
165
167
|
def set_seq_id: (Integer, Integer, Integer) -> Integer
|
166
168
|
def get_seq_id: (Integer, Integer) -> Integer
|
167
169
|
def set_logit: (Integer, bool) -> bool
|
File without changes
|
data/vendor/lib/.gitkeep
ADDED
File without changes
|