?被從Python重寫為Rust/WebAssembly,請參閱詳細信息#93
ialacol(發音為“ Localai”)是對OpenAI API的輕巧替代品。
它是一款兼容API兼容的包裝器Ctransformers,具有可選的CUDA/金屬加速度的GGML/GPTQ。
Ialacol的靈感來自其他類似項目,例如Localai,Privategpt,Local.ai,Llama-Cpp-Python,lockai和MLC-LLM,並特別關注Kubernetes部署。
有關部署說明,請參見下面的收據。
以及所有由Ctransformers支持的LLM。
ialacol沒有UI,但是它與支持OpenAI API的任何Web UI兼容,例如PR#541合併後的CHAT-UI。
假設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的一流公民支持,這意味著您可以自動化/配置所有內容與不用的運行。
要迅速開始使用Kubernetes上的Ialacol,請按照以下步驟操作:
helm repo add ialacol https://chenhunghan.github.io/ialacol
helm repo update
helm install llama-2-7b-chat ialacol/ialacol默認情況下,它將部署由TheBloke量化的Meta的Llama 2聊天模型。
港口
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 | 擁抱的面部回購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 | 用於採樣的頂部。 | 40 | 整數 |
TOP_P | 抽樣的頂部P。 | 1.0 | 浮子 |
REPETITION_PENALTY | RP用於採樣。 | 1.1 | 浮子 |
LAST_N_TOKENS | 重複罰款的最後一個標記。 | 1.1 | 整數 |
SEED | 採樣的種子。 | -1 | 整數 |
BATCH_SIZE | 用於評估令牌的批次大小,僅用於GGGUF/GGML模型 | 8 | 整數 |
THREADS | 線程號覆蓋自動檢測到CPU/2,為GPTQ型號設置1 | 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,金屬,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:latestdeployment.env.GPU_LAYERS是將加載到GPU的層。只有llama , falcon , mpt和gpt_bigcode (Starcoder/Starchat)支持CUDA。
helm install llama2-7b-chat-cuda12 ialacol/ialacol -f examples/values/llama2-7b-chat-cuda12.yaml部署Llama2 7b型號,其中有40層卸載到GPU。 CUDA 12加速了推斷。
helm install starcoderplus-guanaco-cuda12 ialacol/ialacol -f examples/values/starcoderplus-guanaco-cuda12.yaml將STARCODERPLUS-GUANACO-GPT4-15B-V1.0模型部署為40層卸載到GPU。 CUDA 12加速了推斷。
如果您看到CUDA driver version is insufficient for CUDA runtime version ,那麼您可能會使用與CUDA版本不兼容的NVIDIA驅動程序。
在節點上手動升級驅動程序(如果您使用的是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可以用作副駕駛客戶端,因為Github的副駕駛幾乎與OpenAI完成API相同。
但是,很少有事情需要記住:
Copilot客戶端發送Lenthy提示,以包括代碼完成的所有相關上下文,請參見Copilot-explorer,如果您試圖本地運行ialacol ,則可以在服務器上給予重負載,請選擇TRUNCATE_PROMPT_LENGTH環境變量以從一開始就將提示截斷以減少工作量。
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 "
}眾所周知,LLM對參數很敏感,較高的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模型類型,包括:GET /models和POST /completions POST /embeddings支持Forness Apache-2.0嵌入模型,例如句子變形金剛和Hkunlp /ersenter 部署由TheBloke量化的Meta的Llama 2聊天模型。
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.yaml70B聊天
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部署由RustFormers量化的OpenLlama 7B模型。
這是一個基本模型,可能僅對文本完成有用。
helm repo add ialacol https://chenhunghan.github.io/ialacol
helm repo update
helm install openllama-7b ialacol/ialacol -f examples/values/openllama-7b.yaml部署TheBloke量化的OpenLlama 13B Open指示模型。
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部署MosaiCML的MPT-7B模型由RustFormer量化。這是一個基本模型,可能僅對文本完成有用。
helm repo add ialacol https://chenhunghan.github.io/ialacol
helm repo update
helm install mpt-7b ialacol/ialacol -f examples/values/mpt-7b.yaml部署Mosaicml的MPT-30B聊天模型由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部署由TheBloke量化的未經審查的Falcon 7B模型。
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部署由TheBloke量化的starchat-beta模型。
helm repo add starchat https://chenhunghan.github.io/ialacol
helm repo update
helm install starchat-beta ialacol/ialacol -f examples/values/starchat-beta.yaml部署由TheBloke量化的WizardCoder模型。
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部署僅使用RustFormers量化的700萬參數(〜40MB)的輕量pythia-70m型號。
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