go-mlx/internal/metal/backend.go
Snider 4d1bff3d78 refactor(api): clean root package — interfaces only, metal auto-registered
Root package now contains only:
- mlx.go: package doc + go:generate directives
- textmodel.go: TextModel, Token, Message interfaces
- options.go: GenerateOption, LoadOption functional options
- backend.go: Backend interface, Register/Get/Default/LoadModel
- register_metal.go: build-tagged init() + adapter + memory delegates
- mlx_stub.go: non-darwin fallback

internal/metal/ has its own Token, GenerateConfig, Model types.
register_metal.go adapts between the two via metalAdapter.

Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-19 20:04:19 +00:00

20 lines
419 B
Go

//go:build darwin && arm64
package metal
import "fmt"
// LoadAndInit initialises Metal and loads a model from the given path.
// Returns a *Model ready for generation.
func LoadAndInit(path string) (*Model, error) {
Init()
im, err := loadModel(path)
if err != nil {
return nil, fmt.Errorf("metal: %w", err)
}
return &Model{
model: im,
tokenizer: im.Tokenizer(),
modelType: im.ModelType(),
}, nil
}