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
d78fb620
Unverified
Commit
d78fb620
authored
Oct 22, 2024
by
Patrick Devine
Committed by
GitHub
Oct 22, 2024
Browse files
default to "FROM ." if a Modelfile isn't present (#7250)
parent
5c44461c
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
146 additions
and
12 deletions
+146
-12
cmd/cmd.go
cmd/cmd.go
+47
-12
cmd/cmd_test.go
cmd/cmd_test.go
+99
-0
No files found.
cmd/cmd.go
View file @
d78fb620
...
@@ -46,28 +46,58 @@ import (
...
@@ -46,28 +46,58 @@ import (
"github.com/ollama/ollama/version"
"github.com/ollama/ollama/version"
)
)
func
CreateHandler
(
cmd
*
cobra
.
Command
,
args
[]
string
)
error
{
var
(
filename
,
_
:=
cmd
.
Flags
()
.
GetString
(
"file"
)
errModelNotFound
=
errors
.
New
(
"no Modelfile or safetensors files found"
)
filename
,
err
:=
filepath
.
Abs
(
filename
)
errModelfileNotFound
=
errors
.
New
(
"specified Modelfile wasn't found"
)
)
func
getModelfileName
(
cmd
*
cobra
.
Command
)
(
string
,
error
)
{
fn
,
_
:=
cmd
.
Flags
()
.
GetString
(
"file"
)
filename
:=
fn
if
filename
==
""
{
filename
=
"Modelfile"
}
absName
,
err
:=
filepath
.
Abs
(
filename
)
if
err
!=
nil
{
if
err
!=
nil
{
return
err
return
""
,
err
}
}
client
,
err
:
=
api
.
ClientFromEnvironment
(
)
_
,
err
=
os
.
Stat
(
absName
)
if
err
!=
nil
{
if
err
!=
nil
{
return
err
return
fn
,
err
}
}
return
absName
,
nil
}
func
CreateHandler
(
cmd
*
cobra
.
Command
,
args
[]
string
)
error
{
p
:=
progress
.
NewProgress
(
os
.
Stderr
)
p
:=
progress
.
NewProgress
(
os
.
Stderr
)
defer
p
.
Stop
()
defer
p
.
Stop
()
f
,
err
:=
os
.
Open
(
filename
)
var
reader
io
.
Reader
if
err
!=
nil
{
filename
,
err
:=
getModelfileName
(
cmd
)
if
os
.
IsNotExist
(
err
)
{
if
filename
==
""
{
reader
=
strings
.
NewReader
(
"FROM .
\n
"
)
}
else
{
return
errModelfileNotFound
}
}
else
if
err
!=
nil
{
return
err
return
err
}
else
{
f
,
err
:=
os
.
Open
(
filename
)
if
err
!=
nil
{
return
err
}
reader
=
f
defer
f
.
Close
()
}
}
defer
f
.
Close
()
modelfile
,
err
:=
parser
.
ParseFile
(
f
)
modelfile
,
err
:=
parser
.
ParseFile
(
reader
)
if
err
!=
nil
{
if
err
!=
nil
{
return
err
return
err
}
}
...
@@ -82,6 +112,11 @@ func CreateHandler(cmd *cobra.Command, args []string) error {
...
@@ -82,6 +112,11 @@ func CreateHandler(cmd *cobra.Command, args []string) error {
p
.
Add
(
status
,
spinner
)
p
.
Add
(
status
,
spinner
)
defer
p
.
Stop
()
defer
p
.
Stop
()
client
,
err
:=
api
.
ClientFromEnvironment
()
if
err
!=
nil
{
return
err
}
for
i
:=
range
modelfile
.
Commands
{
for
i
:=
range
modelfile
.
Commands
{
switch
modelfile
.
Commands
[
i
]
.
Name
{
switch
modelfile
.
Commands
[
i
]
.
Name
{
case
"model"
,
"adapter"
:
case
"model"
,
"adapter"
:
...
@@ -220,7 +255,7 @@ func tempZipFiles(path string) (string, error) {
...
@@ -220,7 +255,7 @@ func tempZipFiles(path string) (string, error) {
// covers consolidated.x.pth, consolidated.pth
// covers consolidated.x.pth, consolidated.pth
files
=
append
(
files
,
pt
...
)
files
=
append
(
files
,
pt
...
)
}
else
{
}
else
{
return
""
,
err
ors
.
New
(
"no safetensors or torch files f
ound
"
)
return
""
,
err
ModelNotF
ound
}
}
// add configuration files, json files are detected as text/plain
// add configuration files, json files are detected as text/plain
...
@@ -1315,7 +1350,7 @@ func NewCLI() *cobra.Command {
...
@@ -1315,7 +1350,7 @@ func NewCLI() *cobra.Command {
RunE
:
CreateHandler
,
RunE
:
CreateHandler
,
}
}
createCmd
.
Flags
()
.
StringP
(
"file"
,
"f"
,
"
Modelfile
"
,
"Name of the Modelfile"
)
createCmd
.
Flags
()
.
StringP
(
"file"
,
"f"
,
""
,
"Name of the Modelfile
(default
\"
Modelfile
\"
"
)
createCmd
.
Flags
()
.
StringP
(
"quantize"
,
"q"
,
""
,
"Quantize model to this level (e.g. q4_0)"
)
createCmd
.
Flags
()
.
StringP
(
"quantize"
,
"q"
,
""
,
"Quantize model to this level (e.g. q4_0)"
)
showCmd
:=
&
cobra
.
Command
{
showCmd
:=
&
cobra
.
Command
{
...
...
cmd/cmd_test.go
View file @
d78fb620
...
@@ -270,3 +270,102 @@ func TestDeleteHandler(t *testing.T) {
...
@@ -270,3 +270,102 @@ func TestDeleteHandler(t *testing.T) {
t
.
Fatalf
(
"DeleteHandler failed: expected error about stopping non-existent model, got %v"
,
err
)
t
.
Fatalf
(
"DeleteHandler failed: expected error about stopping non-existent model, got %v"
,
err
)
}
}
}
}
func
TestGetModelfileName
(
t
*
testing
.
T
)
{
tests
:=
[]
struct
{
name
string
modelfileName
string
fileExists
bool
expectedName
string
expectedErr
error
}{
{
name
:
"no modelfile specified, no modelfile exists"
,
modelfileName
:
""
,
fileExists
:
false
,
expectedName
:
""
,
expectedErr
:
os
.
ErrNotExist
,
},
{
name
:
"no modelfile specified, modelfile exists"
,
modelfileName
:
""
,
fileExists
:
true
,
expectedName
:
"Modelfile"
,
expectedErr
:
nil
,
},
{
name
:
"modelfile specified, no modelfile exists"
,
modelfileName
:
"crazyfile"
,
fileExists
:
false
,
expectedName
:
"crazyfile"
,
expectedErr
:
os
.
ErrNotExist
,
},
{
name
:
"modelfile specified, modelfile exists"
,
modelfileName
:
"anotherfile"
,
fileExists
:
true
,
expectedName
:
"anotherfile"
,
expectedErr
:
nil
,
},
}
for
_
,
tt
:=
range
tests
{
t
.
Run
(
tt
.
name
,
func
(
t
*
testing
.
T
)
{
cmd
:=
&
cobra
.
Command
{
Use
:
"fakecmd"
,
}
cmd
.
Flags
()
.
String
(
"file"
,
""
,
"path to modelfile"
)
var
expectedFilename
string
if
tt
.
fileExists
{
tempDir
,
err
:=
os
.
MkdirTemp
(
""
,
"modelfiledir"
)
defer
os
.
RemoveAll
(
tempDir
)
if
err
!=
nil
{
t
.
Fatalf
(
"temp modelfile dir creation failed: %v"
,
err
)
}
var
fn
string
if
tt
.
modelfileName
!=
""
{
fn
=
tt
.
modelfileName
}
else
{
fn
=
"Modelfile"
}
tempFile
,
err
:=
os
.
CreateTemp
(
tempDir
,
fn
)
if
err
!=
nil
{
t
.
Fatalf
(
"temp modelfile creation failed: %v"
,
err
)
}
expectedFilename
=
tempFile
.
Name
()
err
=
cmd
.
Flags
()
.
Set
(
"file"
,
expectedFilename
)
if
err
!=
nil
{
t
.
Fatalf
(
"couldn't set file flag: %v"
,
err
)
}
}
else
{
if
tt
.
modelfileName
!=
""
{
expectedFilename
=
tt
.
modelfileName
err
:=
cmd
.
Flags
()
.
Set
(
"file"
,
tt
.
modelfileName
)
if
err
!=
nil
{
t
.
Fatalf
(
"couldn't set file flag: %v"
,
err
)
}
}
}
actualFilename
,
actualErr
:=
getModelfileName
(
cmd
)
if
actualFilename
!=
expectedFilename
{
t
.
Errorf
(
"expected filename: '%s' actual filename: '%s'"
,
expectedFilename
,
actualFilename
)
}
if
tt
.
expectedErr
!=
os
.
ErrNotExist
{
if
actualErr
!=
tt
.
expectedErr
{
t
.
Errorf
(
"expected err: %v actual err: %v"
,
tt
.
expectedErr
,
actualErr
)
}
}
else
{
if
!
os
.
IsNotExist
(
actualErr
)
{
t
.
Errorf
(
"expected err: %v actual err: %v"
,
tt
.
expectedErr
,
actualErr
)
}
}
})
}
}
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