llama_cpp 0.15.4 → 0.16.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +10 -0
- data/ext/llama_cpp/extconf.rb +1 -2
- data/ext/llama_cpp/llama_cpp.cpp +15 -3
- data/lib/llama_cpp/version.rb +2 -2
- data/sig/llama_cpp.rbs +13 -1
- data/vendor/tmp/llama.cpp/Makefile +62 -35
- data/vendor/tmp/llama.cpp/ggml-alloc.c +4 -4
- data/vendor/tmp/llama.cpp/ggml-backend.c +5 -5
- data/vendor/tmp/llama.cpp/ggml-backend.h +1 -1
- data/vendor/tmp/llama.cpp/ggml-cuda/acc.cu +47 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/arange.cu +34 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/argsort.cu +103 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/binbcast.cu +280 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/clamp.cu +34 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/concat.cu +196 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/convert.cu +686 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/cpy.cu +490 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/diagmask.cu +40 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/dmmv.cu +662 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/fattn-tile-f16.cu +319 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/fattn-tile-f32.cu +312 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/fattn.cu +345 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/getrows.cu +178 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/im2col.cu +104 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/mmq.cu +1564 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/mmvq.cu +404 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/norm.cu +221 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/pad.cu +49 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/pool2d.cu +94 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/quantize.cu +45 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/rope.cu +271 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/scale.cu +31 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/softmax.cu +205 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/sumrows.cu +40 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-f16-f16.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-f16-q4_0.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-f16-q4_1.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-f16-q5_0.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-f16-q5_1.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-f16-q8_0.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q4_0-f16.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q4_0-q4_0.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q4_0-q4_1.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q4_0-q5_0.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q4_0-q5_1.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q4_0-q8_0.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q4_1-f16.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q4_1-q4_0.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q4_1-q4_1.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q4_1-q5_0.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q4_1-q5_1.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q4_1-q8_0.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q5_0-f16.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q5_0-q4_0.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q5_0-q4_1.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q5_0-q5_0.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q5_0-q5_1.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q5_0-q8_0.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q5_1-f16.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q5_1-q4_0.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q5_1-q4_1.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q5_1-q5_0.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q5_1-q5_1.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q5_1-q8_0.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q8_0-f16.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q8_0-q4_0.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q8_0-q4_1.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q8_0-q5_0.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q8_0-q5_1.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q8_0-q8_0.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs256-f16-f16.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs64-f16-f16.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs64-f16-q4_0.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs64-f16-q4_1.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs64-f16-q5_0.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs64-f16-q5_1.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs64-f16-q8_0.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-f16-f16.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-f16-q4_0.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-f16-q4_1.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-f16-q5_0.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-f16-q5_1.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-f16-q8_0.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q4_0-f16.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q4_0-q4_0.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q4_0-q4_1.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q4_0-q5_0.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q4_0-q5_1.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q4_0-q8_0.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q4_1-f16.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q4_1-q4_0.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q4_1-q4_1.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q4_1-q5_0.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q4_1-q5_1.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q4_1-q8_0.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q5_0-f16.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q5_0-q4_0.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q5_0-q4_1.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q5_0-q5_0.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q5_0-q5_1.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q5_0-q8_0.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q5_1-f16.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q5_1-q4_0.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q5_1-q4_1.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q5_1-q5_0.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q5_1-q5_1.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q5_1-q8_0.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q8_0-f16.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q8_0-q4_0.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q8_0-q4_1.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q8_0-q5_0.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q8_0-q5_1.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q8_0-q8_0.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs256-f16-f16.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs64-f16-f16.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs64-f16-q4_0.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs64-f16-q4_1.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs64-f16-q5_0.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs64-f16-q5_1.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs64-f16-q8_0.cu +5 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-wmma-f16-instance-kqfloat-cpb16.cu +10 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-wmma-f16-instance-kqfloat-cpb32.cu +9 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-wmma-f16-instance-kqhalf-cpb16.cu +10 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-wmma-f16-instance-kqhalf-cpb32.cu +10 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-wmma-f16-instance-kqhalf-cpb8.cu +8 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/tsembd.cu +47 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/unary.cu +266 -0
- data/vendor/tmp/llama.cpp/ggml-cuda/upscale.cu +51 -0
- data/vendor/tmp/llama.cpp/ggml-cuda.cu +8 -6
- data/vendor/tmp/llama.cpp/ggml-kompute.cpp +21 -6
- data/vendor/tmp/llama.cpp/ggml-metal.h +1 -1
- data/vendor/tmp/llama.cpp/ggml-metal.m +34 -24
- data/vendor/tmp/llama.cpp/ggml-metal.metal +83 -59
- data/vendor/tmp/llama.cpp/ggml-rpc.cpp +2 -2
- data/vendor/tmp/llama.cpp/ggml-sycl.cpp +7 -67
- data/vendor/tmp/llama.cpp/ggml-vulkan-shaders.hpp +99301 -39793
- data/vendor/tmp/llama.cpp/ggml-vulkan.cpp +456 -329
- data/vendor/tmp/llama.cpp/ggml.c +178 -330
- data/vendor/tmp/llama.cpp/ggml.h +9 -28
- data/vendor/tmp/llama.cpp/llama.cpp +242 -426
- data/vendor/tmp/llama.cpp/llama.h +17 -43
- metadata +121 -6
- data/vendor/tmp/llama.cpp/ggml-mpi.c +0 -216
- data/vendor/tmp/llama.cpp/ggml-mpi.h +0 -39
- data/vendor/tmp/llama.cpp/ggml-opencl.cpp +0 -2305
- data/vendor/tmp/llama.cpp/ggml-opencl.h +0 -36
@@ -97,7 +97,7 @@ extern "C" {
|
|
97
97
|
LLAMA_ROPE_TYPE_GLM = 4,
|
98
98
|
};
|
99
99
|
|
100
|
-
enum llama_token_type {
|
100
|
+
enum llama_token_type { //TODO: remove, required until per token attributes are available from GGUF file
|
101
101
|
LLAMA_TOKEN_TYPE_UNDEFINED = 0,
|
102
102
|
LLAMA_TOKEN_TYPE_NORMAL = 1,
|
103
103
|
LLAMA_TOKEN_TYPE_UNKNOWN = 2,
|
@@ -107,6 +107,20 @@ extern "C" {
|
|
107
107
|
LLAMA_TOKEN_TYPE_BYTE = 6,
|
108
108
|
};
|
109
109
|
|
110
|
+
enum llama_token_attr {
|
111
|
+
LLAMA_TOKEN_ATTR_UNDEFINED = 0,
|
112
|
+
LLAMA_TOKEN_ATTR_UNKNOWN = 1 << 0,
|
113
|
+
LLAMA_TOKEN_ATTR_UNUSED = 1 << 1,
|
114
|
+
LLAMA_TOKEN_ATTR_NORMAL = 1 << 2,
|
115
|
+
LLAMA_TOKEN_ATTR_CONTROL = 1 << 3, // SPECIAL?
|
116
|
+
LLAMA_TOKEN_ATTR_USER_DEFINED = 1 << 4,
|
117
|
+
LLAMA_TOKEN_ATTR_BYTE = 1 << 5,
|
118
|
+
LLAMA_TOKEN_ATTR_NORMALIZED = 1 << 6,
|
119
|
+
LLAMA_TOKEN_ATTR_LSTRIP = 1 << 7,
|
120
|
+
LLAMA_TOKEN_ATTR_RSTRIP = 1 << 8,
|
121
|
+
LLAMA_TOKEN_ATTR_SINGLE_WORD = 1 << 9,
|
122
|
+
};
|
123
|
+
|
110
124
|
// model file types
|
111
125
|
enum llama_ftype {
|
112
126
|
LLAMA_FTYPE_ALL_F32 = 0,
|
@@ -821,7 +835,7 @@ extern "C" {
|
|
821
835
|
|
822
836
|
LLAMA_API float llama_token_get_score(const struct llama_model * model, llama_token token);
|
823
837
|
|
824
|
-
LLAMA_API enum
|
838
|
+
LLAMA_API enum llama_token_attr llama_token_get_attr(const struct llama_model * model, llama_token token);
|
825
839
|
|
826
840
|
// Check if the token is supposed to end generation (end-of-generation, eg. EOS, EOT, etc.)
|
827
841
|
LLAMA_API bool llama_token_is_eog(const struct llama_model * model, llama_token token);
|
@@ -1042,49 +1056,9 @@ extern "C" {
|
|
1042
1056
|
llama_token token);
|
1043
1057
|
|
1044
1058
|
//
|
1045
|
-
//
|
1059
|
+
// Model split
|
1046
1060
|
//
|
1047
1061
|
|
1048
|
-
struct llama_beam_view {
|
1049
|
-
const llama_token * tokens;
|
1050
|
-
|
1051
|
-
size_t n_tokens;
|
1052
|
-
float p; // Cumulative beam probability (renormalized relative to all beams)
|
1053
|
-
bool eob; // Callback should set this to true when a beam is at end-of-beam.
|
1054
|
-
};
|
1055
|
-
|
1056
|
-
// Passed to beam_search_callback function.
|
1057
|
-
// Whenever 0 < common_prefix_length, this number of tokens should be copied from any of the beams
|
1058
|
-
// (e.g. beams[0]) as they will be removed (shifted) from all beams in all subsequent callbacks.
|
1059
|
-
// These pointers are valid only during the synchronous callback, so should not be saved.
|
1060
|
-
struct llama_beams_state {
|
1061
|
-
struct llama_beam_view * beam_views;
|
1062
|
-
|
1063
|
-
size_t n_beams; // Number of elements in beam_views[].
|
1064
|
-
size_t common_prefix_length; // Current max length of prefix tokens shared by all beams.
|
1065
|
-
bool last_call; // True iff this is the last callback invocation.
|
1066
|
-
};
|
1067
|
-
|
1068
|
-
// Type of pointer to the beam_search_callback function.
|
1069
|
-
// void* callback_data is any custom data passed to llama_beam_search, that is subsequently
|
1070
|
-
// passed back to beam_search_callback. This avoids having to use global variables in the callback.
|
1071
|
-
typedef void (*llama_beam_search_callback_fn_t)(void * callback_data, struct llama_beams_state);
|
1072
|
-
|
1073
|
-
/// @details Deterministically returns entire sentence constructed by a beam search.
|
1074
|
-
/// @param ctx Pointer to the llama_context.
|
1075
|
-
/// @param callback Invoked for each iteration of the beam_search loop, passing in beams_state.
|
1076
|
-
/// @param callback_data A pointer that is simply passed back to callback.
|
1077
|
-
/// @param n_beams Number of beams to use.
|
1078
|
-
/// @param n_past Number of tokens already evaluated.
|
1079
|
-
/// @param n_predict Maximum number of tokens to predict. EOS may occur earlier.
|
1080
|
-
LLAMA_API void llama_beam_search(
|
1081
|
-
struct llama_context * ctx,
|
1082
|
-
llama_beam_search_callback_fn_t callback,
|
1083
|
-
void * callback_data,
|
1084
|
-
size_t n_beams,
|
1085
|
-
int32_t n_past,
|
1086
|
-
int32_t n_predict);
|
1087
|
-
|
1088
1062
|
/// @details Build a split GGUF final path for this chunk.
|
1089
1063
|
/// llama_split_path(split_path, sizeof(split_path), "/models/ggml-model-q4_0", 2, 4) => split_path = "/models/ggml-model-q4_0-00002-of-00004.gguf"
|
1090
1064
|
// Returns the split_path length.
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: llama_cpp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.16.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- yoshoku
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-06-
|
11
|
+
date: 2024-06-08 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: llama_cpp.rb provides Ruby bindings for the llama.cpp.
|
14
14
|
email:
|
@@ -45,16 +45,131 @@ files:
|
|
45
45
|
- vendor/tmp/llama.cpp/ggml-common.h
|
46
46
|
- vendor/tmp/llama.cpp/ggml-cuda.cu
|
47
47
|
- vendor/tmp/llama.cpp/ggml-cuda.h
|
48
|
+
- vendor/tmp/llama.cpp/ggml-cuda/acc.cu
|
49
|
+
- vendor/tmp/llama.cpp/ggml-cuda/arange.cu
|
50
|
+
- vendor/tmp/llama.cpp/ggml-cuda/argsort.cu
|
51
|
+
- vendor/tmp/llama.cpp/ggml-cuda/binbcast.cu
|
52
|
+
- vendor/tmp/llama.cpp/ggml-cuda/clamp.cu
|
53
|
+
- vendor/tmp/llama.cpp/ggml-cuda/concat.cu
|
54
|
+
- vendor/tmp/llama.cpp/ggml-cuda/convert.cu
|
55
|
+
- vendor/tmp/llama.cpp/ggml-cuda/cpy.cu
|
56
|
+
- vendor/tmp/llama.cpp/ggml-cuda/diagmask.cu
|
57
|
+
- vendor/tmp/llama.cpp/ggml-cuda/dmmv.cu
|
58
|
+
- vendor/tmp/llama.cpp/ggml-cuda/fattn-tile-f16.cu
|
59
|
+
- vendor/tmp/llama.cpp/ggml-cuda/fattn-tile-f32.cu
|
60
|
+
- vendor/tmp/llama.cpp/ggml-cuda/fattn.cu
|
61
|
+
- vendor/tmp/llama.cpp/ggml-cuda/getrows.cu
|
62
|
+
- vendor/tmp/llama.cpp/ggml-cuda/im2col.cu
|
63
|
+
- vendor/tmp/llama.cpp/ggml-cuda/mmq.cu
|
64
|
+
- vendor/tmp/llama.cpp/ggml-cuda/mmvq.cu
|
65
|
+
- vendor/tmp/llama.cpp/ggml-cuda/norm.cu
|
66
|
+
- vendor/tmp/llama.cpp/ggml-cuda/pad.cu
|
67
|
+
- vendor/tmp/llama.cpp/ggml-cuda/pool2d.cu
|
68
|
+
- vendor/tmp/llama.cpp/ggml-cuda/quantize.cu
|
69
|
+
- vendor/tmp/llama.cpp/ggml-cuda/rope.cu
|
70
|
+
- vendor/tmp/llama.cpp/ggml-cuda/scale.cu
|
71
|
+
- vendor/tmp/llama.cpp/ggml-cuda/softmax.cu
|
72
|
+
- vendor/tmp/llama.cpp/ggml-cuda/sumrows.cu
|
73
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-f16-f16.cu
|
74
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-f16-q4_0.cu
|
75
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-f16-q4_1.cu
|
76
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-f16-q5_0.cu
|
77
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-f16-q5_1.cu
|
78
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-f16-q8_0.cu
|
79
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q4_0-f16.cu
|
80
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q4_0-q4_0.cu
|
81
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q4_0-q4_1.cu
|
82
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q4_0-q5_0.cu
|
83
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q4_0-q5_1.cu
|
84
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q4_0-q8_0.cu
|
85
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q4_1-f16.cu
|
86
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q4_1-q4_0.cu
|
87
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q4_1-q4_1.cu
|
88
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q4_1-q5_0.cu
|
89
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q4_1-q5_1.cu
|
90
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q4_1-q8_0.cu
|
91
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q5_0-f16.cu
|
92
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q5_0-q4_0.cu
|
93
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q5_0-q4_1.cu
|
94
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q5_0-q5_0.cu
|
95
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q5_0-q5_1.cu
|
96
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q5_0-q8_0.cu
|
97
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q5_1-f16.cu
|
98
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q5_1-q4_0.cu
|
99
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q5_1-q4_1.cu
|
100
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q5_1-q5_0.cu
|
101
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q5_1-q5_1.cu
|
102
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q5_1-q8_0.cu
|
103
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q8_0-f16.cu
|
104
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q8_0-q4_0.cu
|
105
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q8_0-q4_1.cu
|
106
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q8_0-q5_0.cu
|
107
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q8_0-q5_1.cu
|
108
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs128-q8_0-q8_0.cu
|
109
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs256-f16-f16.cu
|
110
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs64-f16-f16.cu
|
111
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs64-f16-q4_0.cu
|
112
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs64-f16-q4_1.cu
|
113
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs64-f16-q5_0.cu
|
114
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs64-f16-q5_1.cu
|
115
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f16-instance-hs64-f16-q8_0.cu
|
116
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-f16-f16.cu
|
117
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-f16-q4_0.cu
|
118
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-f16-q4_1.cu
|
119
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-f16-q5_0.cu
|
120
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-f16-q5_1.cu
|
121
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-f16-q8_0.cu
|
122
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q4_0-f16.cu
|
123
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q4_0-q4_0.cu
|
124
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q4_0-q4_1.cu
|
125
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q4_0-q5_0.cu
|
126
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q4_0-q5_1.cu
|
127
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q4_0-q8_0.cu
|
128
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q4_1-f16.cu
|
129
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q4_1-q4_0.cu
|
130
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q4_1-q4_1.cu
|
131
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q4_1-q5_0.cu
|
132
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q4_1-q5_1.cu
|
133
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q4_1-q8_0.cu
|
134
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q5_0-f16.cu
|
135
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q5_0-q4_0.cu
|
136
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q5_0-q4_1.cu
|
137
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q5_0-q5_0.cu
|
138
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q5_0-q5_1.cu
|
139
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q5_0-q8_0.cu
|
140
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q5_1-f16.cu
|
141
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q5_1-q4_0.cu
|
142
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q5_1-q4_1.cu
|
143
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q5_1-q5_0.cu
|
144
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q5_1-q5_1.cu
|
145
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q5_1-q8_0.cu
|
146
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q8_0-f16.cu
|
147
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q8_0-q4_0.cu
|
148
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q8_0-q4_1.cu
|
149
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q8_0-q5_0.cu
|
150
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q8_0-q5_1.cu
|
151
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs128-q8_0-q8_0.cu
|
152
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs256-f16-f16.cu
|
153
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs64-f16-f16.cu
|
154
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs64-f16-q4_0.cu
|
155
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs64-f16-q4_1.cu
|
156
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs64-f16-q5_0.cu
|
157
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs64-f16-q5_1.cu
|
158
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-vec-f32-instance-hs64-f16-q8_0.cu
|
159
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-wmma-f16-instance-kqfloat-cpb16.cu
|
160
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-wmma-f16-instance-kqfloat-cpb32.cu
|
161
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-wmma-f16-instance-kqhalf-cpb16.cu
|
162
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-wmma-f16-instance-kqhalf-cpb32.cu
|
163
|
+
- vendor/tmp/llama.cpp/ggml-cuda/template-instances/fattn-wmma-f16-instance-kqhalf-cpb8.cu
|
164
|
+
- vendor/tmp/llama.cpp/ggml-cuda/tsembd.cu
|
165
|
+
- vendor/tmp/llama.cpp/ggml-cuda/unary.cu
|
166
|
+
- vendor/tmp/llama.cpp/ggml-cuda/upscale.cu
|
48
167
|
- vendor/tmp/llama.cpp/ggml-impl.h
|
49
168
|
- vendor/tmp/llama.cpp/ggml-kompute.cpp
|
50
169
|
- vendor/tmp/llama.cpp/ggml-kompute.h
|
51
170
|
- vendor/tmp/llama.cpp/ggml-metal.h
|
52
171
|
- vendor/tmp/llama.cpp/ggml-metal.m
|
53
172
|
- vendor/tmp/llama.cpp/ggml-metal.metal
|
54
|
-
- vendor/tmp/llama.cpp/ggml-mpi.c
|
55
|
-
- vendor/tmp/llama.cpp/ggml-mpi.h
|
56
|
-
- vendor/tmp/llama.cpp/ggml-opencl.cpp
|
57
|
-
- vendor/tmp/llama.cpp/ggml-opencl.h
|
58
173
|
- vendor/tmp/llama.cpp/ggml-quants.c
|
59
174
|
- vendor/tmp/llama.cpp/ggml-quants.h
|
60
175
|
- vendor/tmp/llama.cpp/ggml-rpc.cpp
|
@@ -1,216 +0,0 @@
|
|
1
|
-
#include "ggml-mpi.h"
|
2
|
-
|
3
|
-
#include "ggml.h"
|
4
|
-
|
5
|
-
#include <mpi.h>
|
6
|
-
|
7
|
-
#include <stdio.h>
|
8
|
-
#include <stdlib.h>
|
9
|
-
|
10
|
-
#define MIN(a, b) ((a) < (b) ? (a) : (b))
|
11
|
-
|
12
|
-
#define UNUSED GGML_UNUSED
|
13
|
-
|
14
|
-
struct ggml_mpi_context {
|
15
|
-
int rank;
|
16
|
-
int size;
|
17
|
-
};
|
18
|
-
|
19
|
-
void ggml_mpi_backend_init(void) {
|
20
|
-
MPI_Init(NULL, NULL);
|
21
|
-
}
|
22
|
-
|
23
|
-
void ggml_mpi_backend_free(void) {
|
24
|
-
MPI_Finalize();
|
25
|
-
}
|
26
|
-
|
27
|
-
struct ggml_mpi_context * ggml_mpi_init(void) {
|
28
|
-
struct ggml_mpi_context * ctx = calloc(1, sizeof(struct ggml_mpi_context));
|
29
|
-
|
30
|
-
MPI_Comm_rank(MPI_COMM_WORLD, &ctx->rank);
|
31
|
-
MPI_Comm_size(MPI_COMM_WORLD, &ctx->size);
|
32
|
-
|
33
|
-
return ctx;
|
34
|
-
}
|
35
|
-
|
36
|
-
void ggml_mpi_free(struct ggml_mpi_context * ctx) {
|
37
|
-
free(ctx);
|
38
|
-
}
|
39
|
-
|
40
|
-
int ggml_mpi_rank(struct ggml_mpi_context * ctx) {
|
41
|
-
return ctx->rank;
|
42
|
-
}
|
43
|
-
|
44
|
-
void ggml_mpi_eval_init(
|
45
|
-
struct ggml_mpi_context * ctx_mpi,
|
46
|
-
int * n_tokens,
|
47
|
-
int * n_past,
|
48
|
-
int * n_threads) {
|
49
|
-
UNUSED(ctx_mpi);
|
50
|
-
|
51
|
-
// synchronize the worker node parameters with the root node
|
52
|
-
MPI_Barrier(MPI_COMM_WORLD);
|
53
|
-
|
54
|
-
MPI_Bcast(n_tokens, 1, MPI_INT, 0, MPI_COMM_WORLD);
|
55
|
-
MPI_Bcast(n_past, 1, MPI_INT, 0, MPI_COMM_WORLD);
|
56
|
-
MPI_Bcast(n_threads, 1, MPI_INT, 0, MPI_COMM_WORLD);
|
57
|
-
}
|
58
|
-
|
59
|
-
static int ggml_graph_get_node_idx(struct ggml_cgraph * gf, const char * name) {
|
60
|
-
struct ggml_tensor * t = ggml_graph_get_tensor(gf, name);
|
61
|
-
if (t == NULL) {
|
62
|
-
fprintf(stderr, "%s: tensor %s not found\n", __func__, name);
|
63
|
-
return -1;
|
64
|
-
}
|
65
|
-
|
66
|
-
for (int i = 0; i < gf->n_nodes; i++) {
|
67
|
-
if (gf->nodes[i] == t) {
|
68
|
-
return i;
|
69
|
-
}
|
70
|
-
}
|
71
|
-
|
72
|
-
fprintf(stderr, "%s: tensor %s not found in graph (should not happen)\n", __func__, name);
|
73
|
-
return -1;
|
74
|
-
}
|
75
|
-
|
76
|
-
static void ggml_mpi_tensor_send(struct ggml_tensor * t, int mpi_rank_dst) {
|
77
|
-
MPI_Datatype mpi_type;
|
78
|
-
|
79
|
-
switch (t->type) {
|
80
|
-
case GGML_TYPE_I32: mpi_type = MPI_INT32_T; break;
|
81
|
-
case GGML_TYPE_F32: mpi_type = MPI_FLOAT; break;
|
82
|
-
default: GGML_ASSERT(false && "not implemented");
|
83
|
-
}
|
84
|
-
|
85
|
-
const int retval = MPI_Send(t->data, ggml_nelements(t), mpi_type, mpi_rank_dst, 0, MPI_COMM_WORLD);
|
86
|
-
GGML_ASSERT(retval == MPI_SUCCESS);
|
87
|
-
}
|
88
|
-
|
89
|
-
static void ggml_mpi_tensor_recv(struct ggml_tensor * t, int mpi_rank_src) {
|
90
|
-
MPI_Datatype mpi_type;
|
91
|
-
|
92
|
-
switch (t->type) {
|
93
|
-
case GGML_TYPE_I32: mpi_type = MPI_INT32_T; break;
|
94
|
-
case GGML_TYPE_F32: mpi_type = MPI_FLOAT; break;
|
95
|
-
default: GGML_ASSERT(false && "not implemented");
|
96
|
-
}
|
97
|
-
|
98
|
-
MPI_Status status; UNUSED(status);
|
99
|
-
|
100
|
-
const int retval = MPI_Recv(t->data, ggml_nelements(t), mpi_type, mpi_rank_src, MPI_ANY_TAG, MPI_COMM_WORLD, &status);
|
101
|
-
GGML_ASSERT(retval == MPI_SUCCESS);
|
102
|
-
}
|
103
|
-
|
104
|
-
// TODO: there are many improvements that can be done to this implementation
|
105
|
-
void ggml_mpi_graph_compute_pre(
|
106
|
-
struct ggml_mpi_context * ctx_mpi,
|
107
|
-
struct ggml_cgraph * gf,
|
108
|
-
int n_layers) {
|
109
|
-
const int mpi_rank = ctx_mpi->rank;
|
110
|
-
const int mpi_size = ctx_mpi->size;
|
111
|
-
|
112
|
-
struct ggml_tensor * inp_tokens = ggml_graph_get_tensor(gf, "inp_tokens");
|
113
|
-
if (inp_tokens == NULL) {
|
114
|
-
fprintf(stderr, "%s: tensor 'inp_tokens' not found\n", __func__);
|
115
|
-
return;
|
116
|
-
}
|
117
|
-
|
118
|
-
struct ggml_tensor * inp0 = ggml_graph_get_tensor(gf, "layer_inp_0");
|
119
|
-
if (inp0 == NULL) {
|
120
|
-
fprintf(stderr, "%s: tensor 'inp0' not found\n", __func__);
|
121
|
-
return;
|
122
|
-
}
|
123
|
-
|
124
|
-
GGML_ASSERT(inp0 == gf->nodes[0]);
|
125
|
-
|
126
|
-
// distribute the compute graph into slices across the MPI nodes
|
127
|
-
//
|
128
|
-
// the main node (0) processes the last layers + the remainder of the compute graph
|
129
|
-
// and is responsible to pass the input tokens to the first node (1)
|
130
|
-
//
|
131
|
-
// node 1: [( 0) * n_per_node, ( 1) * n_per_node)
|
132
|
-
// node 2: [( 1) * n_per_node, ( 2) * n_per_node)
|
133
|
-
// ...
|
134
|
-
// node n-1: [(n-2) * n_per_node, (n-1) * n_per_node)
|
135
|
-
// node 0: [(n-1) * n_per_node, n_nodes)
|
136
|
-
//
|
137
|
-
if (mpi_rank > 0) {
|
138
|
-
if (mpi_rank == 1) {
|
139
|
-
// the first node (1) receives the input tokens from the main node (0)
|
140
|
-
ggml_mpi_tensor_recv(inp_tokens, 0);
|
141
|
-
} else {
|
142
|
-
// recv input data for each node into the "inp0" tensor (i.e. the first node in the compute graph)
|
143
|
-
ggml_mpi_tensor_recv(inp0, mpi_rank - 1);
|
144
|
-
}
|
145
|
-
} else if (mpi_size > 1) {
|
146
|
-
// node 0 sends the input tokens to node 1
|
147
|
-
ggml_mpi_tensor_send(inp_tokens, 1);
|
148
|
-
|
149
|
-
// recv the output data from the last node
|
150
|
-
ggml_mpi_tensor_recv(inp0, mpi_size - 1);
|
151
|
-
}
|
152
|
-
|
153
|
-
{
|
154
|
-
const int n_per_node = (n_layers + (mpi_size - 1)) / mpi_size;
|
155
|
-
|
156
|
-
const int mpi_idx = mpi_rank > 0 ? mpi_rank - 1 : mpi_size - 1;
|
157
|
-
|
158
|
-
const int il0 = (mpi_idx + 0) * n_per_node;
|
159
|
-
const int il1 = MIN(n_layers, (mpi_idx + 1) * n_per_node);
|
160
|
-
|
161
|
-
char name_l0[GGML_MAX_NAME];
|
162
|
-
char name_l1[GGML_MAX_NAME];
|
163
|
-
|
164
|
-
snprintf(name_l0, sizeof(name_l0), "layer_inp_%d", il0);
|
165
|
-
snprintf(name_l1, sizeof(name_l1), "layer_inp_%d", il1);
|
166
|
-
|
167
|
-
const int idx_l0 = ggml_graph_get_node_idx(gf, name_l0);
|
168
|
-
const int idx_l1 = mpi_rank > 0 ? ggml_graph_get_node_idx(gf, name_l1) + 1 : gf->n_nodes;
|
169
|
-
|
170
|
-
if (idx_l0 < 0 || idx_l1 < 0) {
|
171
|
-
fprintf(stderr, "%s: layer input nodes not found\n", __func__);
|
172
|
-
return;
|
173
|
-
}
|
174
|
-
|
175
|
-
// attach the input data to all nodes that need it
|
176
|
-
// TODO: not great - should be able to do this without modifying the compute graph (see next TODO below)
|
177
|
-
for (int i = idx_l0; i < idx_l1; i++) {
|
178
|
-
if (gf->nodes[i]->src[0] == gf->nodes[idx_l0]) {
|
179
|
-
gf->nodes[i]->src[0] = inp0;
|
180
|
-
}
|
181
|
-
if (gf->nodes[i]->src[1] == gf->nodes[idx_l0]) {
|
182
|
-
gf->nodes[i]->src[1] = inp0;
|
183
|
-
}
|
184
|
-
}
|
185
|
-
|
186
|
-
// TODO: instead of rearranging the nodes, we should be able to execute a subset of the compute graph
|
187
|
-
for (int i = 1; i < idx_l1 - idx_l0; i++) {
|
188
|
-
gf->nodes[i] = gf->nodes[idx_l0 + i];
|
189
|
-
gf->grads[i] = gf->grads[idx_l0 + i];
|
190
|
-
}
|
191
|
-
|
192
|
-
// the first node performs the "get_rows" operation, the rest of the nodes get the data from the previous node
|
193
|
-
if (mpi_idx != 0) {
|
194
|
-
gf->nodes[0]->op = GGML_OP_NONE;
|
195
|
-
}
|
196
|
-
|
197
|
-
gf->n_nodes = idx_l1 - idx_l0;
|
198
|
-
|
199
|
-
//fprintf(stderr, "%s: node %d: processing %d nodes [%d, %d)\n", __func__, mpi_rank, gf->n_nodes, il0, il1);
|
200
|
-
}
|
201
|
-
}
|
202
|
-
|
203
|
-
void ggml_mpi_graph_compute_post(
|
204
|
-
struct ggml_mpi_context * ctx_mpi,
|
205
|
-
struct ggml_cgraph * gf,
|
206
|
-
int n_layers) {
|
207
|
-
UNUSED(n_layers);
|
208
|
-
|
209
|
-
const int mpi_rank = ctx_mpi->rank;
|
210
|
-
const int mpi_size = ctx_mpi->size;
|
211
|
-
|
212
|
-
// send the output data to the next node
|
213
|
-
if (mpi_rank > 0) {
|
214
|
-
ggml_mpi_tensor_send(gf->nodes[gf->n_nodes - 1], (mpi_rank + 1) % mpi_size);
|
215
|
-
}
|
216
|
-
}
|
@@ -1,39 +0,0 @@
|
|
1
|
-
#pragma once
|
2
|
-
|
3
|
-
struct ggml_context;
|
4
|
-
struct ggml_tensor;
|
5
|
-
struct ggml_cgraph;
|
6
|
-
|
7
|
-
#ifdef __cplusplus
|
8
|
-
extern "C" {
|
9
|
-
#endif
|
10
|
-
|
11
|
-
struct ggml_mpi_context;
|
12
|
-
|
13
|
-
void ggml_mpi_backend_init(void);
|
14
|
-
void ggml_mpi_backend_free(void);
|
15
|
-
|
16
|
-
struct ggml_mpi_context * ggml_mpi_init(void);
|
17
|
-
void ggml_mpi_free(struct ggml_mpi_context * ctx);
|
18
|
-
|
19
|
-
int ggml_mpi_rank(struct ggml_mpi_context * ctx);
|
20
|
-
|
21
|
-
void ggml_mpi_eval_init(
|
22
|
-
struct ggml_mpi_context * ctx_mpi,
|
23
|
-
int * n_tokens,
|
24
|
-
int * n_past,
|
25
|
-
int * n_threads);
|
26
|
-
|
27
|
-
void ggml_mpi_graph_compute_pre(
|
28
|
-
struct ggml_mpi_context * ctx_mpi,
|
29
|
-
struct ggml_cgraph * gf,
|
30
|
-
int n_layers);
|
31
|
-
|
32
|
-
void ggml_mpi_graph_compute_post(
|
33
|
-
struct ggml_mpi_context * ctx_mpi,
|
34
|
-
struct ggml_cgraph * gf,
|
35
|
-
int n_layers);
|
36
|
-
|
37
|
-
#ifdef __cplusplus
|
38
|
-
}
|
39
|
-
#endif
|