Pure Go para RWKV y admite la plataforma cruzada.
RWKV.GO es un envoltorio alrededor de RWKV.CPP, que es una adaptación de GGML.CPP.
go get github.com/seasonjs/rwkv Consulte la carpeta deps para la compatibilidad de Dylib, o puede construir la biblioteca usted mismo, y la solicitud de empuje es bienvenida.
NewRwkvAutoModel , tanto la GPU, admite AMD y NVIDIA en Windows.
NewRwkvModel necesita que cargue la biblioteca dinámica manualmente, y la biblioteca dinámica depende de la plataforma.
El usuario de Windows AMD GPU puede necesitar verificar la arquitectura ROCM para obtener más información.
El usuario de GPU de Windows NVIDIA puede necesitar verificar la arquitectura CUDA para obtener más información.
| plataforma | x32 | x64 | brazo | AMD/ROCM | Nvidia/cuda |
|---|---|---|---|---|---|
| Windows | no apoyo | Soporte AVX/AVX2/AVX512 | no apoyo | soporte rocm5.5 | Soporte CUDA12 |
| Linux | no apoyo | apoyo | no apoyo | no apoyo | no apoyo |
| darwin | no apoyo | apoyo | apoyo | no apoyo | no apoyo |
Estas bibliotecas dinámicas provienen de la versión de RWKV.CPP, la versión de la biblioteca dinámica se puede obtener al ver el archivo RWKV.Version que cualquiera puede verificar la consistencia del archivo mediante la suma de verificación del MD5 del archivo.
Todo lo que puedo decir es que la creación de la biblioteca dinámica es pública y no contiene ninguna lógica maliciosa subjetiva. Si le preocupa la seguridad de la biblioteca dinámica durante el proceso de uso, puede construirla usted mismo.
Yo y cualquier autor relacionado con bibliotecas dinámicas no asumimos ningún problema, responsabilidad o responsabilidad legal durante el uso.
Puede encontrar un ejemplo completo en la carpeta de ejemplos.
Aquí hay un ejemplo simple:
package main
import (
"fmt"
"github.com/seasonjs/rwkv"
)
func main () {
model , err := rwkv . NewRwkvAutoModel (rwkv. RwkvOptions {
MaxTokens : 500 ,
StopString : " n n " ,
Temperature : 0.8 ,
TopP : 0.5 ,
TokenizerType : rwkv . World , //or World
PrintError : true ,
CpuThreads : 10 ,
GpuEnable : false ,
})
if err != nil {
fmt . Print ( err . Error ())
return
}
defer model . Close ()
err = model . LoadFromFile ( "./models/RWKV-5-World-0.4B-v2-20231113-ctx4096-F16.bin" )
if err != nil {
fmt . Print ( err . Error ())
return
}
prompt := `The following is a coherent verbose detailed conversation between a Chinese girl named Alice and her friend Bob.
Alice is very intelligent, creative and friendly.
Alice likes to tell Bob a lot about herself and her opinions.
Alice usually gives Bob kind, helpful and informative advices.
Bob: lhc
Alice: LHC是指大型强子对撞机(Large Hadron Collider),是世界最大最强的粒子加速器,由欧洲核子中心(CERN)在瑞士日内瓦地下建造。
LHC的原理是加速质子(氢离子)并让它们相撞,让科学家研究基本粒子和它们之间的相互作用,并在2012年证实了希格斯玻色子的存在。
Bob: 企鹅会飞吗
Alice: 企鹅是不会飞的。企鹅的翅膀短而扁平,更像是游泳时的一对桨。企鹅的身体结构和羽毛密度也更适合在水中游泳,而不是飞行。
`
user := `Bob: 请介绍北京的旅游景点?
Alice: `
ctx , err := model . InitState ( prompt )
if err != nil {
print ( err . Error ())
return
}
out , err := ctx . Predict ( user )
if err != nil {
print ( err . Error ())
return
}
print ( out )
}Para enviar un programa de trabajo que incluya esta IA, deberá incluir los siguientes archivos:
Este paquete también proporciona API de bajo nivel que es la misma que RWKV-CPP. Ver detalle en RWKV-Doc.
Un agradecimiento especial al apoyo de JetBrains por el patrocinio.
Copyright (c) temporadajs. Reservados todos los derechos. Licenciado bajo la licencia del MIT. Consulte License.txt en la raíz del proyecto para obtener información de licencia.