mirror of
https://github.com/ollama/ollama.git
synced 2025-11-11 11:17:39 +01:00
fix: leaf alt name (#12390)
a leaf node with an alternative name gets all its alternatives names added into the same branch rather than creating branches themselves
This commit is contained in:
@@ -187,15 +187,17 @@ func populateFields(base Base, v reflect.Value, tags ...Tag) reflect.Value {
|
|||||||
names = append(names, prefix+n+suffix)
|
names = append(names, prefix+n+suffix)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
childNames := fn(tags[1:], tags[0].prefix, tags[0].suffix)
|
||||||
if childNames := fn(tags[1:], tags[0].prefix, tags[0].suffix); len(childNames) == 0 {
|
if len(names) == 0 {
|
||||||
// no child names, append current names
|
// current tag has no name, use child names only
|
||||||
fullNames = append(fullNames, names)
|
|
||||||
} else if len(names) == 0 {
|
|
||||||
// no current names, append child names
|
|
||||||
fullNames = append(fullNames, childNames...)
|
fullNames = append(fullNames, childNames...)
|
||||||
|
} else if len(childNames) == 0 {
|
||||||
|
// current tag has names but no children, create branches for each name
|
||||||
|
for _, name := range names {
|
||||||
|
fullNames = append(fullNames, []string{name})
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
// combine current and child names
|
// merge each name with each child
|
||||||
for _, name := range names {
|
for _, name := range names {
|
||||||
for _, childName := range childNames {
|
for _, childName := range childNames {
|
||||||
fullNames = append(fullNames, append([]string{name}, childName...))
|
fullNames = append(fullNames, append([]string{name}, childName...))
|
||||||
|
|||||||
@@ -125,6 +125,7 @@ func TestPopulateFieldsAlternateName(t *testing.T) {
|
|||||||
Input *nn.Embedding `gguf:"input"`
|
Input *nn.Embedding `gguf:"input"`
|
||||||
Output *nn.Linear `gguf:"output,alt:input"`
|
Output *nn.Linear `gguf:"output,alt:input"`
|
||||||
Nested *nested `gguf:"nested"`
|
Nested *nested `gguf:"nested"`
|
||||||
|
Tensor ml.Tensor `gguf:"leaf,alt:tensor"`
|
||||||
}
|
}
|
||||||
|
|
||||||
var m fakeModel
|
var m fakeModel
|
||||||
@@ -133,6 +134,7 @@ func TestPopulateFieldsAlternateName(t *testing.T) {
|
|||||||
names: []string{
|
names: []string{
|
||||||
"input.weight",
|
"input.weight",
|
||||||
"nested.b.weight",
|
"nested.b.weight",
|
||||||
|
"leaf",
|
||||||
},
|
},
|
||||||
}}, v.Elem()))
|
}}, v.Elem()))
|
||||||
|
|
||||||
@@ -142,6 +144,7 @@ func TestPopulateFieldsAlternateName(t *testing.T) {
|
|||||||
Nested: &nested{
|
Nested: &nested{
|
||||||
Weight: &nn.Linear{Weight: &fakeTensor{Name: "nested.b.weight"}},
|
Weight: &nn.Linear{Weight: &fakeTensor{Name: "nested.b.weight"}},
|
||||||
},
|
},
|
||||||
|
Tensor: &fakeTensor{Name: "leaf"},
|
||||||
}, m); diff != "" {
|
}, m); diff != "" {
|
||||||
t.Errorf("populateFields() set incorrect values (-want +got):\n%s", diff)
|
t.Errorf("populateFields() set incorrect values (-want +got):\n%s", diff)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user