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
b16367b4
Commit
b16367b4
authored
Feb 25, 2025
by
Michael Yang
Browse files
fix: add back bf16 support
this was accidentally removed when moving fs/ggml from its previous location
parent
a4993906
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
75 additions
and
5 deletions
+75
-5
fs/ggml/ggml.go
fs/ggml/ggml.go
+22
-5
fs/ggml/ggml_test.go
fs/ggml/ggml_test.go
+53
-0
No files found.
fs/ggml/ggml.go
View file @
b16367b4
...
...
@@ -207,11 +207,26 @@ func (t Tensor) block() (n int) {
func
(
t
Tensor
)
blockSize
()
uint64
{
switch
t
.
Kind
{
case
0
,
1
,
24
,
25
,
26
,
27
,
28
,
30
:
// F32, F16, I8, I16, I32, I64, F64, BF16
case
0
,
// F32
1
,
// F16
24
,
// I8
25
,
// I16
26
,
// I32
27
,
// I64
28
,
// F64
30
:
// BF16
return
1
case
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
,
20
:
// Q4_0, Q4_1, Q5_0, Q5_1, Q8_0, Q8_1, IQ4_NL
case
2
,
// Q4_0
3
,
// Q4_1
6
,
// Q5_0
7
,
// Q5_1
8
,
// Q8_0
9
,
// Q8_1
20
:
// IQ4_NL
return
32
default
:
// All others
default
:
return
256
}
}
...
...
@@ -235,7 +250,7 @@ func (t Tensor) typeSize() uint64 {
case
8
:
// Q8_0
return
2
+
blockSize
case
9
:
// Q8_1
return
4
+
4
+
blockSize
return
2
+
2
+
blockSize
case
10
:
// Q2_K
return
blockSize
/
16
+
blockSize
/
4
+
2
+
2
case
11
:
// Q3_K
...
...
@@ -247,7 +262,7 @@ func (t Tensor) typeSize() uint64 {
case
14
:
// Q6_K
return
blockSize
/
2
+
blockSize
/
4
+
blockSize
/
16
+
2
case
15
:
// Q8_K
return
2
+
blockSize
+
2
*
blockSize
/
16
return
4
+
blockSize
+
2
*
blockSize
/
16
case
16
:
// IQ2_XXS
return
2
+
2
*
blockSize
/
8
case
17
:
// IQ2_XS
...
...
@@ -276,6 +291,8 @@ func (t Tensor) typeSize() uint64 {
return
8
case
29
:
// IQ1_M
return
blockSize
/
8
+
blockSize
/
16
+
blockSize
/
32
case
30
:
// BF16
return
2
default
:
return
0
}
...
...
fs/ggml/ggml_test.go
View file @
b16367b4
...
...
@@ -3,6 +3,7 @@ package ggml
import
(
"maps"
"slices"
"strconv"
"strings"
"testing"
...
...
@@ -157,3 +158,55 @@ func TestTensorLayers(t *testing.T) {
})
}
}
// ref: https://github.com/ggml-org/llama.cpp/blob/a82c9e7c23ef6db48cebfa194dc9cebbc4ac3552/ggml/src/ggml.c#L572
func
TestTensorTypes
(
t
*
testing
.
T
)
{
cases
:=
[]
struct
{
kind
uint32
blockSize
uint64
typeSize
uint64
}{
{
0
,
1
,
4
},
{
1
,
1
,
2
},
{
2
,
32
,
18
},
{
3
,
32
,
20
},
{
6
,
32
,
22
},
{
7
,
32
,
24
},
{
8
,
32
,
34
},
{
9
,
32
,
36
},
{
10
,
256
,
84
},
{
11
,
256
,
110
},
{
12
,
256
,
144
},
{
13
,
256
,
176
},
{
14
,
256
,
210
},
{
15
,
256
,
292
},
{
16
,
256
,
66
},
{
17
,
256
,
74
},
{
18
,
256
,
98
},
{
19
,
256
,
50
},
{
20
,
32
,
18
},
{
21
,
256
,
110
},
{
22
,
256
,
82
},
{
23
,
256
,
136
},
{
24
,
1
,
1
},
{
25
,
1
,
2
},
{
26
,
1
,
4
},
{
27
,
1
,
8
},
{
28
,
1
,
8
},
{
29
,
256
,
56
},
{
30
,
1
,
2
},
}
for
_
,
tt
:=
range
cases
{
t
.
Run
(
strconv
.
Itoa
(
int
(
tt
.
kind
)),
func
(
t
*
testing
.
T
)
{
tensor
:=
Tensor
{
Kind
:
tt
.
kind
}
if
tensor
.
blockSize
()
!=
tt
.
blockSize
{
t
.
Errorf
(
"unexpected block size: got=%d want=%d"
,
tensor
.
blockSize
(),
tt
.
blockSize
)
}
if
tensor
.
typeSize
()
!=
tt
.
typeSize
{
t
.
Errorf
(
"unexpected type size: got=%d want=%d"
,
tensor
.
typeSize
(),
tt
.
typeSize
)
}
})
}
}
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