Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
OpenDAS
ollama
Commits
93085127
Commit
93085127
authored
Oct 06, 2025
by
Michael Yang
Committed by
Michael Yang
Oct 10, 2025
Browse files
convert: slice gate_up weight
parent
c00fa9cc
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
38 additions
and
10 deletions
+38
-10
convert/convert_gptoss.go
convert/convert_gptoss.go
+38
-10
No files found.
convert/convert_gptoss.go
View file @
93085127
...
...
@@ -108,17 +108,26 @@ func (m *gptossModel) Tensors(ts []Tensor) []*ggml.Tensor {
for
name
,
mxfp4
:=
range
mxfp4s
{
dims
:=
mxfp4
.
blocks
.
Shape
()
if
!
strings
.
HasSuffix
(
name
,
".weight"
)
{
name
+=
".weight"
if
strings
.
Contains
(
name
,
"ffn_down_exps"
)
{
out
=
append
(
out
,
&
ggml
.
Tensor
{
Name
:
name
+
".weight"
,
Kind
:
uint32
(
ggml
.
TensorTypeMXFP4
),
Shape
:
[]
uint64
{
dims
[
0
],
dims
[
1
],
dims
[
2
]
*
dims
[
3
]
*
2
},
WriterTo
:
mxfp4
,
})
}
else
if
strings
.
Contains
(
name
,
"ffn_gate_up_exps"
)
{
out
=
append
(
out
,
&
ggml
.
Tensor
{
Name
:
strings
.
Replace
(
name
,
"gate_up"
,
"gate"
,
1
)
+
".weight"
,
Kind
:
uint32
(
ggml
.
TensorTypeMXFP4
),
Shape
:
[]
uint64
{
dims
[
0
],
dims
[
1
]
/
2
,
dims
[
2
]
*
dims
[
3
]
*
2
},
WriterTo
:
mxfp4
.
slice
(
1
,
0
,
int
(
dims
[
1
]),
2
),
},
&
ggml
.
Tensor
{
Name
:
strings
.
Replace
(
name
,
"gate_up"
,
"up"
,
1
)
+
".weight"
,
Kind
:
uint32
(
ggml
.
TensorTypeMXFP4
),
Shape
:
[]
uint64
{
dims
[
0
],
dims
[
1
]
/
2
,
dims
[
2
]
*
dims
[
3
]
*
2
},
WriterTo
:
mxfp4
.
slice
(
1
,
1
,
int
(
dims
[
1
]),
2
),
})
}
out
=
append
(
out
,
&
ggml
.
Tensor
{
Name
:
name
,
Kind
:
uint32
(
ggml
.
TensorTypeMXFP4
),
Shape
:
[]
uint64
{
dims
[
0
],
dims
[
1
],
dims
[
2
]
*
dims
[
3
]
*
2
},
WriterTo
:
mxfp4
,
})
}
return
out
...
...
@@ -169,9 +178,21 @@ func (m *gptossModel) Replacements() []string {
}
type
mxfp4
struct
{
slices
[]
tensor
.
Slice
blocks
,
scales
Tensor
}
func
(
m
*
mxfp4
)
slice
(
dim
,
start
,
end
,
step
int
)
*
mxfp4
{
slice
:=
slices
.
Repeat
([]
tensor
.
Slice
{
nil
},
len
(
m
.
blocks
.
Shape
()))
slice
[
dim
]
=
tensor
.
S
(
start
,
end
,
step
)
return
&
mxfp4
{
slices
:
slice
,
blocks
:
m
.
blocks
,
scales
:
m
.
scales
,
}
}
func
(
m
*
mxfp4
)
WriteTo
(
w
io
.
Writer
)
(
int64
,
error
)
{
var
b
bytes
.
Buffer
if
_
,
err
:=
m
.
blocks
.
WriteTo
(
&
b
);
err
!=
nil
{
...
...
@@ -215,6 +236,13 @@ func (m *mxfp4) WriteTo(w io.Writer) (int64, error) {
return
0
,
err
}
if
len
(
m
.
slices
)
>
0
{
out
,
err
=
out
.
Slice
(
m
.
slices
...
)
if
err
!=
nil
{
return
0
,
err
}
}
out
=
tensor
.
Materialize
(
out
)
if
err
:=
out
.
Reshape
(
out
.
Shape
()
.
TotalSize
());
err
!=
nil
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment