Initial commit: Ollama Personal Trainer & Unsloth MoE Orchestrator Studio
This commit is contained in:
222
studio-ref/src/types.ts
Normal file
222
studio-ref/src/types.ts
Normal file
@@ -0,0 +1,222 @@
|
||||
export type ModelArch = "llama3" | "qwen2.5" | "mistral" | "gemma2" | "deepseek" | "phi4" | "smollm" | "custom";
|
||||
|
||||
export type FineTuneMethod =
|
||||
| "qlora"
|
||||
| "lora_plus"
|
||||
| "dora"
|
||||
| "orpo"
|
||||
| "dpo"
|
||||
| "simpo"
|
||||
| "kto"
|
||||
| "galore"
|
||||
| "neftune"
|
||||
| "longlora";
|
||||
|
||||
export type PruningMethod =
|
||||
| "structured_layer"
|
||||
| "head_pruning"
|
||||
| "vocab_trim"
|
||||
| "laser_svd"
|
||||
| "wanda"
|
||||
| "magnitude_dropout";
|
||||
|
||||
export type MoEMethod =
|
||||
| "moefication"
|
||||
| "dare_ties"
|
||||
| "slerp"
|
||||
| "passthrough_franken"
|
||||
| "task_arithmetic"
|
||||
| "linear_average";
|
||||
|
||||
export type GGUFQuantType =
|
||||
| "Q4_K_M"
|
||||
| "Q4_K_S"
|
||||
| "Q5_K_M"
|
||||
| "Q5_K_S"
|
||||
| "Q8_0"
|
||||
| "IQ4_XS"
|
||||
| "IQ3_XXS"
|
||||
| "IQ2_XS"
|
||||
| "BF16"
|
||||
| "FP16";
|
||||
|
||||
export interface BaseModelInfo {
|
||||
id: string;
|
||||
name: string;
|
||||
huggingFaceId: string;
|
||||
ollamaName: string;
|
||||
parametersBillion: number;
|
||||
layers: number;
|
||||
hiddenDim: number;
|
||||
heads: number;
|
||||
kvHeads: number;
|
||||
vocabSize: number;
|
||||
defaultContext: number;
|
||||
architecture: ModelArch;
|
||||
baseSizeGb: number;
|
||||
q4SizeGb: number;
|
||||
description: string;
|
||||
recommendedFor4080Super: boolean;
|
||||
}
|
||||
|
||||
export interface TrainingHyperparameters {
|
||||
// LoRA / PEFT
|
||||
lora_r: number;
|
||||
lora_alpha: number;
|
||||
lora_dropout?: number;
|
||||
target_modules?: string[];
|
||||
bias?: "none" | "all" | "lora_only";
|
||||
use_dora?: boolean;
|
||||
use_rslora?: boolean;
|
||||
|
||||
// Optimizer & Scheduler
|
||||
batch_size: number;
|
||||
gradient_accumulation_steps: number;
|
||||
learning_rate: number;
|
||||
lr_scheduler?: "cosine" | "linear" | "constant" | "cosine_with_restarts";
|
||||
warmup_ratio?: number;
|
||||
warmup_steps?: number;
|
||||
weight_decay?: number;
|
||||
max_grad_norm?: number;
|
||||
optimizer?: "adamw_8bit" | "paged_adamw_8bit" | "adamw_torch" | "galore_adamw";
|
||||
|
||||
// Training Duration & Precision
|
||||
epochs: number;
|
||||
max_steps?: number;
|
||||
max_seq_length: number;
|
||||
precision?: "bfloat16" | "float16";
|
||||
use_gradient_checkpointing?: boolean;
|
||||
use_unsloth_fast_backprop?: boolean;
|
||||
neftune_noise_alpha?: number;
|
||||
|
||||
// Preference Alignment (for ORPO/DPO/SimPO)
|
||||
preference_beta?: number;
|
||||
simpo_gamma?: number;
|
||||
}
|
||||
|
||||
export interface PruningConfig {
|
||||
enabled: boolean;
|
||||
pruneMethod?: PruningMethod;
|
||||
methods?: PruningMethod[];
|
||||
layerPruningRange: [number, number]; // e.g. prune layers 16 to 24
|
||||
targetLayersCount?: number;
|
||||
headsPrunePercentage?: number;
|
||||
headPruningRatio?: number; // 0.0 - 0.5
|
||||
vocabTrimTarget?: number;
|
||||
vocabTargetTokens?: number; // e.g. 32000 from 128000
|
||||
laserReductionRank?: number; // e.g. 32
|
||||
repairLoRASteps?: number;
|
||||
healingLoraSteps?: number;
|
||||
}
|
||||
|
||||
export interface MoEConfig {
|
||||
enabled: boolean;
|
||||
method: MoEMethod;
|
||||
numExperts: number;
|
||||
topK: number;
|
||||
routerType: "softmax" | "sinkhorn" | "switch";
|
||||
expertSources: {
|
||||
name: string;
|
||||
modelId: string;
|
||||
weight: number;
|
||||
specialization: string;
|
||||
}[];
|
||||
}
|
||||
|
||||
export interface MCPToolDeclaration {
|
||||
id: string;
|
||||
name: string;
|
||||
description: string;
|
||||
serverName: string;
|
||||
parametersSchema: {
|
||||
type: "object";
|
||||
properties: Record<string, { type: string; description: string; enum?: string[] }>;
|
||||
required?: string[];
|
||||
};
|
||||
sampleCallsCount?: number;
|
||||
}
|
||||
|
||||
export interface TrainingDataSample {
|
||||
id: string;
|
||||
instruction: string;
|
||||
input?: string;
|
||||
output: string;
|
||||
system?: string;
|
||||
category?: string;
|
||||
difficulty?: string;
|
||||
toolCalls?: {
|
||||
name: string;
|
||||
arguments: Record<string, any>;
|
||||
}[];
|
||||
simulatedToolResult?: string;
|
||||
isMcpSample?: boolean;
|
||||
}
|
||||
|
||||
export interface GGUFConfig {
|
||||
quantization: GGUFQuantType;
|
||||
contextLength: number;
|
||||
templateFormat?: "llama3" | "chatml" | "mistral" | "alpaca" | "deepseek" | "gemma";
|
||||
systemPrompt: string;
|
||||
stopTokens?: string[];
|
||||
temperature: number;
|
||||
top_p?: number;
|
||||
top_k?: number;
|
||||
repeat_penalty?: number;
|
||||
num_gpu_layers: number; // 999 for full 4080 Super offload
|
||||
threads?: number;
|
||||
}
|
||||
|
||||
export interface HardwarePreset {
|
||||
name: string;
|
||||
vramGb: number;
|
||||
cudaCores: number;
|
||||
tensorCores: number;
|
||||
recommendedBatch: number;
|
||||
recommendedSeqLen: number;
|
||||
recommendedQuant: GGUFQuantType;
|
||||
notes: string;
|
||||
}
|
||||
|
||||
export interface DistillationConfig {
|
||||
enabled: boolean;
|
||||
teacherModel: string;
|
||||
studentModel?: string;
|
||||
distillationType?: "response_generation" | "cot_reasoning" | "logit_kl" | "mcp_alignment";
|
||||
temperature: number;
|
||||
includeThoughtChain: boolean;
|
||||
distillDatasetSize?: number;
|
||||
samplesToGenerate?: number;
|
||||
distillationAlpha?: number;
|
||||
}
|
||||
|
||||
export interface TrainingLogEntry {
|
||||
step: number;
|
||||
epoch: number;
|
||||
loss: number;
|
||||
evalLoss?: number;
|
||||
learningRate: number;
|
||||
gradNorm: number;
|
||||
vramUsedGb: number;
|
||||
tokensPerSec: number;
|
||||
sampleOutput?: string;
|
||||
timestamp: string;
|
||||
}
|
||||
|
||||
export type ActiveTab =
|
||||
| "models"
|
||||
| "model"
|
||||
| "techniques"
|
||||
| "dataset"
|
||||
| "mcp"
|
||||
| "mcp_harness"
|
||||
| "distill"
|
||||
| "distillation"
|
||||
| "pruning"
|
||||
| "moe"
|
||||
| "moe_merge"
|
||||
| "gguf"
|
||||
| "train"
|
||||
| "training"
|
||||
| "deploy"
|
||||
| "ollama"
|
||||
| "arena";
|
||||
Reference in New Issue
Block a user