v2.5KI & Machine Learning
ML Training & Inference
Das intelligence-Modul ermöglicht das Trainieren, Feintunen und lokale Ausführen von Modellen.
Training-Workflows
Velisch bietet High-Level Abstraktionen für das Training von Modellen, während Rust im Hintergrund die rechenintensiven Aufgaben übernimmt.
Fine-Tuning
LLMs auf eigene Daten anpassen
Lokale Inferenz
ONNX/GGUF Modelle lokal ausführen
Monitoring
Trainings-Metriken visualisieren
Modelle trainieren und feintunen
Starten Sie Fine-Tuning-Jobs direkt aus dem Code:
use intelligence
struct TrainingExample { input: string, output: string }
fn fineTuneModel(data: List<TrainingExample>) {
let trainer = TrainingService.new({
baseModel: "gpt-3.5-turbo",
epochs: 3,
learningRate: 0.001
});
log.info("Starte Training mit " + data.length() + " Beispielen...");
// Async Job starten
let jobId = trainer.train(data);
// Auf Fertigstellung warten (oder Webhook nutzen)
while (trainer.getStatus(jobId) != "succeeded") {
utils.sleep("10s");
}
let newModelId = trainer.getModelId(jobId);
log.info("Neues Modell bereit: " + newModelId);
// Konfiguration aktualisieren, um neues Modell zu nutzen
config.set("ai.model", newModelId);
}Lokale Inferenz (ONNX/GGUF)
Velisch kann Modelle lokal auf der CPU/GPU ausführen, ohne Daten an die Cloud zu senden. Ideal für Datenschutz-kritische Anwendungen.
use intelligence
// Lädt ein quantisiertes Llama-3 Modell (GGUF Format)
let model = ModelLoader.load("./models/llama-3-8b-q4.gguf", {
gpuLayers: 32,
contextSize: 4096
});
@POST("/api/local/generate")
fn localGenerate(prompt: string): string {
return model.predict(prompt);
}
// ONNX Modell für Klassifizierung
let classifier = ModelLoader.load("./models/sentiment.onnx");
@POST("/api/local/classify")
fn localClassify(text: string): ClassificationResult {
let prediction = classifier.predict(text);
return ClassificationResult {
label: prediction.label,
confidence: prediction.score,
};
}GPU Beschleunigung
Velisch erkennt automatisch verfügbare CUDA- oder Metal-Ressourcen und nutzt diese für die Berechnung, ohne manuellen Treiber-Code.
Custom Training Pipeline
use intelligence
fn trainSentimentModel(): void {
let service = TrainingService.new();
// Training-Daten hinzufügen
service.add_example("I love this product", "positive");
service.add_example("This is terrible", "negative");
service.add_example("It's okay", "neutral");
// ONNX Training Konfiguration
let config = ONNXTrainingConfig {
epochs: 100,
batchSize: 32,
learningRate: 0.001,
optimizer: "Adam",
lossFunction: "CrossEntropy"
};
let result = service.train_with_onnx("sentiment_model", config);
match result {
Ok(training_result) => {
log.info("Accuracy: " + training_result.accuracy);
log.info("Model saved to: " + training_result.modelPath);
},
Err(err) => {
log.error("Training fehlgeschlagen: " + err.message);
}
}
}
// Trainiertes Modell nutzen
let sentimentModel = ModelLoader.load("./models/sentiment_model.onnx");
@POST("/api/sentiment")
fn analyzeSentiment(text: string): SentimentResult {
let prediction = sentimentModel.predict(text);
return SentimentResult {
text: text,
sentiment: prediction.label,
confidence: prediction.score,
};
}Training Monitoring
use intelligence
fn trainWithMonitoring(data: List<TrainingExample>) {
let trainer = TrainingService.new({
baseModel: "gpt-3.5-turbo",
epochs: 10,
});
// Callback für Trainings-Updates
trainer.onProgress(|update| {
log.info("Epoch " + update.epoch + "/" + update.totalEpochs);
log.info("Loss: " + update.loss);
log.info("Accuracy: " + update.accuracy);
// Metrics an Dashboard senden
metrics.gauge("training_loss", update.loss);
metrics.gauge("training_accuracy", update.accuracy);
});
trainer.onComplete(|result| {
log.info("Training abgeschlossen!");
log.info("Finale Accuracy: " + result.finalAccuracy);
// Slack-Benachrichtigung
slack.send("#ml-team", "Training fertig: " + result.modelId);
});
trainer.train(data);
}Best Practices
Lokale Modelle für Datenschutz
Sensible Daten nicht an Cloud-APIs senden
Quantisierung nutzen
GGUF Q4 Modelle sind schnell und brauchen wenig RAM
Training überwachen
Callbacks für Metriken und Alerts einrichten
Model Versioning
Trainierte Modelle mit Zeitstempel speichern