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
orangecat
ollama
Commits
5e9db9fb
"vscode:/vscode.git/clone" did not exist on "1c4ef7803cd7cb72f827e5f66f2824f266d97850"
Commit
5e9db9fb
authored
May 31, 2024
by
Michael Yang
Browse files
refactor convert
parent
6b252918
Changes
24
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
10 additions
and
37 deletions
+10
-37
server/model.go
server/model.go
+1
-25
server/routes_create_test.go
server/routes_create_test.go
+2
-3
server/routes_generate_test.go
server/routes_generate_test.go
+4
-4
server/sched_test.go
server/sched_test.go
+3
-5
No files found.
server/model.go
View file @
5e9db9fb
...
@@ -143,30 +143,6 @@ func parseFromZipFile(_ context.Context, file *os.File, digest string, fn func(a
...
@@ -143,30 +143,6 @@ func parseFromZipFile(_ context.Context, file *os.File, digest string, fn func(a
return
nil
,
err
return
nil
,
err
}
}
mf
,
err
:=
convert
.
GetModelFormat
(
tempDir
)
if
err
!=
nil
{
return
nil
,
err
}
params
,
err
:=
mf
.
GetParams
(
tempDir
)
if
err
!=
nil
{
return
nil
,
err
}
mArch
,
err
:=
mf
.
GetModelArch
(
""
,
tempDir
,
params
)
if
err
!=
nil
{
return
nil
,
err
}
fn
(
api
.
ProgressResponse
{
Status
:
"processing tensors"
})
if
err
:=
mArch
.
GetTensors
();
err
!=
nil
{
return
nil
,
err
}
if
err
:=
mArch
.
LoadVocab
();
err
!=
nil
{
return
nil
,
err
}
fn
(
api
.
ProgressResponse
{
Status
:
"converting model"
})
fn
(
api
.
ProgressResponse
{
Status
:
"converting model"
})
// TODO(mxyng): this should write directly into a layer
// TODO(mxyng): this should write directly into a layer
...
@@ -178,7 +154,7 @@ func parseFromZipFile(_ context.Context, file *os.File, digest string, fn func(a
...
@@ -178,7 +154,7 @@ func parseFromZipFile(_ context.Context, file *os.File, digest string, fn func(a
defer
temp
.
Close
()
defer
temp
.
Close
()
defer
os
.
Remove
(
temp
.
Name
())
defer
os
.
Remove
(
temp
.
Name
())
if
err
=
mArch
.
WriteGGUF
(
temp
);
err
!=
nil
{
if
err
:
=
convert
.
Convert
(
tempDir
,
temp
);
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
...
...
server/routes_create_test.go
View file @
5e9db9fb
...
@@ -2,7 +2,6 @@ package server
...
@@ -2,7 +2,6 @@ package server
import
(
import
(
"bytes"
"bytes"
"encoding/binary"
"encoding/json"
"encoding/json"
"fmt"
"fmt"
"io"
"io"
...
@@ -20,7 +19,7 @@ import (
...
@@ -20,7 +19,7 @@ import (
var
stream
bool
=
false
var
stream
bool
=
false
func
createBinFile
(
t
*
testing
.
T
,
kv
map
[
string
]
any
,
ti
[]
llm
.
Tensor
)
string
{
func
createBinFile
(
t
*
testing
.
T
,
kv
map
[
string
]
any
,
ti
[]
*
llm
.
Tensor
)
string
{
t
.
Helper
()
t
.
Helper
()
f
,
err
:=
os
.
CreateTemp
(
t
.
TempDir
(),
""
)
f
,
err
:=
os
.
CreateTemp
(
t
.
TempDir
(),
""
)
...
@@ -29,7 +28,7 @@ func createBinFile(t *testing.T, kv map[string]any, ti []llm.Tensor) string {
...
@@ -29,7 +28,7 @@ func createBinFile(t *testing.T, kv map[string]any, ti []llm.Tensor) string {
}
}
defer
f
.
Close
()
defer
f
.
Close
()
if
err
:=
llm
.
NewGGUFV3
(
binary
.
LittleEndian
)
.
Encode
(
f
,
kv
,
ti
);
err
!=
nil
{
if
err
:=
llm
.
WriteGGUF
(
f
,
kv
,
ti
);
err
!=
nil
{
t
.
Fatal
(
err
)
t
.
Fatal
(
err
)
}
}
...
...
server/routes_generate_test.go
View file @
5e9db9fb
...
@@ -101,7 +101,7 @@ func TestGenerateChat(t *testing.T) {
...
@@ -101,7 +101,7 @@ func TestGenerateChat(t *testing.T) {
"tokenizer.ggml.tokens"
:
[]
string
{
""
},
"tokenizer.ggml.tokens"
:
[]
string
{
""
},
"tokenizer.ggml.scores"
:
[]
float32
{
0
},
"tokenizer.ggml.scores"
:
[]
float32
{
0
},
"tokenizer.ggml.token_type"
:
[]
int32
{
0
},
"tokenizer.ggml.token_type"
:
[]
int32
{
0
},
},
[]
llm
.
Tensor
{
},
[]
*
llm
.
Tensor
{
{
Name
:
"token_embd.weight"
,
Shape
:
[]
uint64
{
1
},
WriterTo
:
bytes
.
NewReader
(
make
([]
byte
,
4
))},
{
Name
:
"token_embd.weight"
,
Shape
:
[]
uint64
{
1
},
WriterTo
:
bytes
.
NewReader
(
make
([]
byte
,
4
))},
{
Name
:
"blk.0.attn_norm.weight"
,
Shape
:
[]
uint64
{
1
},
WriterTo
:
bytes
.
NewReader
(
make
([]
byte
,
4
))},
{
Name
:
"blk.0.attn_norm.weight"
,
Shape
:
[]
uint64
{
1
},
WriterTo
:
bytes
.
NewReader
(
make
([]
byte
,
4
))},
{
Name
:
"blk.0.ffn_down.weight"
,
Shape
:
[]
uint64
{
1
},
WriterTo
:
bytes
.
NewReader
(
make
([]
byte
,
4
))},
{
Name
:
"blk.0.ffn_down.weight"
,
Shape
:
[]
uint64
{
1
},
WriterTo
:
bytes
.
NewReader
(
make
([]
byte
,
4
))},
...
@@ -149,7 +149,7 @@ func TestGenerateChat(t *testing.T) {
...
@@ -149,7 +149,7 @@ func TestGenerateChat(t *testing.T) {
Modelfile
:
fmt
.
Sprintf
(
"FROM %s"
,
createBinFile
(
t
,
llm
.
KV
{
Modelfile
:
fmt
.
Sprintf
(
"FROM %s"
,
createBinFile
(
t
,
llm
.
KV
{
"general.architecture"
:
"bert"
,
"general.architecture"
:
"bert"
,
"bert.pooling_type"
:
uint32
(
0
),
"bert.pooling_type"
:
uint32
(
0
),
},
[]
llm
.
Tensor
{})),
},
[]
*
llm
.
Tensor
{})),
Stream
:
&
stream
,
Stream
:
&
stream
,
})
})
...
@@ -399,7 +399,7 @@ func TestGenerate(t *testing.T) {
...
@@ -399,7 +399,7 @@ func TestGenerate(t *testing.T) {
"tokenizer.ggml.tokens"
:
[]
string
{
""
},
"tokenizer.ggml.tokens"
:
[]
string
{
""
},
"tokenizer.ggml.scores"
:
[]
float32
{
0
},
"tokenizer.ggml.scores"
:
[]
float32
{
0
},
"tokenizer.ggml.token_type"
:
[]
int32
{
0
},
"tokenizer.ggml.token_type"
:
[]
int32
{
0
},
},
[]
llm
.
Tensor
{
},
[]
*
llm
.
Tensor
{
{
Name
:
"token_embd.weight"
,
Shape
:
[]
uint64
{
1
},
WriterTo
:
bytes
.
NewReader
(
make
([]
byte
,
4
))},
{
Name
:
"token_embd.weight"
,
Shape
:
[]
uint64
{
1
},
WriterTo
:
bytes
.
NewReader
(
make
([]
byte
,
4
))},
{
Name
:
"blk.0.attn_norm.weight"
,
Shape
:
[]
uint64
{
1
},
WriterTo
:
bytes
.
NewReader
(
make
([]
byte
,
4
))},
{
Name
:
"blk.0.attn_norm.weight"
,
Shape
:
[]
uint64
{
1
},
WriterTo
:
bytes
.
NewReader
(
make
([]
byte
,
4
))},
{
Name
:
"blk.0.ffn_down.weight"
,
Shape
:
[]
uint64
{
1
},
WriterTo
:
bytes
.
NewReader
(
make
([]
byte
,
4
))},
{
Name
:
"blk.0.ffn_down.weight"
,
Shape
:
[]
uint64
{
1
},
WriterTo
:
bytes
.
NewReader
(
make
([]
byte
,
4
))},
...
@@ -447,7 +447,7 @@ func TestGenerate(t *testing.T) {
...
@@ -447,7 +447,7 @@ func TestGenerate(t *testing.T) {
Modelfile
:
fmt
.
Sprintf
(
"FROM %s"
,
createBinFile
(
t
,
llm
.
KV
{
Modelfile
:
fmt
.
Sprintf
(
"FROM %s"
,
createBinFile
(
t
,
llm
.
KV
{
"general.architecture"
:
"bert"
,
"general.architecture"
:
"bert"
,
"bert.pooling_type"
:
uint32
(
0
),
"bert.pooling_type"
:
uint32
(
0
),
},
[]
llm
.
Tensor
{})),
},
[]
*
llm
.
Tensor
{})),
Stream
:
&
stream
,
Stream
:
&
stream
,
})
})
...
...
server/sched_test.go
View file @
5e9db9fb
...
@@ -3,7 +3,6 @@ package server
...
@@ -3,7 +3,6 @@ package server
import
(
import
(
"bytes"
"bytes"
"context"
"context"
"encoding/binary"
"fmt"
"fmt"
"log/slog"
"log/slog"
"os"
"os"
...
@@ -114,8 +113,7 @@ func newScenarioRequest(t *testing.T, ctx context.Context, modelName string, est
...
@@ -114,8 +113,7 @@ func newScenarioRequest(t *testing.T, ctx context.Context, modelName string, est
require
.
NoError
(
t
,
err
)
require
.
NoError
(
t
,
err
)
defer
f
.
Close
()
defer
f
.
Close
()
gguf
:=
llm
.
NewGGUFV3
(
binary
.
LittleEndian
)
require
.
NoError
(
t
,
llm
.
WriteGGUF
(
f
,
llm
.
KV
{
err
=
gguf
.
Encode
(
f
,
llm
.
KV
{
"general.architecture"
:
"llama"
,
"general.architecture"
:
"llama"
,
"general.name"
:
"name"
,
"general.name"
:
"name"
,
"llama.context_length"
:
uint32
(
32
),
"llama.context_length"
:
uint32
(
32
),
...
@@ -126,10 +124,10 @@ func newScenarioRequest(t *testing.T, ctx context.Context, modelName string, est
...
@@ -126,10 +124,10 @@ func newScenarioRequest(t *testing.T, ctx context.Context, modelName string, est
"tokenizer.ggml.tokens"
:
[]
string
{
" "
},
"tokenizer.ggml.tokens"
:
[]
string
{
" "
},
"tokenizer.ggml.scores"
:
[]
float32
{
0
},
"tokenizer.ggml.scores"
:
[]
float32
{
0
},
"tokenizer.ggml.token_type"
:
[]
int32
{
0
},
"tokenizer.ggml.token_type"
:
[]
int32
{
0
},
},
[]
llm
.
Tensor
{
},
[]
*
llm
.
Tensor
{
{
Name
:
"blk.0.attn.weight"
,
Kind
:
uint32
(
0
),
Offset
:
uint64
(
0
),
Shape
:
[]
uint64
{
1
,
1
,
1
,
1
},
WriterTo
:
bytes
.
NewReader
(
make
([]
byte
,
32
))},
{
Name
:
"blk.0.attn.weight"
,
Kind
:
uint32
(
0
),
Offset
:
uint64
(
0
),
Shape
:
[]
uint64
{
1
,
1
,
1
,
1
},
WriterTo
:
bytes
.
NewReader
(
make
([]
byte
,
32
))},
{
Name
:
"output.weight"
,
Kind
:
uint32
(
0
),
Offset
:
uint64
(
0
),
Shape
:
[]
uint64
{
1
,
1
,
1
,
1
},
WriterTo
:
bytes
.
NewReader
(
make
([]
byte
,
32
))},
{
Name
:
"output.weight"
,
Kind
:
uint32
(
0
),
Offset
:
uint64
(
0
),
Shape
:
[]
uint64
{
1
,
1
,
1
,
1
},
WriterTo
:
bytes
.
NewReader
(
make
([]
byte
,
32
))},
})
})
)
require
.
NoError
(
t
,
err
)
require
.
NoError
(
t
,
err
)
fname
:=
f
.
Name
()
fname
:=
f
.
Name
()
...
...
Prev
1
2
Next
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