Gowrkv.go est un emballage autour de RWKV-CPP, qui est une adaptation de GGML.CPP.
RKWV.CPP est généralement plus rapide, en raison du maintien de l'état intermédiaire du modèle, de sorte que l'invite entière ne doit pas être retraitée à chaque fois. Pour plus de détails, voir RWKV-CPP.
De plus, les modèles disponibles pour RWKV.CPP sont entièrement open-source, contrairement à Llama. Vous pouvez utiliser ces modèles commercialement et vous pouvez les modifier au contenu de votre cœur.
La formation peut également être plus rapide, je n'ai pas encore eu la chance d'essayer.
L'installation est actuellement complexe. go-rkwv.cpp ne fonctionne pas encore avec go get (correctifs très bienvenus). Vous aurez besoin de GO, un compilateur C ++ (Clang sur Mac) et CMake.
Vous devez cloner ce repo / récursivement /, car il contient des sous-modules.
git clone --recursive https://github.com/donomii/go-rwkv.cppIl y a un script de build, build.sh, qui créera la bibliothèque C ++ et l'emballage Go. Veuillez déposer des rapports de bogues si cela ne fonctionne pas pour vous.
./build-mac.shIl y a maintenant une construction alternative, qui construit statiquement grâce à un makefile fourni par @mudler.
make example/aiLe script de téléchargement téléchargera certains modèles et les convertira au format correct.
cd aimodels
sh downloadconvert.shgo-rwkv.cpp construit actuellement contre la bibliothèque dynamique libeldwkv.dylib. Ce n'est pas idéal, mais cela fonctionne pour l'instant. Vous devrez copier cette bibliothèque à un emplacement où le linker système peut le trouver. Sur Mac, c'est / usr / local / lib.
cp librwkv.dylib /usr/local/lib
export DYLD_LIBRARY_PATH=/Users/donomii/git/go-rwkv.cpp/rwkv.cpp/Si vous ne souhaitez pas l'installer à l'échelle mondiale, vous pouvez définir la variable d'environnement DYLD_LIBRARY_PATH sur le répertoire contenant liberdwkv.dylib.
Voir l'exemple / répertoire pour un programme de chat complet complet. Ce qui suit est un exemple minimal.
package main
import (
"fmt"
"github.com/donomii/go-rwkv.cpp"
)
func main () {
model := LoadFiles ( "aimodels/small.bin" , "rwkv.cpp/rwkv/20B_tokenizer.json" , 8 )
model . ProcessInput ( "You are a chatbot that is very good at chatting. blah blah blah" )
response := model . Generate ( 100 , " n " )
fmt . Println ( response )
}Vous devez utiliser le fichier Tokenizer à partir de rwkv.cpp. GO-RWKV contient une réimplémentation du tokenizer, mais c'est une implémentation minimale qui contient juste assez de code pour travailler avec RWKV (et il y a probablement des bogues).
Pour expédier un programme de travail qui comprend cette IA, vous devrez inclure les fichiers suivants:
Si vous n'installez pas Librwkv.Dylib Globalement, vous devrez définir la variable d'environnement DYLD_LIBRARY_PATH sur le répertoire contenant LiberdWkv.Dylib.
Ce programme est autorisé sous la licence du MIT. Voir la licence pour plus de détails.
Pour autant que je sache, les modèles Raven sont également open source.