forked from third-party-mirrors/ollama
Compare commits
2 Commits
main
...
pdevine/sh
Author | SHA1 | Date | |
---|---|---|---|
|
c0314cc41c | ||
|
686178b6c5 |
@ -207,6 +207,7 @@ type ShowResponse struct {
|
|||||||
System string `json:"system,omitempty"`
|
System string `json:"system,omitempty"`
|
||||||
Details ModelDetails `json:"details,omitempty"`
|
Details ModelDetails `json:"details,omitempty"`
|
||||||
Messages []Message `json:"messages,omitempty"`
|
Messages []Message `json:"messages,omitempty"`
|
||||||
|
ModelInfo string `json:"modelinfo,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type CopyRequest struct {
|
type CopyRequest struct {
|
||||||
|
@ -191,7 +191,7 @@ func (l Layer) size() (size uint64) {
|
|||||||
type Tensor struct {
|
type Tensor struct {
|
||||||
Name string `json:"name"`
|
Name string `json:"name"`
|
||||||
Kind uint32 `json:"kind"`
|
Kind uint32 `json:"kind"`
|
||||||
Offset uint64 `json:"-"`
|
Offset uint64 `json:"offset"`
|
||||||
|
|
||||||
// Shape is the number of elements in each dimension
|
// Shape is the number of elements in each dimension
|
||||||
Shape []uint64 `json:"shape"`
|
Shape []uint64 `json:"shape"`
|
||||||
|
@ -721,12 +721,61 @@ func GetModelInfo(req api.ShowRequest) (*api.ShowResponse, error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
resp.Modelfile = mf
|
resp.Modelfile = mf
|
||||||
|
|
||||||
|
ggmlData, err := getGGMLData(model)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
resp.ModelInfo = string(ggmlData)
|
||||||
|
|
||||||
return resp, nil
|
return resp, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func getGGMLData(model *Model) ([]byte, error) {
|
||||||
|
f, err := os.Open(model.ModelPath)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
ggml, _, err := llm.DecodeGGML(f)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
kv := ggml.KV()
|
||||||
|
var keys []string
|
||||||
|
for k := range kv {
|
||||||
|
keys = append(keys, k)
|
||||||
|
}
|
||||||
|
|
||||||
|
kvMap := make(map[string]any)
|
||||||
|
|
||||||
|
for _, k := range keys {
|
||||||
|
val := kv[k]
|
||||||
|
|
||||||
|
switch v := val.(type) {
|
||||||
|
case []interface{}:
|
||||||
|
if len(v) > 5 {
|
||||||
|
kvMap[k] = []string{}
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
kvMap[k] = val
|
||||||
|
}
|
||||||
|
|
||||||
|
ggmlMap := make(map[string]any)
|
||||||
|
ggmlMap["kv"] = kvMap
|
||||||
|
ggmlMap["tensors"] = ggml.Tensors()
|
||||||
|
|
||||||
|
ggmlJson, err := json.Marshal(ggmlMap)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return ggmlJson, nil
|
||||||
|
}
|
||||||
|
|
||||||
func (s *Server) ListModelsHandler(c *gin.Context) {
|
func (s *Server) ListModelsHandler(c *gin.Context) {
|
||||||
models := make([]api.ModelResponse, 0)
|
models := make([]api.ModelResponse, 0)
|
||||||
manifestsPath, err := GetManifestPath()
|
manifestsPath, err := GetManifestPath()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user