
AI00 RWKV Server 는 web-rwkv 추론 엔진을 기반으로 RWKV 언어 모델에 대한 추론 API 서버입니다.
Vulkan 평행 및 동시 배치 추론을 지원하며 Vulkan 지원하는 모든 GPU에서 실행할 수 있습니다. Nvidia 카드가 필요하지 않습니다 !!! AMD 카드 및 통합 그래픽도 가속화 될 수 있습니다 !!!
부피가 큰 pytorch , CUDA 및 기타 런타임 환경이 필요하지 않으며, 작고 상자에서 사용할 준비가되어 있습니다!
OpenAI의 ChatGpt API 인터페이스와 호환됩니다.
MIT 라이센스에 따라 100% 오픈 소스 및 상업적으로 사용할 수 있습니다.
빠르고 효율적이며 사용하기 쉬운 LLM API 서버를 찾고 있다면 AI00 RWKV Server 최선의 선택입니다. 챗봇, 텍스트 생성, 번역 및 Q & A를 포함한 다양한 작업에 사용할 수 있습니다.
지금 AI00 RWKV Server 커뮤니티에 가입하여 AI의 매력을 경험하십시오!
커뮤니케이션을위한 QQ 그룹 : 30920262
RWKV 모델을 기반으로 고성능과 정확도가 있습니다.Vulkan 추론 가속도를 지원하면 CUDA 필요없이 GPU 가속도를 즐길 수 있습니다! AMD 카드, 통합 그래픽 및 Vulkan 지원하는 모든 GPU를 지원합니다.pytorch , CUDA 및 기타 런타임 환경이 필요하지 않으며, 작고 상자에서 사용할 준비가되어 있습니다!릴리스에서 최신 버전을 직접 다운로드하십시오
모델을 다운로드 한 후 assets/models/ 경로에 모델을 배치하십시오 assets/models/RWKV-x060-World-3B-v2-20240228-ctx4096.st
모델 경로, 양자화 계층 등과 같은 모델 구성에 대해 assets/configs/Config.toml 선택적으로 수정하십시오.
명령 줄에서 실행하십시오
$ ./ai00_rwkv_server 브라우저를 열고 http : // localhost : 65530 (https : // localhost : 65530 tls 활성화 된 경우)에서 Webui를 방문하십시오.
녹을 설치하십시오
이 저장소를 복제하십시오
$ git clone https://github.com/cgisky1980/ai00_rwkv_server.git
$ cd ai00_rwkv_server 모델을 다운로드 한 후 assets/models/ 경로에 모델을 배치하십시오 assets/models/RWKV-x060-World-3B-v2-20240228-ctx4096.st
엮다
$ cargo build --release컴파일 후 실행하십시오
$ cargo run --release 브라우저를 열고 http : // localhost : 65530 (https : // localhost : 65530 tls 활성화 된 경우)에서 Webui를 방문하십시오.
현재 .st 확장자가있는 SAFETENSORS 모델 만 지원합니다. 토치를 사용하여 .pth 확장으로 저장된 모델은 사용하기 전에 변환해야합니다.
.pth 모델을 다운로드하십시오
(권장) Python Script convert2ai00.py 또는 convert_safetensors.py 실행합니다.
$ python ./convert2ai00.py --input /path/to/model.pth --output /path/to/model.st 요구 사항 : torch 및 safetensors 설치된 파이썬.
Python을 설치하지 않으려면 릴리스에서 converter 라는 실행 파일을 찾을 수 있습니다. 달리다
$ ./converter --input /path/to/model.pth --output /path/to/model.st$ cargo run --release --package converter -- --input /path/to/model.pth --output /path/to/model.stassets/models/ 경로의 .st 모델에 배치하고 assets/configs/Config.toml 에서 모델 경로를 수정하십시오. --config : 파일 경로 구성 (기본값 : assets/configs/Config.toml )--ip : 서버가 바인딩 된 IP 주소--port : 포트 실행 API 서비스는 포트 65530에서 시작되며 데이터 입력 및 출력 형식은 OpenAI API 사양을 따릅니다. chat 및 completions 같은 일부 API에는 고급 기능을위한 추가 옵션 필드가 있습니다. API 스키마는 http : // localhost : 65530/api-docs를 방문하십시오.
/api/oai/v1/models/api/oai/models/api/oai/v1/chat/completions/api/oai/chat/completions/api/oai/v1/completions/api/oai/completions/api/oai/v1/embeddings/api/oai/embeddings다음은 Python의 AI00 API 호출의 상자 외 예입니다.
import openai
class Ai00 :
def __init__ ( self , model = "model" , port = 65530 , api_key = "JUSTSECRET_KEY" ) :
openai . api_base = f"http://127.0.0.1: { port } /api/oai"
openai . api_key = api_key
self . ctx = []
self . params = {
"system_name" : "System" ,
"user_name" : "User" ,
"assistant_name" : "Assistant" ,
"model" : model ,
"max_tokens" : 4096 ,
"top_p" : 0.6 ,
"temperature" : 1 ,
"presence_penalty" : 0.3 ,
"frequency_penalty" : 0.3 ,
"half_life" : 400 ,
"stop" : [ ' x00 ' , ' n n ' ]
}
def set_params ( self , ** kwargs ):
self . params . update ( kwargs )
def clear_ctx ( self ):
self . ctx = []
def get_ctx ( self ):
return self . ctx
def continuation ( self , message ):
response = openai . Completion . create (
model = self . params [ 'model' ],
prompt = message ,
max_tokens = self . params [ 'max_tokens' ],
half_life = self . params [ 'half_life' ],
top_p = self . params [ 'top_p' ],
temperature = self . params [ 'temperature' ],
presence_penalty = self . params [ 'presence_penalty' ],
frequency_penalty = self . params [ 'frequency_penalty' ],
stop = self . params [ 'stop' ]
)
result = response . choices [ 0 ]. text
return result
def append_ctx ( self , role , content ):
self . ctx . append ({
"role" : role ,
"content" : content
})
def send_message ( self , message , role = "user" ):
self . ctx . append ({
"role" : role ,
"content" : message
})
result = openai . ChatCompletion . create (
model = self . params [ 'model' ],
messages = self . ctx ,
names = {
"system" : self . params [ 'system_name' ],
"user" : self . params [ 'user_name' ],
"assistant" : self . params [ 'assistant_name' ]
},
max_tokens = self . params [ 'max_tokens' ],
half_life = self . params [ 'half_life' ],
top_p = self . params [ 'top_p' ],
temperature = self . params [ 'temperature' ],
presence_penalty = self . params [ 'presence_penalty' ],
frequency_penalty = self . params [ 'frequency_penalty' ],
stop = self . params [ 'stop' ]
)
result = result . choices [ 0 ]. message [ 'content' ]
self . ctx . append ({
"role" : "assistant" ,
"content" : result
})
return result
ai00 = Ai00 ()
ai00 . set_params (
max_tokens = 4096 ,
top_p = 0.55 ,
temperature = 2 ,
presence_penalty = 0.3 ,
frequency_penalty = 0.8 ,
half_life = 400 ,
stop = [ ' x00 ' , ' n n ' ]
)
print ( ai00 . send_message ( "how are you?" ))
print ( ai00 . send_message ( "me too!" ))
print ( ai00 . get_ctx ())
ai00 . clear_ctx ()
print ( ai00 . continuation ( "i like" ))V0.5 이후 AI00에는 BNF 샘플링이라는 고유 한 기능이 있습니다. BNF는 모델이 선택할 수있는 가능한 다음 토큰을 제한하여 지정된 형식 (예 : 지정된 필드와의 Markdown)으로 모델을 출력하도록 강요합니다.
다음은 필드 "이름", "에이지"및 "job"가있는 JSON의 예제입니다.
<start> ::= <json_object>
<json_object> ::= "{" <object_members> "}"
<object_members> ::= <json_member> | <json_member> ", " <object_members>
<json_member> ::= <json_key> ": " <json_value>
<json_key> ::= '"' "name" '"' | '"' "age" '"' | '"' "job" '"'
<json_value> ::= <json_string> | <json_number>
<json_string>::='"'<content>'"'
<content>::=<except!([escaped_literals])>|<except!([escaped_literals])><content>|'\"'<content>|'\"'
<escaped_literals>::='t'|'n'|'r'|'"'
<json_number> ::= <positive_digit><digits>|'0'
<digits>::=<digit>|<digit><digits>
<digit>::='0'|<positive_digit>
<positive_digit>::="1"|"2"|"3"|"4"|"5"|"6"|"7"|"8"|"9"




text_completions 및 chat_completions 지원 batch serve 통한 평행 추론 int8 양자화에 대한 지원 NF4 양자화에 대한 지원 LoRA 모델 지원 LoRA 모델의 핫로드 및 스위칭 우리는 항상 프로젝트 개선에 관심이있는 사람들을 찾고 있습니다. 다음 중 하나에 관심이 있으시면 우리와 함께하십시오!
당신의 기술 수준에 관계없이, 우리는 당신이 우리와 함께 할 수 있도록 환영합니다. 다음과 같은 방법으로 우리와 함께 할 수 있습니다.
우리는이 프로젝트를 개선하기 위해 당신과 함께 일하기를 기다릴 수 없습니다! 우리는 프로젝트가 당신에게 도움이되기를 바랍니다!
프로젝트에 대한 지원과 이타적인 헌신에 통찰력 있고 뛰어난이 멋진 사람들에게 감사합니다!
顾真牛 ? ? ? ? | 研究社交 ? ? ? ? | JOSC146 ? ? ? | L15Y ? ? | CAHYA WIRWAN ? | Yuunnn_w | Longzou ? ️ |
Luoqiqi |