? PythonからRust/WebAssemblyに書き直されると、詳細#93を参照してください
Ialacol(「Localai」と発音)は、Openai APIの軽量ドロップインの代替品です。
これは、オプションのCUDA/金属加速でGGML/GPTQをサポートするOpenAI API互換ラッパーCTRANSFORTERです。
Ialacolは、Localai、Privategpt、Local.ai、Llama-Cpp-Python、closedai、MLC-llmなどの他の同様のプロジェクトに触発されており、Kubernetesの展開に特に焦点を当てています。
展開の指示については、以下の領収書を参照してください。
CtransformersによってサポートされるすべてのLLM。
ialacolはUIがありませんが、PR#541が合併した後のChat-UIなど、OpenAI APIをサポートするWeb UIと互換性があります。
ポート8000で実行されているialacol仮定すると、 ialacolが提供するzephyr-7b-beta.Q4_K_M.ggufを使用するようにChat-UIを構成できます。
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のファーストクラスの市民サポートを提供しています。つまり、Runingと比較してすべてを自動化/構成できます。
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 | モデルをダウンロードするための抱きしめるフェイスリポジトリ | None | TheBloke/orca_mini_3B-GGML |
DEFAULT_MODEL_HG_REPO_REVISION | 抱きしめるフェイスレポの改訂 | main | gptq-4bit-32g-actorder_True |
DEFAULT_MODEL_FILE | Repoからダウンロードするファイル名、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 | サンプリング用のTOP-K。 | 40 | 整数 |
TOP_P | サンプリング用のトップP。 | 1.0 | フロート |
REPETITION_PENALTY | サンプリング用のRP。 | 1.1 | フロート |
LAST_N_TOKENS | 繰り返しペナルティのための最後のNトークン。 | 1.1 | 整数 |
SEED | サンプリング用の種。 | -1 | 整数 |
BATCH_SIZE | GGUF/GGMLモデルのみのトークンを評価するためのバッチサイズ | 8 | 整数 |
THREADS | スレッド番号オーバーライドCPU/2で自動検出をオーバーライドし、 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 ialacolGPU/CUDAアクセラレーションを有効にするには、GPU用に構築されたコンテナ画像を使用し、 GPU_LAYERS環境変数を追加する必要があります。 GPU_LAYERS 、GPUメモリのサイズによって決定されます。最適な値を見つけるには、llama.cppのPR/ディスカッションを参照してください。
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.yamlLlama2 7bモデルを展開し、40レイヤーがGPUにオフロードをオフにします。推論はCUDA 12によって加速されます。
helm install starcoderplus-guanaco-cuda12 ialacol/ialacol -f examples/values/starcoderplus-guanaco-cuda12.yamlStarCoderPlus-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.yamlGPTQを使用するには、必要です
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! " Githubの副操縦士はOpenai完了APIとほぼ同じAPIであるため、 ialacol Copilotクライアントとして使用できます。
ただし、留意する必要があることはほとんどありません。
Copilotクライアントは、コードの完了のために関連するすべてのコンテキストを含めるためにレンティープロンプトを送信します。Copilot-Explorerを参照してください。サーバーに重い負荷をかけます。Ialacol ialacolローカルで実行しようとする場合は、Optin TRUNCATE_PROMPT_LENGTH Environmental Variableが最初から作業負荷を減らすためにトランコをかけます。
Copilotはリクエストを並行して送信し、スループットを増やすために、おそらくテキスト関心バッチャーのようなキューが必要です。
IALACOLの2つのインスタンスを開始します。
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を開始します。
gh repo clone ialacol/text-inference-batcher && cd text-inference-batcher && npm install
UPSTREAMS= " http://localhost:9998,http://localhost:9999 " npm startvscode 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/completionsLLMをより一貫性にし、同じ入力で同じ結果を生成したい場合。
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を含むOpenai APIのレストを模倣しますPOST /embeddingsモデルの埋め込みモデル /hkunlp /インストラクター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.yamlRustformersによって量子化された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.yamlOpenllama 13B Open Instruct ModelがQultized by 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.yamlRustformersによって量子化されたMOSAICMLのMPT-7Bモデルを展開します。これはベースモデルであり、テキストの完了にのみ役立つ可能性があります。
helm repo add ialacol https://chenhunghan.github.io/ialacol
helm repo update
helm install mpt-7b ialacol/ialacol -f examples/values/mpt-7b.yamlTheBlokeによって量子化されたMOSAICMLのMPT-30Bチャットモデルを展開します。
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モデルを展開します。
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モデルを展開します。
helm repo add ialacol https://chenhunghan.github.io/ialacol
helm repo update
helm install falcon-40b ialacol/ialacol -f examples/values/falcon-40b.yaml blokeによって量子化された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 blokeによって量子化された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.yamlRustformersによって量子化された70百万パラメーター(〜40MB)のみのLight-Weight pythia-70mモデルを展開します。
helm repo add ialacol https://chenhunghan.github.io/ialacol
helm repo update
helm install pythia70m ialacol/ialacol -f examples/values/pythia-70m.yamlRedPajama 3Bモデルを展開します
helm repo add ialacol https://chenhunghan.github.io/ialacol
helm repo update
helm install redpajama-3b ialacol/ialacol -f examples/values/redpajama-3b.yamlstableLM 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