Gowrkv.go es un envoltorio alrededor de RWKV-CPP, que es una adaptación de GGML.CPP.
RKWV.CPP es generalmente más rápido, debido a mantener el estado intermedio del modelo, por lo que todo el aviso no tiene que ser reprocesado cada vez. Para más detalles, consulte RWKV-CPP.
Además, los modelos disponibles para RWKV.CPP son de código abierto, a diferencia de LLAMA. Puede usar estos modelos comercialmente y puede modificarlos al contenido de su corazón.
El entrenamiento también puede ser más rápido, aún no he tenido la oportunidad de intentarlo.
La instalación es actualmente compleja. Go-RKWV.CPP aún no funciona con go get (parches muy bienvenidos). Necesitará ir, un compilador C ++ (ruido en Mac) y cmake.
Debe clonar este repositorio /recursivamente /, ya que contiene submódulos.
git clone --recursive https://github.com/donomii/go-rwkv.cppHay un script de compilación, build.sh, que construirá la biblioteca C ++ y el envoltorio GO. Por favor, presente informes de errores si no funciona para usted.
./build-mac.shAhora hay una construcción alternativa, que se construye estáticamente gracias a un makefile proporcionado por @mudler.
make example/aiEl script de descarga descargará algunos modelos y los convertirá en el formato correcto.
cd aimodels
sh downloadconvert.shGo-RWKV.CPP se construye actualmente contra la biblioteca dinámica librwkv.dylib. Esto no es ideal, pero funciona por ahora. Deberá copiar esta biblioteca en una ubicación donde el enlazador del sistema puede encontrarla. En Mac, esto es/usr/local/lib.
cp librwkv.dylib /usr/local/lib
export DYLD_LIBRARY_PATH=/Users/donomii/git/go-rwkv.cpp/rwkv.cpp/Si no desea instalarlo a nivel mundial, puede establecer la variable de entorno dyld_library_path en el directorio que contiene librwkv.dylib.
Vea el ejemplo/ directorio para un programa de chat completo de trabajo. El siguiente es un ejemplo mínimo.
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 )
}Debe usar el archivo tokenizer de rwkv.cpp. Go-RWKV contiene una reimplementación del tokenizador, pero es una implementación mínima que contiene el código suficiente para trabajar con RWKV (y probablemente haya errores).
Para enviar un programa de trabajo que incluya esta IA, deberá incluir los siguientes archivos:
Si no instala librwkv.dylib a nivel mundial, deberá establecer la variable de entorno dyld_library_path en el directorio que contiene librwkv.dylib.
Este programa tiene licencia bajo la licencia MIT. Vea la licencia para más detalles.
Hasta donde sé, los modelos Raven también son de código abierto.