؟ إعادة كتابة من Python إلى Rust/Webassembly ، انظر التفاصيل #93
Ialacol (وضوحا "Localai") هو بديل خفيف الوزن ل API Openai.
إنه ملف Crtansformers المتوافق مع API Openai يدعم GGML/GPTQ مع تسريع CUDA/Metal اختياري.
Ialacol مستوحاة من مشاريع أخرى مماثلة مثل Localai و Privatevpt و Local.ai و Llama-CPP-Python و Learai و MLC-LLM ، مع تركيز محدد على نشر Kubernetes.
انظر الإيصالات أدناه للحصول على تعليمات النشر.
وجميع LLMs بدعم من Ctransformers.
لا يحتوي ialacol على واجهة مستخدم ، ومع ذلك فهو متوافق مع أي واجهة مستخدم ويب يدعم Openai API ، على سبيل المثال chat-ui بعد دمج PR #541.
بافتراض تشغيل ialacol في المنفذ 8000 ، يمكنك تكوين Chat-Ui لاستخدام zephyr-7b-beta.Q4_K_M.gguf الذي يقدمه ialacol .
MODELS= ` [
{
" name " : " zephyr-7b-beta.Q4_K_M.gguf " ,
" displayName " : " Zephyr 7B β " ,
" preprompt " : " <|system|>nYou are a friendly chatbot who always responds in the style of a pirate.</s>n " ,
" userMessageToken " : " <|user|>n " ,
" userMessageEndToken " : " </s>n " ,
" assistantMessageToken " : " <|assistant|>n " ,
" assistantMessageEndToken " : " n " ,
" parameters " : {
" temperature " : 0.1,
" top_p " : 0.95,
" repetition_penalty " : 1.2,
" top_k " : 50,
" max_new_tokens " : 4096,
" truncate " : 999999
},
" endpoints " : [{
" type " : " openai " ,
" baseURL " : " http://localhost:8000/v1 " ,
" completion " : " chat_completions "
}]
}
]OpenChat_3.5.q4_K_M.Gguf
MODELS= ` [
{
" name " : " openchat_3.5.Q4_K_M.gguf " ,
" displayName " : " OpenChat 3.5 " ,
" preprompt " : " " ,
" userMessageToken " : " GPT4 User: " ,
" userMessageEndToken " : " <|end_of_turn|> " ,
" assistantMessageToken " : " GPT4 Assistant: " ,
" assistantMessageEndToken " : " <|end_of_turn|> " ,
" parameters " : {
" temperature " : 0.1,
" top_p " : 0.95,
" repetition_penalty " : 1.2,
" top_k " : 50,
" max_new_tokens " : 4096,
" truncate " : 999999,
" stop " : [ " <|end_of_turn|> " ]
},
" endpoints " : [{
" type " : " openai " ,
" baseURL " : " http://localhost:8000/v1 " ,
" completion " : " chat_completions "
}]
}
] ` تقدم ialacol دعم المواطن من الدرجة الأولى لـ Kubernetes ، مما يعني أنه يمكنك أتمتة/تكوين كل شيء مقارنة بالتجول بدونه.
للبدء بسرعة مع Ialacol على Kubernetes ، اتبع الخطوات أدناه:
helm repo add ialacol https://chenhunghan.github.io/ialacol
helm repo update
helm install llama-2-7b-chat ialacol/ialacolبشكل افتراضي ، سيتم نشر نموذج دردشة LAMA 2 من Meta بواسطة THEBLOKE.
ميناء
kubectl port-forward svc/llama-2-7b-chat 8000:8000 الدردشة مع النموذج الافتراضي llama-2-7b-chat.ggmlv3.q4_0.bin باستخدام curl
curl -X POST
-H ' Content-Type: application/json '
-d ' { "messages": [{"role": "user", "content": "How are you?"}], "model": "llama-2-7b-chat.ggmlv3.q4_0.bin", "stream": false} '
http://localhost:8000/v1/chat/completions بدلاً من ذلك ، باستخدام مكتبة عميل Openai (انظر المزيد من الأمثلة في مجلد examples/openai ).
openai -k " sk-fake "
-b http://localhost:8000/v1 -vvvvv
api chat_completions.create -m llama-2-7b-chat.ggmlv3.q4_0.bin
-g user " Hello world! "يتم كل التكوين عبر المتغير البيئي.
| المعلمة | وصف | تقصير | مثال |
|---|---|---|---|
DEFAULT_MODEL_HG_REPO_ID | معرف الوجه المعانقة لتنزيل النموذج | None | TheBloke/orca_mini_3B-GGML |
DEFAULT_MODEL_HG_REPO_REVISION | الوجه المعانقة مراجعة ريبو | main | gptq-4bit-32g-actorder_True |
DEFAULT_MODEL_FILE | اسم الملف للتنزيل من الريبو ، اختياري لنماذج GPTQ | None | orca-mini-3b.ggmlv3.q4_0.bin |
MODE_TYPE | نوع النموذج لتجاوز الكشف عن نوع النموذج التلقائي | None | gptq ، gpt_bigcode ، llama ، mpt ، replit ، falcon ، gpt_neox gptj |
LOGGING_LEVEL | مستوى التسجيل | INFO | DEBUG |
TOP_K | أعلى K لأخذ العينات. | 40 | الأعداد الصحيحة |
TOP_P | أعلى p لأخذ العينات. | 1.0 | يطفو |
REPETITION_PENALTY | RP لأخذ العينات. | 1.1 | يطفو |
LAST_N_TOKENS | الرموز الأخيرة ن الرموز لعقوبة التكرار. | 1.1 | الأعداد الصحيحة |
SEED | بذرة لأخذ العينات. | -1 | الأعداد الصحيحة |
BATCH_SIZE | حجم الدُفعة لتقييم الرموز ، فقط لنماذج GGUF/GGML | 8 | الأعداد الصحيحة |
THREADS | تجاوز رقم الموضوع Auto Auto بواسطة CPU/2 ، تعيين 1 لنماذج GPTQ | Auto | الأعداد الصحيحة |
MAX_TOKENS | الحد الأقصى لعدد الرمز المميز لتوليده | 512 | الأعداد الصحيحة |
STOP | الرمز المميز لوقف الجيل | None | `< |
CONTEXT_LENGTH | تجاوز طول سياق الكشف التلقائي | 512 | الأعداد الصحيحة |
GPU_LAYERS | عدد الطبقات التي يجب تحميلها إلى GPU | 0 | الأعداد الصحيحة |
TRUNCATE_PROMPT_LENGTH | اقتطاع المطالبة إذا تم تعيينها | 0 | الأعداد الصحيحة |
معلمات أخذ العينات بما في ذلك TOP_K ، TOP_P ، REPETITION_PENALTY ، LAST_N_TOKENS ، SEED ، MAX_TOKENS STOP يمكن تجاوز كل طلب عبر جسم الطلب ، على سبيل المثال:
curl -X POST
-H ' Content-Type: application/json '
-d ' { "messages": [{"role": "user", "content": "Tell me a story."}], "model": "llama-2-7b-chat.ggmlv3.q4_0.bin", "stream": false, "temperature": "2", "top_p": "1.0", "top_k": "0" } '
http://localhost:8000/v1/chat/completions سوف تستخدم temperature=2 ، top_p=1 و top_k=0 لهذا الطلب.
هناك صورة مستضافة على Ghcr.io (بدلاً من ذلك CUDA11 ، CUDA12 ، Metal ، GPTQ المتغيرات).
docker run --rm -it -p 8000:8000
-e DEFAULT_MODEL_HG_REPO_ID= " TheBloke/Llama-2-7B-Chat-GGML "
-e DEFAULT_MODEL_FILE= " llama-2-7b-chat.ggmlv3.q4_0.bin "
ghcr.io/chenhunghan/ialacol:latestللمطورين/المساهمين
python3 -m venv .venv
source .venv/bin/activate
python3 -m pip install -r requirements.txt
DEFAULT_MODEL_HG_REPO_ID= " TheBloke/stablecode-completion-alpha-3b-4k-GGML " DEFAULT_MODEL_FILE= " stablecode-completion-alpha-3b-4k.ggmlv1.q4_0.bin " LOGGING_LEVEL= " DEBUG " THREAD=4 uvicorn main:app --reload --host 0.0.0.0 --port 9999بناء الصورة
docker build --file ./Dockerfile -t ialacol .تشغيل الحاوية
export DEFAULT_MODEL_HG_REPO_ID= " TheBloke/orca_mini_3B-GGML "
export DEFAULT_MODEL_FILE= " orca-mini-3b.ggmlv3.q4_0.bin "
docker run --rm -it -p 8000:8000
-e DEFAULT_MODEL_HG_REPO_ID= $DEFAULT_MODEL_HG_REPO_ID
-e DEFAULT_MODEL_FILE= $DEFAULT_MODEL_FILE ialacol لتمكين تسريع GPU/CUDA ، تحتاج إلى استخدام صورة الحاوية المصممة ل GPU وإضافة متغير بيئة GPU_LAYERS . يتم تحديد GPU_LAYERS بحجم ذاكرة GPU. انظر العلاقات العامة/المناقشة في llama.cpp للعثور على أفضل قيمة.
deployment.image = ghcr.io/chenhunghan/ialacol-cuda11:latestdeployment.env.GPU_LAYERS هي الطبقة التي يجب إيقافها إلى GPU.deployment.image = ghcr.io/chenhunghan/ialacol-cuda12:latest latestdeployment.env.GPU_LAYERS هي الطبقة التي يجب إيقافها إلى GPU. يدعم llama و falcon و mpt و gpt_bigcode فقط CUDA.
helm install llama2-7b-chat-cuda12 ialacol/ialacol -f examples/values/llama2-7b-chat-cuda12.yamlينشر نموذج LLAMA2 7B مع 40 طبقة تفريغ إلى GPU. يتم تسريع الاستدلال بواسطة كودا 12.
helm install starcoderplus-guanaco-cuda12 ialacol/ialacol -f examples/values/starcoderplus-guanaco-cuda12.yamlينشر StarcoderPlus-Guanaco-GPT4-15B-V1.0 مع 40 طبقة تفريغ إلى GPU. يتم تسريع الاستدلال بواسطة كودا 12.
إذا رأيت CUDA driver version is insufficient for CUDA runtime version عند تقديم الطلب ، فمن المحتمل أن تستخدم برنامج تشغيل NVIDIA غير متوافق مع إصدار CUDA.
قم بترقية برنامج التشغيل يدويًا على العقدة (انظر هنا إذا كنت تستخدم CUDA11 + AMI). أو جرب نسخة مختلفة من CUDA.
لتمكين الدعم المعدني ، استخدم الصورة المعدنية ialacol-metal للمعادن.
deployment.image = ghcr.io/chenhunghan/ialacol-metal:latestعلى سبيل المثال
helm install llama2-7b-chat-metal ialacol/ialacol -f examples/values/llama2-7b-chat-metal.yaml.yamlلاستخدام GPTQ ، يجب عليك
deployment.image = ghcr.io/chenhunghan/ialacol-gptq:latestdeployment.env.MODEL_TYPE = gptqعلى سبيل المثال
helm install llama2-7b-chat-gptq ialacol/ialacol -f examples/values/llama2-7b-chat-gptq.yaml.yamlkubectl port-forward svc/llama2-7b-chat-gptq 8000:8000
openai -k " sk-fake " -b http://localhost:8000/v1 -vvvvv api chat_completions.create -m gptq_model-4bit-128g.safetensors -g user " Hello world! " يمكن استخدام ialacol كعميل Copilot لأن Copilot's Github هو API متطابق تقريبًا مثل API Openai.
ومع ذلك ، هناك القليل من الأشياء يجب أن تضع في اعتبارك:
يرسل عميل CoPilot موجه Lenthy ، لتضمين جميع السياق ذي الصلة لاستكمال الكود ، راجع Copilot-explorer ، والذي يعطي حمولة ثقيلة على الخادم ، إذا كنت تحاول تشغيل ialacol محليًا ، فإن OPT-IN TRUNCATE_PROMPT_LENGTH PECIATIONAL VARIENTING RUNCONTION ORNSTING من البداية لتقليل عبء العمل.
يرسل CoPilot طلبًا بالتوازي ، لزيادة الإنتاجية ، ربما تحتاج إلى قائمة انتظار مثل المدرج في المؤتمرات النصية.
بدء حالتين من Ialacol:
gh repo clone chenhunghan/ialacol && cd ialacol && python3 -m venv .venv && source .venv/bin/activate && python3 -m pip install -r requirements.txt
LOGGING_LEVEL= " DEBUG "
THREAD=2
DEFAULT_MODEL_HG_REPO_ID= " TheBloke/stablecode-completion-alpha-3b-4k-GGML "
DEFAULT_MODEL_FILE= " stablecode-completion-alpha-3b-4k.ggmlv1.q4_0.bin "
TRUNCATE_PROMPT_LENGTH=100 # optional
uvicorn main:app --host 0.0.0.0 --port 9998
uvicorn main:app --host 0.0.0.0 --port 9999ابدأ TIB ، مشيرًا إلى مثيلات Ialacol المنبع.
gh repo clone ialacol/text-inference-batcher && cd text-inference-batcher && npm install
UPSTREAMS= " http://localhost:9998,http://localhost:9999 " npm startتكوين VScode Github copilot لاستخدام TIB.
"github.copilot.advanced" : {
"debug.overrideEngine" : " stablecode-completion-alpha-3b-4k.ggmlv1.q4_0.bin " ,
"debug.testOverrideProxyUrl" : " http://localhost:8000 " ,
"debug.overrideProxyUrl" : " http://localhost:8000 "
} من المعروف أن LLMs حساسة للمعلمات ، فإن temperature الأعلى تؤدي إلى مزيد من "العشوائية" وبالتالي تصبح LLM أكثر "إبداعية" ، top_p و top_k أيضًا في "العشوائية"
إذا كنت ترغب في جعل LLM يكون مبدعًا.
curl -X POST
-H ' Content-Type: application/json '
-d ' { "messages": [{"role": "user", "content": "Tell me a story."}], "model": "llama-2-7b-chat.ggmlv3.q4_0.bin", "stream": false, "temperature": "2", "top_p": "1.0", "top_k": "0" } '
http://localhost:8000/v1/chat/completionsإذا كنت ترغب في جعل LLM يكون أكثر اتساقًا ونجم نفس النتيجة مع نفس المدخلات.
curl -X POST
-H ' Content-Type: application/json '
-d ' { "messages": [{"role": "user", "content": "Tell me a story."}], "model": "llama-2-7b-chat.ggmlv3.q4_0.bin", "stream": false, "temperature": "0.1", "top_p": "0.1", "top_k": "40" } '
http://localhost:8000/v1/chat/completionsstarcoder عبر ctransformers ، بما في ذلك:GET /models و POST /completions POST /embeddings مدعومة بنماذج apache-2.0 apache-2.0 مثل محولات الجملة و hkunlp /المدرب نشر نموذج الدردشة Llama 2 Meta من قبل TheBloke.
7B الدردشة
helm repo add ialacol https://chenhunghan.github.io/ialacol
helm repo update
helm install llama2-7b-chat ialacol/ialacol -f examples/values/llama2-7b-chat.yaml13B الدردشة
helm repo add ialacol https://chenhunghan.github.io/ialacol
helm repo update
helm install llama2-13b-chat ialacol/ialacol -f examples/values/llama2-13b-chat.yamlدردشة 70B
helm repo add ialacol https://chenhunghan.github.io/ialacol
helm repo update
helm install llama2-70b-chat ialacol/ialacol -f examples/values/llama2-70b-chat.yamlنشر نموذج Openllama 7b كمياً من قِبل Rustformers.
هذا نموذج أساسي ، من المحتمل أن يكون مفيدًا فقط لإكمال النص.
helm repo add ialacol https://chenhunghan.github.io/ialacol
helm repo update
helm install openllama-7b ialacol/ialacol -f examples/values/openllama-7b.yamlنشر نموذج Openllama 13B Open Tostruct Command بواسطة theBloke.
helm repo add ialacol https://chenhunghan.github.io/ialacol
helm repo update
helm install openllama-13b-instruct ialacol/ialacol -f examples/values/openllama-13b-instruct.yamlنشر نموذج MPT-7B من MOSAICML كمية من قبل الصدأ. هذا نموذج أساسي ، من المحتمل أن يكون مفيدًا فقط لإكمال النص.
helm repo add ialacol https://chenhunghan.github.io/ialacol
helm repo update
helm install mpt-7b ialacol/ialacol -f examples/values/mpt-7b.yamlنشر نموذج الدردشة MPT-30B من Mosaicml كمية من قبل TheBloke.
helm repo add ialacol https://chenhunghan.github.io/ialacol
helm repo update
helm install mpt-30b-chat ialacol/ialacol -f examples/values/mpt-30b-chat.yamlنشر نموذج Falcon 7B غير خاضع للرقابة كمية من قبل TheBloke.
helm repo add ialacol https://chenhunghan.github.io/ialacol
helm repo update
helm install falcon-7b ialacol/ialacol -f examples/values/falcon-7b.yamlنشر نموذج Falcon 40b غير خاضع للرقابة كمية من قبل TheBloke.
helm repo add ialacol https://chenhunghan.github.io/ialacol
helm repo update
helm install falcon-40b ialacol/ialacol -f examples/values/falcon-40b.yaml نشر نموذج starchat-beta كمية من قبل theBloke.
helm repo add starchat https://chenhunghan.github.io/ialacol
helm repo update
helm install starchat-beta ialacol/ialacol -f examples/values/starchat-beta.yaml نشر نموذج WizardCoder كمية من قبل theBloke.
helm repo add starchat https://chenhunghan.github.io/ialacol
helm repo update
helm install wizard-coder-15b ialacol/ialacol -f examples/values/wizard-coder-15b.yaml نشر طراز pythia-70m الخفيف الوزن مع 70 مليون فقط من المعلمة (حوالي 40 ميجابايت) كمية من قبل الصدأ.
helm repo add ialacol https://chenhunghan.github.io/ialacol
helm repo update
helm install pythia70m ialacol/ialacol -f examples/values/pythia-70m.yaml نشر نموذج RedPajama 3B
helm repo add ialacol https://chenhunghan.github.io/ialacol
helm repo update
helm install redpajama-3b ialacol/ialacol -f examples/values/redpajama-3b.yaml نشر نموذج stableLM 7B
helm repo add ialacol https://chenhunghan.github.io/ialacol
helm repo update
helm install stablelm-7b ialacol/ialacol -f examples/values/stablelm-7b.yamlpython3 -m venv .venv
source .venv/bin/activate
python3 -m pip install -r requirements.txt
pip freeze > requirements.txt