@mlx-node/trl 0.0.0 → 0.0.2

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.
Files changed (38) hide show
  1. package/README.md +389 -0
  2. package/package.json +16 -5
  3. package/dist/data/dataset.d.ts +0 -22
  4. package/dist/data/dataset.d.ts.map +0 -1
  5. package/dist/data/dataset.js +0 -142
  6. package/dist/data/sft-dataset.d.ts +0 -156
  7. package/dist/data/sft-dataset.d.ts.map +0 -1
  8. package/dist/data/sft-dataset.js +0 -415
  9. package/dist/index.d.ts +0 -33
  10. package/dist/index.d.ts.map +0 -1
  11. package/dist/index.js +0 -47
  12. package/dist/trainers/grpo-config.d.ts +0 -42
  13. package/dist/trainers/grpo-config.d.ts.map +0 -1
  14. package/dist/trainers/grpo-config.js +0 -220
  15. package/dist/trainers/grpo-entropy.d.ts +0 -33
  16. package/dist/trainers/grpo-entropy.d.ts.map +0 -1
  17. package/dist/trainers/grpo-entropy.js +0 -18
  18. package/dist/trainers/grpo-trainer.d.ts +0 -602
  19. package/dist/trainers/grpo-trainer.d.ts.map +0 -1
  20. package/dist/trainers/grpo-trainer.js +0 -1439
  21. package/dist/trainers/sft-config.d.ts +0 -32
  22. package/dist/trainers/sft-config.d.ts.map +0 -1
  23. package/dist/trainers/sft-config.js +0 -186
  24. package/dist/trainers/sft-trainer.d.ts +0 -141
  25. package/dist/trainers/sft-trainer.d.ts.map +0 -1
  26. package/dist/trainers/sft-trainer.js +0 -502
  27. package/dist/trainers/training-logger.d.ts +0 -375
  28. package/dist/trainers/training-logger.d.ts.map +0 -1
  29. package/dist/trainers/training-logger.js +0 -542
  30. package/dist/types.d.ts +0 -54
  31. package/dist/types.d.ts.map +0 -1
  32. package/dist/types.js +0 -1
  33. package/dist/utils/path-security.d.ts +0 -51
  34. package/dist/utils/path-security.d.ts.map +0 -1
  35. package/dist/utils/path-security.js +0 -69
  36. package/dist/utils/xml-parser.d.ts +0 -6
  37. package/dist/utils/xml-parser.d.ts.map +0 -1
  38. package/dist/utils/xml-parser.js +0 -184
@@ -1,375 +0,0 @@
1
- /**
2
- * Unified Training Logger
3
- *
4
- * A high-level logger abstraction that handles TUI/console mode automatically.
5
- * Eliminates verbose conditional checks throughout the codebase.
6
- *
7
- * @example
8
- * ```typescript
9
- * const logger = createTrainingLogger();
10
- *
11
- * logger.info('Loading model...'); // Console OR TUI log
12
- * logger.status('loading', 'Loading...'); // TUI header update
13
- * logger.step(metrics); // Training step
14
- * logger.checkpoint(path, step); // Checkpoint saved
15
- * ```
16
- */
17
- /**
18
- * Training metrics from a training step
19
- *
20
- * Supports both SFT and GRPO training:
21
- * - SFT: loss, perplexity, tokenAccuracy (no reward/advantage)
22
- * - GRPO: loss, meanReward, stdReward, stdAdvantage
23
- */
24
- export interface TrainingMetrics {
25
- step: number;
26
- loss: number;
27
- totalTokens: number;
28
- meanReward?: number;
29
- stdReward?: number;
30
- meanAdvantage?: number;
31
- /** Std of advantages - indicates reward variance within groups */
32
- stdAdvantage?: number;
33
- perplexity?: number;
34
- tokenAccuracy?: number;
35
- generationTimeMs?: number;
36
- trainingTimeMs?: number;
37
- peakMemoryMb?: number;
38
- activeMemoryMb?: number;
39
- }
40
- /**
41
- * Generation sample for TUI display
42
- */
43
- export interface GenerationSample {
44
- index: number;
45
- prompt: string;
46
- completion: string;
47
- reward: number;
48
- tokens: number;
49
- rewardDetails?: Record<string, number>;
50
- }
51
- /**
52
- * Training configuration fields for logging
53
- */
54
- export interface TrainingConfigFields {
55
- numEpochs: number;
56
- batchSize: number;
57
- groupSize: number;
58
- learningRate: number;
59
- /** Training type: "sft" or "grpo" (default: "grpo") */
60
- trainingType?: 'sft' | 'grpo';
61
- [key: string]: unknown;
62
- }
63
- /**
64
- * Configuration for the training logger
65
- */
66
- export interface TrainingLoggerConfig {
67
- /** Enable TUI mode (JSONL to stdout) */
68
- tuiMode: boolean;
69
- /** Enable console logging (non-TUI) */
70
- logConsole: boolean;
71
- /** Enable JSONL file logging */
72
- logJsonl: boolean;
73
- /** Output directory for JSONL files */
74
- outputDir?: string;
75
- /** Run name for log files */
76
- runName?: string;
77
- /** Logging frequency (every N steps) */
78
- logInterval: number;
79
- }
80
- /**
81
- * TUI message types for structured stdout output
82
- */
83
- export type TuiMessage = {
84
- type: 'init';
85
- model: string;
86
- config: Record<string, unknown>;
87
- } | {
88
- type: 'epoch_start';
89
- epoch: number;
90
- totalEpochs: number;
91
- numBatches: number;
92
- } | {
93
- type: 'step';
94
- step: number;
95
- loss: number;
96
- totalTokens: number;
97
- meanReward?: number;
98
- stdReward?: number;
99
- stdAdvantage?: number;
100
- perplexity?: number;
101
- tokenAccuracy?: number;
102
- generationTimeMs?: number;
103
- trainingTimeMs?: number;
104
- peakMemoryMb?: number;
105
- activeMemoryMb?: number;
106
- } | {
107
- type: 'generation';
108
- index: number;
109
- prompt: string;
110
- completion: string;
111
- reward: number;
112
- tokens: number;
113
- rewardDetails?: Record<string, number>;
114
- } | {
115
- type: 'checkpoint';
116
- path: string;
117
- step: number;
118
- } | {
119
- type: 'epoch_end';
120
- epoch: number;
121
- avgLoss: number;
122
- avgReward: number;
123
- epochTimeSecs: number;
124
- } | {
125
- type: 'complete';
126
- totalSteps: number;
127
- totalTimeSecs: number;
128
- } | {
129
- type: 'log';
130
- level: 'info' | 'warn' | 'error' | 'debug';
131
- message: string;
132
- } | {
133
- type: 'paused';
134
- step: number;
135
- } | {
136
- type: 'resumed';
137
- step: number;
138
- } | {
139
- type: 'status';
140
- phase: string;
141
- message: string;
142
- } | {
143
- type: 'database_path';
144
- path: string;
145
- runId: string;
146
- runName?: string;
147
- } | {
148
- type: 'prompt';
149
- id: string;
150
- message: string;
151
- choices: PromptChoice[];
152
- default?: number[];
153
- multiSelect: boolean;
154
- } | {
155
- type: 'resume_state';
156
- step: number;
157
- epoch: number;
158
- totalEpochs: number;
159
- stepInEpoch: number;
160
- totalStepsInEpoch: number;
161
- metricsHistory: ResumeMetric[];
162
- aggregates: ResumeAggregates;
163
- };
164
- /**
165
- * Choice for interactive TUI prompt
166
- */
167
- export interface PromptChoice {
168
- /** Value to return when selected */
169
- value: string;
170
- /** Display label */
171
- label: string;
172
- /** Optional description */
173
- description?: string;
174
- }
175
- /**
176
- * Options for TUI prompts
177
- */
178
- export interface PromptOptions {
179
- /** Default selection index (single) or indices (multi-select) */
180
- default?: number | number[];
181
- /** Enable multi-select mode (checkbox style) */
182
- multiSelect?: boolean;
183
- }
184
- /**
185
- * Historical metric for sparkline restoration
186
- */
187
- export interface ResumeMetric {
188
- step: number;
189
- loss: number;
190
- meanReward: number;
191
- /** Std of advantages - indicates reward variance within groups */
192
- stdAdvantage: number;
193
- perplexity?: number;
194
- tokenAccuracy?: number;
195
- /** Time for generation phase (milliseconds) */
196
- generationTimeMs?: number;
197
- /** Time for training phase (milliseconds) */
198
- trainingTimeMs?: number;
199
- }
200
- /**
201
- * Aggregate statistics for resume state
202
- */
203
- export interface ResumeAggregates {
204
- bestReward: number;
205
- avgReward: number;
206
- rewardCount: number;
207
- bestLoss: number;
208
- avgLoss: number;
209
- lossCount: number;
210
- totalTokens: number;
211
- /** Average generation time (milliseconds) */
212
- avgGenerationTimeMs: number;
213
- /** Average training time (milliseconds) */
214
- avgTrainingTimeMs: number;
215
- }
216
- /**
217
- * Resume state data sent when resuming from checkpoint
218
- */
219
- export interface ResumeState {
220
- step: number;
221
- epoch: number;
222
- totalEpochs: number;
223
- /** Current batch within epoch */
224
- stepInEpoch: number;
225
- /** Total batches per epoch */
226
- totalStepsInEpoch: number;
227
- metricsHistory: ResumeMetric[];
228
- aggregates: ResumeAggregates;
229
- }
230
- /**
231
- * JSONL log event types
232
- */
233
- export type LogEvent = {
234
- event: 'training_start';
235
- timestamp: string;
236
- config: TrainingLoggerConfig;
237
- } | {
238
- event: 'training_config';
239
- num_examples: number;
240
- config: Record<string, unknown>;
241
- timestamp: string;
242
- } | {
243
- event: 'step';
244
- step: number;
245
- loss: number;
246
- mean_reward: number;
247
- std_reward: number;
248
- mean_advantage: number;
249
- total_tokens: number;
250
- timestamp: string;
251
- } | {
252
- event: 'epoch';
253
- epoch: number;
254
- avg_loss: number;
255
- avg_reward: number;
256
- avg_advantage: number;
257
- total_tokens: number;
258
- timestamp: string;
259
- } | {
260
- event: 'epoch_start';
261
- epoch: number;
262
- num_batches: number;
263
- timestamp: string;
264
- } | {
265
- event: 'training_complete';
266
- final_step: number;
267
- total_time_ms: number;
268
- timestamp: string;
269
- } | {
270
- event: 'checkpoint';
271
- step: number;
272
- path: string;
273
- timestamp: string;
274
- };
275
- /**
276
- * Unified training logger that handles TUI/console mode automatically
277
- */
278
- export declare class TrainingLogger {
279
- private config;
280
- private jsonlPath?;
281
- private startTime;
282
- private lastLogTime;
283
- private epochLoss;
284
- private epochReward;
285
- private epochAdvantage;
286
- private epochTokens;
287
- constructor(config?: Partial<TrainingLoggerConfig>);
288
- private setupJsonl;
289
- /** Log info message */
290
- info(message: string): void;
291
- /** Log warning message */
292
- warn(message: string): void;
293
- /** Log error message */
294
- error(message: string): void;
295
- /** Log debug message (only in verbose mode) */
296
- debug(message: string): void;
297
- /** Update status (updates TUI header, shows in console) */
298
- status(phase: string, message: string): void;
299
- /** Print decorative banner (console only, suppressed in TUI mode) */
300
- banner(...lines: string[]): void;
301
- /** Log training initialization */
302
- init(model: string, config: TrainingConfigFields, numExamples?: number): void;
303
- /** Log epoch start */
304
- epochStart(epoch: number, totalEpochs: number, numBatches: number): void;
305
- /** Log training step */
306
- step(metrics: TrainingMetrics, batchIdx?: number, numBatches?: number): void;
307
- /** Log epoch end/summary */
308
- epochEnd(epoch: number, totalEpochs: number, epochTimeSecs?: number): void;
309
- /** Log checkpoint saved */
310
- checkpoint(path: string, step: number): void;
311
- /** Log training completion */
312
- complete(totalSteps: number): void;
313
- /** Log generation sample (TUI only) */
314
- generation(sample: GenerationSample): void;
315
- /** Log training paused (TUI only) */
316
- paused(step: number): void;
317
- /** Log training resumed (TUI only) */
318
- resumed(step: number): void;
319
- /** Log database path for TUI DB tab */
320
- databasePath(path: string, runId: string, runName?: string): void;
321
- /**
322
- * Send resume state to TUI for sparkline and aggregate restoration.
323
- * Called when resuming from checkpoint to restore TUI history.
324
- */
325
- resumeState(state: ResumeState): void;
326
- /**
327
- * Send an interactive prompt to the TUI and wait for response.
328
- * Only works in TUI mode - returns null in non-TUI mode.
329
- *
330
- * @param id - Unique ID for this prompt
331
- * @param message - Message to display
332
- * @param choices - Available choices
333
- * @param options - Prompt options
334
- * @returns The selected value(s), or null if not in TUI mode.
335
- * For multi-select, returns comma-separated values (use promptMulti for array).
336
- */
337
- prompt(id: string, message: string, choices: PromptChoice[], options?: PromptOptions): Promise<string | null>;
338
- /**
339
- * Send a multi-select prompt to the TUI and wait for response.
340
- * Convenience wrapper that returns an array of selected values.
341
- *
342
- * @param id - Unique ID for this prompt
343
- * @param message - Message to display
344
- * @param choices - Available choices
345
- * @param defaultIndices - Optional default selection indices
346
- * @returns Array of selected values, or null if not in TUI mode
347
- */
348
- promptMulti(id: string, message: string, choices: PromptChoice[], defaultIndices?: number[]): Promise<string[] | null>;
349
- /** Check if TUI mode is enabled */
350
- get isTuiMode(): boolean;
351
- /** Get the log interval */
352
- get logInterval(): number;
353
- private writeTui;
354
- private writeJsonl;
355
- }
356
- /**
357
- * Create a training logger instance
358
- *
359
- * @example
360
- * ```typescript
361
- * // Auto-detect TUI mode from environment
362
- * const logger = createTrainingLogger();
363
- *
364
- * // Explicit configuration
365
- * const logger = createTrainingLogger({
366
- * tuiMode: false,
367
- * logConsole: true,
368
- * logJsonl: true,
369
- * outputDir: './outputs',
370
- * logInterval: 10,
371
- * });
372
- * ```
373
- */
374
- export declare function createTrainingLogger(config?: Partial<TrainingLoggerConfig>): TrainingLogger;
375
- //# sourceMappingURL=training-logger.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"training-logger.d.ts","sourceRoot":"","sources":["../../src/trainers/training-logger.ts"],"names":[],"mappings":"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"}