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
Hide 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 (
"io"
"log"
"os"
"reflect"
"strings"
"sync"
"unicode/utf8"
...
...
@@ -421,27 +420,20 @@ func (llm *LLM) Embedding(input string) ([]float64, error) {
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
{
return
nil
,
errors
.
New
(
"llama: eval"
)
}
n
:=
int
(
C
.
llama_n_embd
(
llm
.
ctx
)
)
n
:=
C
.
llama_n_embd
(
llm
.
ctx
)
if
n
<=
0
{
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
)
if
embedPtr
==
nil
{
return
nil
,
errors
.
New
(
"llama: embedding retrieval failed"
)
embed
dings
:=
make
([]
float64
,
len
(
cE
mbeddings
)
)
for
i
,
v
:=
range
cEmbeddings
{
embeddings
[
i
]
=
float64
(
v
)
}
header
:=
reflect
.
SliceHeader
{
Data
:
uintptr
(
unsafe
.
Pointer
(
embedPtr
)),
Len
:
n
,
Cap
:
n
,
}
embedSlice
:=
*
(
*
[]
float64
)(
unsafe
.
Pointer
(
&
header
))
return
embedSlice
,
nil
return
embeddings
,
nil
}
server/images.go
View file @
8e1234b7
...
...
@@ -11,7 +11,6 @@ import (
"html/template"
"io"
"log"
"math"
"net/http"
"os"
"path/filepath"
...
...
@@ -480,31 +479,10 @@ func embeddingLayers(e EmbeddingParams) ([]*LayerReader, error) {
Total
:
len
(
data
)
-
1
,
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
)
if
err
!=
nil
{
log
.
Printf
(
"retrying embedding generation for '%s' line %d: %v"
,
filePath
,
i
+
1
,
err
)
retry
++
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
}
log
.
Printf
(
"failed to generate embedding for '%s' line %d: %v"
,
filePath
,
i
+
1
,
err
)
continue
}
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