mirror of
https://github.com/mudler/LocalAI.git
synced 2025-02-21 09:41:45 +00:00
rwkv fixes and examples (#185)
This commit is contained in:
parent
6352308882
commit
fdf75c6d0e
@ -402,6 +402,8 @@ func chatEndpoint(cm ConfigMerger, debug bool, loader *model.ModelLoader, thread
|
|||||||
Choices: result,
|
Choices: result,
|
||||||
Object: "chat.completion",
|
Object: "chat.completion",
|
||||||
}
|
}
|
||||||
|
respData, _ := json.Marshal(resp)
|
||||||
|
log.Debug().Msgf("Response: %s", respData)
|
||||||
|
|
||||||
// Return the prediction in the response body
|
// Return the prediction in the response body
|
||||||
return c.JSON(resp)
|
return c.JSON(resp)
|
||||||
|
@ -129,12 +129,15 @@ func ModelInference(s string, loader *model.ModelLoader, c Config, tokenCallback
|
|||||||
supportStreams = true
|
supportStreams = true
|
||||||
|
|
||||||
fn = func() (string, error) {
|
fn = func() (string, error) {
|
||||||
//model.ProcessInput("You are a chatbot that is very good at chatting. blah blah blah")
|
|
||||||
stopWord := "\n"
|
stopWord := "\n"
|
||||||
if len(c.StopWords) > 0 {
|
if len(c.StopWords) > 0 {
|
||||||
stopWord = c.StopWords[0]
|
stopWord = c.StopWords[0]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if err := model.ProcessInput(s); err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
response := model.GenerateResponse(c.Maxtokens, stopWord, float32(c.Temperature), float32(c.TopP), tokenCallback)
|
response := model.GenerateResponse(c.Maxtokens, stopWord, float32(c.Temperature), float32(c.TopP), tokenCallback)
|
||||||
|
|
||||||
return response, nil
|
return response, nil
|
||||||
|
@ -8,6 +8,7 @@ Here is a list of projects that can easily be integrated with the LocalAI backen
|
|||||||
- [discord-bot](https://github.com/go-skynet/LocalAI/tree/master/examples/discord-bot/) (by [@mudler](https://github.com/mudler))
|
- [discord-bot](https://github.com/go-skynet/LocalAI/tree/master/examples/discord-bot/) (by [@mudler](https://github.com/mudler))
|
||||||
- [langchain](https://github.com/go-skynet/LocalAI/tree/master/examples/langchain/) (by [@dave-gray101](https://github.com/dave-gray101))
|
- [langchain](https://github.com/go-skynet/LocalAI/tree/master/examples/langchain/) (by [@dave-gray101](https://github.com/dave-gray101))
|
||||||
- [langchain-python](https://github.com/go-skynet/LocalAI/tree/master/examples/langchain-python/) (by [@mudler](https://github.com/mudler))
|
- [langchain-python](https://github.com/go-skynet/LocalAI/tree/master/examples/langchain-python/) (by [@mudler](https://github.com/mudler))
|
||||||
|
- [rwkv](https://github.com/go-skynet/LocalAI/tree/master/examples/rwkv/) (by [@mudler](https://github.com/mudler))
|
||||||
- [slack-bot](https://github.com/go-skynet/LocalAI/tree/master/examples/slack-bot/) (by [@mudler](https://github.com/mudler))
|
- [slack-bot](https://github.com/go-skynet/LocalAI/tree/master/examples/slack-bot/) (by [@mudler](https://github.com/mudler))
|
||||||
|
|
||||||
## Want to contribute?
|
## Want to contribute?
|
||||||
|
10
examples/rwkv/Dockerfile.build
Normal file
10
examples/rwkv/Dockerfile.build
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
FROM python
|
||||||
|
|
||||||
|
# convert the model (one-off)
|
||||||
|
RUN pip3 install torch numpy
|
||||||
|
|
||||||
|
WORKDIR /build
|
||||||
|
COPY ./scripts/ .
|
||||||
|
|
||||||
|
RUN git clone --recurse-submodules https://github.com/saharNooby/rwkv.cpp && cd rwkv.cpp && cmake . && cmake --build . --config Release
|
||||||
|
ENTRYPOINT [ "/build/build.sh" ]
|
59
examples/rwkv/README.md
Normal file
59
examples/rwkv/README.md
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
# rwkv
|
||||||
|
|
||||||
|
Example of how to run rwkv models.
|
||||||
|
|
||||||
|
## Run models
|
||||||
|
|
||||||
|
Setup:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Clone LocalAI
|
||||||
|
git clone https://github.com/go-skynet/LocalAI
|
||||||
|
|
||||||
|
cd LocalAI/examples/rwkv
|
||||||
|
|
||||||
|
# (optional) Checkout a specific LocalAI tag
|
||||||
|
# git checkout -b build <TAG>
|
||||||
|
|
||||||
|
# build the tooling image to convert an rwkv model locally:
|
||||||
|
docker build -t rwkv-converter -f Dockerfile.build .
|
||||||
|
|
||||||
|
# download and convert a model (one-off) - it's going to be fast on CPU too!
|
||||||
|
docker run -ti --name converter -v $PWD:/data rwkv-converter https://huggingface.co/BlinkDL/rwkv-4-raven/resolve/main/RWKV-4-Raven-1B5-v11-Eng99%25-Other1%25-20230425-ctx4096.pth /data/models/rwkv
|
||||||
|
|
||||||
|
# Get the tokenizer
|
||||||
|
wget https://raw.githubusercontent.com/saharNooby/rwkv.cpp/5eb8f09c146ea8124633ab041d9ea0b1f1db4459/rwkv/20B_tokenizer.json -O models/rwkv.tokenizer.json
|
||||||
|
|
||||||
|
# start with docker-compose
|
||||||
|
docker-compose up -d --build
|
||||||
|
```
|
||||||
|
|
||||||
|
Test it out:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
curl http://localhost:8080/v1/completions -H "Content-Type: application/json" -d '{
|
||||||
|
"model": "gpt-3.5-turbo",
|
||||||
|
"prompt": "A long time ago, in a galaxy far away",
|
||||||
|
"max_tokens": 100,
|
||||||
|
"temperature": 0.9, "top_p": 0.8, "top_k": 80
|
||||||
|
}'
|
||||||
|
|
||||||
|
# {"object":"text_completion","model":"gpt-3.5-turbo","choices":[{"text":", there was a small group of five friends: Annie, Bryan, Charlie, Emily, and Jesse."}],"usage":{"prompt_tokens":0,"completion_tokens":0,"total_tokens":0}}
|
||||||
|
|
||||||
|
curl http://localhost:8080/v1/chat/completions -H "Content-Type: application/json" -d '{
|
||||||
|
"model": "gpt-3.5-turbo",
|
||||||
|
"messages": [{"role": "user", "content": "How are you?"}],
|
||||||
|
"temperature": 0.9, "top_p": 0.8, "top_k": 80
|
||||||
|
}'
|
||||||
|
|
||||||
|
# {"object":"chat.completion","model":"gpt-3.5-turbo","choices":[{"message":{"role":"assistant","content":" Good, thanks. I am about to go to bed. I' ll talk to you later.Bye."}}],"usage":{"prompt_tokens":0,"completion_tokens":0,"total_tokens":0}}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Fine tuning
|
||||||
|
|
||||||
|
See [RWKV-LM](https://github.com/BlinkDL/RWKV-LM#training--fine-tuning). There is also a Google [colab](https://colab.research.google.com/github/resloved/RWKV-notebooks/blob/master/RWKV_v4_RNN_Pile_Fine_Tuning.ipynb).
|
||||||
|
|
||||||
|
## See also
|
||||||
|
|
||||||
|
- [RWKV-LM](https://github.com/BlinkDL/RWKV-LM)
|
||||||
|
- [rwkv.cpp](https://github.com/saharNooby/rwkv.cpp)
|
16
examples/rwkv/docker-compose.yaml
Normal file
16
examples/rwkv/docker-compose.yaml
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
version: '3.6'
|
||||||
|
|
||||||
|
services:
|
||||||
|
api:
|
||||||
|
image: quay.io/go-skynet/local-ai:latest
|
||||||
|
build:
|
||||||
|
context: ../../
|
||||||
|
dockerfile: Dockerfile.dev
|
||||||
|
ports:
|
||||||
|
- 8080:8080
|
||||||
|
environment:
|
||||||
|
- DEBUG=true
|
||||||
|
- MODELS_PATH=/models
|
||||||
|
volumes:
|
||||||
|
- ./models:/models:cached
|
||||||
|
command: ["/usr/bin/local-ai" ]
|
19
examples/rwkv/models/gpt-3.5-turbo.yaml
Normal file
19
examples/rwkv/models/gpt-3.5-turbo.yaml
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
name: gpt-3.5-turbo
|
||||||
|
parameters:
|
||||||
|
model: rwkv
|
||||||
|
top_k: 80
|
||||||
|
temperature: 0.9
|
||||||
|
max_tokens: 100
|
||||||
|
top_p: 0.8
|
||||||
|
context_size: 1024
|
||||||
|
threads: 14
|
||||||
|
backend: "rwkv"
|
||||||
|
cutwords:
|
||||||
|
- "Bob:.*"
|
||||||
|
roles:
|
||||||
|
user: "Bob:"
|
||||||
|
system: "Alice:"
|
||||||
|
assistant: "Alice:"
|
||||||
|
template:
|
||||||
|
completion: rwkv_completion
|
||||||
|
chat: rwkv_chat
|
13
examples/rwkv/models/rwkv_chat.tmpl
Normal file
13
examples/rwkv/models/rwkv_chat.tmpl
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
The following is a verbose detailed conversation between Bob and a woman, Alice. Alice is intelligent, friendly and likeable. Alice is likely to agree with Bob.
|
||||||
|
|
||||||
|
Bob: Hello Alice, how are you doing?
|
||||||
|
|
||||||
|
Alice: Hi Bob! Thanks, I'm fine. What about you?
|
||||||
|
|
||||||
|
Bob: I am very good! It's nice to see you. Would you mind me chatting with you for a while?
|
||||||
|
|
||||||
|
Alice: Not at all! I'm listening.
|
||||||
|
|
||||||
|
{{.Input}}
|
||||||
|
|
||||||
|
Alice:
|
1
examples/rwkv/models/rwkv_completion.tmpl
Normal file
1
examples/rwkv/models/rwkv_completion.tmpl
Normal file
@ -0,0 +1 @@
|
|||||||
|
Complete the following sentence: {{.Input}}
|
Loading…
x
Reference in New Issue
Block a user