node-llama-cpp 3.3.2 → 3.4.1

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.
Files changed (199) hide show
  1. package/README.md +3 -2
  2. package/dist/bindings/AddonTypes.d.ts +12 -4
  3. package/dist/bindings/Llama.d.ts +9 -0
  4. package/dist/bindings/Llama.js +52 -28
  5. package/dist/bindings/Llama.js.map +1 -1
  6. package/dist/bindings/getLlama.d.ts +2 -1
  7. package/dist/bindings/getLlama.js +19 -9
  8. package/dist/bindings/getLlama.js.map +1 -1
  9. package/dist/bindings/utils/asyncSome.js +2 -0
  10. package/dist/bindings/utils/asyncSome.js.map +1 -1
  11. package/dist/bindings/utils/compileLLamaCpp.d.ts +1 -1
  12. package/dist/bindings/utils/compileLLamaCpp.js +115 -34
  13. package/dist/bindings/utils/compileLLamaCpp.js.map +1 -1
  14. package/dist/bindings/utils/detectAvailableComputeLayers.d.ts +1 -0
  15. package/dist/bindings/utils/detectAvailableComputeLayers.js +4 -4
  16. package/dist/bindings/utils/detectAvailableComputeLayers.js.map +1 -1
  17. package/dist/bindings/utils/detectBuildTools.d.ts +14 -0
  18. package/dist/bindings/utils/detectBuildTools.js +149 -0
  19. package/dist/bindings/utils/detectBuildTools.js.map +1 -0
  20. package/dist/bindings/utils/resolveActualBindingBinaryPath.d.ts +1 -0
  21. package/dist/bindings/utils/resolveActualBindingBinaryPath.js +18 -0
  22. package/dist/bindings/utils/resolveActualBindingBinaryPath.js.map +1 -0
  23. package/dist/bindings/utils/testBindingBinary.d.ts +1 -1
  24. package/dist/bindings/utils/testBindingBinary.js +58 -5
  25. package/dist/bindings/utils/testBindingBinary.js.map +1 -1
  26. package/dist/chatWrappers/AlpacaChatWrapper.d.ts +4 -0
  27. package/dist/chatWrappers/AlpacaChatWrapper.js +4 -0
  28. package/dist/chatWrappers/AlpacaChatWrapper.js.map +1 -1
  29. package/dist/chatWrappers/FalconChatWrapper.d.ts +4 -0
  30. package/dist/chatWrappers/FalconChatWrapper.js +4 -0
  31. package/dist/chatWrappers/FalconChatWrapper.js.map +1 -1
  32. package/dist/chatWrappers/GeneralChatWrapper.d.ts +4 -0
  33. package/dist/chatWrappers/GeneralChatWrapper.js +4 -0
  34. package/dist/chatWrappers/GeneralChatWrapper.js.map +1 -1
  35. package/dist/chatWrappers/utils/resolveChatWrapper.d.ts +2 -0
  36. package/dist/chatWrappers/utils/resolveChatWrapper.js +8 -27
  37. package/dist/chatWrappers/utils/resolveChatWrapper.js.map +1 -1
  38. package/dist/cli/commands/ChatCommand.d.ts +4 -0
  39. package/dist/cli/commands/ChatCommand.js +158 -13
  40. package/dist/cli/commands/ChatCommand.js.map +1 -1
  41. package/dist/cli/commands/CompleteCommand.d.ts +4 -0
  42. package/dist/cli/commands/CompleteCommand.js +143 -10
  43. package/dist/cli/commands/CompleteCommand.js.map +1 -1
  44. package/dist/cli/commands/DebugCommand.js +5 -5
  45. package/dist/cli/commands/DebugCommand.js.map +1 -1
  46. package/dist/cli/commands/InfillCommand.d.ts +4 -0
  47. package/dist/cli/commands/InfillCommand.js +142 -10
  48. package/dist/cli/commands/InfillCommand.js.map +1 -1
  49. package/dist/cli/commands/OnPostInstallCommand.js +12 -2
  50. package/dist/cli/commands/OnPostInstallCommand.js.map +1 -1
  51. package/dist/cli/commands/inspect/commands/InspectEstimateCommand.d.ts +1 -0
  52. package/dist/cli/commands/inspect/commands/InspectEstimateCommand.js +14 -7
  53. package/dist/cli/commands/inspect/commands/InspectEstimateCommand.js.map +1 -1
  54. package/dist/cli/commands/inspect/commands/InspectGgufCommand.js +13 -3
  55. package/dist/cli/commands/inspect/commands/InspectGgufCommand.js.map +1 -1
  56. package/dist/cli/commands/inspect/commands/InspectGpuCommand.js +20 -10
  57. package/dist/cli/commands/inspect/commands/InspectGpuCommand.js.map +1 -1
  58. package/dist/cli/commands/inspect/commands/InspectMeasureCommand.d.ts +2 -0
  59. package/dist/cli/commands/inspect/commands/InspectMeasureCommand.js +234 -77
  60. package/dist/cli/commands/inspect/commands/InspectMeasureCommand.js.map +1 -1
  61. package/dist/cli/recommendedModels.js +11 -1
  62. package/dist/cli/recommendedModels.js.map +1 -1
  63. package/dist/cli/utils/ConsoleTable.d.ts +1 -0
  64. package/dist/cli/utils/ConsoleTable.js +5 -1
  65. package/dist/cli/utils/ConsoleTable.js.map +1 -1
  66. package/dist/cli/utils/interactivelyAskForModel.d.ts +2 -1
  67. package/dist/cli/utils/interactivelyAskForModel.js +16 -13
  68. package/dist/cli/utils/interactivelyAskForModel.js.map +1 -1
  69. package/dist/cli/utils/isRunningUnderRosetta.d.ts +1 -0
  70. package/dist/cli/utils/isRunningUnderRosetta.js +20 -0
  71. package/dist/cli/utils/isRunningUnderRosetta.js.map +1 -0
  72. package/dist/cli/utils/printCommonInfoLines.d.ts +4 -2
  73. package/dist/cli/utils/printCommonInfoLines.js +67 -5
  74. package/dist/cli/utils/printCommonInfoLines.js.map +1 -1
  75. package/dist/cli/utils/resolveCommandGgufPath.d.ts +3 -1
  76. package/dist/cli/utils/resolveCommandGgufPath.js +6 -5
  77. package/dist/cli/utils/resolveCommandGgufPath.js.map +1 -1
  78. package/dist/cli/utils/toBytes.d.ts +1 -0
  79. package/dist/cli/utils/toBytes.js +5 -0
  80. package/dist/cli/utils/toBytes.js.map +1 -0
  81. package/dist/config.d.ts +3 -0
  82. package/dist/config.js +3 -0
  83. package/dist/config.js.map +1 -1
  84. package/dist/evaluator/LlamaChat/LlamaChat.d.ts +12 -3
  85. package/dist/evaluator/LlamaChat/LlamaChat.js +21 -7
  86. package/dist/evaluator/LlamaChat/LlamaChat.js.map +1 -1
  87. package/dist/evaluator/LlamaChatSession/LlamaChatSession.d.ts +6 -2
  88. package/dist/evaluator/LlamaChatSession/LlamaChatSession.js +3 -0
  89. package/dist/evaluator/LlamaChatSession/LlamaChatSession.js.map +1 -1
  90. package/dist/evaluator/LlamaCompletion.d.ts +3 -0
  91. package/dist/evaluator/LlamaCompletion.js +5 -0
  92. package/dist/evaluator/LlamaCompletion.js.map +1 -1
  93. package/dist/evaluator/LlamaContext/LlamaContext.d.ts +81 -38
  94. package/dist/evaluator/LlamaContext/LlamaContext.js +678 -132
  95. package/dist/evaluator/LlamaContext/LlamaContext.js.map +1 -1
  96. package/dist/evaluator/LlamaContext/TokenPredictor.d.ts +55 -0
  97. package/dist/evaluator/LlamaContext/TokenPredictor.js +20 -0
  98. package/dist/evaluator/LlamaContext/TokenPredictor.js.map +1 -0
  99. package/dist/evaluator/LlamaContext/tokenPredictors/DraftSequenceTokenPredictor.d.ts +56 -0
  100. package/dist/evaluator/LlamaContext/tokenPredictors/DraftSequenceTokenPredictor.js +266 -0
  101. package/dist/evaluator/LlamaContext/tokenPredictors/DraftSequenceTokenPredictor.js.map +1 -0
  102. package/dist/evaluator/LlamaContext/tokenPredictors/InputLookupTokenPredictor.d.ts +58 -0
  103. package/dist/evaluator/LlamaContext/tokenPredictors/InputLookupTokenPredictor.js +138 -0
  104. package/dist/evaluator/LlamaContext/tokenPredictors/InputLookupTokenPredictor.js.map +1 -0
  105. package/dist/evaluator/LlamaContext/types.d.ts +198 -5
  106. package/dist/evaluator/LlamaEmbeddingContext.d.ts +3 -0
  107. package/dist/evaluator/LlamaEmbeddingContext.js +3 -0
  108. package/dist/evaluator/LlamaEmbeddingContext.js.map +1 -1
  109. package/dist/evaluator/LlamaGrammar.d.ts +7 -1
  110. package/dist/evaluator/LlamaGrammar.js +6 -0
  111. package/dist/evaluator/LlamaGrammar.js.map +1 -1
  112. package/dist/evaluator/LlamaGrammarEvaluationState.d.ts +4 -4
  113. package/dist/evaluator/LlamaGrammarEvaluationState.js +16 -8
  114. package/dist/evaluator/LlamaGrammarEvaluationState.js.map +1 -1
  115. package/dist/evaluator/LlamaJsonSchemaGrammar.d.ts +5 -0
  116. package/dist/evaluator/LlamaJsonSchemaGrammar.js +7 -0
  117. package/dist/evaluator/LlamaJsonSchemaGrammar.js.map +1 -1
  118. package/dist/evaluator/LlamaModel/LlamaModel.d.ts +19 -11
  119. package/dist/evaluator/LlamaModel/LlamaModel.js +23 -29
  120. package/dist/evaluator/LlamaModel/LlamaModel.js.map +1 -1
  121. package/dist/evaluator/LlamaRankingContext.d.ts +76 -0
  122. package/dist/evaluator/LlamaRankingContext.js +158 -0
  123. package/dist/evaluator/LlamaRankingContext.js.map +1 -0
  124. package/dist/evaluator/TokenBias.d.ts +3 -0
  125. package/dist/evaluator/TokenBias.js +3 -0
  126. package/dist/evaluator/TokenBias.js.map +1 -1
  127. package/dist/evaluator/utils/chunkDocument.d.ts +86 -0
  128. package/dist/evaluator/utils/chunkDocument.js +212 -0
  129. package/dist/evaluator/utils/chunkDocument.js.map +1 -0
  130. package/dist/gguf/insights/GgufInsights.d.ts +3 -1
  131. package/dist/gguf/insights/GgufInsights.js +114 -8
  132. package/dist/gguf/insights/GgufInsights.js.map +1 -1
  133. package/dist/gguf/insights/GgufInsightsConfigurationResolver.d.ts +6 -3
  134. package/dist/gguf/insights/GgufInsightsConfigurationResolver.js +11 -7
  135. package/dist/gguf/insights/GgufInsightsConfigurationResolver.js.map +1 -1
  136. package/dist/gguf/insights/utils/resolveModelGpuLayersOption.d.ts +2 -1
  137. package/dist/gguf/insights/utils/resolveModelGpuLayersOption.js +13 -7
  138. package/dist/gguf/insights/utils/resolveModelGpuLayersOption.js.map +1 -1
  139. package/dist/gguf/parser/GgufV2Parser.js +29 -8
  140. package/dist/gguf/parser/GgufV2Parser.js.map +1 -1
  141. package/dist/gguf/parser/parseGguf.js +11 -11
  142. package/dist/gguf/parser/parseGguf.js.map +1 -1
  143. package/dist/gguf/readGgufFileInfo.js +8 -3
  144. package/dist/gguf/readGgufFileInfo.js.map +1 -1
  145. package/dist/gguf/types/GgufFileInfoTypes.d.ts +1 -0
  146. package/dist/gguf/types/GgufMetadataTypes.d.ts +9 -9
  147. package/dist/gguf/types/GgufMetadataTypes.js +1 -1
  148. package/dist/gguf/types/GgufMetadataTypes.js.map +1 -1
  149. package/dist/gguf/types/GgufTensorInfoTypes.d.ts +13 -0
  150. package/dist/gguf/types/GgufTensorInfoTypes.js.map +1 -1
  151. package/dist/index.d.ts +7 -2
  152. package/dist/index.js +6 -1
  153. package/dist/index.js.map +1 -1
  154. package/dist/tsconfig.tsbuildinfo +1 -1
  155. package/dist/utils/LlamaText.d.ts +4 -1
  156. package/dist/utils/LlamaText.js +4 -1
  157. package/dist/utils/LlamaText.js.map +1 -1
  158. package/dist/utils/cmake.js +23 -0
  159. package/dist/utils/cmake.js.map +1 -1
  160. package/dist/utils/pushAll.d.ts +1 -1
  161. package/dist/utils/pushAll.js.map +1 -1
  162. package/dist/utils/tokenizerUtils.js +1 -1
  163. package/dist/utils/utilTypes.d.ts +5 -0
  164. package/llama/CMakeLists.txt +25 -8
  165. package/llama/addon/AddonContext.cpp +196 -22
  166. package/llama/addon/AddonContext.h +1 -0
  167. package/llama/addon/AddonGrammar.cpp +1 -4
  168. package/llama/addon/AddonGrammarEvaluationState.cpp +16 -5
  169. package/llama/addon/AddonModel.cpp +31 -39
  170. package/llama/addon/AddonModel.h +1 -1
  171. package/llama/addon/AddonModelLora.cpp +2 -2
  172. package/llama/addon/AddonModelLora.h +1 -1
  173. package/llama/addon/AddonSampler.cpp +7 -12
  174. package/llama/addon/addon.cpp +26 -7
  175. package/llama/addon/globals/getGpuInfo.cpp +30 -5
  176. package/llama/addon/globals/getGpuInfo.h +6 -1
  177. package/llama/addon/globals/getMemoryInfo.cpp +63 -0
  178. package/llama/addon/globals/getMemoryInfo.h +4 -0
  179. package/llama/binariesGithubRelease.json +1 -1
  180. package/llama/cmake/win32.ensureNinjaPath.cmake +68 -0
  181. package/llama/cmake/win32.ensureNodeLib.cmake +34 -0
  182. package/llama/cmake/win32.llvmApplyGnuModeAdaptations.cmake +12 -0
  183. package/llama/cmake/win32.llvmEnsureCmakeAr.cmake +37 -0
  184. package/llama/cmake/win32.llvmUseGnuModeCompilers.cmake +87 -0
  185. package/llama/cmake/win32.programFilesPaths.cmake +35 -0
  186. package/llama/gitRelease.bundle +0 -0
  187. package/llama/gpuInfo/vulkan-gpu-info.cpp +29 -2
  188. package/llama/gpuInfo/vulkan-gpu-info.h +1 -0
  189. package/llama/llama.cpp.info.json +1 -1
  190. package/llama/profiles/llvm.win32.host-arm64.target-arm64.cmake +14 -0
  191. package/llama/profiles/llvm.win32.host-x64.target-arm64.cmake +14 -0
  192. package/llama/profiles/llvm.win32.host-x64.target-x64.cmake +14 -0
  193. package/llama/toolchains/llvm.win32.host-x64.target-x64.cmake +20 -0
  194. package/llama/toolchains/win32.host-arm64.target-arm64.cmake +21 -0
  195. package/llama/toolchains/win32.host-x64.target-arm64.cmake +14 -34
  196. package/package.json +47 -44
  197. package/templates/README.md +1 -1
  198. package/templates/packed/electron-typescript-react.json +1 -1
  199. package/templates/packed/node-typescript.json +1 -1
@@ -0,0 +1,86 @@
1
+ import { LlamaContextSequence } from "../LlamaContext/LlamaContext.js";
2
+ import { Token, Tokenizer } from "../../types.js";
3
+ import { LlamaText } from "../../utils/LlamaText.js";
4
+ /**
5
+ * Chunk the given document using a given context sequence to use the chunks for RAG (Retrieval Augmented Generation) embeddings.
6
+ *
7
+ * This chunking method is fast and efficient, and utilizes as much parallelization as your hardware allows.
8
+ *
9
+ * Based on https://github.com/ZeroEntropy-AI/llama-chunk
10
+ * @experimental - this API is experimental and may change or be removed in subsequent releases
11
+ * @hidden
12
+ */
13
+ export declare function experimentalChunkDocument(options: {
14
+ contextSequence: LlamaContextSequence;
15
+ document: string;
16
+ /**
17
+ * The tokens to use as separators for chunking the document.
18
+ * Passed to the `getSystemPrompt` function to generate the prompt.
19
+ */
20
+ separatorTokens?: Token[];
21
+ getSystemPrompt?(options: {
22
+ separatorTokens: Token[];
23
+ tokenizer: Tokenizer;
24
+ maxChunkSize?: number;
25
+ }): LlamaText | string;
26
+ /**
27
+ * Maximum number of tokens to allow in a chunk.
28
+ *
29
+ * As a chunk size approaches this limit, the higher the probability of a separator token being inserted.
30
+ *
31
+ * Set to `0` to disable this mechanism.
32
+ *
33
+ * Defaults to `500`.
34
+ */
35
+ maxChunkSize?: number;
36
+ /**
37
+ * The alignment curve for the maximum chunk size mechanism.
38
+ *
39
+ * Adjust the value based on the behavior of the model.
40
+ *
41
+ * Play around with values between `1` and `4` to see what works best for you.
42
+ *
43
+ * Set to `1` to disable this mechanism.
44
+ *
45
+ * Defaults to `4`.
46
+ */
47
+ maxChunkSizeAlignmentCurve?: number;
48
+ /**
49
+ * Append the next few tokens (up to `maxTokens`) to the current chunk if their trimmed content
50
+ * matches any of the texts in `trimmedTexts`
51
+ */
52
+ syntaxAlignment?: {
53
+ /**
54
+ * The maximum number of tokens to append to the current chunk if their trimmed content matches any of the texts in `trimmedTexts`.
55
+ *
56
+ * Default: `4`
57
+ */
58
+ maxTokens?: number;
59
+ /**
60
+ * The trimmed texts to match for, to append the token to the current chunk.
61
+ *
62
+ * Default: `["", ".", ";"]`
63
+ */
64
+ trimmedTexts?: string[];
65
+ };
66
+ /**
67
+ * The number of tokens to skip before starting to use the generated separator tokens to split the document.
68
+ */
69
+ skipFirstTokens?: number;
70
+ /**
71
+ * The number of recent probabilities to keep in the trail for normalization.
72
+ *
73
+ * Adjust the value based on the behavior of the model.
74
+ *
75
+ * Defaults to `200`.
76
+ */
77
+ normalizationTrailSize?: number;
78
+ /**
79
+ * Called when a chunk is generated with the tokens that make up the chunk and the separator token used to split the chunk.
80
+ */
81
+ onChunkTokens?(chunkTokens: Token[], usedSeparatorToken: Token): void;
82
+ /**
83
+ * Called when a chunk is generated with the text that makes up the chunk and the separator token used to split the chunk.
84
+ */
85
+ onChunkText?(chunkText: string, usedSeparatorToken: Token): void;
86
+ }): Promise<string[]>;
@@ -0,0 +1,212 @@
1
+ import { LlamaText, SpecialTokensText } from "../../utils/LlamaText.js";
2
+ import { resolveChatWrapper } from "../../chatWrappers/utils/resolveChatWrapper.js";
3
+ import { safeEventCallback } from "../../utils/safeEventCallback.js";
4
+ import { maxRecentDetokenizerTokens } from "../../consts.js";
5
+ /**
6
+ * Chunk the given document using a given context sequence to use the chunks for RAG (Retrieval Augmented Generation) embeddings.
7
+ *
8
+ * This chunking method is fast and efficient, and utilizes as much parallelization as your hardware allows.
9
+ *
10
+ * Based on https://github.com/ZeroEntropy-AI/llama-chunk
11
+ * @experimental - this API is experimental and may change or be removed in subsequent releases
12
+ * @hidden
13
+ */
14
+ export async function experimentalChunkDocument(options) {
15
+ const { contextSequence, document, separatorTokens = findAppropriateSeparatorTokens(contextSequence.model), getSystemPrompt = getDefaultPrompt, maxChunkSize = 500, maxChunkSizeAlignmentCurve = 4, syntaxAlignment: { maxTokens: maxSyntaxAlignment = 4, trimmedTexts: syntaxAlignmentTrimmedTexts = ["", ".", ";"] } = {}, skipFirstTokens = 3, normalizationTrailSize = 100 } = options;
16
+ const onChunkTokens = safeEventCallback(options.onChunkTokens);
17
+ const onChunkText = safeEventCallback(options.onChunkText);
18
+ if (separatorTokens.length === 0)
19
+ throw new Error("Separator tokens must be provided");
20
+ const chatHistory = [{
21
+ type: "system",
22
+ text: LlamaText(getSystemPrompt({
23
+ separatorTokens,
24
+ tokenizer: contextSequence.model.tokenizer,
25
+ maxChunkSize: maxChunkSize <= 0
26
+ ? undefined
27
+ : maxChunkSize
28
+ })).toJSON()
29
+ }, {
30
+ type: "user",
31
+ text: document
32
+ }, {
33
+ type: "model",
34
+ response: [""]
35
+ }];
36
+ const chatWrapper = resolveChatWrapper(contextSequence.model);
37
+ const { contextText } = chatWrapper.generateContextState({ chatHistory });
38
+ const initialContextTokens = contextText.tokenize(contextSequence.model.tokenizer, "trimLeadingSpace");
39
+ const documentTokens = contextSequence.model.tokenize(document, false, "trimLeadingSpace");
40
+ const syntaxAlignmentTrimmedTextsSet = new Set(syntaxAlignmentTrimmedTexts);
41
+ if (initialContextTokens.length + documentTokens.length > contextSequence.context.contextSize)
42
+ throw new Error("The context size is too small to chunk the given document");
43
+ const evaluateInput = initialContextTokens.slice();
44
+ for (let i = 0; i < documentTokens.length - 1; i++) {
45
+ const token = documentTokens[i];
46
+ evaluateInput.push([token, {
47
+ generateNext: {
48
+ probabilities: true
49
+ }
50
+ }]);
51
+ }
52
+ let weight = 1;
53
+ const recentProbabilitiesTrail = [];
54
+ let chunkStartIndex = 0;
55
+ let lastPushedSeparatorIndex = 0;
56
+ const chunks = [];
57
+ const res = [];
58
+ function pushSeparatorIndex(separateIndex, separatorToken) {
59
+ lastPushedSeparatorIndex = separateIndex;
60
+ if (separateIndex <= chunkStartIndex)
61
+ return;
62
+ let endIndex = separateIndex;
63
+ for (let i = 0; i < maxSyntaxAlignment && documentTokens[endIndex + i] != null; i++) {
64
+ const text = contextSequence.model.detokenize([documentTokens[endIndex + i]]);
65
+ if (!syntaxAlignmentTrimmedTextsSet.has(text.trim()))
66
+ break;
67
+ endIndex++;
68
+ }
69
+ const chunk = documentTokens.slice(chunkStartIndex, endIndex);
70
+ const text = contextSequence.model.detokenize(chunk, false, documentTokens.slice(chunkStartIndex - maxRecentDetokenizerTokens, chunkStartIndex));
71
+ chunks.push(chunk);
72
+ chunkStartIndex = endIndex;
73
+ onChunkTokens?.(chunk, separatorToken);
74
+ onChunkText?.(text, separatorToken);
75
+ res.push(text);
76
+ }
77
+ await contextSequence.controlledEvaluate(evaluateInput, {
78
+ onTokenResult(inputTokenIndex, result) {
79
+ const i = inputTokenIndex - initialContextTokens.length;
80
+ const nextProbabilities = result?.next?.probabilities;
81
+ const nextDocumentToken = documentTokens[i + 1];
82
+ if (nextProbabilities == null)
83
+ throw new Error("received no result for token " + i);
84
+ const topProbabilityScore = nextProbabilities.entries()
85
+ .next().value?.[1];
86
+ const [usedSeparatorToken, separatorProbability] = separatorTokens
87
+ .filter((token) => token !== nextDocumentToken) // avoid splitting on document tokens
88
+ .map((token) => [token, nextProbabilities.get(token)])
89
+ .filter((pair) => pair[1] != null)
90
+ .reduce(([tokenA, probabilityA], [tokenB, probabilityB]) => {
91
+ if (probabilityA >= probabilityB)
92
+ return [tokenA, probabilityA];
93
+ return [tokenB, probabilityB];
94
+ }, [separatorTokens[0], 0]);
95
+ if (topProbabilityScore == null || separatorProbability == null || separatorProbability === 0)
96
+ return;
97
+ // console.log(
98
+ // i, contextSequence.model.detokenize([documentTokens[i]!]),
99
+ // Array.from(nextProbabilities.entries()).slice(0, 5)
100
+ // .map(([token, probability]) => [contextSequence.model.detokenize([token], true), probability])
101
+ // );
102
+ if (separatorProbability >= topProbabilityScore)
103
+ pushSeparatorIndex(i + 1, usedSeparatorToken);
104
+ else if (i > skipFirstTokens) {
105
+ const adjustedProbability = separatorProbability + (weight * (1 - separatorProbability));
106
+ let maxChunkSizeAlignment = 0;
107
+ if (maxChunkSize !== 0 && adjustedProbability < topProbabilityScore) {
108
+ const leftProbability = 1 - adjustedProbability;
109
+ const currentChunkSize = Math.max(0, 1 + i - chunkStartIndex);
110
+ maxChunkSizeAlignment = currentChunkSize === 0
111
+ ? 0
112
+ : adjustExponential(leftProbability * Math.min(1, currentChunkSize / maxChunkSize), maxChunkSizeAlignmentCurve <= 0
113
+ ? 1
114
+ : maxChunkSizeAlignmentCurve, 0.8);
115
+ if (currentChunkSize === maxChunkSize)
116
+ maxChunkSizeAlignment = 1;
117
+ }
118
+ if (adjustedProbability + maxChunkSizeAlignment >= topProbabilityScore && adjustedProbability > 0) {
119
+ pushSeparatorIndex(i + 1, usedSeparatorToken);
120
+ // update the weight of the current token with the adjusted probability in the trail
121
+ if (recentProbabilitiesTrail.length > 1) {
122
+ weight /= recentProbabilitiesTrail.pop();
123
+ recentProbabilitiesTrail.push(adjustedProbability);
124
+ weight *= adjustedProbability;
125
+ }
126
+ }
127
+ }
128
+ const nextDocumentTokenProbability = nextDocumentToken == null
129
+ ? undefined
130
+ : nextProbabilities.get(nextDocumentToken);
131
+ if (nextDocumentTokenProbability != null && nextDocumentTokenProbability > 0) {
132
+ recentProbabilitiesTrail.push(nextDocumentTokenProbability);
133
+ weight *= nextDocumentTokenProbability;
134
+ if (recentProbabilitiesTrail.length > normalizationTrailSize)
135
+ weight /= recentProbabilitiesTrail.shift();
136
+ }
137
+ }
138
+ });
139
+ if (lastPushedSeparatorIndex !== documentTokens.length)
140
+ pushSeparatorIndex(documentTokens.length, separatorTokens[0]);
141
+ return res;
142
+ }
143
+ const idealTokenTexts = [
144
+ "\u6bb5", // means "section" in Chinese (according to https://github.com/ZeroEntropy-AI/llama-chunk)
145
+ "\u987f", // means "pause" in Chinese (according to Llama 3.1 8B and Qwen 2.5 3B)
146
+ "\u00a1", // inverted exclamation mark
147
+ "|",
148
+ "_"
149
+ ];
150
+ function findAppropriateSeparatorTokens(model, maxTokens = 2) {
151
+ const idealTextsSet = new Set(idealTokenTexts);
152
+ const foundTokens = [];
153
+ for (const token of model.iterateAllTokens()) {
154
+ if (model.isSpecialToken(token))
155
+ continue;
156
+ const text = model.detokenize([token]);
157
+ const trimmedText = text.trim();
158
+ if (idealTextsSet.has(trimmedText)) {
159
+ const textIndex = idealTokenTexts.findIndex((idealText) => idealText === trimmedText);
160
+ if (foundTokens[textIndex] == null || text === trimmedText)
161
+ foundTokens[textIndex] = token;
162
+ }
163
+ }
164
+ const res = [];
165
+ for (let i = 0; i < idealTokenTexts.length; i++) {
166
+ const token = foundTokens[i];
167
+ if (token != null)
168
+ res.push(token);
169
+ }
170
+ return res.slice(0, maxTokens);
171
+ }
172
+ function getDefaultPrompt({ separatorTokens, tokenizer, maxChunkSize = 500 }) {
173
+ if (separatorTokens.length === 0)
174
+ throw new Error("No separator tokens provided");
175
+ else if (separatorTokens.length > 2)
176
+ throw new Error("Maximum of 2 separator tokens are supported");
177
+ return LlamaText.joinValues("\n", [
178
+ 'Your job is to act as a "Chunker", for usage in RAG pipelines. The user will provide a long document.',
179
+ "",
180
+ "You should repeat the exact same message verbatim. EXCEPT, you should insert split tokens throughout the document.",
181
+ "",
182
+ "# Instructions",
183
+ LlamaText([
184
+ "- For splits, use `",
185
+ new SpecialTokensText(tokenizer.detokenize([separatorTokens[0]])),
186
+ '` as the "big split token" separator.'
187
+ ]),
188
+ separatorTokens.length > 1 && (LlamaText([
189
+ "- For small splits, use `",
190
+ new SpecialTokensText(tokenizer.detokenize([separatorTokens[1]])),
191
+ '` as the "big split token" separator.'
192
+ ])),
193
+ "- For example, in text document, small splits will be per-sentence, and big splits will be per-section. Do a big split BEFORE the header that defines a section.",
194
+ LlamaText([
195
+ "- You may get a user message that is unstructured or not structured cleanly. " +
196
+ "Still try to split that input as best as you can, even if it means doing a small split every ", Math.ceil(maxChunkSize / 5),
197
+ " characters, and a big split every ", Math.floor(maxChunkSize), " characters."
198
+ ]),
199
+ "- You should prefer to wait until the end of a newline or period to break, instead of breaking one or two tokens before that. If there are no newlines or periods, pick some other reasonable breakpoints instead.",
200
+ "- Your input could be anything - code, HTML, markdown, etc. You MUST try to output SOME split regardless of the input. Pick something reasonable! E.g. for nodejs, do a small split after every line or code block, and a big split after every function or class definitions.",
201
+ '- For HTML, add a small split token after every closing tag and sentence. Add a big split token after every closing tag of an "important" tag.',
202
+ "- Please note that you will sometimes not see your own splits in your previous output, that's OK, you MUST continue to try to output split tokens"
203
+ ].filter((x) => x !== false));
204
+ }
205
+ function adjustExponential(value, exponent, weight) {
206
+ if (value < 0)
207
+ return 0;
208
+ else if (value > 1)
209
+ return 1;
210
+ return (value * (1 - weight)) + (weight * Math.pow(value, exponent));
211
+ }
212
+ //# sourceMappingURL=chunkDocument.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunkDocument.js","sourceRoot":"","sources":["../../../src/evaluator/utils/chunkDocument.ts"],"names":[],"mappings":"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"}
@@ -25,8 +25,10 @@ export declare class GgufInsights {
25
25
  get hasEncoder(): boolean;
26
26
  get hasDecoder(): boolean;
27
27
  get isRecurrent(): boolean;
28
- estimateModelResourceRequirements({ gpuLayers }: {
28
+ estimateModelResourceRequirements({ gpuLayers, useMmap, gpuSupportsMmap }: {
29
29
  gpuLayers: number;
30
+ useMmap?: boolean;
31
+ gpuSupportsMmap?: boolean;
30
32
  }): GgufInsightsResourceRequirements;
31
33
  /**
32
34
  * Estimates the memory required to create a context of the given parameters based on the implementation details of `llama.cpp`.
@@ -12,7 +12,7 @@ export class GgufInsights {
12
12
  constructor(ggufFileInfo, llama) {
13
13
  this._llama = llama;
14
14
  this._ggufFileInfo = ggufFileInfo;
15
- this._modelSize = calculateTensorsSize(ggufFileInfo.fullTensorInfo ?? [], llama);
15
+ this._modelSize = calculateTensorsSize(ggufFileInfo.fullTensorInfo ?? [], llama, true, true);
16
16
  this._configurationResolver = GgufInsightsConfigurationResolver._create(this);
17
17
  }
18
18
  /**
@@ -97,11 +97,11 @@ export class GgufInsights {
97
97
  }
98
98
  return false;
99
99
  }
100
- estimateModelResourceRequirements({ gpuLayers }) {
100
+ estimateModelResourceRequirements({ gpuLayers, useMmap = this._llama.supportsMmap, gpuSupportsMmap = this._llama.gpuSupportsMmap }) {
101
101
  const { cpu, gpu } = this._getTensorResourceSplit(gpuLayers);
102
102
  return {
103
- cpuRam: calculateTensorsSize(cpu, this._llama),
104
- gpuVram: calculateTensorsSize(gpu, this._llama)
103
+ cpuRam: calculateTensorsSize(cpu, this._llama, false),
104
+ gpuVram: calculateTensorsSize(gpu, this._llama, useMmap && gpuSupportsMmap)
105
105
  };
106
106
  }
107
107
  /**
@@ -265,6 +265,7 @@ export class GgufInsights {
265
265
  */
266
266
  _getTensorResourceSplit(gpuLayers) {
267
267
  const tensorInfo = this._ggufFileInfo.fullTensorInfo ?? [];
268
+ const architecture = this._ggufFileInfo.metadata?.general?.architecture;
268
269
  if (gpuLayers === 0) {
269
270
  return {
270
271
  cpu: tensorInfo,
@@ -275,10 +276,33 @@ export class GgufInsights {
275
276
  const startGpuLayer = Math.max(0, fileLayers - gpuLayers);
276
277
  const gpuTensors = [];
277
278
  const cpuTensors = [];
279
+ let tokenEmbedLayer;
280
+ let mainOutputLayer;
278
281
  for (const singleTensorInfo of tensorInfo) {
282
+ if (isMainOutputLayer(singleTensorInfo.name))
283
+ mainOutputLayer = singleTensorInfo;
284
+ else if (isTokenEmbedLayer(singleTensorInfo.name))
285
+ tokenEmbedLayer = singleTensorInfo;
286
+ // in the implementation of `llm_load_tensors`, layers with `LLM_TENSOR_LAYER_INPUT` are always
287
+ // loaded with `model.dev_input`, which is always set to the CPU
288
+ if (isInputLayer(singleTensorInfo.name)) {
289
+ cpuTensors.push(singleTensorInfo);
290
+ continue;
291
+ // in the implementation of `llm_load_tensors`, layers with `LLM_TENSOR_LAYER_OUTPUT` are always
292
+ // loaded with `model.dev_output`, which is set to the GPU only if all the layers are on the GPU
293
+ }
294
+ else if (isOutputLayer(singleTensorInfo.name)) {
295
+ if (gpuLayers === this.totalLayers) {
296
+ gpuTensors.push(singleTensorInfo);
297
+ continue;
298
+ }
299
+ else {
300
+ cpuTensors.push(singleTensorInfo);
301
+ continue;
302
+ }
303
+ }
279
304
  const { layerNumber } = parseTensorName(singleTensorInfo.name);
280
305
  if (gpuLayers !== this.totalLayers) {
281
- const architecture = this._ggufFileInfo.metadata?.general?.architecture;
282
306
  if (architecture === GgufArchitectureType.qwen2 || architecture === GgufArchitectureType.gemma) {
283
307
  if (layerNumber != null && layerNumber >= startGpuLayer)
284
308
  gpuTensors.push(singleTensorInfo);
@@ -292,6 +316,8 @@ export class GgufInsights {
292
316
  else
293
317
  cpuTensors.push(singleTensorInfo);
294
318
  }
319
+ if (mainOutputLayer == null && tokenEmbedLayer != null && gpuLayers === this.totalLayers && !gpuTensors.includes(tokenEmbedLayer))
320
+ gpuTensors.push(tokenEmbedLayer);
295
321
  return {
296
322
  cpu: cpuTensors,
297
323
  gpu: gpuTensors
@@ -371,10 +397,43 @@ function parseTensorName(tensorName) {
371
397
  return { layerNumber };
372
398
  return { layerNumber: undefined };
373
399
  }
374
- function calculateTensorsSize(tensorsInfo, llama) {
400
+ function calculateTensorsSize(tensorsInfo, llama, useMmap, startFromTensorDataOffset = false) {
401
+ if (!useMmap) {
402
+ let size = 0;
403
+ for (const tensorInfo of tensorsInfo)
404
+ size += calculateTensorSize(tensorInfo, llama);
405
+ return size;
406
+ }
407
+ const fileStats = new Map();
408
+ for (const tensorInfo of tensorsInfo) {
409
+ let stats = fileStats.get(tensorInfo.filePart);
410
+ if (stats == null) {
411
+ stats = {
412
+ tensorsSize: 0
413
+ };
414
+ fileStats.set(tensorInfo.filePart, stats);
415
+ }
416
+ const tensorSize = calculateTensorSize(tensorInfo, llama);
417
+ stats.tensorsSize += tensorSize;
418
+ const startOffset = tensorInfo.offset;
419
+ const endOffset = typeof startOffset === "number"
420
+ ? startOffset + tensorSize
421
+ : startOffset + BigInt(tensorSize);
422
+ if (startFromTensorDataOffset)
423
+ stats.startOffset = Number(BigInt(tensorInfo.fileOffset) - BigInt(tensorInfo.offset));
424
+ else if (stats.startOffset == null || startOffset < stats.startOffset)
425
+ stats.startOffset = startOffset;
426
+ if (stats.endOffset == null || endOffset > stats.endOffset)
427
+ stats.endOffset = endOffset;
428
+ }
375
429
  let size = 0;
376
- for (const tensorInfo of tensorsInfo)
377
- size += calculateTensorSize(tensorInfo, llama);
430
+ for (const [, stats] of fileStats) {
431
+ const offsetSize = (stats.endOffset == null || stats.startOffset == null)
432
+ ? 0
433
+ : Number(BigInt(stats.endOffset) - BigInt(stats.startOffset));
434
+ const tensorsSize = stats.tensorsSize;
435
+ size += Math.max(offsetSize, tensorsSize);
436
+ }
378
437
  return size;
379
438
  }
380
439
  function calculateTensorSize(tensor, llama) {
@@ -421,4 +480,51 @@ function getTensorNeAndNb(tensor, { typeSize, blockSize, ggmlMaxDims }) {
421
480
  nb
422
481
  };
423
482
  }
483
+ function isInputLayer(layerName) {
484
+ const [firstPart] = layerName.split(".");
485
+ if (firstPart == null)
486
+ return false;
487
+ // source: in `llama.cpp`, all tensor names from `LLM_TENSOR_NAMES` where
488
+ // in `llm_tensor_info_mapping` have a mapping to `LLM_TENSOR_LAYER_INPUT`
489
+ switch (firstPart) {
490
+ case "token_embd":
491
+ case "token_embd_norm":
492
+ case "token_types":
493
+ case "position_embd":
494
+ return true;
495
+ }
496
+ return false;
497
+ }
498
+ function isOutputLayer(layerName) {
499
+ const [firstPart, secondPart] = layerName.split(".");
500
+ if (firstPart == null)
501
+ return false;
502
+ // source: in `llama.cpp`, all tensor names from `LLM_TENSOR_NAMES` where
503
+ // in `llm_tensor_info_mapping` have a mapping to `LLM_TENSOR_LAYER_INPUT`
504
+ switch (firstPart) {
505
+ case "output":
506
+ case "output_norm":
507
+ case "cls":
508
+ return true;
509
+ }
510
+ if (secondPart == null)
511
+ return false;
512
+ // source: in `llama.cpp`, all tensor names from `LLM_TENSOR_NAMES` where
513
+ // in `llm_tensor_info_mapping` have a mapping to `LLM_TENSOR_LAYER_INPUT`
514
+ switch (firstPart + "." + secondPart) {
515
+ case "cls.output":
516
+ case "dec.output_norm":
517
+ case "enc.output_norm":
518
+ return true;
519
+ }
520
+ return false;
521
+ }
522
+ function isMainOutputLayer(layerName) {
523
+ const [firstPart] = layerName.split(".");
524
+ return firstPart === "output";
525
+ }
526
+ function isTokenEmbedLayer(layerName) {
527
+ const [firstPart] = layerName.split(".");
528
+ return firstPart === "token_embd";
529
+ }
424
530
  //# sourceMappingURL=GgufInsights.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GgufInsights.js","sourceRoot":"","sources":["../../../src/gguf/insights/GgufInsights.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GgufInsights.js","sourceRoot":"","sources":["../../../src/gguf/insights/GgufInsights.ts"],"names":[],"mappings":"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"}
@@ -16,11 +16,12 @@ export declare class GgufInsightsConfigurationResolver {
16
16
  * @param options
17
17
  * @param hardwareOverrides
18
18
  */
19
- resolveAndScoreConfig({ targetGpuLayers, targetContextSize, embeddingContext, flashAttention }?: {
19
+ resolveAndScoreConfig({ targetGpuLayers, targetContextSize, embeddingContext, flashAttention, useMmap }?: {
20
20
  targetGpuLayers?: number | "max";
21
21
  targetContextSize?: number;
22
22
  embeddingContext?: boolean;
23
23
  flashAttention?: boolean;
24
+ useMmap?: boolean;
24
25
  }, { getVramState, getRamState, getSwapState, llamaVramPaddingSize, llamaGpu, llamaSupportsGpuOffloading }?: {
25
26
  getVramState?(): Promise<{
26
27
  total: number;
@@ -87,7 +88,7 @@ export declare class GgufInsightsConfigurationResolver {
87
88
  *
88
89
  * `contextSize` defaults to `4096` (if the model train context size is lower than this, the model train context size is used instead).
89
90
  */
90
- scoreModelConfigurationCompatibility({ contextSize, embeddingContext, flashAttention, maximumFittedContextSizeMultiplier, maximumUnfitConfigurationResourceMultiplier, forceStrictContextSize, forceGpuLayers }?: {
91
+ scoreModelConfigurationCompatibility({ contextSize, embeddingContext, flashAttention, maximumFittedContextSizeMultiplier, maximumUnfitConfigurationResourceMultiplier, forceStrictContextSize, forceGpuLayers, useMmap }?: {
91
92
  contextSize?: number;
92
93
  embeddingContext?: boolean;
93
94
  flashAttention?: boolean;
@@ -100,6 +101,7 @@ export declare class GgufInsightsConfigurationResolver {
100
101
  */
101
102
  forceStrictContextSize?: boolean;
102
103
  forceGpuLayers?: number | "max";
104
+ useMmap?: boolean;
103
105
  }, { getVramState, getRamState, getSwapState, llamaVramPaddingSize, llamaGpu, llamaSupportsGpuOffloading }?: {
104
106
  getVramState?(): Promise<{
105
107
  total: number;
@@ -145,7 +147,7 @@ export declare class GgufInsightsConfigurationResolver {
145
147
  totalVramUsage: number;
146
148
  };
147
149
  }>;
148
- resolveModelGpuLayers(gpuLayers?: LlamaModelOptions["gpuLayers"], { ignoreMemorySafetyChecks, getVramState, llamaVramPaddingSize, llamaGpu, llamaSupportsGpuOffloading, defaultContextFlashAttention }?: {
150
+ resolveModelGpuLayers(gpuLayers?: LlamaModelOptions["gpuLayers"], { ignoreMemorySafetyChecks, getVramState, llamaVramPaddingSize, llamaGpu, llamaSupportsGpuOffloading, defaultContextFlashAttention, useMmap }?: {
149
151
  ignoreMemorySafetyChecks?: boolean;
150
152
  getVramState?(): Promise<{
151
153
  total: number;
@@ -155,6 +157,7 @@ export declare class GgufInsightsConfigurationResolver {
155
157
  llamaGpu?: BuildGpu;
156
158
  llamaSupportsGpuOffloading?: boolean;
157
159
  defaultContextFlashAttention?: boolean;
160
+ useMmap?: boolean;
158
161
  }): Promise<number>;
159
162
  /**
160
163
  * Resolve a context size option for the given options and constraints.