diff --git a/CHANGELOG.md b/CHANGELOG.md index 2de76c1f..b1dee66c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.56.2] — 2026-09-22 + +A transformers-only release against **SKaiNET engine 0.56.0** (unchanged). + +### Added + +- **`IreeMoonshineStream`** (`llm-runtime:iree-android`, `libskainet_moonshine_stream.so`, arm64-v8a + + armeabi-v7a, Vulkan + local-task): the streaming Moonshine v2 speech-to-text runtime over the five + graphs of `MoonshineV2ExportCli` — PCM in, cumulative partial transcripts out, exact final on + `finish()`. The counterpart of `IreeKvSession` for ASR: the last piece a Moonshine cartridge needed + from a released artifact. `native/build-moonshine-stream.sh` builds it with the same image and + cache as the other two libraries. + ### Added - **`IreeMoonshineStream`** (`llm-runtime:iree-android`, `libskainet_moonshine_stream.so`, arm64-v8a + diff --git a/README.md b/README.md index de2f7a96..a58a01b0 100644 --- a/README.md +++ b/README.md @@ -109,19 +109,21 @@ Honest status — see the project-status note at the top of this README. ## Current release -The current release is **0.56.1** (against **SKaiNET 0.56.0** — a transformers-only release, same +The current release is **0.56.2** (against **SKaiNET 0.56.0** — a transformers-only release, same pattern as 0.54.1: no new engine version needed). -**Moonshine v2 streaming, every checkpoint of the family, exported from the published module.** -`MoonshineV2ExportCli` turns a Hugging Face `moonshine_streaming` snapshot into the five StableHLO -graphs of the streaming contract (frontend, encoder, adapter, masked prefill, dynamic-cache step) -plus the host-side embedding and vocabulary tables — no Python, nothing to configure per language -or size, and it fails if a checkpoint tensor goes unused. The model gains per-layer attention bands -(the German checkpoints need them) and split encoder/decoder widths (the small ones). See -*Export Moonshine v2 Streaming to StableHLO* in the docs. +**`IreeMoonshineStream`: the streaming Moonshine v2 speech-to-text runtime.** `libskainet_moonshine_stream.so` +(`llm-runtime:iree-android`, arm64-v8a + armeabi-v7a, Vulkan or CPU) drives the five graphs of +`MoonshineV2ExportCli` — frontend, encoder, adapter, masked prefill, dynamic with-past step — plus the +shared decoder parameter archive as a real streaming loop on the device: PCM in, cumulative partial +transcripts out, one exact full re-decode on `finish()`. The Kotlin binding is shaped like `IreeKvSession`: +files by absolute path, no `Context`. With the exporter (0.56.1) this is the last piece a Moonshine +cartridge needed from a released artifact rather than from C source of its own. -It builds on **0.56.0**, which put the two version lines back in lock-step with **SKaiNET 0.56.0** -(the engine skipped 0.55.0 to realign them). +It builds on **0.56.1**, which released `MoonshineV2ExportCli` (a Hugging Face snapshot in, the five +StableHLO graphs and two host-side tables out, no Python, nothing to configure per language or size), and +**0.56.0**, which put the two version lines back in lock-step with **SKaiNET 0.56.0** (the engine skipped +0.55.0 to realign them). **Grouped-query attention without head expansion, and the compiled leg of SKEEP-005.** The engine's `scaledDotProductAttention` is grouped-query native, so `MultiHeadAttention` and @@ -254,7 +256,7 @@ The recommended way to consume is via the BOM. It pins every published `skainet- ```kotlin dependencies { - implementation(platform("sk.ainet.transformers:skainet-transformers-bom:0.56.1")) + implementation(platform("sk.ainet.transformers:skainet-transformers-bom:0.56.2")) // Versions resolved from the BOM: implementation("sk.ainet.transformers:skainet-transformers-core") diff --git a/docs/modules/ROOT/pages/how-to/export-moonshine-v2-streaming.adoc b/docs/modules/ROOT/pages/how-to/export-moonshine-v2-streaming.adoc index b8d90b58..13d6a4f6 100644 --- a/docs/modules/ROOT/pages/how-to/export-moonshine-v2-streaming.adoc +++ b/docs/modules/ROOT/pages/how-to/export-moonshine-v2-streaming.adoc @@ -32,7 +32,7 @@ From your own build, resolve the published module and run its main class: ---- val exportTool by configurations.creating dependencies { - exportTool(platform("sk.ainet.transformers:skainet-transformers-bom:0.56.1")) + exportTool(platform("sk.ainet.transformers:skainet-transformers-bom:0.56.2")) exportTool("sk.ainet.transformers:skainet-transformers-inference-moonshine") } tasks.register("exportMoonshine") { diff --git a/docs/modules/ROOT/pages/reference/moonshine-encoder.adoc b/docs/modules/ROOT/pages/reference/moonshine-encoder.adoc index d277d75a..ba4796f3 100644 --- a/docs/modules/ROOT/pages/reference/moonshine-encoder.adoc +++ b/docs/modules/ROOT/pages/reference/moonshine-encoder.adoc @@ -24,7 +24,7 @@ a DSL decoder is future work. [source,kotlin] ---- dependencies { - implementation(platform("sk.ainet.transformers:skainet-transformers-bom:0.56.1")) + implementation(platform("sk.ainet.transformers:skainet-transformers-bom:0.56.2")) implementation("sk.ainet.transformers:skainet-transformers-inference-moonshine") } ---- diff --git a/docs/modules/ROOT/pages/tutorials/android-getting-started.adoc b/docs/modules/ROOT/pages/tutorials/android-getting-started.adoc index 0dabafff..81d6f00e 100644 --- a/docs/modules/ROOT/pages/tutorials/android-getting-started.adoc +++ b/docs/modules/ROOT/pages/tutorials/android-getting-started.adoc @@ -55,7 +55,7 @@ dependencies { // self-registers it on ART at process start — nothing to call. runtimeOnly("sk.ainet.core:skainet-backend-jni-cpu") - implementation(platform("sk.ainet.transformers:skainet-transformers-bom:0.56.1")) + implementation(platform("sk.ainet.transformers:skainet-transformers-bom:0.56.2")) implementation("sk.ainet.transformers:skainet-transformers-core") implementation("sk.ainet.transformers:skainet-transformers-runtime-kllama") implementation("sk.ainet.transformers:skainet-transformers-inference-llama") diff --git a/docs/modules/ROOT/pages/tutorials/getting-started-java.adoc b/docs/modules/ROOT/pages/tutorials/getting-started-java.adoc index f0698292..4cc34d51 100644 --- a/docs/modules/ROOT/pages/tutorials/getting-started-java.adoc +++ b/docs/modules/ROOT/pages/tutorials/getting-started-java.adoc @@ -25,7 +25,7 @@ In your `build.gradle.kts`: [source,kotlin] ---- dependencies { - implementation(platform("sk.ainet.transformers:skainet-transformers-bom:0.56.1")) + implementation(platform("sk.ainet.transformers:skainet-transformers-bom:0.56.2")) implementation("sk.ainet.transformers:skainet-transformers-runtime-kllama") implementation("sk.ainet.transformers:skainet-transformers-agent") @@ -41,7 +41,7 @@ Or in Maven (Maven needs the `-jvm` classifier suffix on platform artifacts): sk.ainet.transformers skainet-transformers-bom - 0.56.1 + 0.56.2 pom import diff --git a/docs/modules/ROOT/pages/tutorials/getting-started-leaf.adoc b/docs/modules/ROOT/pages/tutorials/getting-started-leaf.adoc index 3c93e112..f5414521 100644 --- a/docs/modules/ROOT/pages/tutorials/getting-started-leaf.adoc +++ b/docs/modules/ROOT/pages/tutorials/getting-started-leaf.adoc @@ -34,7 +34,7 @@ encoder output to the advertised dimensionality. The runtime applies it automati [source,kotlin] ---- dependencies { - implementation(platform("sk.ainet.transformers:skainet-transformers-bom:0.56.1")) + implementation(platform("sk.ainet.transformers:skainet-transformers-bom:0.56.2")) implementation("sk.ainet.transformers:skainet-transformers-providers") } ---- diff --git a/docs/modules/ROOT/pages/tutorials/llama3-tool-calling.adoc b/docs/modules/ROOT/pages/tutorials/llama3-tool-calling.adoc index 7f049afb..30b91b99 100644 --- a/docs/modules/ROOT/pages/tutorials/llama3-tool-calling.adoc +++ b/docs/modules/ROOT/pages/tutorials/llama3-tool-calling.adoc @@ -52,7 +52,7 @@ The pieces you need live in three modules: [source,kotlin] ---- dependencies { - implementation(platform("sk.ainet.transformers:skainet-transformers-bom:0.56.1")) + implementation(platform("sk.ainet.transformers:skainet-transformers-bom:0.56.2")) implementation("sk.ainet.transformers:skainet-transformers-runtime-kllama") implementation("sk.ainet.transformers:skainet-transformers-agent") diff --git a/gradle.properties b/gradle.properties index 9a0b17b6..cc3cc253 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ GROUP=sk.ainet.transformers -VERSION_NAME=0.56.1 +VERSION_NAME=0.56.2 POM_DESCRIPTION=SKaiNET-transformers diff --git a/llm-inference/gemma/README.md b/llm-inference/gemma/README.md index 64e2b43d..7bd60420 100644 --- a/llm-inference/gemma/README.md +++ b/llm-inference/gemma/README.md @@ -4,7 +4,7 @@ Reusable **Gemma** model (incl. the FunctionGemma tool-calling fine-tune) author a portable graph producer with **no runtime/board/Torq code**. Pair it with the runtime module below to decode on-device. -- **Coordinate:** `sk.ainet.transformers:skainet-transformers-inference-gemma:0.56.1` +- **Coordinate:** `sk.ainet.transformers:skainet-transformers-inference-gemma:0.56.2` - **Targets:** `android`, `iosArm64`, `iosSimulatorArm64`, `macosArm64`, `linuxX64`, `linuxArm64` (broadly portable — mobile through server). - **Entry point:** `gemmaNetwork()` / `GemmaNetworkLoader` (loads a GGUF, builds the DSL graph, incl. the @@ -24,8 +24,8 @@ FunctionGemma has a one-liner facade in `…:skainet-transformers-runtime-kgemma ```kotlin dependencies { - implementation("sk.ainet.transformers:skainet-transformers-inference-gemma:0.56.1") - implementation("sk.ainet.transformers:skainet-transformers-runtime-gemma-iree:0.56.1") // on-device decode + implementation("sk.ainet.transformers:skainet-transformers-inference-gemma:0.56.2") + implementation("sk.ainet.transformers:skainet-transformers-runtime-gemma-iree:0.56.2") // on-device decode } ```