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
8e1234b7
Unverified
Commit
8e1234b7
authored
Aug 10, 2023
by
Bruce MacDonald
Committed by
GitHub
Aug 10, 2023
Browse files
fix embeddings invalid values
parents
c4861360
984c9c62
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
9 additions
and
39 deletions
+9
-39
llama/llama.go
llama/llama.go
+7
-15
server/images.go
server/images.go
+2
-24
No files found.
llama/llama.go
View file @
8e1234b7
...
@@ -94,7 +94,6 @@ import (
...
@@ -94,7 +94,6 @@ import (
"io"
"io"
"log"
"log"
"os"
"os"
"reflect"
"strings"
"strings"
"sync"
"sync"
"unicode/utf8"
"unicode/utf8"
...
@@ -421,27 +420,20 @@ func (llm *LLM) Embedding(input string) ([]float64, error) {
...
@@ -421,27 +420,20 @@ func (llm *LLM) Embedding(input string) ([]float64, error) {
return
nil
,
errors
.
New
(
"llama: tokenize embedding"
)
return
nil
,
errors
.
New
(
"llama: tokenize embedding"
)
}
}
retval
:=
C
.
llama_eval
(
llm
.
ctx
,
unsafe
.
SliceData
(
tokens
),
C
.
int
(
len
(
tokens
)),
C
.
llama_get_kv_cache_token_count
(
llm
.
ctx
)
,
C
.
int
(
llm
.
NumThread
))
retval
:=
C
.
llama_eval
(
llm
.
ctx
,
unsafe
.
SliceData
(
tokens
),
C
.
int
(
len
(
tokens
)),
0
,
C
.
int
(
llm
.
NumThread
))
if
retval
!=
0
{
if
retval
!=
0
{
return
nil
,
errors
.
New
(
"llama: eval"
)
return
nil
,
errors
.
New
(
"llama: eval"
)
}
}
n
:=
int
(
C
.
llama_n_embd
(
llm
.
ctx
)
)
n
:=
C
.
llama_n_embd
(
llm
.
ctx
)
if
n
<=
0
{
if
n
<=
0
{
return
nil
,
errors
.
New
(
"llama: no embeddings generated"
)
return
nil
,
errors
.
New
(
"llama: no embeddings generated"
)
}
}
cEmbeddings
:=
unsafe
.
Slice
(
C
.
llama_get_embeddings
(
llm
.
ctx
),
n
)
embed
Ptr
:=
C
.
llama_get_e
mbeddings
(
llm
.
ctx
)
embed
dings
:=
make
([]
float64
,
len
(
cE
mbeddings
)
)
if
embedPtr
==
nil
{
for
i
,
v
:=
range
cEmbeddings
{
return
nil
,
errors
.
New
(
"llama: embedding retrieval failed"
)
embeddings
[
i
]
=
float64
(
v
)
}
}
return
embeddings
,
nil
header
:=
reflect
.
SliceHeader
{
Data
:
uintptr
(
unsafe
.
Pointer
(
embedPtr
)),
Len
:
n
,
Cap
:
n
,
}
embedSlice
:=
*
(
*
[]
float64
)(
unsafe
.
Pointer
(
&
header
))
return
embedSlice
,
nil
}
}
server/images.go
View file @
8e1234b7
...
@@ -11,7 +11,6 @@ import (
...
@@ -11,7 +11,6 @@ import (
"html/template"
"html/template"
"io"
"io"
"log"
"log"
"math"
"net/http"
"net/http"
"os"
"os"
"path/filepath"
"path/filepath"
...
@@ -480,31 +479,10 @@ func embeddingLayers(e EmbeddingParams) ([]*LayerReader, error) {
...
@@ -480,31 +479,10 @@ func embeddingLayers(e EmbeddingParams) ([]*LayerReader, error) {
Total
:
len
(
data
)
-
1
,
Total
:
len
(
data
)
-
1
,
Completed
:
i
,
Completed
:
i
,
})
})
retry
:=
0
generate
:
if
retry
>
3
{
log
.
Printf
(
"failed to generate embedding for '%s' line %d: %v"
,
filePath
,
i
+
1
,
err
)
continue
}
embed
,
err
:=
llm
.
Embedding
(
d
)
embed
,
err
:=
llm
.
Embedding
(
d
)
if
err
!=
nil
{
if
err
!=
nil
{
log
.
Printf
(
"retrying embedding generation for '%s' line %d: %v"
,
filePath
,
i
+
1
,
err
)
log
.
Printf
(
"failed to generate embedding for '%s' line %d: %v"
,
filePath
,
i
+
1
,
err
)
retry
++
continue
goto
generate
}
// Check for NaN and Inf in the embedding, which can't be stored
for
_
,
value
:=
range
embed
{
if
math
.
IsNaN
(
value
)
||
math
.
IsInf
(
value
,
0
)
{
log
.
Printf
(
"reloading model, embedding contains NaN or Inf"
)
// reload the model to get a new embedding, the seed can effect these outputs and reloading changes it
llm
.
Close
()
llm
,
err
=
llama
.
New
(
e
.
model
,
e
.
opts
)
if
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"load model to generate embeddings: %v"
,
err
)
}
retry
++
goto
generate
}
}
}
embeddings
=
append
(
embeddings
,
vector
.
Embedding
{
Data
:
d
,
Vector
:
embed
})
embeddings
=
append
(
embeddings
,
vector
.
Embedding
{
Data
:
d
,
Vector
:
embed
})
}
}
...
...
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