mirror of
https://github.com/mudler/LocalAI.git
synced 2026-06-27 09:57:14 -04:00
QuantizationService kept jobs in a process-local map persisted only to a local state.json, so in distributed mode jobs were neither visible across replicas nor durable cluster-wide. Back jobs with a syncstate.SyncedMap keyed by job ID (value *schema.QuantizationJob, the exact REST shape). - New distributed.QuantStore (GORM, table quantization_jobs) mirroring FineTuneStore: Create/Get/ListAll/Upsert(idempotent)/Delete, registered for AutoMigrate via distributed.InitStores (Stores.Quant). - New adapter (quantization/syncstore.go) over QuantStore implementing syncstate.Store, with record<->schema conversion. - Reads go through List/Get, writes through Set/Delete (write-through + broadcast); state.json is kept as the standalone Loader for single-node restart recovery (stale-job fixups preserved). - app.go passes the distributed NATS client + QuantStore when distributed, nil otherwise; Start/Close lifecycle mirrors finetune. Signed-off-by: Ettore Di Giacinto <mudler@localai.io> Assisted-by: Claude:claude-opus-4-8 [Claude Code]
48 lines
977 B
Go
48 lines
977 B
Go
package distributed
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/mudler/xlog"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
// Stores holds all Phase 4 distributed stores.
|
|
type Stores struct {
|
|
Gallery *GalleryStore
|
|
FineTune *FineTuneStore
|
|
Quant *QuantStore
|
|
Skills *SkillStore
|
|
}
|
|
|
|
// InitStores creates and migrates all Phase 4 distributed stores.
|
|
func InitStores(db *gorm.DB) (*Stores, error) {
|
|
gallery, err := NewGalleryStore(db)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("gallery store: %w", err)
|
|
}
|
|
|
|
ft, err := NewFineTuneStore(db)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("fine-tune store: %w", err)
|
|
}
|
|
|
|
quant, err := NewQuantStore(db)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("quantization store: %w", err)
|
|
}
|
|
|
|
skills, err := NewSkillStore(db)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("skills store: %w", err)
|
|
}
|
|
|
|
xlog.Info("Distributed stores initialized (Gallery, FineTune, Quant, Skills)")
|
|
return &Stores{
|
|
Gallery: gallery,
|
|
FineTune: ft,
|
|
Quant: quant,
|
|
Skills: skills,
|
|
}, nil
|
|
}
|