Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 3 additions & 4 deletions packages/sdk/bun.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 4 additions & 4 deletions packages/sdk/examples/plugins.ts
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ const {
loadModel,
unloadModel,
LLAMA_3_2_1B_INST_Q4_0,
MARIAN_OPUS_EN_IT_Q4_0,
BERGAMOT_EN_ES,
GTE_LARGE_FP16,
} = await import("@qvac/sdk");

Expand Down Expand Up @@ -110,12 +110,12 @@ console.log("2. Translation (nmtcpp-translation plugin)");

try {
const nmtModelId = await loadModel({
modelSrc: MARIAN_OPUS_EN_IT_Q4_0,
modelSrc: BERGAMOT_EN_ES,
modelType: "nmt",
modelConfig: {
engine: "Opus",
engine: "Bergamot",
from: "en",
to: "it",
to: "es",
},
onProgress: (p) =>
console.log(` Loading NMT: ${p.percentage.toFixed(1)}%`),
Expand Down
42 changes: 0 additions & 42 deletions packages/sdk/examples/translation/translation-opus.ts

This file was deleted.

10 changes: 5 additions & 5 deletions packages/sdk/examples/translation/translation-stream.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,17 @@ import {
loadModel,
translate,
unloadModel,
MARIAN_OPUS_EN_IT_Q4_0,
BERGAMOT_EN_ES,
} from "@qvac/sdk";

try {
const modelId = await loadModel({
modelSrc: MARIAN_OPUS_EN_IT_Q4_0,
modelSrc: BERGAMOT_EN_ES,
modelType: "nmt",
modelConfig: {
engine: "Opus",
engine: "Bergamot",
from: "en",
to: "it",
to: "es",
},
});

Expand All @@ -29,7 +29,7 @@ try {
stream: true,
});

process.stdout.write("Translated text EN -> IT: ");
process.stdout.write("Translated text EN -> ES: ");
for await (const token of streamResult.tokenStream) {
process.stdout.write(token);
}
Expand Down
31 changes: 0 additions & 31 deletions packages/sdk/models/update-models/naming.ts
Original file line number Diff line number Diff line change
Expand Up @@ -242,9 +242,6 @@ function generateNmtName(input: BaseNameInput): string {
) {
return generateNmtIndictransName(input);
}
if (lowerPath.includes("opus") || lowerFilename.includes("opus")) {
return generateNmtOpusName(input);
}
if (lowerPath.includes("bergamot") || lowerFilename.includes("bergamot")) {
return generateNmtBergamotName(input);
}
Expand Down Expand Up @@ -282,34 +279,6 @@ function generateNmtIndictransName({
return `MARIAN_${nameParts.map(cleanPart).join("_")}`;
}

function generateNmtOpusName({
filename,
quantization,
tagExtra,
}: BaseNameInput): string {
const langMatch = filename.match(/-([a-z]{2,3})-([a-z]{2,3})\./i);
let langPair = "";
if (langMatch) {
langPair = `${langMatch[1]!.toUpperCase()}_${langMatch[2]!.toUpperCase()}`;
} else {
const tagLang = tagExtra || "";
if (tagLang.match(/^[a-z]{2}-[a-z]{2}$/i)) {
const [src, tgt] = tagLang.split("-");
langPair = `${src!.toUpperCase()}_${tgt!.toUpperCase()}`;
}
}

if (!langPair) {
const roaMatch = filename.match(/-([a-z]{2,3})-([a-z]{2,3})-f16/i);
if (roaMatch) {
langPair = `${roaMatch[1]!.toUpperCase()}_${roaMatch[2]!.toUpperCase()}`;
}
}

const nameParts = [langPair, quantization].filter((p) => p && p !== "");
return `MARIAN_OPUS_${nameParts.map(cleanPart).join("_")}`;
}

function generateNmtBergamotName({ filename }: BaseNameInput): string {
const langMatch = filename.match(/[.]([a-z]{2,4})[.]/i);
let langPair = "";
Expand Down
2 changes: 1 addition & 1 deletion packages/sdk/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,7 @@
"@qvac/registry-client": "^0.4.0",
"@qvac/transcription-parakeet": "^0.3.1",
"@qvac/transcription-whispercpp": "^0.6.1",
"@qvac/translation-nmtcpp": "^0.6.10",
"@qvac/translation-nmtcpp": "^1.0.1",
"@qvac/tts-onnx": "^0.8.2",
"fast-safe-stringify": "2.1.1",
"which-runtime": "^1.3.2",
Expand Down
15 changes: 1 addition & 14 deletions packages/sdk/schemas/translation-config.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
import { z } from "zod";
import { modelSrcInputSchema } from "./model-src-utils";

// Marian/Opus model languages
export const MARIAN_LANGUAGES = ["en", "de", "es", "it", "ru", "ja"] as const;

// Bergamot supports many more language pairs
export const BERGAMOT_LANGUAGES = [
"en",
Expand Down Expand Up @@ -88,12 +85,11 @@ export const AFRICAN_LANGUAGES_MAP = new Map([

// Union of all NMT languages (for general type usage)
export const NMT_LANGUAGES = [
...MARIAN_LANGUAGES,
...BERGAMOT_LANGUAGES,
...INDICTRANS_LANGUAGES,
] as const;

export const NMT_ENGINES = ["Opus", "Bergamot", "IndicTrans"] as const;
export const NMT_ENGINES = ["Bergamot", "IndicTrans"] as const;
export type NmtEngine = (typeof NMT_ENGINES)[number];

// Common generation parameters (without language fields)
Expand All @@ -109,13 +105,6 @@ const nmtGenerationParamsSchema = z.object({
topp: z.number().optional(),
});

// Opus engine config (Marian-based) - supports MARIAN_LANGUAGES
const opusConfigSchema = nmtGenerationParamsSchema.extend({
engine: z.literal("Opus"),
from: z.enum(MARIAN_LANGUAGES),
to: z.enum(MARIAN_LANGUAGES),
});

// Pivot model configuration for Bergamot (for translation via intermediate language)
const bergamotPivotModelSchema = nmtGenerationParamsSchema
.extend({
Expand Down Expand Up @@ -146,7 +135,6 @@ const indicTransConfigSchema = nmtGenerationParamsSchema.extend({

// Discriminated union of all engine configs
export const nmtConfigBaseSchema = z.discriminatedUnion("engine", [
opusConfigSchema,
bergamotConfigSchema,
indicTransConfigSchema,
]);
Expand All @@ -165,7 +153,6 @@ export const nmtConfigSchema = nmtConfigBaseSchema.transform((data) => ({
topp: data.topp ?? 1.0,
}));

export type MarianLanguage = (typeof MARIAN_LANGUAGES)[number];
export type BergamotLanguage = (typeof BERGAMOT_LANGUAGES)[number];
export type IndicTransLanguage = (typeof INDICTRANS_LANGUAGES)[number];
export type NmtLanguage = (typeof NMT_LANGUAGES)[number];
Expand Down
36 changes: 0 additions & 36 deletions packages/sdk/test/unit/update-models-naming.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -708,42 +708,6 @@ test("nmt: Indictrans en-indic 1B q0f16 — full field mapping", (t: any) => {
t.is(exportName, "MARIAN_EN_HI_INDIC_1B_Q0F16");
});

// ---------------------------------------------------------------------------
// NMT: Opus en-ru
// ---------------------------------------------------------------------------

test("nmt: Opus en-ru q0f16 — full field mapping", (t: any) => {
const coreKey = Buffer.from("33".repeat(32), "hex");

const { model, exportName } = processAndName({
path: "qvac_models_compiled/ggml/marian/q0f16/ggml-opus-en-ru/2025-11-09/ggml-opus-en-ru.bin",
source: "s3",
engine: "@qvac/translation-nmtcpp",
license: "Apache-2.0",
name: "",
sizeBytes: 120000000,
sha256: "33333333223344553333333322334455333333332233445533333333aabbccdd",
quantization: "q0f16",
params: "",
tags: ["translation", "opus", "marian", "en-ru"],
blobBinding: {
coreKey,
blockOffset: 13000,
blockLength: 100,
byteOffset: 120000000,
byteLength: 120000000,
},
});

t.is(model.engine, "nmtcpp-translation");
t.is(model.addon, "nmt");
t.is(model.blobCoreKey, "33".repeat(32));
t.is(model.blobBlockOffset, 13000);
t.is(model.expectedSize, 120000000);

t.is(exportName, "MARIAN_OPUS_EN_RU_Q0F16");
});

// ---------------------------------------------------------------------------
// NMT: Bergamot model file
// ---------------------------------------------------------------------------
Expand Down
48 changes: 0 additions & 48 deletions packages/sdk/tests-qvac/tests/desktop/consumer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,6 @@ import {
VAD_SILERO_5_1_2,
QWEN3_1_7B_INST_Q4,
OCR_LATIN_RECOGNIZER_1,
MARIAN_OPUS_DE_EN_Q4_0,
MARIAN_OPUS_EN_ES_Q4_0,
MARIAN_OPUS_ES_EN_Q4_0,
BERGAMOT_EN_FR,
BERGAMOT_EN_ES,
BERGAMOT_ES_EN,
Expand Down Expand Up @@ -132,51 +129,6 @@ resources.define("sharded-embeddings", {
skipPreDownload: true,
});

resources.define("marian-de-en", {
constant: MARIAN_OPUS_DE_EN_Q4_0,
type: "nmt",
config: {
engine: "Opus",
from: "de",
to: "en",
beamsize: 4,
lengthpenalty: 1.0,
maxlength: 512,
temperature: 0.3,
norepeatngramsize: 3,
},
});

resources.define("marian-en-es", {
constant: MARIAN_OPUS_EN_ES_Q4_0,
type: "nmt",
config: {
engine: "Opus",
from: "en",
to: "es",
beamsize: 4,
lengthpenalty: 1.0,
maxlength: 512,
temperature: 0.3,
norepeatngramsize: 3,
},
});

resources.define("marian-es-en", {
constant: MARIAN_OPUS_ES_EN_Q4_0,
type: "nmt",
config: {
engine: "Opus",
from: "es",
to: "en",
beamsize: 4,
lengthpenalty: 1.0,
maxlength: 512,
temperature: 0.3,
norepeatngramsize: 3,
},
});

resources.define("indictrans-en-hi", {
constant: MARIAN_EN_HI_INDIC_200M_Q4_0,
type: "nmt",
Expand Down
Loading
Loading