ggml: fix wrong param size of metaggml

This commit is contained in:
cvrunmin 2025-11-27 10:18:52 +08:00
parent 5f32d764fd
commit a12cabbdf9
2 changed files with 6 additions and 6 deletions

View File

@ -663,18 +663,22 @@ func MakeMetaGGML(ggmls []GGML, ggmlPaths []string) MetaGGML {
return cmp.Compare(a.weight, b.weight)
})
metaGgml := MetaGGML{}
var param_counts uint64 = 0
for i := range wrappers {
param_counts += wrappers[i].ggml.KV().ParameterCount()
if i == 0 {
kv := maps.Clone(wrappers[i].ggml.KV())
// remove the keys contained in split gguf files. add more if needed.
delete(kv, "slice.no")
delete(kv, "slice.count")
delete(kv, "slice.tensors.count")
delete(kv, "general.parameter_count")
metaGgml.kv = kv
}
metaGgml.Shards = append(metaGgml.Shards, wrappers[i].ggml)
metaGgml.ShardPaths = append(metaGgml.ShardPaths, wrappers[i].path)
}
metaGgml.kv["general.parameter_count"] = param_counts
ft, _ := BuildForeignTensors(metaGgml.Shards, metaGgml.ShardPaths)
metaGgml.Tensors = *ft
return metaGgml

View File

@ -138,7 +138,7 @@ func (llm *gguf) numKV() uint64 {
}
}
func (llm *gguf) Decode(rs io.ReadSeeker, mainKV ...KV) error {
func (llm *gguf) Decode(rs io.ReadSeeker) error {
// decode key-values
for i := 0; uint64(i) < llm.numKV(); i++ {
k, err := readGGUFString(llm, rs)
@ -235,11 +235,7 @@ func (llm *gguf) Decode(rs io.ReadSeeker, mainKV ...KV) error {
// patch KV with parameter count
llm.kv["general.parameter_count"] = llm.parameters
alignment := llm.kv.Uint("general.alignment", 0xffffffff)
if alignment == 0xffffffff {
// try to get alignment from main shard instead.
alignment = append(mainKV, make(KV))[0].Uint("general.alignment", 32)
}
alignment := llm.kv.Uint("general.alignment", 32)
offset, err := rs.Seek(0, io.SeekCurrent)
if err != nil {