
AI00 RWKV Server هو خادم API الاستدلال لنموذج لغة RWKV استنادًا إلى محرك استنتاج web-rwkv .
وهو يدعم الاستدلال المتوازي والمتزامن Vulkan ويمكن أن يعمل على جميع وحدات معالجة الرسومات التي تدعم Vulkan . لا حاجة لبطاقات nvidia !!! يمكن تسريع بطاقات AMD وحتى الرسومات المتكاملة !!!
لا حاجة إلى pytorch الضخمة ، CUDA وبيئات وقت التشغيل الأخرى ، إنها مضغوطة وجاهزة للاستخدام خارج الصندوق!
متوافق مع واجهة Openai ChatGPT API.
100 ٪ مفتوح المصدر وقابل للاستخدام تجاريا ، تحت رخصة معهد ماساتشوستس للتكنولوجيا.
إذا كنت تبحث عن خادم LLM API سريعًا وفعالًا وسهل الاستخدام ، فإن AI00 RWKV Server هو خيارك الأفضل. يمكن استخدامه لمختلف المهام ، بما في ذلك chatbots وتوليد النصوص والترجمة والأسئلة والأجوبة.
انضم إلى مجتمع AI00 RWKV Server الآن وتجربة سحر الذكاء الاصطناعي!
QQ Group للاتصال: 30920262
RWKV ، فإنه يتمتع بأداء ودقة عاليةVulkan ، يمكنك الاستمتاع بتسارع GPU دون الحاجة إلى CUDA ! يدعم بطاقات AMD والرسومات المتكاملة وجميع وحدات معالجة الرسومات التي تدعم Vulkanpytorch الضخمة ، CUDA وبيئات وقت التشغيل الأخرى ، إنها مضغوطة وجاهزة للاستخدام خارج الصندوق!قم بتنزيل أحدث إصدار من الإصدار مباشرة
بعد تنزيل النموذج ، ضع النموذج في assets/models/ المسار ، على سبيل المثال ، assets/models/RWKV-x060-World-3B-v2-20240228-ctx4096.st
تعديل assets/configs/Config.toml لتكوينات النماذج مثل مسار النموذج ، وطبقات القياس الكمي ، إلخ.
تشغيل في سطر الأوامر
$ ./ai00_rwkv_server افتح المتصفح وقم بزيارة webui على http: // localhost: 65530 (https: // localhost: 65530 إذا تم تمكين tls )
تثبيت الصدأ
استنساخ هذا المستودع
$ 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 افتح المتصفح وقم بزيارة webui على http: // localhost: 65530 (https: // localhost: 65530 إذا تم تمكين tls )
إنه يدعم نماذج Safetensors فقط مع امتداد .st الآن. يجب تحويل النماذج المحفوظة مع امتداد .pth باستخدام Torch قبل الاستخدام.
قم بتنزيل نموذج .pth
(موصى به) قم بتشغيل برنامج Python Script convert2ai00.py أو convert_safetensors.py :
$ python ./convert2ai00.py --input /path/to/model.pth --output /path/to/model.st المتطلبات: Python ، مع تثبيت 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.st.st في assets/models/ المسار وتعديل مسار النموذج في assets/configs/Config.toml --config : تكوين مسار الملف (افتراضي: assets/configs/Config.toml )--ip : عنوان IP ملزم الخادم--port : تشغيل المنفذ تبدأ خدمة API في المنفذ 65530 ، وتتبع تنسيق إدخال البيانات والإخراج مواصفات API Openai. لاحظ أن بعض واجهات برمجة التطبيقات مثل chat completions لها حقول اختيارية إضافية للوظائف المتقدمة. تفضل بزيارة http: // localhost: 65530/API-DOCS لمخطط API.
/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فيما يلي مثال خارج الصندوق لدعوات AI00 API في Python:
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 النموذج على الإخراج بتنسيقات محددة (على سبيل المثال ، JSON أو Markdown مع حقول محددة) عن طريق الحد من الرموز الممكنة المجاورة التي يمكن أن تختارها النموذج من بينها.
فيما يلي مثال على BNF لـ JSON مع الحقول "اسم" و "العمر" و "Job":
<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 ؟ ؟ | كاهيا ويروان ؟ | yuunnn_w | Longzou ؟ ️ |
Luoqiqi |