node-llama-cpp 2.7.3 → 2.7.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/commands/DownloadCommand.js +38 -32
- package/dist/cli/commands/DownloadCommand.js.map +1 -1
- package/dist/config.d.ts +3 -0
- package/dist/config.js +4 -0
- package/dist/config.js.map +1 -1
- package/dist/utils/cloneLlamaCppRepo.js +24 -6
- package/dist/utils/cloneLlamaCppRepo.js.map +1 -1
- package/dist/utils/cmake.js +5 -0
- package/dist/utils/cmake.js.map +1 -1
- package/dist/utils/compileLLamaCpp.js +25 -21
- package/dist/utils/compileLLamaCpp.js.map +1 -1
- package/dist/utils/gbnfJson/terminals/GbnfStringValue.js +4 -2
- package/dist/utils/gbnfJson/terminals/GbnfStringValue.js.map +1 -1
- package/llama/CMakeLists.txt +2 -2
- package/llama/addon.cpp +11 -18
- package/llama/binariesGithubRelease.json +1 -1
- package/llama/gitRelease.bundle +0 -0
- package/llama/package.json +5 -0
- package/llamaBins/linux-arm64/llama-addon.node +0 -0
- package/llamaBins/linux-armv7l/llama-addon.node +0 -0
- package/llamaBins/linux-x64/llama-addon.node +0 -0
- package/llamaBins/mac-arm64/ggml-metal.metal +171 -2
- package/llamaBins/mac-arm64/llama-addon.node +0 -0
- package/llamaBins/mac-x64/ggml-metal.metal +171 -2
- package/llamaBins/mac-x64/llama-addon.node +0 -0
- package/llamaBins/win-x64/llama-addon.exp +0 -0
- package/llamaBins/win-x64/llama-addon.lib +0 -0
- package/llamaBins/win-x64/llama-addon.node +0 -0
- package/package.json +1 -2
|
@@ -10,7 +10,7 @@ import { setBinariesGithubRelease } from "../../utils/binariesGithubRelease.js";
|
|
|
10
10
|
import { downloadCmakeIfNeeded } from "../../utils/cmake.js";
|
|
11
11
|
import withStatusLogs from "../../utils/withStatusLogs.js";
|
|
12
12
|
import { getIsInDocumentationMode } from "../../state.js";
|
|
13
|
-
import { unshallowAndSquashCurrentRepoAndSaveItAsReleaseBundle } from "../../utils/gitReleaseBundles.js";
|
|
13
|
+
import { getGitBundlePathForRelease, unshallowAndSquashCurrentRepoAndSaveItAsReleaseBundle } from "../../utils/gitReleaseBundles.js";
|
|
14
14
|
import { cloneLlamaCppRepo } from "../../utils/cloneLlamaCppRepo.js";
|
|
15
15
|
export const DownloadCommand = {
|
|
16
16
|
command: "download",
|
|
@@ -71,6 +71,7 @@ export const DownloadCommand = {
|
|
|
71
71
|
handler: DownloadLlamaCppCommand
|
|
72
72
|
};
|
|
73
73
|
export async function DownloadLlamaCppCommand({ repo, release, arch, nodeTarget, metal, cuda, skipBuild, noBundle, updateBinariesReleaseMetadataAndSaveGitBundle }) {
|
|
74
|
+
const useBundle = noBundle != true;
|
|
74
75
|
const octokit = new Octokit();
|
|
75
76
|
const [githubOwner, githubRepo] = repo.split("/");
|
|
76
77
|
console.log(`${chalk.yellow("Repo:")} ${repo}`);
|
|
@@ -84,37 +85,42 @@ export async function DownloadLlamaCppCommand({ repo, release, arch, nodeTarget,
|
|
|
84
85
|
}
|
|
85
86
|
}
|
|
86
87
|
console.log();
|
|
87
|
-
let
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
88
|
+
let githubReleaseTag = (useBundle && (await getGitBundlePathForRelease(githubOwner, githubRepo, release)) != null)
|
|
89
|
+
? release
|
|
90
|
+
: null;
|
|
91
|
+
if (githubReleaseTag == null)
|
|
92
|
+
await withOra({
|
|
93
|
+
loading: chalk.blue("Fetching llama.cpp info"),
|
|
94
|
+
success: chalk.blue("Fetched llama.cpp info"),
|
|
95
|
+
fail: chalk.blue("Failed to fetch llama.cpp info")
|
|
96
|
+
}, async () => {
|
|
97
|
+
let githubRelease = null;
|
|
98
|
+
try {
|
|
99
|
+
if (release === "latest") {
|
|
100
|
+
githubRelease = await octokit.rest.repos.getLatestRelease({
|
|
101
|
+
owner: githubOwner,
|
|
102
|
+
repo: githubRepo
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
githubRelease = await octokit.rest.repos.getReleaseByTag({
|
|
107
|
+
owner: githubOwner,
|
|
108
|
+
repo: githubRepo,
|
|
109
|
+
tag: release
|
|
110
|
+
});
|
|
111
|
+
}
|
|
99
112
|
}
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
owner: githubOwner,
|
|
103
|
-
repo: githubRepo,
|
|
104
|
-
tag: release
|
|
105
|
-
});
|
|
113
|
+
catch (err) {
|
|
114
|
+
console.error("Failed to fetch llama.cpp release info", err);
|
|
106
115
|
}
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
throw new Error(`Failed to find tag of release "${release}" of "${repo}"`);
|
|
116
|
-
}
|
|
117
|
-
});
|
|
116
|
+
if (githubRelease == null) {
|
|
117
|
+
throw new Error(`Failed to find release "${release}" of "${repo}"`);
|
|
118
|
+
}
|
|
119
|
+
if (githubRelease.data.tag_name == null) {
|
|
120
|
+
throw new Error(`Failed to find tag of release "${release}" of "${repo}"`);
|
|
121
|
+
}
|
|
122
|
+
githubReleaseTag = githubRelease.data.tag_name;
|
|
123
|
+
});
|
|
118
124
|
await clearTempFolder();
|
|
119
125
|
await withOra({
|
|
120
126
|
loading: chalk.blue("Removing existing llama.cpp directory"),
|
|
@@ -124,7 +130,7 @@ export async function DownloadLlamaCppCommand({ repo, release, arch, nodeTarget,
|
|
|
124
130
|
await fs.remove(llamaCppDirectory);
|
|
125
131
|
});
|
|
126
132
|
console.log(chalk.blue("Cloning llama.cpp"));
|
|
127
|
-
await cloneLlamaCppRepo(githubOwner, githubRepo,
|
|
133
|
+
await cloneLlamaCppRepo(githubOwner, githubRepo, githubReleaseTag, useBundle);
|
|
128
134
|
if (!skipBuild) {
|
|
129
135
|
await downloadCmakeIfNeeded(true);
|
|
130
136
|
await withStatusLogs({
|
|
@@ -142,7 +148,7 @@ export async function DownloadLlamaCppCommand({ repo, release, arch, nodeTarget,
|
|
|
142
148
|
});
|
|
143
149
|
}
|
|
144
150
|
if (isCI && updateBinariesReleaseMetadataAndSaveGitBundle) {
|
|
145
|
-
await setBinariesGithubRelease(
|
|
151
|
+
await setBinariesGithubRelease(githubReleaseTag);
|
|
146
152
|
await unshallowAndSquashCurrentRepoAndSaveItAsReleaseBundle();
|
|
147
153
|
}
|
|
148
154
|
console.log();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DownloadCommand.js","sourceRoot":"","sources":["../../../src/cli/commands/DownloadCommand.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,OAAO,EAAC,OAAO,EAAC,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EACH,0BAA0B,EAAE,yBAAyB,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,IAAI,EAAE,iBAAiB,EACtI,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAC,eAAe,EAAC,MAAM,gCAAgC,CAAC;AAC/D,OAAO,OAAO,MAAM,wBAAwB,CAAC;AAC7C,OAAO,EAAC,eAAe,EAAC,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAC,wBAAwB,EAAC,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAC,qBAAqB,EAAC,MAAM,sBAAsB,CAAC;AAC3D,OAAO,cAAc,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAC,wBAAwB,EAAC,MAAM,gBAAgB,CAAC;AACxD,OAAO,
|
|
1
|
+
{"version":3,"file":"DownloadCommand.js","sourceRoot":"","sources":["../../../src/cli/commands/DownloadCommand.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -25,3 +25,6 @@ export declare const customCmakeOptionsEnvVarPrefix = "NODE_LLAMA_CPP_CMAKE_OPTI
|
|
|
25
25
|
export declare const defaultChatSystemPrompt: string;
|
|
26
26
|
export declare const cliBinName = "node-llama-cpp";
|
|
27
27
|
export declare const npxRunPrefix = "npx --no ";
|
|
28
|
+
export declare const documentationPageUrls: {
|
|
29
|
+
readonly CUDA: string;
|
|
30
|
+
};
|
package/dist/config.js
CHANGED
|
@@ -52,4 +52,8 @@ export const defaultChatSystemPrompt = "You are a helpful, respectful and honest
|
|
|
52
52
|
"If you don't know the answer to a question, please don't share false information.";
|
|
53
53
|
export const cliBinName = "node-llama-cpp";
|
|
54
54
|
export const npxRunPrefix = "npx --no ";
|
|
55
|
+
const documentationUrl = "https://withcatai.github.io/node-llama-cpp";
|
|
56
|
+
export const documentationPageUrls = {
|
|
57
|
+
CUDA: documentationUrl + "/guide/CUDA"
|
|
58
|
+
};
|
|
55
59
|
//# sourceMappingURL=config.js.map
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -46,14 +46,32 @@ export async function cloneLlamaCppRepo(githubOwner, githubRepo, tag, useBundles
|
|
|
46
46
|
catch (err) {
|
|
47
47
|
await fs.remove(llamaCppDirectory);
|
|
48
48
|
console.error("Failed to clone git bundle, cloning from GitHub instead", err);
|
|
49
|
+
printCloneErrorHelp(String(err));
|
|
49
50
|
}
|
|
50
51
|
}
|
|
51
|
-
|
|
52
|
-
await
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
52
|
+
try {
|
|
53
|
+
await withGitCloneProgress("GitHub", async (gitWithCloneProgress) => {
|
|
54
|
+
await gitWithCloneProgress.clone(remoteGitUrl, llamaCppDirectory, {
|
|
55
|
+
"--depth": 1,
|
|
56
|
+
"--branch": tag,
|
|
57
|
+
"--quiet": null
|
|
58
|
+
});
|
|
56
59
|
});
|
|
57
|
-
}
|
|
60
|
+
}
|
|
61
|
+
catch (err) {
|
|
62
|
+
printCloneErrorHelp(String(err));
|
|
63
|
+
throw err;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
function printCloneErrorHelp(error) {
|
|
67
|
+
// This error happens with some docker images where the current user is different
|
|
68
|
+
// from the owner of the files due to mounting a volume.
|
|
69
|
+
// In such cases, print a helpful message to help the user resolve the issue.
|
|
70
|
+
if (error.toLowerCase().includes("detected dubious ownership in repository"))
|
|
71
|
+
console.info("\n" +
|
|
72
|
+
chalk.grey("[node-llama-cpp]") + chalk.yellow(" To fix this issue, try running this command to fix it for the current module directory:") + "\n" +
|
|
73
|
+
'git config --global --add safe.directory "' + llamaCppDirectory + '"\n\n' +
|
|
74
|
+
chalk.yellow("Or run this command to fix it everywhere:") + "\n" +
|
|
75
|
+
'git config --global --add safe.directory "*"');
|
|
58
76
|
}
|
|
59
77
|
//# sourceMappingURL=cloneLlamaCppRepo.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloneLlamaCppRepo.js","sourceRoot":"","sources":["../../src/utils/cloneLlamaCppRepo.ts"],"names":[],"mappings":"AAAA,OAAO,SAAsB,MAAM,YAAY,CAAC;AAChD,OAAO,WAAW,MAAM,cAAc,CAAC;AACvC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,EAAC,iBAAiB,EAAC,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAC,0BAA0B,EAAC,MAAM,wBAAwB,CAAC;AAGlE,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,WAAmB,EAAE,UAAkB,EAAE,GAAW,EAAE,aAAsB,IAAI;IACpH,MAAM,eAAe,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,0BAA0B,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;IAC5G,MAAM,YAAY,GAAG,sBAAsB,WAAW,IAAI,UAAU,MAAM,CAAC;IAE3E,KAAK,UAAU,oBAAoB,CAAI,SAAiB,EAAE,QAAyD;QAC/G,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC;YACpC,eAAe,EAAE,KAAK;YACtB,UAAU,EAAE,IAAI;YAChB,WAAW,EAAE,IAAI;YACjB,MAAM,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE;SACpI,EAAE,WAAW,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAEvC,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE;YACtB,KAAK,EAAE,EAAE;YACT,IAAI,EAAE,GAAG,WAAW,IAAI,UAAU,KAAK,SAAS,GAAG;SACtD,CAAC,CAAC;QAEH,MAAM,oBAAoB,GAAG,SAAS,CAAC;YACnC,QAAQ,CAAC,EAAC,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAC;gBACjC,MAAM,aAAa,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC,GAAG,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC;gBAE7D,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;YAChE,CAAC;SACJ,CAAC,CAAC;QAEH,IAAI;YACA,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,oBAAoB,CAAC,CAAC;YAEjD,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAExB,OAAO,GAAG,CAAC;SACd;gBAAS;YACN,WAAW,CAAC,IAAI,EAAE,CAAC;SACtB;IACL,CAAC;IAED,IAAI,eAAe,IAAI,IAAI,EAAE;QACzB,IAAI;YACA,MAAM,oBAAoB,CAAC,cAAc,EAAE,KAAK,EAAE,oBAAoB,EAAE,EAAE;gBACtE,MAAM,oBAAoB,CAAC,KAAK,CAAC,eAAe,EAAE,iBAAiB,EAAE;oBACjE,SAAS,EAAE,IAAI;iBAClB,CAAC,CAAC;gBAEH,MAAM,SAAS,CAAC,iBAAiB,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YAC9D,CAAC,CAAC,CAAC;YACH,OAAO;SACV;QAAC,OAAO,GAAG,EAAE;YACV,MAAM,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;YACnC,OAAO,CAAC,KAAK,CAAC,yDAAyD,EAAE,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"cloneLlamaCppRepo.js","sourceRoot":"","sources":["../../src/utils/cloneLlamaCppRepo.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/cmake.js
CHANGED
|
@@ -28,6 +28,11 @@ export async function getCmakePath() {
|
|
|
28
28
|
});
|
|
29
29
|
if (resolvedPath.toLowerCase().endsWith(".cmd"))
|
|
30
30
|
resolvedPath = (await getBinFromWindowCmd(resolvedPath, "cmake.exe")) ?? "";
|
|
31
|
+
else if (resolvedPath.toLowerCase().endsWith(".ps1")) {
|
|
32
|
+
const cmdFilePath = resolvedPath.slice(0, -".ps1".length) + ".cmd";
|
|
33
|
+
if (await fs.pathExists(cmdFilePath))
|
|
34
|
+
resolvedPath = (await getBinFromWindowCmd(cmdFilePath, "cmake.exe")) ?? "";
|
|
35
|
+
}
|
|
31
36
|
if (resolvedPath !== "")
|
|
32
37
|
return resolvedPath;
|
|
33
38
|
}
|
package/dist/utils/cmake.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cmake.js","sourceRoot":"","sources":["../../src/utils/cmake.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,MAAM,EAAC,MAAM,SAAS,CAAC;AAC/B,OAAO,EACH,2BAA2B,EAAE,2BAA2B,EAAE,cAAc,EAAE,yBAAyB,EAAE,yBAAyB,EAC9H,cAAc,EAAE,UAAU,EAC7B,MAAM,cAAc,CAAC;AACtB,OAAO,EAAC,YAAY,EAAC,MAAM,mBAAmB,CAAC;AAC/C,OAAO,cAAc,MAAM,qBAAqB,CAAC;AAGjD,MAAM,CAAC,KAAK,UAAU,eAAe;IACjC,IAAI;QACA,MAAM,YAAY,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC;QAC1C,OAAO,YAAY,KAAK,EAAE,CAAC;KAC9B;IAAC,OAAO,GAAG,EAAE;QACV,OAAO,KAAK,CAAC;KAChB;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY;IAC9B,IAAI;QACA,MAAM,YAAY,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC;QAE1C,IAAI,YAAY,KAAK,EAAE;YACnB,OAAO,YAAY,CAAC;KAC3B;IAAC,OAAO,GAAG,EAAE,GAAE;IAEhB,IAAI;QACA,IAAI,YAAY,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE;YACpC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC;SAC7D,CAAC,CAAC;QAEH,IAAI,YAAY,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;YAC3C,YAAY,GAAG,CAAC,MAAM,mBAAmB,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"cmake.js","sourceRoot":"","sources":["../../src/utils/cmake.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,8 @@ import path from "path";
|
|
|
2
2
|
import { fileURLToPath } from "url";
|
|
3
3
|
import process from "process";
|
|
4
4
|
import fs from "fs-extra";
|
|
5
|
-
import
|
|
5
|
+
import chalk from "chalk";
|
|
6
|
+
import { customCmakeOptionsEnvVarPrefix, documentationPageUrls, llamaCppDirectory, llamaDirectory, llamaToolchainsDirectory } from "../config.js";
|
|
6
7
|
import { clearLlamaBuild } from "./clearLlamaBuild.js";
|
|
7
8
|
import { setUsedBinFlag } from "./usedBinFlag.js";
|
|
8
9
|
import { spawnCommand } from "./spawnCommand.js";
|
|
@@ -16,50 +17,48 @@ export async function compileLlamaCpp({ arch = process.arch, nodeTarget = proces
|
|
|
16
17
|
const cmakePathArgs = await getCmakePathArgs();
|
|
17
18
|
const toolchainFile = await getToolchainFileForArch(arch);
|
|
18
19
|
const runtimeVersion = nodeTarget.startsWith("v") ? nodeTarget.slice("v".length) : nodeTarget;
|
|
19
|
-
const cmakeCustomOptions =
|
|
20
|
+
const cmakeCustomOptions = new Map();
|
|
20
21
|
if ((metal && process.platform === "darwin") || process.env.LLAMA_METAL === "1")
|
|
21
|
-
cmakeCustomOptions.
|
|
22
|
+
cmakeCustomOptions.set("LLAMA_METAL", "1");
|
|
22
23
|
else
|
|
23
|
-
cmakeCustomOptions.
|
|
24
|
+
cmakeCustomOptions.set("LLAMA_METAL", "OFF");
|
|
24
25
|
if (cuda || process.env.LLAMA_CUBLAS === "1")
|
|
25
|
-
cmakeCustomOptions.
|
|
26
|
-
if (cuda && process.env.CUDA_PATH != null && await fs.pathExists(process.env.CUDA_PATH))
|
|
27
|
-
cmakeCustomOptions.push("CMAKE_GENERATOR_TOOLSET=" + process.env.CUDA_PATH);
|
|
26
|
+
cmakeCustomOptions.set("LLAMA_CUBLAS", "1");
|
|
28
27
|
if (process.env.LLAMA_MPI === "1")
|
|
29
|
-
cmakeCustomOptions.
|
|
28
|
+
cmakeCustomOptions.set("LLAMA_MPI", "1");
|
|
30
29
|
if (process.env.LLAMA_OPENBLAS === "1")
|
|
31
|
-
cmakeCustomOptions.
|
|
30
|
+
cmakeCustomOptions.set("LLAMA_OPENBLAS", "1");
|
|
32
31
|
if (process.env.LLAMA_BLAS_VENDOR != null)
|
|
33
|
-
cmakeCustomOptions.
|
|
32
|
+
cmakeCustomOptions.set("LLAMA_BLAS_VENDOR", process.env.LLAMA_BLAS_VENDOR);
|
|
34
33
|
if (process.env.LLAMA_CUDA_FORCE_DMMV != null)
|
|
35
|
-
cmakeCustomOptions.
|
|
34
|
+
cmakeCustomOptions.set("LLAMA_CUDA_FORCE_DMMV", process.env.LLAMA_CUDA_FORCE_DMMV);
|
|
36
35
|
if (process.env.LLAMA_CUDA_DMMV_X != null)
|
|
37
|
-
cmakeCustomOptions.
|
|
36
|
+
cmakeCustomOptions.set("LLAMA_CUDA_DMMV_X", process.env.LLAMA_CUDA_DMMV_X);
|
|
38
37
|
if (process.env.LLAMA_CUDA_MMV_Y != null)
|
|
39
|
-
cmakeCustomOptions.
|
|
38
|
+
cmakeCustomOptions.set("LLAMA_CUDA_MMV_Y", process.env.LLAMA_CUDA_MMV_Y);
|
|
40
39
|
if (process.env.LLAMA_CUDA_F16 != null)
|
|
41
|
-
cmakeCustomOptions.
|
|
40
|
+
cmakeCustomOptions.set("LLAMA_CUDA_F16", process.env.LLAMA_CUDA_F16);
|
|
42
41
|
if (process.env.LLAMA_CUDA_KQUANTS_ITER != null)
|
|
43
|
-
cmakeCustomOptions.
|
|
42
|
+
cmakeCustomOptions.set("LLAMA_CUDA_KQUANTS_ITER", process.env.LLAMA_CUDA_KQUANTS_ITER);
|
|
44
43
|
if (process.env.LLAMA_CUDA_PEER_MAX_BATCH_SIZE != null)
|
|
45
|
-
cmakeCustomOptions.
|
|
44
|
+
cmakeCustomOptions.set("LLAMA_CUDA_PEER_MAX_BATCH_SIZE", process.env.LLAMA_CUDA_PEER_MAX_BATCH_SIZE);
|
|
46
45
|
if (process.env.LLAMA_HIPBLAS === "1")
|
|
47
|
-
cmakeCustomOptions.
|
|
46
|
+
cmakeCustomOptions.set("LLAMA_HIPBLAS", "1");
|
|
48
47
|
if (process.env.LLAMA_CLBLAST === "1")
|
|
49
|
-
cmakeCustomOptions.
|
|
48
|
+
cmakeCustomOptions.set("LLAMA_CLBLAST", "1");
|
|
50
49
|
if (toolchainFile != null)
|
|
51
|
-
cmakeCustomOptions.
|
|
50
|
+
cmakeCustomOptions.set("CMAKE_TOOLCHAIN_FILE", toolchainFile);
|
|
52
51
|
for (const key in process.env) {
|
|
53
52
|
if (key.startsWith(customCmakeOptionsEnvVarPrefix)) {
|
|
54
53
|
const option = key.slice(customCmakeOptionsEnvVarPrefix.length);
|
|
55
54
|
const value = process.env[key];
|
|
56
|
-
cmakeCustomOptions.
|
|
55
|
+
cmakeCustomOptions.set(option, value);
|
|
57
56
|
}
|
|
58
57
|
}
|
|
59
58
|
await clearLlamaBuild();
|
|
60
59
|
await spawnCommand("npm", ["run", "-s", "cmake-js-llama", "--", "clean", "--log-level", "warn", ...cmakePathArgs], __dirname);
|
|
61
60
|
await spawnCommand("npm", ["run", "-s", "cmake-js-llama", "--", "compile", "--log-level", "warn", "--arch=" + arch, "--runtime-version=" + runtimeVersion, ...cmakePathArgs]
|
|
62
|
-
.concat(cmakeCustomOptions.map(
|
|
61
|
+
.concat([...cmakeCustomOptions].map(([key, value]) => "--CD" + key + "=" + value)), __dirname);
|
|
63
62
|
const binFilesDirPath = path.join(llamaDirectory, "build", "llama.cpp", "bin");
|
|
64
63
|
const compiledResultDirPath = await getCompiledResultDir(true);
|
|
65
64
|
if (await fs.pathExists(binFilesDirPath)) {
|
|
@@ -75,6 +74,11 @@ export async function compileLlamaCpp({ arch = process.arch, nodeTarget = proces
|
|
|
75
74
|
catch (err) {
|
|
76
75
|
if (setUsedBinFlagArg)
|
|
77
76
|
await setUsedBinFlag("prebuiltBinaries");
|
|
77
|
+
if (cuda)
|
|
78
|
+
console.info("\n" +
|
|
79
|
+
chalk.grey("[node-llama-cpp] ") +
|
|
80
|
+
chalk.yellow("To resolve errors related to CUDA compilation, see the CUDA guide: ") +
|
|
81
|
+
documentationPageUrls.CUDA);
|
|
78
82
|
throw err;
|
|
79
83
|
}
|
|
80
84
|
finally {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compileLLamaCpp.js","sourceRoot":"","sources":["../../src/utils/compileLLamaCpp.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAC,aAAa,EAAC,MAAM,KAAK,CAAC;AAClC,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,
|
|
1
|
+
{"version":3,"file":"compileLLamaCpp.js","sourceRoot":"","sources":["../../src/utils/compileLLamaCpp.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,14 +7,16 @@ export class GbnfStringValue extends GbnfTerminal {
|
|
|
7
7
|
}
|
|
8
8
|
getGrammar() {
|
|
9
9
|
return [
|
|
10
|
-
"
|
|
10
|
+
'"',
|
|
11
|
+
'\\"',
|
|
11
12
|
this.value
|
|
12
13
|
.replaceAll("\\", "\\\\")
|
|
13
14
|
.replaceAll("\t", "\\t")
|
|
14
15
|
.replaceAll("\r", "\\r")
|
|
15
16
|
.replaceAll("\n", "\\n")
|
|
16
17
|
.replaceAll('"', "\\\\" + '\\"'),
|
|
17
|
-
"
|
|
18
|
+
'\\"',
|
|
19
|
+
'"'
|
|
18
20
|
].join("");
|
|
19
21
|
}
|
|
20
22
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GbnfStringValue.js","sourceRoot":"","sources":["../../../../src/utils/gbnfJson/terminals/GbnfStringValue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAGhD,MAAM,OAAO,eAAgB,SAAQ,YAAY;IAC7B,KAAK,CAAS;IAE9B,YAAmB,KAAa;QAC5B,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;IAEQ,UAAU;QACf,OAAO;YACH,
|
|
1
|
+
{"version":3,"file":"GbnfStringValue.js","sourceRoot":"","sources":["../../../../src/utils/gbnfJson/terminals/GbnfStringValue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,oBAAoB,CAAC;AAGhD,MAAM,OAAO,eAAgB,SAAQ,YAAY;IAC7B,KAAK,CAAS;IAE9B,YAAmB,KAAa;QAC5B,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;IAEQ,UAAU;QACf,OAAO;YACH,GAAG;YACH,KAAK;YACL,IAAI,CAAC,KAAK;iBACL,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC;iBACxB,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC;iBACvB,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC;iBACvB,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC;iBACvB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAAC;YACpC,KAAK;YACL,GAAG;SACN,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,CAAC;CACJ"}
|
package/llama/CMakeLists.txt
CHANGED
package/llama/addon.cpp
CHANGED
|
@@ -208,13 +208,13 @@ class LLAMAContext : public Napi::ObjectWrap<LLAMAContext> {
|
|
|
208
208
|
return Napi::String::New(info.Env(), ss.str());
|
|
209
209
|
}
|
|
210
210
|
Napi::Value TokenBos(const Napi::CallbackInfo& info) {
|
|
211
|
-
return Napi::Number::From(info.Env(), llama_token_bos(
|
|
211
|
+
return Napi::Number::From(info.Env(), llama_token_bos(model->model)); // TODO: move this to the model
|
|
212
212
|
}
|
|
213
213
|
Napi::Value TokenEos(const Napi::CallbackInfo& info) {
|
|
214
|
-
return Napi::Number::From(info.Env(), llama_token_eos(
|
|
214
|
+
return Napi::Number::From(info.Env(), llama_token_eos(model->model)); // TODO: move this to the model
|
|
215
215
|
}
|
|
216
216
|
Napi::Value TokenNl(const Napi::CallbackInfo& info) {
|
|
217
|
-
return Napi::Number::From(info.Env(), llama_token_nl(
|
|
217
|
+
return Napi::Number::From(info.Env(), llama_token_nl(model->model)); // TODO: move this to the model
|
|
218
218
|
}
|
|
219
219
|
Napi::Value GetContextSize(const Napi::CallbackInfo& info) {
|
|
220
220
|
return Napi::Number::From(info.Env(), llama_n_ctx(ctx));
|
|
@@ -223,7 +223,7 @@ class LLAMAContext : public Napi::ObjectWrap<LLAMAContext> {
|
|
|
223
223
|
int token = info[0].As<Napi::Number>().Int32Value();
|
|
224
224
|
std::stringstream ss;
|
|
225
225
|
|
|
226
|
-
const char* str = llama_token_get_text(
|
|
226
|
+
const char* str = llama_token_get_text(model->model, token); // TODO: move this to the model
|
|
227
227
|
if (str == nullptr) {
|
|
228
228
|
return info.Env().Undefined();
|
|
229
229
|
}
|
|
@@ -336,18 +336,14 @@ class LLAMAContextEvalWorker : Napi::AsyncWorker, Napi::Promise::Deferred {
|
|
|
336
336
|
|
|
337
337
|
protected:
|
|
338
338
|
void Execute() {
|
|
339
|
-
llama_batch batch = llama_batch_init(tokens.size(), 0);
|
|
339
|
+
llama_batch batch = llama_batch_init(tokens.size(), 0, 1);
|
|
340
340
|
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
for (int32_t i = 0; i < batch.n_tokens; i++) {
|
|
344
|
-
batch.token[i] = tokens[i];
|
|
345
|
-
batch.pos[i] = ctx->n_cur;
|
|
346
|
-
batch.seq_id[i] = 0;
|
|
347
|
-
batch.logits[i] = false;
|
|
341
|
+
for (size_t i = 0; i < tokens.size(); i++) {
|
|
342
|
+
llama_batch_add(batch, tokens[i], ctx->n_cur, { 0 }, false);
|
|
348
343
|
|
|
349
344
|
ctx->n_cur++;
|
|
350
345
|
}
|
|
346
|
+
GGML_ASSERT(batch.n_tokens == (int) tokens.size());
|
|
351
347
|
|
|
352
348
|
batch.logits[batch.n_tokens - 1] = true;
|
|
353
349
|
|
|
@@ -381,14 +377,11 @@ class LLAMAContextEvalWorker : Napi::AsyncWorker, Napi::Promise::Deferred {
|
|
|
381
377
|
|
|
382
378
|
llama_token_data_array candidates_p = { candidates.data(), candidates.size(), false };
|
|
383
379
|
|
|
384
|
-
auto eos_token = llama_token_eos(ctx->
|
|
380
|
+
auto eos_token = llama_token_eos(ctx->model->model);
|
|
385
381
|
|
|
386
382
|
if (use_repeat_penalty && !repeat_penalty_tokens.empty()) {
|
|
387
|
-
|
|
388
|
-
ctx->ctx, &candidates_p, repeat_penalty_tokens.data(), repeat_penalty_tokens.size(), repeat_penalty
|
|
389
|
-
);
|
|
390
|
-
llama_sample_frequency_and_presence_penalties(
|
|
391
|
-
ctx->ctx, &candidates_p, repeat_penalty_tokens.data(), repeat_penalty_tokens.size(),
|
|
383
|
+
llama_sample_repetition_penalties(
|
|
384
|
+
ctx->ctx, &candidates_p, repeat_penalty_tokens.data(), repeat_penalty_tokens.size(), repeat_penalty,
|
|
392
385
|
repeat_penalty_frequency_penalty, repeat_penalty_presence_penalty
|
|
393
386
|
);
|
|
394
387
|
}
|
package/llama/gitRelease.bundle
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -18,6 +18,21 @@ typedef struct {
|
|
|
18
18
|
uint8_t qs[QK4_1 / 2]; // nibbles / quants
|
|
19
19
|
} block_q4_1;
|
|
20
20
|
|
|
21
|
+
#define QK5_0 32
|
|
22
|
+
typedef struct {
|
|
23
|
+
half d; // delta
|
|
24
|
+
uint8_t qh[4]; // 5-th bit of quants
|
|
25
|
+
uint8_t qs[QK5_0 / 2]; // nibbles / quants
|
|
26
|
+
} block_q5_0;
|
|
27
|
+
|
|
28
|
+
#define QK5_1 32
|
|
29
|
+
typedef struct {
|
|
30
|
+
half d; // delta
|
|
31
|
+
half m; // min
|
|
32
|
+
uint8_t qh[4]; // 5-th bit of quants
|
|
33
|
+
uint8_t qs[QK5_1 / 2]; // nibbles / quants
|
|
34
|
+
} block_q5_1;
|
|
35
|
+
|
|
21
36
|
#define QK8_0 32
|
|
22
37
|
typedef struct {
|
|
23
38
|
half d; // delta
|
|
@@ -110,9 +125,17 @@ kernel void kernel_mul_row(
|
|
|
110
125
|
}
|
|
111
126
|
|
|
112
127
|
kernel void kernel_scale(
|
|
128
|
+
device const float * src0,
|
|
129
|
+
device float * dst,
|
|
130
|
+
constant float & scale,
|
|
131
|
+
uint tpig[[thread_position_in_grid]]) {
|
|
132
|
+
dst[tpig] = src0[tpig] * scale;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
kernel void kernel_scale_4(
|
|
113
136
|
device const float4 * src0,
|
|
114
137
|
device float4 * dst,
|
|
115
|
-
constant float
|
|
138
|
+
constant float & scale,
|
|
116
139
|
uint tpig[[thread_position_in_grid]]) {
|
|
117
140
|
dst[tpig] = src0[tpig] * scale;
|
|
118
141
|
}
|
|
@@ -399,8 +422,11 @@ kernel void kernel_rms_norm(
|
|
|
399
422
|
// that corresponds to the missing bit shifts (1, 1/16, 1/256, 1/4096)
|
|
400
423
|
inline float block_q_n_dot_y(device const block_q4_0 * qb_curr, float sumy, thread float * yl, int il) {
|
|
401
424
|
float d = qb_curr->d;
|
|
425
|
+
|
|
402
426
|
float2 acc = 0.f;
|
|
427
|
+
|
|
403
428
|
device const uint16_t * qs = ((device const uint16_t *)qb_curr + 1 + il/2);
|
|
429
|
+
|
|
404
430
|
for (int i = 0; i < 8; i+=2) {
|
|
405
431
|
acc[0] += yl[i + 0] * (qs[i / 2] & 0x000F)
|
|
406
432
|
+ yl[i + 1] * (qs[i / 2] & 0x0F00);
|
|
@@ -417,8 +443,11 @@ inline float block_q_n_dot_y(device const block_q4_0 * qb_curr, float sumy, thre
|
|
|
417
443
|
inline float block_q_n_dot_y(device const block_q4_1 * qb_curr, float sumy, thread float * yl, int il) {
|
|
418
444
|
float d = qb_curr->d;
|
|
419
445
|
float m = qb_curr->m;
|
|
420
|
-
|
|
446
|
+
|
|
421
447
|
float2 acc = 0.f;
|
|
448
|
+
|
|
449
|
+
device const uint16_t * qs = ((device const uint16_t *)qb_curr + 2 + il/2);
|
|
450
|
+
|
|
422
451
|
for (int i = 0; i < 8; i+=2) {
|
|
423
452
|
acc[0] += yl[i + 0] * (qs[i / 2] & 0x000F)
|
|
424
453
|
+ yl[i + 1] * (qs[i / 2] & 0x0F00);
|
|
@@ -428,6 +457,49 @@ inline float block_q_n_dot_y(device const block_q4_1 * qb_curr, float sumy, thre
|
|
|
428
457
|
return d * (acc[0] + acc[1]) + sumy * m;
|
|
429
458
|
}
|
|
430
459
|
|
|
460
|
+
// function for calculate inner product between half a q5_0 block and 16 floats (yl), sumy is SUM(yl[i])
|
|
461
|
+
// il indicates where the q5 quants begin (0 or QK5_0/4)
|
|
462
|
+
// we assume that the yl's have been multiplied with the appropriate scale factor
|
|
463
|
+
// that corresponds to the missing bit shifts (1, 1/16, 1/256, 1/4096)
|
|
464
|
+
inline float block_q_n_dot_y(device const block_q5_0 * qb_curr, float sumy, thread float * yl, int il) {
|
|
465
|
+
float d = qb_curr->d;
|
|
466
|
+
|
|
467
|
+
float2 acc = 0.f;
|
|
468
|
+
|
|
469
|
+
device const uint16_t * qs = ((device const uint16_t *)qb_curr + 3 + il/2);
|
|
470
|
+
const uint32_t qh = *((device const uint32_t *)qb_curr->qh);
|
|
471
|
+
|
|
472
|
+
for (int i = 0; i < 8; i+=2) {
|
|
473
|
+
acc[0] += yl[i + 0] * ((qs[i / 2] & 0x000F) | ((qh >> (i+0+il ) << 4 ) & 0x00010))
|
|
474
|
+
+ yl[i + 1] * ((qs[i / 2] & 0x0F00) | ((qh >> (i+1+il ) << 12) & 0x01000));
|
|
475
|
+
acc[1] += yl[i + 8] * ((qs[i / 2] & 0x00F0) | ((qh >> (i+0+il+QK5_0/2) << 8 ) & 0x00100))
|
|
476
|
+
+ yl[i + 9] * ((qs[i / 2] & 0xF000) | ((qh >> (i+1+il+QK5_0/2) << 16) & 0x10000));
|
|
477
|
+
}
|
|
478
|
+
return d * (sumy * -16.f + acc[0] + acc[1]);
|
|
479
|
+
}
|
|
480
|
+
|
|
481
|
+
// function for calculate inner product between half a q5_1 block and 16 floats (yl), sumy is SUM(yl[i])
|
|
482
|
+
// il indicates where the q5 quants begin (0 or QK5_1/4)
|
|
483
|
+
// we assume that the yl's have been multiplied with the appropriate scale factor
|
|
484
|
+
// that corresponds to the missing bit shifts (1, 1/16, 1/256, 1/4096)
|
|
485
|
+
inline float block_q_n_dot_y(device const block_q5_1 * qb_curr, float sumy, thread float * yl, int il) {
|
|
486
|
+
float d = qb_curr->d;
|
|
487
|
+
float m = qb_curr->m;
|
|
488
|
+
|
|
489
|
+
float2 acc = 0.f;
|
|
490
|
+
|
|
491
|
+
device const uint16_t * qs = ((device const uint16_t *)qb_curr + 4 + il/2);
|
|
492
|
+
const uint32_t qh = *((device const uint32_t *)qb_curr->qh);
|
|
493
|
+
|
|
494
|
+
for (int i = 0; i < 8; i+=2) {
|
|
495
|
+
acc[0] += yl[i + 0] * ((qs[i / 2] & 0x000F) | ((qh >> (i+0+il ) << 4 ) & 0x00010))
|
|
496
|
+
+ yl[i + 1] * ((qs[i / 2] & 0x0F00) | ((qh >> (i+1+il ) << 12) & 0x01000));
|
|
497
|
+
acc[1] += yl[i + 8] * ((qs[i / 2] & 0x00F0) | ((qh >> (i+0+il+QK5_0/2) << 8 ) & 0x00100))
|
|
498
|
+
+ yl[i + 9] * ((qs[i / 2] & 0xF000) | ((qh >> (i+1+il+QK5_0/2) << 16) & 0x10000));
|
|
499
|
+
}
|
|
500
|
+
return d * (acc[0] + acc[1]) + sumy * m;
|
|
501
|
+
}
|
|
502
|
+
|
|
431
503
|
// putting them in the kernel cause a significant performance penalty
|
|
432
504
|
#define N_DST 4 // each SIMD group works on 4 rows
|
|
433
505
|
#define N_SIMDGROUP 2 // number of SIMD groups in a thread group
|
|
@@ -525,6 +597,43 @@ kernel void kernel_mul_mv_q4_1_f32(
|
|
|
525
597
|
mul_vec_q_n_f32<block_q4_1, N_DST, N_SIMDGROUP, N_SIMDWIDTH>(src0,src1,dst,ne00,ne01,ne02,ne10,ne12,ne0,ne1,gqa,tgpig,tiisg,sgitg);
|
|
526
598
|
}
|
|
527
599
|
|
|
600
|
+
kernel void kernel_mul_mv_q5_0_f32(
|
|
601
|
+
device const void * src0,
|
|
602
|
+
device const float * src1,
|
|
603
|
+
device float * dst,
|
|
604
|
+
constant int64_t & ne00,
|
|
605
|
+
constant int64_t & ne01[[buffer(4)]],
|
|
606
|
+
constant int64_t & ne02[[buffer(5)]],
|
|
607
|
+
constant int64_t & ne10[[buffer(9)]],
|
|
608
|
+
constant int64_t & ne12[[buffer(11)]],
|
|
609
|
+
constant int64_t & ne0[[buffer(15)]],
|
|
610
|
+
constant int64_t & ne1[[buffer(16)]],
|
|
611
|
+
constant uint & gqa[[buffer(17)]],
|
|
612
|
+
uint3 tgpig[[threadgroup_position_in_grid]],
|
|
613
|
+
uint tiisg[[thread_index_in_simdgroup]],
|
|
614
|
+
uint sgitg[[simdgroup_index_in_threadgroup]]) {
|
|
615
|
+
mul_vec_q_n_f32<block_q5_0, N_DST, N_SIMDGROUP, N_SIMDWIDTH>(src0,src1,dst,ne00,ne01,ne02,ne10,ne12,ne0,ne1,gqa,tgpig,tiisg,sgitg);
|
|
616
|
+
}
|
|
617
|
+
|
|
618
|
+
kernel void kernel_mul_mv_q5_1_f32(
|
|
619
|
+
device const void * src0,
|
|
620
|
+
device const float * src1,
|
|
621
|
+
device float * dst,
|
|
622
|
+
constant int64_t & ne00,
|
|
623
|
+
constant int64_t & ne01[[buffer(4)]],
|
|
624
|
+
constant int64_t & ne02[[buffer(5)]],
|
|
625
|
+
constant int64_t & ne10[[buffer(9)]],
|
|
626
|
+
constant int64_t & ne12[[buffer(11)]],
|
|
627
|
+
constant int64_t & ne0[[buffer(15)]],
|
|
628
|
+
constant int64_t & ne1[[buffer(16)]],
|
|
629
|
+
constant uint & gqa[[buffer(17)]],
|
|
630
|
+
uint3 tgpig[[threadgroup_position_in_grid]],
|
|
631
|
+
uint tiisg[[thread_index_in_simdgroup]],
|
|
632
|
+
uint sgitg[[simdgroup_index_in_threadgroup]]) {
|
|
633
|
+
mul_vec_q_n_f32<block_q5_1, N_DST, N_SIMDGROUP, N_SIMDWIDTH>(src0,src1,dst,ne00,ne01,ne02,ne10,ne12,ne0,ne1,gqa,tgpig,tiisg,sgitg);
|
|
634
|
+
}
|
|
635
|
+
|
|
636
|
+
|
|
528
637
|
#define NB_Q8_0 8
|
|
529
638
|
|
|
530
639
|
kernel void kernel_mul_mv_q8_0_f32(
|
|
@@ -2149,6 +2258,62 @@ void dequantize_q4_1(device const block_q4_1 *xb, short il, thread type4x4 & reg
|
|
|
2149
2258
|
}
|
|
2150
2259
|
}
|
|
2151
2260
|
|
|
2261
|
+
template <typename type4x4>
|
|
2262
|
+
void dequantize_q5_0(device const block_q5_0 *xb, short il, thread type4x4 & reg) {
|
|
2263
|
+
device const uint16_t * qs = ((device const uint16_t *)xb + 3);
|
|
2264
|
+
const float d = xb->d;
|
|
2265
|
+
const float md = -16.h * xb->d;
|
|
2266
|
+
const ushort mask = il ? 0x00F0 : 0x000F;
|
|
2267
|
+
|
|
2268
|
+
const uint32_t qh = *((device const uint32_t *)xb->qh);
|
|
2269
|
+
|
|
2270
|
+
const int x_mv = il ? 4 : 0;
|
|
2271
|
+
|
|
2272
|
+
const int gh_mv = il ? 12 : 0;
|
|
2273
|
+
const int gh_bk = il ? 0 : 4;
|
|
2274
|
+
|
|
2275
|
+
for (int i = 0; i < 8; i++) {
|
|
2276
|
+
// extract the 5-th bits for x0 and x1
|
|
2277
|
+
const uint8_t xh_0 = ((qh >> (gh_mv + 2*i )) << gh_bk) & 0x10;
|
|
2278
|
+
const uint8_t xh_1 = ((qh >> (gh_mv + 2*i+1)) << gh_bk) & 0x10;
|
|
2279
|
+
|
|
2280
|
+
// combine the 4-bits from qs with the 5th bit
|
|
2281
|
+
const int32_t x0 = ((((qs[i] ) & mask) >> x_mv) | xh_0);
|
|
2282
|
+
const int32_t x1 = ((((qs[i] >> 8) & mask) >> x_mv) | xh_1);
|
|
2283
|
+
|
|
2284
|
+
reg[i/2][2*(i%2)+0] = d * x0 + md;
|
|
2285
|
+
reg[i/2][2*(i%2)+1] = d * x1 + md;
|
|
2286
|
+
}
|
|
2287
|
+
}
|
|
2288
|
+
|
|
2289
|
+
template <typename type4x4>
|
|
2290
|
+
void dequantize_q5_1(device const block_q5_1 *xb, short il, thread type4x4 & reg) {
|
|
2291
|
+
device const uint16_t * qs = ((device const uint16_t *)xb + 4);
|
|
2292
|
+
const float d = xb->d;
|
|
2293
|
+
const float m = xb->m;
|
|
2294
|
+
const ushort mask = il ? 0x00F0 : 0x000F;
|
|
2295
|
+
|
|
2296
|
+
const uint32_t qh = *((device const uint32_t *)xb->qh);
|
|
2297
|
+
|
|
2298
|
+
const int x_mv = il ? 4 : 0;
|
|
2299
|
+
|
|
2300
|
+
const int gh_mv = il ? 12 : 0;
|
|
2301
|
+
const int gh_bk = il ? 0 : 4;
|
|
2302
|
+
|
|
2303
|
+
for (int i = 0; i < 8; i++) {
|
|
2304
|
+
// extract the 5-th bits for x0 and x1
|
|
2305
|
+
const uint8_t xh_0 = ((qh >> (gh_mv + 2*i )) << gh_bk) & 0x10;
|
|
2306
|
+
const uint8_t xh_1 = ((qh >> (gh_mv + 2*i+1)) << gh_bk) & 0x10;
|
|
2307
|
+
|
|
2308
|
+
// combine the 4-bits from qs with the 5th bit
|
|
2309
|
+
const int32_t x0 = ((((qs[i] ) & mask) >> x_mv) | xh_0);
|
|
2310
|
+
const int32_t x1 = ((((qs[i] >> 8) & mask) >> x_mv) | xh_1);
|
|
2311
|
+
|
|
2312
|
+
reg[i/2][2*(i%2)+0] = d * x0 + m;
|
|
2313
|
+
reg[i/2][2*(i%2)+1] = d * x1 + m;
|
|
2314
|
+
}
|
|
2315
|
+
}
|
|
2316
|
+
|
|
2152
2317
|
template <typename type4x4>
|
|
2153
2318
|
void dequantize_q8_0(device const block_q8_0 *xb, short il, thread type4x4 & reg) {
|
|
2154
2319
|
device const int8_t * qs = ((device const int8_t *)xb->qs);
|
|
@@ -2490,6 +2655,8 @@ template [[host_name("kernel_get_rows_f32")]] kernel get_rows_t kernel_get_rows
|
|
|
2490
2655
|
template [[host_name("kernel_get_rows_f16")]] kernel get_rows_t kernel_get_rows<half4x4, 1, dequantize_f16>;
|
|
2491
2656
|
template [[host_name("kernel_get_rows_q4_0")]] kernel get_rows_t kernel_get_rows<block_q4_0, 2, dequantize_q4_0>;
|
|
2492
2657
|
template [[host_name("kernel_get_rows_q4_1")]] kernel get_rows_t kernel_get_rows<block_q4_1, 2, dequantize_q4_1>;
|
|
2658
|
+
template [[host_name("kernel_get_rows_q5_0")]] kernel get_rows_t kernel_get_rows<block_q5_0, 2, dequantize_q5_0>;
|
|
2659
|
+
template [[host_name("kernel_get_rows_q5_1")]] kernel get_rows_t kernel_get_rows<block_q5_1, 2, dequantize_q5_1>;
|
|
2493
2660
|
template [[host_name("kernel_get_rows_q8_0")]] kernel get_rows_t kernel_get_rows<block_q8_0, 2, dequantize_q8_0>;
|
|
2494
2661
|
template [[host_name("kernel_get_rows_q2_K")]] kernel get_rows_t kernel_get_rows<block_q2_K, QK_NL, dequantize_q2_K>;
|
|
2495
2662
|
template [[host_name("kernel_get_rows_q3_K")]] kernel get_rows_t kernel_get_rows<block_q3_K, QK_NL, dequantize_q3_K>;
|
|
@@ -2518,6 +2685,8 @@ template [[host_name("kernel_mul_mm_f32_f32")]] kernel mat_mm_t kernel_mul_mm<f
|
|
|
2518
2685
|
template [[host_name("kernel_mul_mm_f16_f32")]] kernel mat_mm_t kernel_mul_mm<half4x4, 1, dequantize_f16>;
|
|
2519
2686
|
template [[host_name("kernel_mul_mm_q4_0_f32")]] kernel mat_mm_t kernel_mul_mm<block_q4_0, 2, dequantize_q4_0>;
|
|
2520
2687
|
template [[host_name("kernel_mul_mm_q4_1_f32")]] kernel mat_mm_t kernel_mul_mm<block_q4_1, 2, dequantize_q4_1>;
|
|
2688
|
+
template [[host_name("kernel_mul_mm_q5_0_f32")]] kernel mat_mm_t kernel_mul_mm<block_q5_0, 2, dequantize_q5_0>;
|
|
2689
|
+
template [[host_name("kernel_mul_mm_q5_1_f32")]] kernel mat_mm_t kernel_mul_mm<block_q5_1, 2, dequantize_q5_1>;
|
|
2521
2690
|
template [[host_name("kernel_mul_mm_q8_0_f32")]] kernel mat_mm_t kernel_mul_mm<block_q8_0, 2, dequantize_q8_0>;
|
|
2522
2691
|
template [[host_name("kernel_mul_mm_q2_K_f32")]] kernel mat_mm_t kernel_mul_mm<block_q2_K, QK_NL, dequantize_q2_K>;
|
|
2523
2692
|
template [[host_name("kernel_mul_mm_q3_K_f32")]] kernel mat_mm_t kernel_mul_mm<block_q3_K, QK_NL, dequantize_q3_K>;
|
|
Binary file
|
|
@@ -18,6 +18,21 @@ typedef struct {
|
|
|
18
18
|
uint8_t qs[QK4_1 / 2]; // nibbles / quants
|
|
19
19
|
} block_q4_1;
|
|
20
20
|
|
|
21
|
+
#define QK5_0 32
|
|
22
|
+
typedef struct {
|
|
23
|
+
half d; // delta
|
|
24
|
+
uint8_t qh[4]; // 5-th bit of quants
|
|
25
|
+
uint8_t qs[QK5_0 / 2]; // nibbles / quants
|
|
26
|
+
} block_q5_0;
|
|
27
|
+
|
|
28
|
+
#define QK5_1 32
|
|
29
|
+
typedef struct {
|
|
30
|
+
half d; // delta
|
|
31
|
+
half m; // min
|
|
32
|
+
uint8_t qh[4]; // 5-th bit of quants
|
|
33
|
+
uint8_t qs[QK5_1 / 2]; // nibbles / quants
|
|
34
|
+
} block_q5_1;
|
|
35
|
+
|
|
21
36
|
#define QK8_0 32
|
|
22
37
|
typedef struct {
|
|
23
38
|
half d; // delta
|
|
@@ -110,9 +125,17 @@ kernel void kernel_mul_row(
|
|
|
110
125
|
}
|
|
111
126
|
|
|
112
127
|
kernel void kernel_scale(
|
|
128
|
+
device const float * src0,
|
|
129
|
+
device float * dst,
|
|
130
|
+
constant float & scale,
|
|
131
|
+
uint tpig[[thread_position_in_grid]]) {
|
|
132
|
+
dst[tpig] = src0[tpig] * scale;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
kernel void kernel_scale_4(
|
|
113
136
|
device const float4 * src0,
|
|
114
137
|
device float4 * dst,
|
|
115
|
-
constant float
|
|
138
|
+
constant float & scale,
|
|
116
139
|
uint tpig[[thread_position_in_grid]]) {
|
|
117
140
|
dst[tpig] = src0[tpig] * scale;
|
|
118
141
|
}
|
|
@@ -399,8 +422,11 @@ kernel void kernel_rms_norm(
|
|
|
399
422
|
// that corresponds to the missing bit shifts (1, 1/16, 1/256, 1/4096)
|
|
400
423
|
inline float block_q_n_dot_y(device const block_q4_0 * qb_curr, float sumy, thread float * yl, int il) {
|
|
401
424
|
float d = qb_curr->d;
|
|
425
|
+
|
|
402
426
|
float2 acc = 0.f;
|
|
427
|
+
|
|
403
428
|
device const uint16_t * qs = ((device const uint16_t *)qb_curr + 1 + il/2);
|
|
429
|
+
|
|
404
430
|
for (int i = 0; i < 8; i+=2) {
|
|
405
431
|
acc[0] += yl[i + 0] * (qs[i / 2] & 0x000F)
|
|
406
432
|
+ yl[i + 1] * (qs[i / 2] & 0x0F00);
|
|
@@ -417,8 +443,11 @@ inline float block_q_n_dot_y(device const block_q4_0 * qb_curr, float sumy, thre
|
|
|
417
443
|
inline float block_q_n_dot_y(device const block_q4_1 * qb_curr, float sumy, thread float * yl, int il) {
|
|
418
444
|
float d = qb_curr->d;
|
|
419
445
|
float m = qb_curr->m;
|
|
420
|
-
|
|
446
|
+
|
|
421
447
|
float2 acc = 0.f;
|
|
448
|
+
|
|
449
|
+
device const uint16_t * qs = ((device const uint16_t *)qb_curr + 2 + il/2);
|
|
450
|
+
|
|
422
451
|
for (int i = 0; i < 8; i+=2) {
|
|
423
452
|
acc[0] += yl[i + 0] * (qs[i / 2] & 0x000F)
|
|
424
453
|
+ yl[i + 1] * (qs[i / 2] & 0x0F00);
|
|
@@ -428,6 +457,49 @@ inline float block_q_n_dot_y(device const block_q4_1 * qb_curr, float sumy, thre
|
|
|
428
457
|
return d * (acc[0] + acc[1]) + sumy * m;
|
|
429
458
|
}
|
|
430
459
|
|
|
460
|
+
// function for calculate inner product between half a q5_0 block and 16 floats (yl), sumy is SUM(yl[i])
|
|
461
|
+
// il indicates where the q5 quants begin (0 or QK5_0/4)
|
|
462
|
+
// we assume that the yl's have been multiplied with the appropriate scale factor
|
|
463
|
+
// that corresponds to the missing bit shifts (1, 1/16, 1/256, 1/4096)
|
|
464
|
+
inline float block_q_n_dot_y(device const block_q5_0 * qb_curr, float sumy, thread float * yl, int il) {
|
|
465
|
+
float d = qb_curr->d;
|
|
466
|
+
|
|
467
|
+
float2 acc = 0.f;
|
|
468
|
+
|
|
469
|
+
device const uint16_t * qs = ((device const uint16_t *)qb_curr + 3 + il/2);
|
|
470
|
+
const uint32_t qh = *((device const uint32_t *)qb_curr->qh);
|
|
471
|
+
|
|
472
|
+
for (int i = 0; i < 8; i+=2) {
|
|
473
|
+
acc[0] += yl[i + 0] * ((qs[i / 2] & 0x000F) | ((qh >> (i+0+il ) << 4 ) & 0x00010))
|
|
474
|
+
+ yl[i + 1] * ((qs[i / 2] & 0x0F00) | ((qh >> (i+1+il ) << 12) & 0x01000));
|
|
475
|
+
acc[1] += yl[i + 8] * ((qs[i / 2] & 0x00F0) | ((qh >> (i+0+il+QK5_0/2) << 8 ) & 0x00100))
|
|
476
|
+
+ yl[i + 9] * ((qs[i / 2] & 0xF000) | ((qh >> (i+1+il+QK5_0/2) << 16) & 0x10000));
|
|
477
|
+
}
|
|
478
|
+
return d * (sumy * -16.f + acc[0] + acc[1]);
|
|
479
|
+
}
|
|
480
|
+
|
|
481
|
+
// function for calculate inner product between half a q5_1 block and 16 floats (yl), sumy is SUM(yl[i])
|
|
482
|
+
// il indicates where the q5 quants begin (0 or QK5_1/4)
|
|
483
|
+
// we assume that the yl's have been multiplied with the appropriate scale factor
|
|
484
|
+
// that corresponds to the missing bit shifts (1, 1/16, 1/256, 1/4096)
|
|
485
|
+
inline float block_q_n_dot_y(device const block_q5_1 * qb_curr, float sumy, thread float * yl, int il) {
|
|
486
|
+
float d = qb_curr->d;
|
|
487
|
+
float m = qb_curr->m;
|
|
488
|
+
|
|
489
|
+
float2 acc = 0.f;
|
|
490
|
+
|
|
491
|
+
device const uint16_t * qs = ((device const uint16_t *)qb_curr + 4 + il/2);
|
|
492
|
+
const uint32_t qh = *((device const uint32_t *)qb_curr->qh);
|
|
493
|
+
|
|
494
|
+
for (int i = 0; i < 8; i+=2) {
|
|
495
|
+
acc[0] += yl[i + 0] * ((qs[i / 2] & 0x000F) | ((qh >> (i+0+il ) << 4 ) & 0x00010))
|
|
496
|
+
+ yl[i + 1] * ((qs[i / 2] & 0x0F00) | ((qh >> (i+1+il ) << 12) & 0x01000));
|
|
497
|
+
acc[1] += yl[i + 8] * ((qs[i / 2] & 0x00F0) | ((qh >> (i+0+il+QK5_0/2) << 8 ) & 0x00100))
|
|
498
|
+
+ yl[i + 9] * ((qs[i / 2] & 0xF000) | ((qh >> (i+1+il+QK5_0/2) << 16) & 0x10000));
|
|
499
|
+
}
|
|
500
|
+
return d * (acc[0] + acc[1]) + sumy * m;
|
|
501
|
+
}
|
|
502
|
+
|
|
431
503
|
// putting them in the kernel cause a significant performance penalty
|
|
432
504
|
#define N_DST 4 // each SIMD group works on 4 rows
|
|
433
505
|
#define N_SIMDGROUP 2 // number of SIMD groups in a thread group
|
|
@@ -525,6 +597,43 @@ kernel void kernel_mul_mv_q4_1_f32(
|
|
|
525
597
|
mul_vec_q_n_f32<block_q4_1, N_DST, N_SIMDGROUP, N_SIMDWIDTH>(src0,src1,dst,ne00,ne01,ne02,ne10,ne12,ne0,ne1,gqa,tgpig,tiisg,sgitg);
|
|
526
598
|
}
|
|
527
599
|
|
|
600
|
+
kernel void kernel_mul_mv_q5_0_f32(
|
|
601
|
+
device const void * src0,
|
|
602
|
+
device const float * src1,
|
|
603
|
+
device float * dst,
|
|
604
|
+
constant int64_t & ne00,
|
|
605
|
+
constant int64_t & ne01[[buffer(4)]],
|
|
606
|
+
constant int64_t & ne02[[buffer(5)]],
|
|
607
|
+
constant int64_t & ne10[[buffer(9)]],
|
|
608
|
+
constant int64_t & ne12[[buffer(11)]],
|
|
609
|
+
constant int64_t & ne0[[buffer(15)]],
|
|
610
|
+
constant int64_t & ne1[[buffer(16)]],
|
|
611
|
+
constant uint & gqa[[buffer(17)]],
|
|
612
|
+
uint3 tgpig[[threadgroup_position_in_grid]],
|
|
613
|
+
uint tiisg[[thread_index_in_simdgroup]],
|
|
614
|
+
uint sgitg[[simdgroup_index_in_threadgroup]]) {
|
|
615
|
+
mul_vec_q_n_f32<block_q5_0, N_DST, N_SIMDGROUP, N_SIMDWIDTH>(src0,src1,dst,ne00,ne01,ne02,ne10,ne12,ne0,ne1,gqa,tgpig,tiisg,sgitg);
|
|
616
|
+
}
|
|
617
|
+
|
|
618
|
+
kernel void kernel_mul_mv_q5_1_f32(
|
|
619
|
+
device const void * src0,
|
|
620
|
+
device const float * src1,
|
|
621
|
+
device float * dst,
|
|
622
|
+
constant int64_t & ne00,
|
|
623
|
+
constant int64_t & ne01[[buffer(4)]],
|
|
624
|
+
constant int64_t & ne02[[buffer(5)]],
|
|
625
|
+
constant int64_t & ne10[[buffer(9)]],
|
|
626
|
+
constant int64_t & ne12[[buffer(11)]],
|
|
627
|
+
constant int64_t & ne0[[buffer(15)]],
|
|
628
|
+
constant int64_t & ne1[[buffer(16)]],
|
|
629
|
+
constant uint & gqa[[buffer(17)]],
|
|
630
|
+
uint3 tgpig[[threadgroup_position_in_grid]],
|
|
631
|
+
uint tiisg[[thread_index_in_simdgroup]],
|
|
632
|
+
uint sgitg[[simdgroup_index_in_threadgroup]]) {
|
|
633
|
+
mul_vec_q_n_f32<block_q5_1, N_DST, N_SIMDGROUP, N_SIMDWIDTH>(src0,src1,dst,ne00,ne01,ne02,ne10,ne12,ne0,ne1,gqa,tgpig,tiisg,sgitg);
|
|
634
|
+
}
|
|
635
|
+
|
|
636
|
+
|
|
528
637
|
#define NB_Q8_0 8
|
|
529
638
|
|
|
530
639
|
kernel void kernel_mul_mv_q8_0_f32(
|
|
@@ -2149,6 +2258,62 @@ void dequantize_q4_1(device const block_q4_1 *xb, short il, thread type4x4 & reg
|
|
|
2149
2258
|
}
|
|
2150
2259
|
}
|
|
2151
2260
|
|
|
2261
|
+
template <typename type4x4>
|
|
2262
|
+
void dequantize_q5_0(device const block_q5_0 *xb, short il, thread type4x4 & reg) {
|
|
2263
|
+
device const uint16_t * qs = ((device const uint16_t *)xb + 3);
|
|
2264
|
+
const float d = xb->d;
|
|
2265
|
+
const float md = -16.h * xb->d;
|
|
2266
|
+
const ushort mask = il ? 0x00F0 : 0x000F;
|
|
2267
|
+
|
|
2268
|
+
const uint32_t qh = *((device const uint32_t *)xb->qh);
|
|
2269
|
+
|
|
2270
|
+
const int x_mv = il ? 4 : 0;
|
|
2271
|
+
|
|
2272
|
+
const int gh_mv = il ? 12 : 0;
|
|
2273
|
+
const int gh_bk = il ? 0 : 4;
|
|
2274
|
+
|
|
2275
|
+
for (int i = 0; i < 8; i++) {
|
|
2276
|
+
// extract the 5-th bits for x0 and x1
|
|
2277
|
+
const uint8_t xh_0 = ((qh >> (gh_mv + 2*i )) << gh_bk) & 0x10;
|
|
2278
|
+
const uint8_t xh_1 = ((qh >> (gh_mv + 2*i+1)) << gh_bk) & 0x10;
|
|
2279
|
+
|
|
2280
|
+
// combine the 4-bits from qs with the 5th bit
|
|
2281
|
+
const int32_t x0 = ((((qs[i] ) & mask) >> x_mv) | xh_0);
|
|
2282
|
+
const int32_t x1 = ((((qs[i] >> 8) & mask) >> x_mv) | xh_1);
|
|
2283
|
+
|
|
2284
|
+
reg[i/2][2*(i%2)+0] = d * x0 + md;
|
|
2285
|
+
reg[i/2][2*(i%2)+1] = d * x1 + md;
|
|
2286
|
+
}
|
|
2287
|
+
}
|
|
2288
|
+
|
|
2289
|
+
template <typename type4x4>
|
|
2290
|
+
void dequantize_q5_1(device const block_q5_1 *xb, short il, thread type4x4 & reg) {
|
|
2291
|
+
device const uint16_t * qs = ((device const uint16_t *)xb + 4);
|
|
2292
|
+
const float d = xb->d;
|
|
2293
|
+
const float m = xb->m;
|
|
2294
|
+
const ushort mask = il ? 0x00F0 : 0x000F;
|
|
2295
|
+
|
|
2296
|
+
const uint32_t qh = *((device const uint32_t *)xb->qh);
|
|
2297
|
+
|
|
2298
|
+
const int x_mv = il ? 4 : 0;
|
|
2299
|
+
|
|
2300
|
+
const int gh_mv = il ? 12 : 0;
|
|
2301
|
+
const int gh_bk = il ? 0 : 4;
|
|
2302
|
+
|
|
2303
|
+
for (int i = 0; i < 8; i++) {
|
|
2304
|
+
// extract the 5-th bits for x0 and x1
|
|
2305
|
+
const uint8_t xh_0 = ((qh >> (gh_mv + 2*i )) << gh_bk) & 0x10;
|
|
2306
|
+
const uint8_t xh_1 = ((qh >> (gh_mv + 2*i+1)) << gh_bk) & 0x10;
|
|
2307
|
+
|
|
2308
|
+
// combine the 4-bits from qs with the 5th bit
|
|
2309
|
+
const int32_t x0 = ((((qs[i] ) & mask) >> x_mv) | xh_0);
|
|
2310
|
+
const int32_t x1 = ((((qs[i] >> 8) & mask) >> x_mv) | xh_1);
|
|
2311
|
+
|
|
2312
|
+
reg[i/2][2*(i%2)+0] = d * x0 + m;
|
|
2313
|
+
reg[i/2][2*(i%2)+1] = d * x1 + m;
|
|
2314
|
+
}
|
|
2315
|
+
}
|
|
2316
|
+
|
|
2152
2317
|
template <typename type4x4>
|
|
2153
2318
|
void dequantize_q8_0(device const block_q8_0 *xb, short il, thread type4x4 & reg) {
|
|
2154
2319
|
device const int8_t * qs = ((device const int8_t *)xb->qs);
|
|
@@ -2490,6 +2655,8 @@ template [[host_name("kernel_get_rows_f32")]] kernel get_rows_t kernel_get_rows
|
|
|
2490
2655
|
template [[host_name("kernel_get_rows_f16")]] kernel get_rows_t kernel_get_rows<half4x4, 1, dequantize_f16>;
|
|
2491
2656
|
template [[host_name("kernel_get_rows_q4_0")]] kernel get_rows_t kernel_get_rows<block_q4_0, 2, dequantize_q4_0>;
|
|
2492
2657
|
template [[host_name("kernel_get_rows_q4_1")]] kernel get_rows_t kernel_get_rows<block_q4_1, 2, dequantize_q4_1>;
|
|
2658
|
+
template [[host_name("kernel_get_rows_q5_0")]] kernel get_rows_t kernel_get_rows<block_q5_0, 2, dequantize_q5_0>;
|
|
2659
|
+
template [[host_name("kernel_get_rows_q5_1")]] kernel get_rows_t kernel_get_rows<block_q5_1, 2, dequantize_q5_1>;
|
|
2493
2660
|
template [[host_name("kernel_get_rows_q8_0")]] kernel get_rows_t kernel_get_rows<block_q8_0, 2, dequantize_q8_0>;
|
|
2494
2661
|
template [[host_name("kernel_get_rows_q2_K")]] kernel get_rows_t kernel_get_rows<block_q2_K, QK_NL, dequantize_q2_K>;
|
|
2495
2662
|
template [[host_name("kernel_get_rows_q3_K")]] kernel get_rows_t kernel_get_rows<block_q3_K, QK_NL, dequantize_q3_K>;
|
|
@@ -2518,6 +2685,8 @@ template [[host_name("kernel_mul_mm_f32_f32")]] kernel mat_mm_t kernel_mul_mm<f
|
|
|
2518
2685
|
template [[host_name("kernel_mul_mm_f16_f32")]] kernel mat_mm_t kernel_mul_mm<half4x4, 1, dequantize_f16>;
|
|
2519
2686
|
template [[host_name("kernel_mul_mm_q4_0_f32")]] kernel mat_mm_t kernel_mul_mm<block_q4_0, 2, dequantize_q4_0>;
|
|
2520
2687
|
template [[host_name("kernel_mul_mm_q4_1_f32")]] kernel mat_mm_t kernel_mul_mm<block_q4_1, 2, dequantize_q4_1>;
|
|
2688
|
+
template [[host_name("kernel_mul_mm_q5_0_f32")]] kernel mat_mm_t kernel_mul_mm<block_q5_0, 2, dequantize_q5_0>;
|
|
2689
|
+
template [[host_name("kernel_mul_mm_q5_1_f32")]] kernel mat_mm_t kernel_mul_mm<block_q5_1, 2, dequantize_q5_1>;
|
|
2521
2690
|
template [[host_name("kernel_mul_mm_q8_0_f32")]] kernel mat_mm_t kernel_mul_mm<block_q8_0, 2, dequantize_q8_0>;
|
|
2522
2691
|
template [[host_name("kernel_mul_mm_q2_K_f32")]] kernel mat_mm_t kernel_mul_mm<block_q2_K, QK_NL, dequantize_q2_K>;
|
|
2523
2692
|
template [[host_name("kernel_mul_mm_q3_K_f32")]] kernel mat_mm_t kernel_mul_mm<block_q3_K, QK_NL, dequantize_q3_K>;
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "node-llama-cpp",
|
|
3
|
-
"version": "2.7.
|
|
3
|
+
"version": "2.7.4",
|
|
4
4
|
"description": "Run AI models locally on your machine with node.js bindings for llama.cpp. Force a JSON schema on the model output on the generation level",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -101,7 +101,6 @@
|
|
|
101
101
|
"@commitlint/cli": "^17.7.1",
|
|
102
102
|
"@commitlint/config-conventional": "^17.7.0",
|
|
103
103
|
"@semantic-release/exec": "^6.0.3",
|
|
104
|
-
"@types/bytes": "^3.1.1",
|
|
105
104
|
"@types/cli-progress": "^3.11.0",
|
|
106
105
|
"@types/cross-spawn": "^6.0.2",
|
|
107
106
|
"@types/fs-extra": "^11.0.1",
|