Skip to content

Commit d0e9e95

Browse files
Merge pull request #437 from SKaiNET-developers/feature/chuncked-dequant-support
Feature/chuncked dequant support
2 parents 79ed948 + 66d04b0 commit d0e9e95

4 files changed

Lines changed: 40 additions & 7 deletions

File tree

gradle/libs.versions.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ jsonSchemaValidator = "3.0.1"
55
jsonSchemaValidatorVersion = "0.5.4"
66
junit = "4.13.2"
77
junitJupiter = "6.0.3"
8-
kotlin = "2.3.0"
8+
kotlin = "2.3.10"
99
kotlinxCoroutines = "1.10.2"
1010
kotlinBrowser = "0.5.0"
1111
android-minSdk = "24"

kotlin-js-store/yarn.lock

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1095,6 +1095,11 @@ is-number@^7.0.0:
10951095
resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
10961096
integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
10971097

1098+
is-path-inside@^3.0.3:
1099+
version "3.0.3"
1100+
resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283"
1101+
integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==
1102+
10981103
is-plain-obj@^2.1.0:
10991104
version "2.1.0"
11001105
resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287"
@@ -1361,10 +1366,10 @@ mkdirp@^0.5.5:
13611366
dependencies:
13621367
minimist "^1.2.6"
13631368

1364-
mocha@11.7.2:
1365-
version "11.7.2"
1366-
resolved "https://registry.yarnpkg.com/mocha/-/mocha-11.7.2.tgz#3c0079fe5cc2f8ea86d99124debcc42bb1ab22b5"
1367-
integrity sha512-lkqVJPmqqG/w5jmmFtiRvtA2jkDyNVUcefFJKb2uyX4dekk8Okgqop3cgbFiaIvj8uCRJVTP5x9dfxGyXm2jvQ==
1369+
mocha@11.7.5:
1370+
version "11.7.5"
1371+
resolved "https://registry.yarnpkg.com/mocha/-/mocha-11.7.5.tgz#58f5bbfa5e0211ce7e5ee6128107cefc2515a627"
1372+
integrity sha512-mTT6RgopEYABzXWFx+GcJ+ZQ32kp4fMf0xvpZIIfSq9Z8lC/++MtcCnQ9t5FP2veYEP95FIYSvW+U9fV4xrlig==
13681373
dependencies:
13691374
browser-stdout "^1.3.1"
13701375
chokidar "^4.0.1"
@@ -1374,6 +1379,7 @@ mocha@11.7.2:
13741379
find-up "^5.0.0"
13751380
glob "^10.4.5"
13761381
he "^1.2.0"
1382+
is-path-inside "^3.0.3"
13771383
js-yaml "^4.1.0"
13781384
log-symbols "^4.1.0"
13791385
minimatch "^9.0.5"

skainet-data/skainet-data-simple/src/jvmMain/kotlin/sk/ainet/data/cifar10/CIFAR10LoaderJvm.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,9 +81,9 @@ public class CIFAR10LoaderJvm(config: CIFAR10LoaderConfig) : CIFAR10LoaderCommon
8181

8282
// Configure timeout for large files (CIFAR-10 is ~170MB)
8383
install(HttpTimeout) {
84-
requestTimeoutMillis = 300000 // 5 minutes
84+
requestTimeoutMillis = 600000 // 10 minutes
8585
connectTimeoutMillis = 60000 // 60 seconds
86-
socketTimeoutMillis = 300000 // 5 minutes
86+
socketTimeoutMillis = 600000 // 10 minutes
8787
}
8888
}
8989

skainet-io/skainet-io-gguf/src/commonMain/kotlin/sk/ainet/io/gguf/dequant/DequantOps.kt

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,33 @@ public object DequantOps {
247247
}
248248
}
249249

250+
/**
251+
* Returns (bytesPerBlock, elemsPerBlock) for a given quantization type.
252+
* Useful for chunked dequantization on single-threaded platforms (WASM).
253+
*/
254+
public fun blockInfoFor(type: GGMLQuantizationType): Pair<Int, Int> = when (type) {
255+
GGMLQuantizationType.F16 -> Pair(2, 1)
256+
GGMLQuantizationType.BF16 -> Pair(2, 1)
257+
GGMLQuantizationType.F32 -> Pair(4, 1)
258+
GGMLQuantizationType.Q4_0 -> Pair(18, 32)
259+
GGMLQuantizationType.Q4_1 -> Pair(20, 32)
260+
GGMLQuantizationType.Q5_0 -> Pair(22, 32)
261+
GGMLQuantizationType.Q5_1 -> Pair(24, 32)
262+
GGMLQuantizationType.Q8_0 -> Pair(34, 32)
263+
GGMLQuantizationType.Q8_1 -> Pair(40, 32)
264+
GGMLQuantizationType.IQ4_NL -> Pair(18, 32)
265+
GGMLQuantizationType.IQ4_XS -> Pair(2 + 2 + QK_K / 2 + QK_K / 64, QK_K)
266+
GGMLQuantizationType.Q2_K -> Pair(2 + 2 + QK_K / 16 + QK_K / 4, QK_K)
267+
GGMLQuantizationType.Q3_K -> Pair(2 + QK_K / 4 + QK_K / 8 + 12, QK_K)
268+
GGMLQuantizationType.Q4_K -> Pair(144, QK_K)
269+
GGMLQuantizationType.Q5_K -> Pair(176, QK_K)
270+
GGMLQuantizationType.Q6_K -> Pair(210, QK_K)
271+
GGMLQuantizationType.Q8_K -> Pair(292, QK_K)
272+
GGMLQuantizationType.TQ1_0 -> Pair(54, 256)
273+
GGMLQuantizationType.TQ2_0 -> Pair(66, 256)
274+
else -> error("Block info for $type not available")
275+
}
276+
250277
// ========== ByteArray-based quantization implementations ==========
251278

252279
@Suppress("UNUSED_PARAMETER")

0 commit comments

Comments
 (0)