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
6b252918
Commit
6b252918
authored
Jun 03, 2024
by
Michael Yang
Browse files
update convert test to check result data
parent
c4c84b7a
Changes
8
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
924 additions
and
37 deletions
+924
-37
convert/convert_test.go
convert/convert_test.go
+78
-33
convert/testdata/Meta-Llama-3-8B-Instruct.json
convert/testdata/Meta-Llama-3-8B-Instruct.json
+313
-0
convert/testdata/Mistral-7B-Instruct-v0.2.json
convert/testdata/Mistral-7B-Instruct-v0.2.json
+313
-0
convert/testdata/Mixtral-8x7B-Instruct-v0.1.json
convert/testdata/Mixtral-8x7B-Instruct-v0.1.json
+1
-0
convert/testdata/gemma-2b-it.json
convert/testdata/gemma-2b-it.json
+188
-0
llm/ggla.go
llm/ggla.go
+13
-1
llm/ggml.go
llm/ggml.go
+5
-2
llm/gguf.go
llm/gguf.go
+13
-1
No files found.
convert/convert_test.go
View file @
6b252918
//go:build slow
package
convert
package
convert
import
(
import
(
"crypto/sha256"
"encoding/json"
"flag"
"fmt"
"io"
"log/slog"
"math"
"os"
"os"
"path/filepath"
"path/filepath"
"slices"
"testing"
"testing"
"github.com/ollama/ollama/llm"
"github.com/ollama/ollama/llm"
"golang.org/x/exp/maps"
)
)
func
convertFull
(
t
*
testing
.
T
,
p
string
)
(
llm
.
KV
,
llm
.
Tensors
)
{
func
convertFull
(
t
*
testing
.
T
,
d
string
)
(
*
os
.
File
,
llm
.
KV
,
llm
.
Tensors
)
{
t
.
Helper
()
t
.
Helper
()
mf
,
err
:=
GetModelFormat
(
p
)
mf
,
err
:=
GetModelFormat
(
d
)
if
err
!=
nil
{
if
err
!=
nil
{
t
.
Fatal
(
err
)
t
.
Fatal
(
err
)
}
}
params
,
err
:=
mf
.
GetParams
(
p
)
params
,
err
:=
mf
.
GetParams
(
d
)
if
err
!=
nil
{
if
err
!=
nil
{
t
.
Fatal
(
err
)
t
.
Fatal
(
err
)
}
}
arch
,
err
:=
mf
.
GetModelArch
(
""
,
p
,
params
)
arch
,
err
:=
mf
.
GetModelArch
(
""
,
d
,
params
)
if
err
!=
nil
{
if
err
!=
nil
{
t
.
Fatal
(
err
)
t
.
Fatal
(
err
)
}
}
...
@@ -50,53 +57,91 @@ func convertFull(t *testing.T, p string) (llm.KV, llm.Tensors) {
...
@@ -50,53 +57,91 @@ func convertFull(t *testing.T, p string) (llm.KV, llm.Tensors) {
if
err
!=
nil
{
if
err
!=
nil
{
t
.
Fatal
(
err
)
t
.
Fatal
(
err
)
}
}
defer
r
.
Close
()
t
.
Cleanup
(
func
()
{
r
.
Close
()
})
m
,
_
,
err
:=
llm
.
DecodeGGML
(
r
)
m
,
_
,
err
:=
llm
.
DecodeGGML
(
r
,
math
.
MaxInt
)
if
err
!=
nil
{
if
err
!=
nil
{
t
.
Fatal
(
err
)
t
.
Fatal
(
err
)
}
}
return
m
.
KV
(),
m
.
Tensors
()
if
_
,
err
:=
r
.
Seek
(
0
,
io
.
SeekStart
);
err
!=
nil
{
t
.
Fatal
(
err
)
}
return
r
,
m
.
KV
(),
m
.
Tensors
()
}
func
TestMain
(
m
*
testing
.
M
)
{
var
level
slog
.
Level
flag
.
TextVar
(
&
level
,
"level"
,
slog
.
LevelInfo
,
"log level"
)
flag
.
Parse
()
slog
.
SetLogLoggerLevel
(
level
)
os
.
Exit
(
m
.
Run
())
}
}
func
TestConvertFull
(
t
*
testing
.
T
)
{
func
TestConvertFull
(
t
*
testing
.
T
)
{
cases
:=
[]
struct
{
cases
:=
[]
string
{
path
string
"Meta-Llama-3-8B-Instruct"
,
arch
string
"Mistral-7B-Instruct-v0.2"
,
tensors
int
"Mixtral-8x7B-Instruct-v0.1"
,
layers
int
"gemma-2b-it"
,
}{
{
"Meta-Llama-3-8B-Instruct"
,
"llama"
,
291
,
35
},
{
"Mistral-7B-Instruct-v0.2"
,
"llama"
,
291
,
35
},
{
"Mixtral-8x7B-Instruct-v0.1"
,
"llama"
,
291
,
35
},
{
"gemma-2b-it"
,
"gemma"
,
164
,
20
},
}
}
for
_
,
tt
:=
range
cases
{
for
i
:=
range
cases
{
t
.
Run
(
tt
.
path
,
func
(
t
*
testing
.
T
)
{
tt
:=
cases
[
i
]
p
:=
filepath
.
Join
(
"testdata"
,
tt
.
path
)
t
.
Run
(
tt
,
func
(
t
*
testing
.
T
)
{
if
_
,
err
:=
os
.
Stat
(
p
);
err
!=
nil
{
t
.
Parallel
()
p
:=
filepath
.
Join
(
"testdata"
,
tt
)
if
testing
.
Short
()
{
t
.
Skip
(
"skipping in short mode"
)
}
else
if
_
,
err
:=
os
.
Stat
(
p
);
err
!=
nil
{
t
.
Skipf
(
"%s not found"
,
p
)
t
.
Skipf
(
"%s not found"
,
p
)
}
}
kv
,
tensors
:=
convertFull
(
t
,
p
)
f
,
kv
,
tensors
:=
convertFull
(
t
,
p
)
actual
:=
make
(
map
[
string
]
string
)
for
k
,
v
:=
range
kv
{
if
s
,
ok
:=
v
.
(
json
.
Marshaler
);
!
ok
{
actual
[
k
]
=
fmt
.
Sprintf
(
"%v"
,
v
)
}
else
{
bts
,
err
:=
json
.
Marshal
(
s
)
if
err
!=
nil
{
t
.
Fatal
(
err
)
}
actual
[
k
]
=
fmt
.
Sprintf
(
"%x"
,
sha256
.
Sum256
(
bts
))
}
}
for
_
,
tensor
:=
range
tensors
.
Items
{
sha256sum
:=
sha256
.
New
()
sr
:=
io
.
NewSectionReader
(
f
,
int64
(
tensors
.
Offset
+
tensor
.
Offset
),
int64
(
tensor
.
Size
()))
if
_
,
err
:=
io
.
Copy
(
sha256sum
,
sr
);
err
!=
nil
{
t
.
Fatal
(
err
)
}
if
kv
.
Architecture
()
!=
tt
.
arch
{
actual
[
tensor
.
Name
]
=
fmt
.
Sprintf
(
"%x"
,
sha256sum
.
Sum
(
nil
))
t
.
Fatalf
(
"expected llama, got %s"
,
kv
.
Architecture
())
}
}
if
kv
.
FileType
()
.
String
()
!=
"F16"
{
expectFile
,
err
:=
os
.
Open
(
filepath
.
Join
(
"testdata"
,
fmt
.
Sprintf
(
"%s.json"
,
tt
)))
t
.
Fatalf
(
"expected F16, got %s"
,
kv
.
FileType
())
if
err
!=
nil
{
t
.
Fatal
(
err
)
}
}
if
len
(
tensors
)
!=
tt
.
tensors
{
var
expect
map
[
string
]
string
t
.
Fatalf
(
"expected %d tensors, got %d"
,
tt
.
tensors
,
len
(
tensors
))
if
err
:=
json
.
NewDecoder
(
expectFile
)
.
Decode
(
&
expect
);
err
!=
nil
{
t
.
Fatal
(
err
)
}
}
layers
:=
tensors
.
Layers
()
keys
:=
maps
.
Keys
(
expect
)
if
len
(
layers
)
!=
tt
.
layers
{
slices
.
Sort
(
keys
)
t
.
Fatalf
(
"expected %d layers, got %d"
,
tt
.
layers
,
len
(
layers
))
for
_
,
k
:=
range
keys
{
if
v
,
ok
:=
actual
[
k
];
!
ok
{
t
.
Errorf
(
"missing %s"
,
k
)
}
else
if
v
!=
expect
[
k
]
{
t
.
Errorf
(
"unexpected %s: want %s, got %s"
,
k
,
expect
[
k
],
v
)
}
}
}
})
})
}
}
...
...
convert/testdata/Meta-Llama-3-8B-Instruct.json
0 → 100644
View file @
6b252918
This diff is collapsed.
Click to expand it.
convert/testdata/Mistral-7B-Instruct-v0.2.json
0 → 100644
View file @
6b252918
This diff is collapsed.
Click to expand it.
convert/testdata/Mixtral-8x7B-Instruct-v0.1.json
0 → 100644
View file @
6b252918
{}
convert/testdata/gemma-2b-it.json
0 → 100644
View file @
6b252918
{
"general.architecture"
:
"gemma"
,
"general.file_type"
:
"1"
,
"general.quantization_version"
:
"2"
,
"gemma.block_count"
:
"18"
,
"gemma.context_length"
:
"8192"
,
"gemma.embedding_length"
:
"2048"
,
"gemma.feed_forward_length"
:
"16384"
,
"gemma.attention.head_count"
:
"8"
,
"gemma.attention.head_count_kv"
:
"1"
,
"gemma.attention.key_length"
:
"256"
,
"gemma.attention.value_length"
:
"256"
,
"gemma.attention.layer_norm_rms_epsilon"
:
"1e-06"
,
"tokenizer.ggml.model"
:
"llama"
,
"tokenizer.ggml.add_bos_token"
:
"true"
,
"tokenizer.ggml.add_eos_token"
:
"false"
,
"tokenizer.ggml.bos_token_id"
:
"2"
,
"tokenizer.ggml.eos_token_id"
:
"1"
,
"tokenizer.ggml.padding_token_id"
:
"0"
,
"tokenizer.ggml.unknown_token_id"
:
"3"
,
"tokenizer.ggml.scores"
:
"0872465d173867d755d3ee728f882b9dc2057a0bfd596fe1e3d131522f1250d8"
,
"tokenizer.ggml.token_type"
:
"485e40bf3d715a4764818fc097d6a2a41db872d82ee714bc500872a3437ff48d"
,
"tokenizer.ggml.tokens"
:
"c6e66de1841f04de8b8d236d461ab720a4c9b9b5414dc293a09c6e10eab45fda"
,
"token_embd.weight"
:
"17b87ab2c01c80657855a5413d0457b4a041afaeda0cc785080e44e2f04acf07"
,
"blk.0.attn_k.weight"
:
"28ac0da05754ad2714ae95da28a5ad191192140b30b8fd22d108d4700c9d989f"
,
"blk.0.attn_norm.weight"
:
"3f9d5675d1ab0eb8a816719dac9fab81f2e95c52be02c34263339acbc087febb"
,
"blk.0.attn_output.weight"
:
"703295c2c63990ff896778685c678f145298886f680f3ed5dc2a7ad54c293265"
,
"blk.0.attn_q.weight"
:
"69c2d0e4870e9d722a190d356203c9605575a16863466c3d1747966ef1cf5791"
,
"blk.0.attn_v.weight"
:
"95219c9c07b5ffe9a9a01e456d845eef2b11f4fc12c93dbbba479db395444c13"
,
"blk.0.ffn_down.weight"
:
"a2feb5eb3d572c57c5bafbf0ab506862df1160fe40965dcfe4b9fd855c08bed7"
,
"blk.0.ffn_gate.weight"
:
"fcca072c445c31f4dc4d5dfaa785b1bdf7271342442099b74fd17268b5829fbf"
,
"blk.0.ffn_norm.weight"
:
"7621f95dbd245cade6fffd6b08797d69d8e3954e960f0b5551b90d967ab95448"
,
"blk.0.ffn_up.weight"
:
"14a9bcdd451403c67136391e1b6e53b3b1830f00199bd911dbcc56d8749c14f4"
,
"blk.1.attn_k.weight"
:
"c70f73c5df20579cb44d971164b48b5f0d8d5abdb38b381e7a8b880ba12aa406"
,
"blk.1.attn_norm.weight"
:
"88b6b91f93a1ef83425a7c7dc2a2fbd3b22704a04c64a80061df376ac8c33626"
,
"blk.1.attn_output.weight"
:
"f031a537490c452be3b3bb51e6b7949a636405756e160976a1c070a792ea00ee"
,
"blk.1.attn_q.weight"
:
"bdb23214b1cf9cfd30f863a0a5868e52c6809d93b7e8f44df096a94204d9896a"
,
"blk.1.attn_v.weight"
:
"e9bbc0b05f2c872fb1403f8f938cd1612b502229ee401f12593b1164c61acc00"
,
"blk.1.ffn_down.weight"
:
"5ff53811038b661a7b8f2bfdf213bebfb185ec1a6060b662f063714f33584d79"
,
"blk.1.ffn_gate.weight"
:
"205085c8c951a5c7543b1495183cd96028fb49f67464b3e9862a2693a6077a33"
,
"blk.1.ffn_norm.weight"
:
"798f354fc85afce9625f5d10093a585a966831698a0560e6c9b97ce659eb4b22"
,
"blk.1.ffn_up.weight"
:
"db92dc5684cb6e90940e13f4d1da555ed20ba4f8cab1e990ddfd7553e2e91315"
,
"blk.2.attn_k.weight"
:
"ef5ce360c4eed6d00d03ca4761e0f8e4b0af4509978468314be14f3d46621044"
,
"blk.2.attn_norm.weight"
:
"6dadbc05dbd0d3fabb4216affa60a3de1378a82d2859dc90b338cbe70f50d455"
,
"blk.2.attn_output.weight"
:
"6bbf87a966f691bbfd7c8d25629aa4e6710107bd431a667434861febb391edc5"
,
"blk.2.attn_q.weight"
:
"4e575c09ae2de417ce9057ce8b073680e860a24aae13a472b68f101b760752e5"
,
"blk.2.attn_v.weight"
:
"cd33f7f01141e9439afdaf2ea1aaced9feaa335e32a58daa136ebd555d4d96f4"
,
"blk.2.ffn_down.weight"
:
"b970ff1b0b6494165defe2fbfa1d31425766ed71e64de9ec4e66ac3955c8bc5f"
,
"blk.2.ffn_gate.weight"
:
"dbb3e1360402e0e369b101995bb686b73f95d4a7673f061be85d64d15dfb0061"
,
"blk.2.ffn_norm.weight"
:
"bfb7980105d8ac9647710454f57a5cdac50598a0f6f4884e16f1d94b00844687"
,
"blk.2.ffn_up.weight"
:
"50ef89339b275a438b664686f6227dd9b6e43853ed6856ec9e33ef4bbd90bda1"
,
"blk.3.attn_k.weight"
:
"be942ea98151434eebcd2c1da4b00e0146152fe524a530689b1fd491cb833d21"
,
"blk.3.attn_norm.weight"
:
"0df2f218daf609c289fb7c60c5f375fa99c0d4e04381ad5a494a19144edd8e20"
,
"blk.3.attn_output.weight"
:
"c2184aaf86aa2cb8f47be49f60b165834e97205f39c6ee1dfd19fd4411a156ce"
,
"blk.3.attn_q.weight"
:
"4f86e2a0a4221c1c84ff9c409ac89893cb95d7208cf65bf1e98e24e01125f991"
,
"blk.3.attn_v.weight"
:
"abfdb8a60c349dadde641d1afc9542025e24fbf41a3238bfa9675e0b1f1e4b68"
,
"blk.3.ffn_down.weight"
:
"58821a8d87008d47d122427911c6fad5272aca70c448bbae223256a74bacd07e"
,
"blk.3.ffn_gate.weight"
:
"776e051f1a0ddd5c4934e69186683a75ca9a3c8c0f61911bba321fed1dd287d2"
,
"blk.3.ffn_norm.weight"
:
"7f380f29335e28be90bfcfae6f6d69fdf5751211b36d2dd62aa5541ed113e4f2"
,
"blk.3.ffn_up.weight"
:
"fc5ae8d488894cbd4951059675468d227da27871d26e925c9941863841c097ee"
,
"blk.4.attn_k.weight"
:
"14833b078cc4c5137bdd5fdc0538047974ca147a99b0282e1b144440c78bc1db"
,
"blk.4.attn_norm.weight"
:
"0a69957d4a15599fb80ad4753558020804925221457d9a5052926754d3768065"
,
"blk.4.attn_output.weight"
:
"887a49b6130fb6297cf10767207c3dd97191b2cf63723449af9c27bca8dbeda0"
,
"blk.4.attn_q.weight"
:
"51fd577b76764824dd6f0d4891c137ebe4736f591b5ca2793c5fff2be49abbde"
,
"blk.4.attn_v.weight"
:
"1a623c43cf9c509d1b7ea0d1a5c04d0af4809665f9f9e93b7d6dba8c5df178fa"
,
"blk.4.ffn_down.weight"
:
"5d61e8856d8941d2b1fd138116d015f63840d0fa1e31e20e20a5ceca1536ceec"
,
"blk.4.ffn_gate.weight"
:
"06640f7273764f8ca5df7e386547417916b6cd7d565a8343153113239a94b0a1"
,
"blk.4.ffn_norm.weight"
:
"91a6c6c41b894228e361435ecbc5058dca34d4911a23da5b56de219299c964d3"
,
"blk.4.ffn_up.weight"
:
"d016dac1055e36d6a10b6317e57f98a904709ea892ef3194342f4d2f6326561e"
,
"blk.5.attn_k.weight"
:
"987146afe124131500808cc0da33c06d207433656d41df6e6d8c99118a83bac5"
,
"blk.5.attn_norm.weight"
:
"6b354938966f2608a2fb8d0f5b363ed0d8b0967c2ec8d0abd5c625b413042ded"
,
"blk.5.attn_output.weight"
:
"cdcbfe02c6ff79d5326882b017a02099f5af71beedf6b1b3eb4de01e3a844536"
,
"blk.5.attn_q.weight"
:
"b910d0cff781d3efb42eab0a302f46f286b2de717079175680d5b42bf8c309c8"
,
"blk.5.attn_v.weight"
:
"66d3a279f747412f9f4b0e8abad44540c122ab2e811a7ee74c1f33bc36caade9"
,
"blk.5.ffn_down.weight"
:
"c9b0efd2212981f16d956d8571f054b68780ad01f4917033647e359b557a4653"
,
"blk.5.ffn_gate.weight"
:
"fe96b94109ca141c01f6a04788e20783019ca6ec334aa1f3134810bdb499e557"
,
"blk.5.ffn_norm.weight"
:
"aa7b016e832e7055a36c6e20de58ea1936f995f390401fff1c5fc65906064e49"
,
"blk.5.ffn_up.weight"
:
"555ce27c4873d3375394f38ad3b45e3d8848f9d5642dc1602383d0f0a33c2a14"
,
"blk.6.attn_k.weight"
:
"88280d461db324c4f36475ce396793063e61a27283ec64511b0480890fb5b3b4"
,
"blk.6.attn_norm.weight"
:
"af8f460c411f660d33196286d208f1845fd5a2b45f7b56549a4df31e7515447a"
,
"blk.6.attn_output.weight"
:
"dd9996fb0a256e8375ad3917705258a33fce006bcea0f536caae420a77974d8b"
,
"blk.6.attn_q.weight"
:
"7a4841541191e037cfb9b07930c4d8cab451809658b182f0ada6ccde9615c003"
,
"blk.6.attn_v.weight"
:
"ae81e6a592b64d701a9d40233e986039a56cba8d8d24f61aea93c6393cf3078a"
,
"blk.6.ffn_down.weight"
:
"622dd1ce1706355cbc659a8ab2c4509678ffe0f3ad34258e5e25ed2a5d951bcd"
,
"blk.6.ffn_gate.weight"
:
"8389a735c0bd5591010f8ced9805a2a12c749f6df0d3c18ad4d05c2a302e7168"
,
"blk.6.ffn_norm.weight"
:
"621f5346400382474d61358397bd58fb1459b07c53e376e4bca15e08b3f9b3fb"
,
"blk.6.ffn_up.weight"
:
"8d834e4c42f13c251dfee36cf89e12f1bd400680d00d5c2e6cac0459e9ce2f7f"
,
"blk.7.attn_k.weight"
:
"8bd0412de65a3e64901ef8fe6a28c95e116bf39dc9aa22f0126b9d36688e5ea7"
,
"blk.7.attn_norm.weight"
:
"056d8e56be4e87d6dc6f900762f0dc6fde07bfdc50dd85bfc510415e2bba3f3d"
,
"blk.7.attn_output.weight"
:
"27972eda51da53d416ff95aed78149a2c5a287b47d2cd46f2f544ca692ecb3bb"
,
"blk.7.attn_q.weight"
:
"41eca977b9371f7932800c11a9c45b931310196919e2a0651b847703b180fc7f"
,
"blk.7.attn_v.weight"
:
"13c74fd7e07f08883a09fb070a1fe5bbdd2341b4cb8d1cac07c4b637049b5774"
,
"blk.7.ffn_down.weight"
:
"9e75db42468800849a9a7da603d0072c5e86c8ed2b4d8b20a312a51fb86a7a10"
,
"blk.7.ffn_gate.weight"
:
"db6bdc3117f910088aaf7db51f2da63ea5bd933de36af5599c215bfb26f7db2b"
,
"blk.7.ffn_norm.weight"
:
"48bb82b49bfc8679a1e77f282ee182d952db7a3c11be7ef9a102ee2ddd8011e2"
,
"blk.7.ffn_up.weight"
:
"feebea87175817a0f3585ec0af09dc873d94c203581ae97a712eb356d3b49efe"
,
"blk.8.attn_k.weight"
:
"d5640ad71b6af68d88e17bf8e7fc26c907d2262605457a84247dd9afc2884d69"
,
"blk.8.attn_norm.weight"
:
"75b850c481a69083ae09d0207ba7317b37c735a39fcf5fef5400e6c84fb1257f"
,
"blk.8.attn_output.weight"
:
"cbd669dbdea2bdd90f9f0cc97566b3dffff3c56cecb4f47290ceef30da83b2d6"
,
"blk.8.attn_q.weight"
:
"9edcb63087a431bac361822497e6ecdaa06d9ea4a1a754e36da7ba9f8db81c7c"
,
"blk.8.attn_v.weight"
:
"3fb72c2c4f95a83626aa3e30062f9450b09ab37c7871e229f18bbc5cf744633c"
,
"blk.8.ffn_down.weight"
:
"bd69d2c9172974fff154441b237b4787fb53b2d185325442d5048130ef5bc4ef"
,
"blk.8.ffn_gate.weight"
:
"d04689c80553edd011d1cbaa5d570fffa7fa91e88b66cf1352d89ab60b72f908"
,
"blk.8.ffn_norm.weight"
:
"e49984183b735b7f2c4e4730c289eed9394056d2e283a00fd83ea0915df31a73"
,
"blk.8.ffn_up.weight"
:
"8fe62a1ce8e847e567add6c6f6bf2922bc467495b5eb4c116b3cb85b85b3b211"
,
"blk.9.attn_k.weight"
:
"d90904959e5004cf0d6e729c6bff18cc33c094798b802473c1ec55ab8d276183"
,
"blk.9.attn_norm.weight"
:
"79277f290cc07411115d8fa138045edf4a17b3416ab2145409cbe8ab829fd4ee"
,
"blk.9.attn_output.weight"
:
"5a21bf2e1f09a81405025f96d4153ffb630158e17269cff8ffff935c38ceb1a7"
,
"blk.9.attn_q.weight"
:
"51b1d0febc3b350945be4504f55afa4347517bde0f710e1a4b88e6b17e71e7c7"
,
"blk.9.attn_v.weight"
:
"aab7e1db0a8b50a03036356791ffce736ab010d15674c96eaef8049d80076054"
,
"blk.9.ffn_down.weight"
:
"cbf43ec84becb40c9359a181ab0e641fd7faae7d34b549501f7cfb7afdc3d764"
,
"blk.9.ffn_gate.weight"
:
"dce0e8661c778327bed7f03b6790d26710764188aed9dc746e6e05863891fa57"
,
"blk.9.ffn_norm.weight"
:
"6d41642104f995c77bf31122b13237caebda3e7fcccb1367ce91db36b015e923"
,
"blk.9.ffn_up.weight"
:
"82fe4c67bf24e7b2d6f6e05f7b1234c2bf90c3932951091a9066211b8e15ecbb"
,
"blk.10.attn_k.weight"
:
"f6a9ed8fd8d3229b5d03175c413ffc56a07f2ce7236271986361dd3d8993f9aa"
,
"blk.10.attn_norm.weight"
:
"cebbef89f0326ca8e02df3867a571e4d61c20c2a12f295f98ae590d62bc86010"
,
"blk.10.attn_output.weight"
:
"34f5efb86accb4f06347d83a32558ea8eab3039d128969161a741ebacbb656ff"
,
"blk.10.attn_q.weight"
:
"1e0efe27df2d5d50f7157253ba2cfd436d6781c3dc78ca176d0c16a210b5b763"
,
"blk.10.attn_v.weight"
:
"8f085bf50a2b0f83cd6cdda3c8ef5a9e204a36348ed95871aac725d1f68640cf"
,
"blk.10.ffn_down.weight"
:
"bf3b3cb4cace435809ac7b4cc933f20853af12f1f272d3dcefe7f19c0f203b8b"
,
"blk.10.ffn_gate.weight"
:
"d3df7a1413b1c5adf1a1dcda9e5225a15c89874bae53bb6137ad1ea42fca2d34"
,
"blk.10.ffn_norm.weight"
:
"a1da603b0480471b5ed8e862148cecd5fed918f8304d6933ab0bdb25b8d2fb8f"
,
"blk.10.ffn_up.weight"
:
"bffbba605922e972dc47dda88a0b4659aa52236c76e5fe861a949e6d9a367492"
,
"blk.11.attn_k.weight"
:
"9f31c63d66cd32c29b1eb8bb829d0c8525ce2ae936e0eefdaab6335a2d12a3df"
,
"blk.11.attn_norm.weight"
:
"0bde1a266d8b2e8f202bb7e2e88b19147ca83021901f6d3cae77a4df5548c754"
,
"blk.11.attn_output.weight"
:
"e10725c7cf746ed4a7e472cf7aea6cb564e5db6a1d5197adc980d650a387ccea"
,
"blk.11.attn_q.weight"
:
"05ee758a7d065802630f8c65dca424364c1c8825e389aa33f9405c45e8a50cce"
,
"blk.11.attn_v.weight"
:
"0c3ae7090f11775d24c51120db6e305db6aff706493e7ee123dcab74485ba789"
,
"blk.11.ffn_down.weight"
:
"7ba40b8e12c09c5fb2006b77a771cb01ce894e88a3b3e1877f927a5b89c91709"
,
"blk.11.ffn_gate.weight"
:
"db76388a023b98097972d354ba1c6a5e26efdeb1c596b9c28bf2cd8f6596975e"
,
"blk.11.ffn_norm.weight"
:
"a38c3ae1b89a68ddc7b72c99c5b28be7fe3787c4fad9904d0c43d64eaf00c474"
,
"blk.11.ffn_up.weight"
:
"13c8142f9cf1eddc658babf978daf3515c4ccc45f849f3e7e3930aa18a8480a0"
,
"blk.12.attn_k.weight"
:
"f03241c36ac87cb57429a2ef22186b8d7d0b590a8b173beb01fa13d93772f3b1"
,
"blk.12.attn_norm.weight"
:
"4568f654e6d65104d586e7c16ba960c83428698ce103022b7e0be15e2884e13b"
,
"blk.12.attn_output.weight"
:
"04867603f82f91e41306e09b33ecda0104b3ee4834061f2c0bbdc8da33c72509"
,
"blk.12.attn_q.weight"
:
"70fe04b9a8e08b6100cc8d6b58bf4cbbad15ca1de82d63baca5d352ba6c4cbae"
,
"blk.12.attn_v.weight"
:
"15cb28db61a86c98687991d7e611bc92a1fcc6007f3432149cfb5fe518a4f65e"
,
"blk.12.ffn_down.weight"
:
"6d10c790a4e3dc44c2dc36d96251ae97cdf30a4fa04d4c43e31bfbd038e6a7b7"
,
"blk.12.ffn_gate.weight"
:
"3462a2d8f6b4743b25e24da51b90018ac2858d05ac7e582bcb69063cfdac1104"
,
"blk.12.ffn_norm.weight"
:
"1f96392c1faa34e34ae5dea55a6a86c5aa4c79758952075d53d28de89dd88456"
,
"blk.12.ffn_up.weight"
:
"d22eacc612a7411953d948483c5fb201e11722955ee0754da866e7bec578ac6d"
,
"blk.13.attn_k.weight"
:
"5864977e6b733ea942647d6feed5c76156c48c200649c22e4e11b9e5860e57f3"
,
"blk.13.attn_norm.weight"
:
"87e053535144723db4145aa5402acc54331b7696752d852bb9fc542ff33f0fb5"
,
"blk.13.attn_output.weight"
:
"078145f5ad83f8b14f97a869346f7fd1583b24d1e3edadaa95d3da4242973f8f"
,
"blk.13.attn_q.weight"
:
"3b8caf35504cbc4d1a7dd6e011a95760703b7f71e2218b030b1254f811362dd7"
,
"blk.13.attn_v.weight"
:
"4fdf8365a603e043e5b40c4a21c84ac167f9be62794178f9d8a608dfe5653bf9"
,
"blk.13.ffn_down.weight"
:
"a07d3abbfcacf48ba028df2cab895be32cc15022d23389a745286e79c1b1d1fd"
,
"blk.13.ffn_gate.weight"
:
"1d2ab39666aa2909acc96787432a3ed13b19d25170f74665fadff9b17bbaffb1"
,
"blk.13.ffn_norm.weight"
:
"4f2e809fda5f3eadf52578ee50e0ba36e53be91e55dce418c12dfe595f5f18e7"
,
"blk.13.ffn_up.weight"
:
"8783d2720c2c37ca176a5801e0b3ef1f9cc9cf3ef1cd37af423aaf6b2a27e2bd"
,
"blk.14.attn_k.weight"
:
"ce9428e2b55d43ae0c6690dbd56182f99adc427694ba8236b405cc8ea5035e86"
,
"blk.14.attn_norm.weight"
:
"6abb35f9db8251d6ae954bda147c6ada2371b0574d11702e828f3c6ac99b7cc0"
,
"blk.14.attn_output.weight"
:
"fe3880916d0ceb5bff672c88bbefb7060a545be609bf049beb2024b38221836d"
,
"blk.14.attn_q.weight"
:
"7c8ad81be6f4a350931fd108b5f7c9e366e8c26ef62d1d85ffef5dca8fd893f8"
,
"blk.14.attn_v.weight"
:
"e4bdedffacbebe38567a0734dfd67db90e911d9a9669fcde9a7c4ad8a0066c52"
,
"blk.14.ffn_down.weight"
:
"ef6694dff1e05820aac0cd2b22f39ac7788b4967afc9250775575554c66aab2c"
,
"blk.14.ffn_gate.weight"
:
"db63c4179e2db704bc505e2b4696e055b593e295a1b7c4c586fc793bdd5aab19"
,
"blk.14.ffn_norm.weight"
:
"2796a62d832a9710148f95d533320492a33e712b2e5218659c548705bd11684d"
,
"blk.14.ffn_up.weight"
:
"3f78c78d8c2d54df45f799d4ff902316628af296834afe4ceed63d4a324ff03e"
,
"blk.15.attn_k.weight"
:
"6e810ee3859e07695645ee0c9a5efc7962668984a5f0a9325f47e462743b447c"
,
"blk.15.attn_norm.weight"
:
"0956b576ae96db0b28cb09f761f801cfd9281432284664f0fe181c8d9c55d1ec"
,
"blk.15.attn_output.weight"
:
"03a17f7e94208177aace5cc41b7f54670ba57873b7274ff6e23caf58cce110ca"
,
"blk.15.attn_q.weight"
:
"b8edafe7d2216a6f8b4ae4905a906475490e6ea418f6e1d3cec563dbdc6fab91"
,
"blk.15.attn_v.weight"
:
"f8ae8cae0f4cfa34a459824eba57350c3c248104ba5607e7d9dc7d7c39aaf4a6"
,
"blk.15.ffn_down.weight"
:
"8d02eb439da852246d2ca67e9b7b6de0b090b80744355e64728a23e41926505b"
,
"blk.15.ffn_gate.weight"
:
"ed5bf361c67db8731f186b775826f21c33bdb521111fd2d922539719a770239f"
,
"blk.15.ffn_norm.weight"
:
"5942ca3c73209ac9a0c8bfd9b4aab7f7be7aee9aa12d9c35833493b44af76767"
,
"blk.15.ffn_up.weight"
:
"f4bebf4ad99ec5f911327dec347be6c595814885309c7bc5647ce28c7f4d1cf5"
,
"blk.16.attn_k.weight"
:
"756a534c19364448e0958b8948fe33891c6ccda0fbb4dfa2024e1f532a87804b"
,
"blk.16.attn_norm.weight"
:
"386b7b9e4e6509f6af9c022d942b6c6c6cc136aeed8751ecb037c74d7c4bfb93"
,
"blk.16.attn_output.weight"
:
"3ba1a766a25830b84d7c22178203635f9c5624caad290bc5e5d73da5d5e7a2ec"
,
"blk.16.attn_q.weight"
:
"d39b0c91e1fda7685d50a0f7cc8d18c44b5bdc90a142c7fda0bc329cca1afa74"
,
"blk.16.attn_v.weight"
:
"98b33fcb0ee3483cff1b06ecb44d7b7ffb4d34c268248e4d73dfdf82b2065b2f"
,
"blk.16.ffn_down.weight"
:
"14006f5e4acb2f9416271ae562e299359cd2585739c7fc77ccbca54495563948"
,
"blk.16.ffn_gate.weight"
:
"12f8abae2d301d8f88bedb6af98b1daecc7b0b8d05148594f931f30958d77aca"
,
"blk.16.ffn_norm.weight"
:
"129a15a046ee96d06de288bd43c80f77a6b0fb3a159c7367154c6e4aaf362672"
,
"blk.16.ffn_up.weight"
:
"b4a5911a45f3871ef1d4efb7dc7108645a564b70f818eccf45beebef2e844ee9"
,
"blk.17.attn_k.weight"
:
"5e1bfcff0146ebdde3817b656952892eb671e14e75afc92fa53f84f8eecbec4c"
,
"blk.17.attn_norm.weight"
:
"60bc988fab7c4b29ee9de599df41a8de00caa94fcd74677da011fac82f60f465"
,
"blk.17.attn_output.weight"
:
"ba49b40d6a0b5685f749c24b0edbed3adc44dbe13b5d5e5fa1e56169fc746555"
,
"blk.17.attn_q.weight"
:
"82bb415d24efcd14d03ace03f907bb70db6a204c76a0bdd1892e0fba165db87d"
,
"blk.17.attn_v.weight"
:
"73dbe54beb91a899884e275ea81ffc5187a20cb7d5b68d5c299b783096999d94"
,
"blk.17.ffn_down.weight"
:
"7c086166241e0664f8963fd1ca4ed74c737abfb2525ec20f8435821ff50158f3"
,
"blk.17.ffn_gate.weight"
:
"51a32f78244d42a539f619c5ce661db9e6cf41636280a826d439b5444edcd28c"
,
"blk.17.ffn_norm.weight"
:
"c4bb247fccd1ecc84875028af63dd20aaf5cbd17eb94a9bc36679c09285dccab"
,
"blk.17.ffn_up.weight"
:
"b5886182790bc6fbadd63de9bc4ffee416f3b69a66280d197ab8c18edf769abf"
,
"output_norm.weight"
:
"481f3097d0a20412e35b3a739b1b958487bcd41ff67744baa3c9acbddd2ee4d4"
}
llm/ggla.go
View file @
6b252918
...
@@ -36,6 +36,8 @@ type ggla struct {
...
@@ -36,6 +36,8 @@ type ggla struct {
kv
KV
kv
KV
tensors
[]
*
Tensor
tensors
[]
*
Tensor
tensorOffset
uint64
}
}
func
newGGLA
(
container
*
containerGGLA
)
*
ggla
{
func
newGGLA
(
container
*
containerGGLA
)
*
ggla
{
...
@@ -50,7 +52,10 @@ func (llm *ggla) KV() KV {
...
@@ -50,7 +52,10 @@ func (llm *ggla) KV() KV {
}
}
func
(
llm
*
ggla
)
Tensors
()
Tensors
{
func
(
llm
*
ggla
)
Tensors
()
Tensors
{
return
llm
.
tensors
return
Tensors
{
Items
:
llm
.
tensors
,
Offset
:
llm
.
tensorOffset
,
}
}
}
func
(
llm
*
ggla
)
decode
(
rs
io
.
ReadSeeker
)
(
retErr
error
)
{
func
(
llm
*
ggla
)
decode
(
rs
io
.
ReadSeeker
)
(
retErr
error
)
{
...
@@ -66,6 +71,13 @@ func (llm *ggla) decode(rs io.ReadSeeker) (retErr error) {
...
@@ -66,6 +71,13 @@ func (llm *ggla) decode(rs io.ReadSeeker) (retErr error) {
}
}
llm
.
kv
[
"alpha"
]
=
alpha
llm
.
kv
[
"alpha"
]
=
alpha
offset
,
err
:=
rs
.
Seek
(
0
,
io
.
SeekCurrent
)
if
err
!=
nil
{
return
err
}
llm
.
tensorOffset
=
uint64
(
offset
)
for
{
for
{
var
dims
uint32
var
dims
uint32
if
err
:=
binary
.
Read
(
rs
,
binary
.
LittleEndian
,
&
dims
);
err
!=
nil
{
if
err
:=
binary
.
Read
(
rs
,
binary
.
LittleEndian
,
&
dims
);
err
!=
nil
{
...
...
llm/ggml.go
View file @
6b252918
...
@@ -112,11 +112,14 @@ func (kv KV) ChatTemplate() string {
...
@@ -112,11 +112,14 @@ func (kv KV) ChatTemplate() string {
return
s
return
s
}
}
type
Tensors
[]
*
Tensor
type
Tensors
struct
{
Items
[]
*
Tensor
Offset
uint64
}
func
(
ts
Tensors
)
Layers
()
map
[
string
]
Layer
{
func
(
ts
Tensors
)
Layers
()
map
[
string
]
Layer
{
layers
:=
make
(
map
[
string
]
Layer
)
layers
:=
make
(
map
[
string
]
Layer
)
for
_
,
t
:=
range
ts
{
for
_
,
t
:=
range
ts
.
Items
{
parts
:=
strings
.
Split
(
t
.
Name
,
"."
)
parts
:=
strings
.
Split
(
t
.
Name
,
"."
)
if
parts
[
0
]
==
"blk"
{
if
parts
[
0
]
==
"blk"
{
// join first and second part, e.g. blk.%d
// join first and second part, e.g. blk.%d
...
...
llm/gguf.go
View file @
6b252918
...
@@ -89,6 +89,7 @@ type gguf struct {
...
@@ -89,6 +89,7 @@ type gguf struct {
tensors
[]
*
Tensor
tensors
[]
*
Tensor
parameters
uint64
parameters
uint64
tensorOffset
uint64
scratch
[
16
<<
10
]
byte
scratch
[
16
<<
10
]
byte
}
}
...
@@ -109,7 +110,10 @@ func (llm *gguf) KV() KV {
...
@@ -109,7 +110,10 @@ func (llm *gguf) KV() KV {
}
}
func
(
llm
*
gguf
)
Tensors
()
Tensors
{
func
(
llm
*
gguf
)
Tensors
()
Tensors
{
return
llm
.
tensors
return
Tensors
{
Items
:
llm
.
tensors
,
Offset
:
llm
.
tensorOffset
,
}
}
}
func
(
llm
*
gguf
)
numTensor
()
uint64
{
func
(
llm
*
gguf
)
numTensor
()
uint64
{
...
@@ -236,6 +240,14 @@ func (llm *gguf) Decode(rs io.ReadSeeker) error {
...
@@ -236,6 +240,14 @@ func (llm *gguf) Decode(rs io.ReadSeeker) error {
alignment
=
32
alignment
=
32
}
}
offset
,
err
:=
rs
.
Seek
(
0
,
io
.
SeekCurrent
)
if
err
!=
nil
{
return
err
}
padding
:=
llm
.
padding
(
offset
,
int64
(
alignment
))
llm
.
tensorOffset
=
uint64
(
offset
+
padding
)
for
_
,
tensor
:=
range
llm
.
tensors
{
for
_
,
tensor
:=
range
llm
.
tensors
{
offset
,
err
:=
rs
.
Seek
(
0
,
io
.
SeekCurrent
)
offset
,
err
:=
rs
.
Seek
(
0
,
io
.
SeekCurrent
)
if
err
!=
nil
{
if
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