@ruvector/ruvllm 2.7.0 → 4.0.0
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/GPU-LOOP.md +229 -0
- package/LICENSE +201 -0
- package/NOTICE +9 -0
- package/README.md +157 -263
- package/examples/gpu-loop.example.json +26 -0
- package/package.json +50 -120
- package/src/adapters-cli.mjs +23 -0
- package/src/adapters.mjs +91 -0
- package/src/cli.mjs +30 -0
- package/src/engine.mjs +238 -0
- package/src/fixture.mjs +38 -0
- package/src/gpu-host.mjs +47 -0
- package/src/gpu-loop-cli.mjs +67 -0
- package/src/gpu-loop.mjs +184 -0
- package/src/gpu-spool-adapter.mjs +80 -0
- package/src/vast-host-adapter.mjs +274 -0
- package/bin/cli.js +0 -1020
- package/dist/cjs/benchmarks/embedding-benchmark.d.ts +0 -102
- package/dist/cjs/benchmarks/embedding-benchmark.d.ts.map +0 -1
- package/dist/cjs/benchmarks/embedding-benchmark.js +0 -436
- package/dist/cjs/benchmarks/index.d.ts +0 -34
- package/dist/cjs/benchmarks/index.d.ts.map +0 -1
- package/dist/cjs/benchmarks/index.js +0 -132
- package/dist/cjs/benchmarks/model-comparison.d.ts +0 -71
- package/dist/cjs/benchmarks/model-comparison.d.ts.map +0 -1
- package/dist/cjs/benchmarks/model-comparison.js +0 -476
- package/dist/cjs/benchmarks/routing-benchmark.d.ts +0 -70
- package/dist/cjs/benchmarks/routing-benchmark.d.ts.map +0 -1
- package/dist/cjs/benchmarks/routing-benchmark.js +0 -289
- package/dist/cjs/contrastive.d.ts +0 -229
- package/dist/cjs/contrastive.d.ts.map +0 -1
- package/dist/cjs/contrastive.js +0 -589
- package/dist/cjs/engine.d.ts +0 -95
- package/dist/cjs/engine.d.ts.map +0 -1
- package/dist/cjs/engine.js +0 -372
- package/dist/cjs/export.d.ts +0 -182
- package/dist/cjs/export.d.ts.map +0 -1
- package/dist/cjs/export.js +0 -422
- package/dist/cjs/federated.d.ts +0 -233
- package/dist/cjs/federated.d.ts.map +0 -1
- package/dist/cjs/federated.js +0 -525
- package/dist/cjs/index.d.ts +0 -68
- package/dist/cjs/index.d.ts.map +0 -1
- package/dist/cjs/index.js +0 -104
- package/dist/cjs/intelligence.d.ts +0 -136
- package/dist/cjs/intelligence.d.ts.map +0 -1
- package/dist/cjs/intelligence.js +0 -226
- package/dist/cjs/lora.d.ts +0 -251
- package/dist/cjs/lora.d.ts.map +0 -1
- package/dist/cjs/lora.js +0 -509
- package/dist/cjs/models.d.ts +0 -129
- package/dist/cjs/models.d.ts.map +0 -1
- package/dist/cjs/models.js +0 -323
- package/dist/cjs/native.d.ts +0 -92
- package/dist/cjs/native.d.ts.map +0 -1
- package/dist/cjs/native.js +0 -77
- package/dist/cjs/session.d.ts +0 -80
- package/dist/cjs/session.d.ts.map +0 -1
- package/dist/cjs/session.js +0 -203
- package/dist/cjs/simd.d.ts +0 -90
- package/dist/cjs/simd.d.ts.map +0 -1
- package/dist/cjs/simd.js +0 -209
- package/dist/cjs/sona.d.ts +0 -223
- package/dist/cjs/sona.d.ts.map +0 -1
- package/dist/cjs/sona.js +0 -562
- package/dist/cjs/streaming.d.ts +0 -55
- package/dist/cjs/streaming.d.ts.map +0 -1
- package/dist/cjs/streaming.js +0 -131
- package/dist/cjs/training.d.ts +0 -312
- package/dist/cjs/training.d.ts.map +0 -1
- package/dist/cjs/training.js +0 -610
- package/dist/cjs/types.d.ts +0 -615
- package/dist/cjs/types.d.ts.map +0 -1
- package/dist/cjs/types.js +0 -6
- package/dist/esm/benchmarks/embedding-benchmark.d.ts +0 -102
- package/dist/esm/benchmarks/embedding-benchmark.d.ts.map +0 -1
- package/dist/esm/benchmarks/embedding-benchmark.js +0 -427
- package/dist/esm/benchmarks/index.d.ts +0 -34
- package/dist/esm/benchmarks/index.d.ts.map +0 -1
- package/dist/esm/benchmarks/index.js +0 -110
- package/dist/esm/benchmarks/model-comparison.d.ts +0 -71
- package/dist/esm/benchmarks/model-comparison.d.ts.map +0 -1
- package/dist/esm/benchmarks/model-comparison.js +0 -434
- package/dist/esm/benchmarks/routing-benchmark.d.ts +0 -70
- package/dist/esm/benchmarks/routing-benchmark.d.ts.map +0 -1
- package/dist/esm/benchmarks/routing-benchmark.js +0 -283
- package/dist/esm/contrastive.d.ts +0 -229
- package/dist/esm/contrastive.d.ts.map +0 -1
- package/dist/esm/contrastive.js +0 -578
- package/dist/esm/engine.d.ts +0 -95
- package/dist/esm/engine.d.ts.map +0 -1
- package/dist/esm/engine.js +0 -368
- package/dist/esm/export.d.ts +0 -182
- package/dist/esm/export.d.ts.map +0 -1
- package/dist/esm/export.js +0 -414
- package/dist/esm/federated.d.ts +0 -233
- package/dist/esm/federated.d.ts.map +0 -1
- package/dist/esm/federated.js +0 -520
- package/dist/esm/index.d.ts +0 -68
- package/dist/esm/index.d.ts.map +0 -1
- package/dist/esm/index.js +0 -84
- package/dist/esm/intelligence.d.ts +0 -136
- package/dist/esm/intelligence.d.ts.map +0 -1
- package/dist/esm/intelligence.js +0 -188
- package/dist/esm/lora.d.ts +0 -251
- package/dist/esm/lora.d.ts.map +0 -1
- package/dist/esm/lora.js +0 -504
- package/dist/esm/models.d.ts +0 -129
- package/dist/esm/models.d.ts.map +0 -1
- package/dist/esm/models.js +0 -282
- package/dist/esm/native.d.ts +0 -92
- package/dist/esm/native.d.ts.map +0 -1
- package/dist/esm/native.js +0 -72
- package/dist/esm/session.d.ts +0 -80
- package/dist/esm/session.d.ts.map +0 -1
- package/dist/esm/session.js +0 -199
- package/dist/esm/simd.d.ts +0 -90
- package/dist/esm/simd.d.ts.map +0 -1
- package/dist/esm/simd.js +0 -205
- package/dist/esm/sona.d.ts +0 -223
- package/dist/esm/sona.d.ts.map +0 -1
- package/dist/esm/sona.js +0 -556
- package/dist/esm/streaming.d.ts +0 -55
- package/dist/esm/streaming.d.ts.map +0 -1
- package/dist/esm/streaming.js +0 -126
- package/dist/esm/training.d.ts +0 -312
- package/dist/esm/training.d.ts.map +0 -1
- package/dist/esm/training.js +0 -603
- package/dist/esm/types.d.ts +0 -615
- package/dist/esm/types.d.ts.map +0 -1
- package/dist/esm/types.js +0 -5
- package/scripts/ensemble-model-compare.js +0 -287
- package/scripts/fix-esm-extensions.mjs +0 -181
- package/scripts/huggingface/README.md +0 -537
- package/scripts/huggingface/publish.sh +0 -112
- package/scripts/hybrid-model-compare.js +0 -373
- package/scripts/improved-model-compare.js +0 -288
- package/scripts/optimized-model-compare.js +0 -364
- package/scripts/real-model-compare.js +0 -280
- package/scripts/smoke-esm.mjs +0 -82
- package/scripts/training/agentic-flow-capabilities.json +0 -329
- package/scripts/training/claude-code-synth.js +0 -505
- package/scripts/training/claude-flow-capabilities.json +0 -1322
- package/scripts/training/claude-hard-negatives.js +0 -222
- package/scripts/training/contrastive-finetune.js +0 -517
- package/scripts/training/ecosystem-triplets.jsonl +0 -1467
- package/scripts/training/generate-ecosystem-triplets.js +0 -1324
- package/scripts/training/routing-dataset.js +0 -634
- package/scripts/training/ruvector-capabilities.json +0 -798
- package/scripts/training/validate-ecosystem.js +0 -381
- package/scripts/training/validation-results.json +0 -23
package/dist/esm/streaming.d.ts
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Streaming response support for RuvLLM
|
|
3
|
-
*/
|
|
4
|
-
import { StreamChunk, StreamOptions, QueryResponse, GenerationConfig } from './types.js';
|
|
5
|
-
/**
|
|
6
|
-
* Async generator for streaming responses
|
|
7
|
-
*
|
|
8
|
-
* @example
|
|
9
|
-
* ```typescript
|
|
10
|
-
* import { RuvLLM, StreamingGenerator } from '@ruvector/ruvllm';
|
|
11
|
-
*
|
|
12
|
-
* const llm = new RuvLLM();
|
|
13
|
-
* const streamer = new StreamingGenerator(llm);
|
|
14
|
-
*
|
|
15
|
-
* // Stream with async iterator
|
|
16
|
-
* for await (const chunk of streamer.stream('Write a story')) {
|
|
17
|
-
* process.stdout.write(chunk.text);
|
|
18
|
-
* }
|
|
19
|
-
*
|
|
20
|
-
* // Stream with callbacks
|
|
21
|
-
* await streamer.streamWithCallbacks('Write a poem', {
|
|
22
|
-
* onChunk: (chunk) => console.log(chunk.text),
|
|
23
|
-
* onComplete: (response) => console.log('Done!', response.latencyMs),
|
|
24
|
-
* });
|
|
25
|
-
* ```
|
|
26
|
-
*/
|
|
27
|
-
export declare class StreamingGenerator {
|
|
28
|
-
private llm;
|
|
29
|
-
constructor(llm: {
|
|
30
|
-
generate: (prompt: string, config?: GenerationConfig) => string;
|
|
31
|
-
query: (text: string, config?: GenerationConfig) => QueryResponse;
|
|
32
|
-
});
|
|
33
|
-
/**
|
|
34
|
-
* Stream response as async generator
|
|
35
|
-
*
|
|
36
|
-
* Note: This simulates streaming by chunking the full response.
|
|
37
|
-
* Native streaming requires native module support.
|
|
38
|
-
*/
|
|
39
|
-
stream(prompt: string, config?: GenerationConfig): AsyncGenerator<StreamChunk>;
|
|
40
|
-
/**
|
|
41
|
-
* Stream with callback handlers
|
|
42
|
-
*/
|
|
43
|
-
streamWithCallbacks(prompt: string, options: StreamOptions): Promise<QueryResponse>;
|
|
44
|
-
/**
|
|
45
|
-
* Collect stream into single response
|
|
46
|
-
*/
|
|
47
|
-
collect(prompt: string, config?: GenerationConfig): Promise<string>;
|
|
48
|
-
private delay;
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Create a readable stream from response
|
|
52
|
-
* (For Node.js stream compatibility)
|
|
53
|
-
*/
|
|
54
|
-
export declare function createReadableStream(generator: AsyncGenerator<StreamChunk>): ReadableStream<string>;
|
|
55
|
-
//# sourceMappingURL=streaming.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"streaming.d.ts","sourceRoot":"","sources":["../../src/streaming.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,WAAW,EACX,aAAa,EACb,aAAa,EACb,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAEjB;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,GAAG,CAGT;gBAEU,GAAG,EAAE;QACf,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,gBAAgB,KAAK,MAAM,CAAC;QAChE,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,gBAAgB,KAAK,aAAa,CAAC;KACnE;IAID;;;;;OAKG;IACI,MAAM,CACX,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,gBAAgB,GACxB,cAAc,CAAC,WAAW,CAAC;IA8B9B;;OAEG;IACG,mBAAmB,CACvB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,aAAa,CAAC;IAqCzB;;OAEG;IACG,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC;IAQzE,OAAO,CAAC,KAAK;CAGd;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,cAAc,CAAC,WAAW,CAAC,GACrC,cAAc,CAAC,MAAM,CAAC,CAWxB"}
|
package/dist/esm/streaming.js
DELETED
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Streaming response support for RuvLLM
|
|
3
|
-
*/
|
|
4
|
-
/**
|
|
5
|
-
* Async generator for streaming responses
|
|
6
|
-
*
|
|
7
|
-
* @example
|
|
8
|
-
* ```typescript
|
|
9
|
-
* import { RuvLLM, StreamingGenerator } from '@ruvector/ruvllm';
|
|
10
|
-
*
|
|
11
|
-
* const llm = new RuvLLM();
|
|
12
|
-
* const streamer = new StreamingGenerator(llm);
|
|
13
|
-
*
|
|
14
|
-
* // Stream with async iterator
|
|
15
|
-
* for await (const chunk of streamer.stream('Write a story')) {
|
|
16
|
-
* process.stdout.write(chunk.text);
|
|
17
|
-
* }
|
|
18
|
-
*
|
|
19
|
-
* // Stream with callbacks
|
|
20
|
-
* await streamer.streamWithCallbacks('Write a poem', {
|
|
21
|
-
* onChunk: (chunk) => console.log(chunk.text),
|
|
22
|
-
* onComplete: (response) => console.log('Done!', response.latencyMs),
|
|
23
|
-
* });
|
|
24
|
-
* ```
|
|
25
|
-
*/
|
|
26
|
-
export class StreamingGenerator {
|
|
27
|
-
constructor(llm) {
|
|
28
|
-
this.llm = llm;
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Stream response as async generator
|
|
32
|
-
*
|
|
33
|
-
* Note: This simulates streaming by chunking the full response.
|
|
34
|
-
* Native streaming requires native module support.
|
|
35
|
-
*/
|
|
36
|
-
async *stream(prompt, config) {
|
|
37
|
-
const start = Date.now();
|
|
38
|
-
// Generate full response (native streaming would yield real chunks)
|
|
39
|
-
const fullText = this.llm.generate(prompt, config);
|
|
40
|
-
// Simulate streaming by yielding words
|
|
41
|
-
const words = fullText.split(/(\s+)/);
|
|
42
|
-
let accumulated = '';
|
|
43
|
-
let tokenCount = 0;
|
|
44
|
-
for (let i = 0; i < words.length; i++) {
|
|
45
|
-
accumulated += words[i];
|
|
46
|
-
tokenCount++;
|
|
47
|
-
// Yield every few tokens or at end
|
|
48
|
-
if (tokenCount % 3 === 0 || i === words.length - 1) {
|
|
49
|
-
yield {
|
|
50
|
-
text: words.slice(Math.max(0, i - 2), i + 1).join(''),
|
|
51
|
-
done: i === words.length - 1,
|
|
52
|
-
tokenCount,
|
|
53
|
-
latencyMs: Date.now() - start,
|
|
54
|
-
};
|
|
55
|
-
// Small delay to simulate streaming
|
|
56
|
-
await this.delay(10);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Stream with callback handlers
|
|
62
|
-
*/
|
|
63
|
-
async streamWithCallbacks(prompt, options) {
|
|
64
|
-
const start = Date.now();
|
|
65
|
-
let fullText = '';
|
|
66
|
-
let tokenCount = 0;
|
|
67
|
-
try {
|
|
68
|
-
for await (const chunk of this.stream(prompt, options)) {
|
|
69
|
-
fullText += chunk.text;
|
|
70
|
-
tokenCount = chunk.tokenCount;
|
|
71
|
-
if (options.onChunk) {
|
|
72
|
-
options.onChunk(chunk);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
const response = {
|
|
76
|
-
text: fullText.trim(),
|
|
77
|
-
confidence: 0.8,
|
|
78
|
-
model: 'streaming',
|
|
79
|
-
contextSize: tokenCount,
|
|
80
|
-
latencyMs: Date.now() - start,
|
|
81
|
-
requestId: `stream-${Date.now()}-${Math.random().toString(36).slice(2)}`,
|
|
82
|
-
};
|
|
83
|
-
if (options.onComplete) {
|
|
84
|
-
options.onComplete(response);
|
|
85
|
-
}
|
|
86
|
-
return response;
|
|
87
|
-
}
|
|
88
|
-
catch (error) {
|
|
89
|
-
if (options.onError) {
|
|
90
|
-
options.onError(error);
|
|
91
|
-
}
|
|
92
|
-
throw error;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* Collect stream into single response
|
|
97
|
-
*/
|
|
98
|
-
async collect(prompt, config) {
|
|
99
|
-
let result = '';
|
|
100
|
-
for await (const chunk of this.stream(prompt, config)) {
|
|
101
|
-
result = chunk.text; // Each chunk is cumulative
|
|
102
|
-
}
|
|
103
|
-
return result.trim();
|
|
104
|
-
}
|
|
105
|
-
delay(ms) {
|
|
106
|
-
return new Promise(resolve => setTimeout(resolve, ms));
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
/**
|
|
110
|
-
* Create a readable stream from response
|
|
111
|
-
* (For Node.js stream compatibility)
|
|
112
|
-
*/
|
|
113
|
-
export function createReadableStream(generator) {
|
|
114
|
-
return new ReadableStream({
|
|
115
|
-
async pull(controller) {
|
|
116
|
-
const { value, done } = await generator.next();
|
|
117
|
-
if (done) {
|
|
118
|
-
controller.close();
|
|
119
|
-
}
|
|
120
|
-
else {
|
|
121
|
-
controller.enqueue(value.text);
|
|
122
|
-
}
|
|
123
|
-
},
|
|
124
|
-
});
|
|
125
|
-
}
|
|
126
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyZWFtaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0cmVhbWluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQVNIOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQkc7QUFDSCxNQUFNLE9BQU8sa0JBQWtCO0lBTTdCLFlBQVksR0FHWDtRQUNDLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO0lBQ2pCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FDWCxNQUFjLEVBQ2QsTUFBeUI7UUFFekIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBRXpCLG9FQUFvRTtRQUNwRSxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFbkQsdUNBQXVDO1FBQ3ZDLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdEMsSUFBSSxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQztRQUVuQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3RDLFdBQVcsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDeEIsVUFBVSxFQUFFLENBQUM7WUFFYixtQ0FBbUM7WUFDbkMsSUFBSSxVQUFVLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDbkQsTUFBTTtvQkFDSixJQUFJLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FB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QUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDL0MsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDVCxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDckIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2pDLENBQUM7UUFDSCxDQUFDO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU3RyZWFtaW5nIHJlc3BvbnNlIHN1cHBvcnQgZm9yIFJ1dkxMTVxuICovXG5cbmltcG9ydCB7XG4gIFN0cmVhbUNodW5rLFxuICBTdHJlYW1PcHRpb25zLFxuICBRdWVyeVJlc3BvbnNlLFxuICBHZW5lcmF0aW9uQ29uZmlnLFxufSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBBc3luYyBnZW5lcmF0b3IgZm9yIHN0cmVhbWluZyByZXNwb25zZXNcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHsgUnV2TExNLCBTdHJlYW1pbmdHZW5lcmF0b3IgfSBmcm9tICdAcnV2ZWN0b3IvcnV2bGxtJztcbiAqXG4gKiBjb25zdCBsbG0gPSBuZXcgUnV2TExNKCk7XG4gKiBjb25zdCBzdHJlYW1lciA9IG5ldyBTdHJlYW1pbmdHZW5lcmF0b3IobGxtKTtcbiAqXG4gKiAvLyBTdHJlYW0gd2l0aCBhc3luYyBpdGVyYXRvclxuICogZm9yIGF3YWl0IChjb25zdCBjaHVuayBvZiBzdHJlYW1lci5zdHJlYW0oJ1dyaXRlIGEgc3RvcnknKSkge1xuICogICBwcm9jZXNzLnN0ZG91dC53cml0ZShjaHVuay50ZXh0KTtcbiAqIH1cbiAqXG4gKiAvLyBTdHJlYW0gd2l0aCBjYWxsYmFja3NcbiAqIGF3YWl0IHN0cmVhbWVyLnN0cmVhbVdpdGhDYWxsYmFja3MoJ1dyaXRlIGEgcG9lbScsIHtcbiAqICAgb25DaHVuazogKGNodW5rKSA9PiBjb25zb2xlLmxvZyhjaHVuay50ZXh0KSxcbiAqICAgb25Db21wbGV0ZTogKHJlc3BvbnNlKSA9PiBjb25zb2xlLmxvZygnRG9uZSEnLCByZXNwb25zZS5sYXRlbmN5TXMpLFxuICogfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIFN0cmVhbWluZ0dlbmVyYXRvciB7XG4gIHByaXZhdGUgbGxtOiB7XG4gICAgZ2VuZXJhdGU6IChwcm9tcHQ6IHN0cmluZywgY29uZmlnPzogR2VuZXJhdGlvbkNvbmZpZykgPT4gc3RyaW5nO1xuICAgIHF1ZXJ5OiAodGV4dDogc3RyaW5nLCBjb25maWc/OiBHZW5lcmF0aW9uQ29uZmlnKSA9PiBRdWVyeVJlc3BvbnNlO1xuICB9O1xuXG4gIGNvbnN0cnVjdG9yKGxsbToge1xuICAgIGdlbmVyYXRlOiAocHJvbXB0OiBzdHJpbmcsIGNvbmZpZz86IEdlbmVyYXRpb25Db25maWcpID0+IHN0cmluZztcbiAgICBxdWVyeTogKHRleHQ6IHN0cmluZywgY29uZmlnPzogR2VuZXJhdGlvbkNvbmZpZykgPT4gUXVlcnlSZXNwb25zZTtcbiAgfSkge1xuICAgIHRoaXMubGxtID0gbGxtO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0cmVhbSByZXNwb25zZSBhcyBhc3luYyBnZW5lcmF0b3JcbiAgICpcbiAgICogTm90ZTogVGhpcyBzaW11bGF0ZXMgc3RyZWFtaW5nIGJ5IGNodW5raW5nIHRoZSBmdWxsIHJlc3BvbnNlLlxuICAgKiBOYXRpdmUgc3RyZWFtaW5nIHJlcXVpcmVzIG5hdGl2ZSBtb2R1bGUgc3VwcG9ydC5cbiAgICovXG4gIGFzeW5jICpzdHJlYW0oXG4gICAgcHJvbXB0OiBzdHJpbmcsXG4gICAgY29uZmlnPzogR2VuZXJhdGlvbkNvbmZpZ1xuICApOiBBc3luY0dlbmVyYXRvcjxTdHJlYW1DaHVuaz4ge1xuICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcblxuICAgIC8vIEdlbmVyYXRlIGZ1bGwgcmVzcG9uc2UgKG5hdGl2ZSBzdHJlYW1pbmcgd291bGQgeWllbGQgcmVhbCBjaHVua3MpXG4gICAgY29uc3QgZnVsbFRleHQgPSB0aGlzLmxsbS5nZW5lcmF0ZShwcm9tcHQsIGNvbmZpZyk7XG5cbiAgICAvLyBTaW11bGF0ZSBzdHJlYW1pbmcgYnkgeWllbGRpbmcgd29yZHNcbiAgICBjb25zdCB3b3JkcyA9IGZ1bGxUZXh0LnNwbGl0KC8oXFxzKykvKTtcbiAgICBsZXQgYWNjdW11bGF0ZWQgPSAnJztcbiAgICBsZXQgdG9rZW5Db3VudCA9IDA7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHdvcmRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBhY2N1bXVsYXRlZCArPSB3b3Jkc1tpXTtcbiAgICAgIHRva2VuQ291bnQrKztcblxuICAgICAgLy8gWWllbGQgZXZlcnkgZmV3IHRva2VucyBvciBhdCBlbmRcbiAgICAgIGlmICh0b2tlbkNvdW50ICUgMyA9PT0gMCB8fCBpID09PSB3b3Jkcy5sZW5ndGggLSAxKSB7XG4gICAgICAgIHlpZWxkIHtcbiAgICAgICAgICB0ZXh0OiB3b3Jkcy5zbGljZShNYXRoLm1heCgwLCBpIC0gMiksIGkgKyAxKS5qb2luKCcnKSxcbiAgICAgICAgICBkb25lOiBpID09PSB3b3Jkcy5sZW5ndGggLSAxLFxuICAgICAgICAgIHRva2VuQ291bnQsXG4gICAgICAgICAgbGF0ZW5jeU1zOiBEYXRlLm5vdygpIC0gc3RhcnQsXG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gU21hbGwgZGVsYXkgdG8gc2ltdWxhdGUgc3RyZWFtaW5nXG4gICAgICAgIGF3YWl0IHRoaXMuZGVsYXkoMTApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTdHJlYW0gd2l0aCBjYWxsYmFjayBoYW5kbGVyc1xuICAgKi9cbiAgYXN5bmMgc3RyZWFtV2l0aENhbGxiYWNrcyhcbiAgICBwcm9tcHQ6IHN0cmluZyxcbiAgICBvcHRpb25zOiBTdHJlYW1PcHRpb25zXG4gICk6IFByb21pc2U8UXVlcnlSZXNwb25zZT4ge1xuICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICBsZXQgZnVsbFRleHQgPSAnJztcbiAgICBsZXQgdG9rZW5Db3VudCA9IDA7XG5cbiAgICB0cnkge1xuICAgICAgZm9yIGF3YWl0IChjb25zdCBjaHVuayBvZiB0aGlzLnN0cmVhbShwcm9tcHQsIG9wdGlvbnMpKSB7XG4gICAgICAgIGZ1bGxUZXh0ICs9IGNodW5rLnRleHQ7XG4gICAgICAgIHRva2VuQ291bnQgPSBjaHVuay50b2tlbkNvdW50O1xuXG4gICAgICAgIGlmIChvcHRpb25zLm9uQ2h1bmspIHtcbiAgICAgICAgICBvcHRpb25zLm9uQ2h1bmsoY2h1bmspO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlc3BvbnNlOiBRdWVyeVJlc3BvbnNlID0ge1xuICAgICAgICB0ZXh0OiBmdWxsVGV4dC50cmltKCksXG4gICAgICAgIGNvbmZpZGVuY2U6IDAuOCxcbiAgICAgICAgbW9kZWw6ICdzdHJlYW1pbmcnLFxuICAgICAgICBjb250ZXh0U2l6ZTogdG9rZW5Db3VudCxcbiAgICAgICAgbGF0ZW5jeU1zOiBEYXRlLm5vdygpIC0gc3RhcnQsXG4gICAgICAgIHJlcXVlc3RJZDogYHN0cmVhbS0ke0RhdGUubm93KCl9LSR7TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMil9YCxcbiAgICAgIH07XG5cbiAgICAgIGlmIChvcHRpb25zLm9uQ29tcGxldGUpIHtcbiAgICAgICAgb3B0aW9ucy5vbkNvbXBsZXRlKHJlc3BvbnNlKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAob3B0aW9ucy5vbkVycm9yKSB7XG4gICAgICAgIG9wdGlvbnMub25FcnJvcihlcnJvciBhcyBFcnJvcik7XG4gICAgICB9XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ29sbGVjdCBzdHJlYW0gaW50byBzaW5nbGUgcmVzcG9uc2VcbiAgICovXG4gIGFzeW5jIGNvbGxlY3QocHJvbXB0OiBzdHJpbmcsIGNvbmZpZz86IEdlbmVyYXRpb25Db25maWcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGxldCByZXN1bHQgPSAnJztcbiAgICBmb3IgYXdhaXQgKGNvbnN0IGNodW5rIG9mIHRoaXMuc3RyZWFtKHByb21wdCwgY29uZmlnKSkge1xuICAgICAgcmVzdWx0ID0gY2h1bmsudGV4dDsgLy8gRWFjaCBjaHVuayBpcyBjdW11bGF0aXZlXG4gICAgfVxuICAgIHJldHVybiByZXN1bHQudHJpbSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBkZWxheShtczogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCBtcykpO1xuICB9XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgcmVhZGFibGUgc3RyZWFtIGZyb20gcmVzcG9uc2VcbiAqIChGb3IgTm9kZS5qcyBzdHJlYW0gY29tcGF0aWJpbGl0eSlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVJlYWRhYmxlU3RyZWFtKFxuICBnZW5lcmF0b3I6IEFzeW5jR2VuZXJhdG9yPFN0cmVhbUNodW5rPlxuKTogUmVhZGFibGVTdHJlYW08c3RyaW5nPiB7XG4gIHJldHVybiBuZXcgUmVhZGFibGVTdHJlYW0oe1xuICAgIGFzeW5jIHB1bGwoY29udHJvbGxlcikge1xuICAgICAgY29uc3QgeyB2YWx1ZSwgZG9uZSB9ID0gYXdhaXQgZ2VuZXJhdG9yLm5leHQoKTtcbiAgICAgIGlmIChkb25lKSB7XG4gICAgICAgIGNvbnRyb2xsZXIuY2xvc2UoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnRyb2xsZXIuZW5xdWV1ZSh2YWx1ZS50ZXh0KTtcbiAgICAgIH1cbiAgICB9LFxuICB9KTtcbn1cbiJdfQ==
|
package/dist/esm/training.d.ts
DELETED
|
@@ -1,312 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Training Pipeline for SONA
|
|
3
|
-
*
|
|
4
|
-
* Comprehensive training infrastructure with metrics tracking,
|
|
5
|
-
* learning rate scheduling, and checkpoint management.
|
|
6
|
-
*
|
|
7
|
-
* @example
|
|
8
|
-
* ```typescript
|
|
9
|
-
* import { TrainingPipeline, TrainingConfig } from '@ruvector/ruvllm';
|
|
10
|
-
*
|
|
11
|
-
* const pipeline = new TrainingPipeline({
|
|
12
|
-
* learningRate: 0.001,
|
|
13
|
-
* batchSize: 32,
|
|
14
|
-
* epochs: 10,
|
|
15
|
-
* });
|
|
16
|
-
*
|
|
17
|
-
* // Add training data
|
|
18
|
-
* pipeline.addBatch(inputs, targets, qualities);
|
|
19
|
-
*
|
|
20
|
-
* // Run training
|
|
21
|
-
* const result = pipeline.train();
|
|
22
|
-
* console.log(`Final loss: ${result.finalLoss}`);
|
|
23
|
-
* ```
|
|
24
|
-
*/
|
|
25
|
-
import { Embedding, TrainingConfig, TrainingResult } from './types.js';
|
|
26
|
-
import { LoraAdapter } from './lora.js';
|
|
27
|
-
import { EwcManager } from './sona.js';
|
|
28
|
-
/**
|
|
29
|
-
* Training metrics
|
|
30
|
-
*/
|
|
31
|
-
export interface TrainingMetrics {
|
|
32
|
-
/** Current epoch */
|
|
33
|
-
epoch: number;
|
|
34
|
-
/** Current step */
|
|
35
|
-
step: number;
|
|
36
|
-
/** Training loss */
|
|
37
|
-
trainLoss: number;
|
|
38
|
-
/** Validation loss */
|
|
39
|
-
valLoss: number;
|
|
40
|
-
/** Learning rate */
|
|
41
|
-
learningRate: number;
|
|
42
|
-
/** Gradient norm */
|
|
43
|
-
gradNorm: number;
|
|
44
|
-
/** Steps per second */
|
|
45
|
-
stepsPerSecond: number;
|
|
46
|
-
/** ETA in seconds */
|
|
47
|
-
etaSeconds: number;
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* Training data batch
|
|
51
|
-
*/
|
|
52
|
-
export interface TrainingBatch {
|
|
53
|
-
/** Input embeddings */
|
|
54
|
-
inputs: Embedding[];
|
|
55
|
-
/** Target outputs */
|
|
56
|
-
targets: Embedding[];
|
|
57
|
-
/** Quality scores */
|
|
58
|
-
qualities: number[];
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Checkpoint data
|
|
62
|
-
*/
|
|
63
|
-
export interface Checkpoint {
|
|
64
|
-
/** Epoch number */
|
|
65
|
-
epoch: number;
|
|
66
|
-
/** Step number */
|
|
67
|
-
step: number;
|
|
68
|
-
/** Training loss at checkpoint */
|
|
69
|
-
loss: number;
|
|
70
|
-
/** Model weights (serialized) */
|
|
71
|
-
weights: string;
|
|
72
|
-
/** Timestamp */
|
|
73
|
-
timestamp: number;
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* Result of a saveCheckpoint() call.
|
|
77
|
-
*/
|
|
78
|
-
export interface CheckpointSaveResult {
|
|
79
|
-
/** Index of the checkpoint in the in-memory checkpoint list */
|
|
80
|
-
index: number;
|
|
81
|
-
/** Epoch the checkpoint captured */
|
|
82
|
-
epoch: number;
|
|
83
|
-
/** Step the checkpoint captured */
|
|
84
|
-
step: number;
|
|
85
|
-
/** Training loss at checkpoint time */
|
|
86
|
-
loss: number;
|
|
87
|
-
/** Absolute or as-given file path, when persisted to disk */
|
|
88
|
-
path?: string;
|
|
89
|
-
/** Serialized size in bytes, when persisted to disk */
|
|
90
|
-
bytes?: number;
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Learning Rate Scheduler
|
|
94
|
-
*/
|
|
95
|
-
export declare class LRScheduler {
|
|
96
|
-
private config;
|
|
97
|
-
private initialLR;
|
|
98
|
-
private currentStep;
|
|
99
|
-
private totalSteps;
|
|
100
|
-
constructor(config: Required<TrainingConfig>, totalSteps: number);
|
|
101
|
-
/**
|
|
102
|
-
* Get learning rate for current step
|
|
103
|
-
*/
|
|
104
|
-
getLR(): number;
|
|
105
|
-
/**
|
|
106
|
-
* Step the scheduler
|
|
107
|
-
*/
|
|
108
|
-
step(): void;
|
|
109
|
-
/**
|
|
110
|
-
* Reset scheduler
|
|
111
|
-
*/
|
|
112
|
-
reset(): void;
|
|
113
|
-
}
|
|
114
|
-
/**
|
|
115
|
-
* Training Metrics Tracker
|
|
116
|
-
*/
|
|
117
|
-
export declare class MetricsTracker {
|
|
118
|
-
private lossHistory;
|
|
119
|
-
private valLossHistory;
|
|
120
|
-
private gradNormHistory;
|
|
121
|
-
private startTime;
|
|
122
|
-
private stepTimes;
|
|
123
|
-
/**
|
|
124
|
-
* Record training loss
|
|
125
|
-
*/
|
|
126
|
-
recordLoss(loss: number): void;
|
|
127
|
-
/**
|
|
128
|
-
* Record validation loss
|
|
129
|
-
*/
|
|
130
|
-
recordValLoss(loss: number): void;
|
|
131
|
-
/**
|
|
132
|
-
* Record gradient norm
|
|
133
|
-
*/
|
|
134
|
-
recordGradNorm(norm: number): void;
|
|
135
|
-
/**
|
|
136
|
-
* Record step time
|
|
137
|
-
*/
|
|
138
|
-
recordStepTime(ms: number): void;
|
|
139
|
-
/**
|
|
140
|
-
* Get average loss over last N steps
|
|
141
|
-
*/
|
|
142
|
-
avgLoss(n?: number): number;
|
|
143
|
-
/**
|
|
144
|
-
* Get average validation loss
|
|
145
|
-
*/
|
|
146
|
-
avgValLoss(n?: number): number;
|
|
147
|
-
/**
|
|
148
|
-
* Get steps per second
|
|
149
|
-
*/
|
|
150
|
-
stepsPerSecond(): number;
|
|
151
|
-
/**
|
|
152
|
-
* Get ETA in seconds
|
|
153
|
-
*/
|
|
154
|
-
eta(remainingSteps: number): number;
|
|
155
|
-
/**
|
|
156
|
-
* Get best validation loss
|
|
157
|
-
*/
|
|
158
|
-
bestValLoss(): number;
|
|
159
|
-
/**
|
|
160
|
-
* Get total duration
|
|
161
|
-
*/
|
|
162
|
-
duration(): number;
|
|
163
|
-
/**
|
|
164
|
-
* Get all loss history
|
|
165
|
-
*/
|
|
166
|
-
getLossHistory(): number[];
|
|
167
|
-
/**
|
|
168
|
-
* Get all validation loss history
|
|
169
|
-
*/
|
|
170
|
-
getValLossHistory(): number[];
|
|
171
|
-
/**
|
|
172
|
-
* Reset tracker
|
|
173
|
-
*/
|
|
174
|
-
reset(): void;
|
|
175
|
-
}
|
|
176
|
-
/**
|
|
177
|
-
* Training Pipeline
|
|
178
|
-
*
|
|
179
|
-
* Full training infrastructure for SONA models.
|
|
180
|
-
*/
|
|
181
|
-
export declare class TrainingPipeline {
|
|
182
|
-
private config;
|
|
183
|
-
private adapter;
|
|
184
|
-
private ewcManager;
|
|
185
|
-
private metrics;
|
|
186
|
-
private scheduler;
|
|
187
|
-
private batches;
|
|
188
|
-
private checkpoints;
|
|
189
|
-
private currentEpoch;
|
|
190
|
-
private currentStep;
|
|
191
|
-
private bestValLoss;
|
|
192
|
-
private patienceCounter;
|
|
193
|
-
/** Set by resumeFrom(); makes the next train() continue instead of restart. */
|
|
194
|
-
private resumePending;
|
|
195
|
-
constructor(config?: TrainingConfig, adapter?: LoraAdapter);
|
|
196
|
-
/**
|
|
197
|
-
* Add training batch
|
|
198
|
-
*/
|
|
199
|
-
addBatch(inputs: Embedding[], targets: Embedding[], qualities: number[]): void;
|
|
200
|
-
/**
|
|
201
|
-
* Add training data
|
|
202
|
-
*/
|
|
203
|
-
addData(data: Array<{
|
|
204
|
-
input: Embedding;
|
|
205
|
-
target: Embedding;
|
|
206
|
-
quality: number;
|
|
207
|
-
}>): void;
|
|
208
|
-
/**
|
|
209
|
-
* Run training.
|
|
210
|
-
*
|
|
211
|
-
* When {@link resumeFrom} primed the pipeline, this continues from the
|
|
212
|
-
* restored epoch (running the remaining epochs of `config.epochs`) and
|
|
213
|
-
* advances the LR scheduler to the restored step so the schedule is
|
|
214
|
-
* unbroken; metrics history is preserved. Without a resume the run is
|
|
215
|
-
* unchanged from a fresh start — same reset, same scheduler, same result
|
|
216
|
-
* shape as before this method learned to resume.
|
|
217
|
-
*/
|
|
218
|
-
train(): TrainingResult;
|
|
219
|
-
/**
|
|
220
|
-
* Single training step
|
|
221
|
-
*/
|
|
222
|
-
private trainStep;
|
|
223
|
-
/**
|
|
224
|
-
* Validation pass
|
|
225
|
-
*/
|
|
226
|
-
private validate;
|
|
227
|
-
/**
|
|
228
|
-
* Save a checkpoint.
|
|
229
|
-
*
|
|
230
|
-
* Always records the checkpoint in the in-memory list (the behavior the
|
|
231
|
-
* training loop relies on). When `path` is given, additionally persists
|
|
232
|
-
* the checkpoint to disk as versioned JSON — before v2.5.7 this method
|
|
233
|
-
* was private, ignored any argument, and never wrote a file, so callers
|
|
234
|
-
* passing a path got `undefined` back and zero bytes on disk.
|
|
235
|
-
*
|
|
236
|
-
* @param path Optional file path; parent directories are created.
|
|
237
|
-
* @returns Where the checkpoint went — in-memory index, and file
|
|
238
|
-
* path + byte size when persisted.
|
|
239
|
-
*/
|
|
240
|
-
saveCheckpoint(path?: string): CheckpointSaveResult;
|
|
241
|
-
/**
|
|
242
|
-
* Load a checkpoint — by in-memory index, or from a file previously
|
|
243
|
-
* written by `saveCheckpoint(path)`.
|
|
244
|
-
*
|
|
245
|
-
* For v2 files, the envelope's adapter geometry is checked against the
|
|
246
|
-
* current adapter first; a mismatch (different inputDim/outputDim/rank)
|
|
247
|
-
* returns false and leaves the adapter untouched, so mis-shaped weights
|
|
248
|
-
* are never silently restored. v1 files carry no geometry and load as
|
|
249
|
-
* before (back-compat).
|
|
250
|
-
*/
|
|
251
|
-
loadCheckpoint(indexOrPath: number | string): boolean;
|
|
252
|
-
/**
|
|
253
|
-
* Resume training from a checkpoint file.
|
|
254
|
-
*
|
|
255
|
-
* Loads the checkpoint (with the same v2 shape validation as
|
|
256
|
-
* {@link loadCheckpoint}) AND primes the pipeline so the next {@link train}
|
|
257
|
-
* call continues from the restored epoch/step rather than restarting. This
|
|
258
|
-
* is the explicit, least-invasive resume path: a plain `loadCheckpoint()`
|
|
259
|
-
* still restores weights only (train() from scratch), while `resumeFrom()`
|
|
260
|
-
* additionally makes the subsequent train() pick up where the run stopped.
|
|
261
|
-
*
|
|
262
|
-
* @returns true when the checkpoint loaded and resume was primed; false if
|
|
263
|
-
* the file was missing, foreign, or shape-mismatched (in which case
|
|
264
|
-
* no resume is armed).
|
|
265
|
-
*/
|
|
266
|
-
resumeFrom(path: string): boolean;
|
|
267
|
-
/**
|
|
268
|
-
* Get current metrics
|
|
269
|
-
*/
|
|
270
|
-
getMetrics(): TrainingMetrics;
|
|
271
|
-
/**
|
|
272
|
-
* Get adapter
|
|
273
|
-
*/
|
|
274
|
-
getAdapter(): LoraAdapter;
|
|
275
|
-
/**
|
|
276
|
-
* Get EWC manager
|
|
277
|
-
*/
|
|
278
|
-
getEwcManager(): EwcManager;
|
|
279
|
-
/**
|
|
280
|
-
* Get checkpoints
|
|
281
|
-
*/
|
|
282
|
-
getCheckpoints(): Checkpoint[];
|
|
283
|
-
/**
|
|
284
|
-
* Reset pipeline
|
|
285
|
-
*/
|
|
286
|
-
reset(): void;
|
|
287
|
-
private shuffleBatches;
|
|
288
|
-
}
|
|
289
|
-
/**
|
|
290
|
-
* Training Factory
|
|
291
|
-
*
|
|
292
|
-
* Create pre-configured training pipelines for common scenarios.
|
|
293
|
-
*/
|
|
294
|
-
export declare class TrainingFactory {
|
|
295
|
-
/**
|
|
296
|
-
* Create pipeline for quick fine-tuning
|
|
297
|
-
*/
|
|
298
|
-
static quickFinetune(): TrainingPipeline;
|
|
299
|
-
/**
|
|
300
|
-
* Create pipeline for deep training
|
|
301
|
-
*/
|
|
302
|
-
static deepTraining(): TrainingPipeline;
|
|
303
|
-
/**
|
|
304
|
-
* Create pipeline for continual learning
|
|
305
|
-
*/
|
|
306
|
-
static continualLearning(ewcLambda?: number): TrainingPipeline;
|
|
307
|
-
/**
|
|
308
|
-
* Create pipeline for federated aggregation
|
|
309
|
-
*/
|
|
310
|
-
static federatedAggregation(): TrainingPipeline;
|
|
311
|
-
}
|
|
312
|
-
//# sourceMappingURL=training.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"training.d.ts","sourceRoot":"","sources":["../../src/training.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAIH,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAoBpC;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,oBAAoB;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,sBAAsB;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,oBAAoB;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,oBAAoB;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,uBAAuB;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,qBAAqB;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,uBAAuB;IACvB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,qBAAqB;IACrB,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,qBAAqB;IACrB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,mBAAmB;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,kBAAkB;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,+DAA+D;IAC/D,KAAK,EAAE,MAAM,CAAC;IACd,oCAAoC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,mCAAmC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,6DAA6D;IAC7D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAaD;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,UAAU,CAAS;gBAEf,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,EAAE,UAAU,EAAE,MAAM;IAMhE;;OAEG;IACH,KAAK,IAAI,MAAM;IAyBf;;OAEG;IACH,IAAI,IAAI,IAAI;IAIZ;;OAEG;IACH,KAAK,IAAI,IAAI;CAGd;AAED;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,eAAe,CAAgB;IACvC,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,SAAS,CAAgB;IAEjC;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI9B;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIjC;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIlC;;OAEG;IACH,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAIhC;;OAEG;IACH,OAAO,CAAC,CAAC,GAAE,MAAY,GAAG,MAAM;IAKhC;;OAEG;IACH,UAAU,CAAC,CAAC,GAAE,MAAW,GAAG,MAAM;IAKlC;;OAEG;IACH,cAAc,IAAI,MAAM;IAMxB;;OAEG;IACH,GAAG,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM;IAKnC;;OAEG;IACH,WAAW,IAAI,MAAM;IAIrB;;OAEG;IACH,QAAQ,IAAI,MAAM;IAIlB;;OAEG;IACH,cAAc,IAAI,MAAM,EAAE;IAI1B;;OAEG;IACH,iBAAiB,IAAI,MAAM,EAAE;IAI7B;;OAEG;IACH,KAAK,IAAI,IAAI;CAOd;AAED;;;;GAIG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,SAAS,CAA4B;IAC7C,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,eAAe,CAAa;IACpC,+EAA+E;IAC/E,OAAO,CAAC,aAAa,CAAkB;gBAE3B,MAAM,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,WAAW;IAO1D;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI;IAI9E;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,SAAS,CAAC;QAAC,MAAM,EAAE,SAAS,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,IAAI;IAYpF;;;;;;;;;OASG;IACH,KAAK,IAAI,cAAc;IAuFvB;;OAEG;IACH,OAAO,CAAC,SAAS;IAmCjB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAsBhB;;;;;;;;;;;;OAYG;IACH,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,oBAAoB;IA4CnD;;;;;;;;;OASG;IACH,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO;IAkCrD;;;;;;;;;;;;;OAaG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAMjC;;OAEG;IACH,UAAU,IAAI,eAAe;IAe7B;;OAEG;IACH,UAAU,IAAI,WAAW;IAIzB;;OAEG;IACH,aAAa,IAAI,UAAU;IAI3B;;OAEG;IACH,cAAc,IAAI,UAAU,EAAE;IAI9B;;OAEG;IACH,KAAK,IAAI,IAAI;IAYb,OAAO,CAAC,cAAc;CAQvB;AAED;;;;GAIG;AACH,qBAAa,eAAe;IAC1B;;OAEG;IACH,MAAM,CAAC,aAAa,IAAI,gBAAgB;IASxC;;OAEG;IACH,MAAM,CAAC,YAAY,IAAI,gBAAgB;IAWvC;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,SAAS,GAAE,MAAa,GAAG,gBAAgB;IAWpE;;OAEG;IACH,MAAM,CAAC,oBAAoB,IAAI,gBAAgB;CAShD"}
|