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>
20 lines
419 B
Go
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
|
|
}
|