ollama source for Momentry Core verification
This commit is contained in:
59
x/create/laguna.go
Normal file
59
x/create/laguna.go
Normal file
@@ -0,0 +1,59 @@
|
||||
package create
|
||||
|
||||
import (
|
||||
"strings"
|
||||
|
||||
"github.com/ollama/ollama/x/safetensors"
|
||||
)
|
||||
|
||||
type lagunaImportTransform struct{}
|
||||
|
||||
func newLagunaImportTransform(string, sourceModelConfig) (tensorImportTransform, error) {
|
||||
return lagunaImportTransform{}, nil
|
||||
}
|
||||
|
||||
func (lagunaImportTransform) skipTensor(string) bool { return false }
|
||||
|
||||
func (lagunaImportTransform) transformTensor(td *safetensors.TensorData) ([]*safetensors.TensorData, error) {
|
||||
if td == nil {
|
||||
return nil, nil
|
||||
}
|
||||
return []*safetensors.TensorData{td}, nil
|
||||
}
|
||||
|
||||
func (lagunaImportTransform) quantizationType(name string, shape []int32, quantize string) string {
|
||||
if !lagunaIsHFRoutedExpertWeight(name) {
|
||||
return ""
|
||||
}
|
||||
return GetTensorQuantization(name, shape, quantize)
|
||||
}
|
||||
|
||||
func (lagunaImportTransform) sourceFP8TensorQuantization(name string, shape []int32, requested string, fallback string) string {
|
||||
if !lagunaIsHFRoutedExpertWeight(name) {
|
||||
return ""
|
||||
}
|
||||
|
||||
switch normalizeQuantType(requested) {
|
||||
case "nvfp4", "mxfp4":
|
||||
if lagunaKeepSourceFP8TensorAtMXFP8(name, shape) {
|
||||
return "mxfp8"
|
||||
}
|
||||
}
|
||||
return fallback
|
||||
}
|
||||
|
||||
func (lagunaImportTransform) sourceFP8BF16Quantization(string, []int32, string) string {
|
||||
return ""
|
||||
}
|
||||
|
||||
func lagunaKeepSourceFP8TensorAtMXFP8(name string, shape []int32) bool {
|
||||
if len(shape) != 2 || !isAligned(shape, "mxfp8") {
|
||||
return false
|
||||
}
|
||||
|
||||
return strings.Contains(name, "down_proj")
|
||||
}
|
||||
|
||||
func lagunaIsHFRoutedExpertWeight(name string) bool {
|
||||
return strings.HasSuffix(name, ".weight") && strings.Contains(name, ".mlp.experts.")
|
||||
}
|
||||
Reference in New Issue
Block a user