? Weitere Informationen finden Sie von Python zu Rost/WebAssembly, siehe Details #93
Ialacol (ausgesprochen "localai") ist ein leichter Drop-In-Ersatz für OpenAI-API.
Es handelt sich um eine OpenAI-API-kompatible Wrapper-Ctransformer, die GGML/GPTQ mit optionaler CUDA/Metall-Beschleunigung unterstützt.
Ialacol ist von anderen ähnlichen Projekten wie Localai, PrivateGPT, Local.ai, Lama-CPP-Python, Closedai und MLC-LlM inspiriert, wobei der Schwerpunkt auf Kubernetes-Bereitstellungen liegt.
Anweisungen der Bereitstellungen finden Sie unten die Quittungen.
Und alle LLMs, die von Ctransformers unterstützt werden.
ialacol hat keine Benutzeroberfläche, ist jedoch mit einer Web-Benutzeroberfläche kompatibel, die OpenAI-API unterstützt, beispielsweise Chat-UI nach der Fusion PR #541.
Unter der Annahme, dass ialacol in Port 8000 ausgeführt wird, können Sie Chat-UI so konfigurieren, dass zephyr-7b-beta.Q4_K_M.gguf von ialacol serviert wird.
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 bietet eine erstklassige Bürgerunterstützung für Kubernetes an, was bedeutet, dass Sie alles automatisieren/konfigurieren können, verglichen mit dem Laufen ohne.
Um schnell mit Ialacol auf Kubernetes zu beginnen, befolgen Sie die folgenden Schritte:
helm repo add ialacol https://chenhunghan.github.io/ialacol
helm repo update
helm install llama-2-7b-chat ialacol/ialacolStandardmäßig werden das LLAMA 2 -Chat -Modell von Meta bereitgestellt, das von TheBloke quantisiert wurde.
Port-Forward
kubectl port-forward svc/llama-2-7b-chat 8000:8000 Chat mit dem Standardmodell llama-2-7b-chat.ggmlv3.q4_0.bin mit 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 Alternativ die OpenAI -Client -Bibliothek (weitere Beispiele finden Sie in den examples/openai -Ordner).
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! "Die gesamte Konfiguration erfolgt über Umgebungsvariablen.
| Parameter | Beschreibung | Standard | Beispiel |
|---|---|---|---|
DEFAULT_MODEL_HG_REPO_ID | Das Umarmungsgesichts -Repo -ID zum Herunterladen des Modells | None | TheBloke/orca_mini_3B-GGML |
DEFAULT_MODEL_HG_REPO_REVISION | Die Umarmung der Repo -Revision des Gesichts | main | gptq-4bit-32g-actorder_True |
DEFAULT_MODEL_FILE | Der Dateiname zum Herunterladen aus dem Repo, optional für GPTQ -Modelle | None | orca-mini-3b.ggmlv3.q4_0.bin |
MODE_TYPE | Modelltyp zum Überschreiben der Erkennung des automatischen Modelltyps | None | gptq , gpt_bigcode , llama , mpt , replit , falcon , gpt_neox gptj |
LOGGING_LEVEL | Protokollierungsstufe | INFO | DEBUG |
TOP_K | Top-K für die Probenahme. | 40 | Ganzzahlen |
TOP_P | Top-P für die Probenahme. | 1.0 | Schwimmt |
REPETITION_PENALTY | RP für die Probenahme. | 1.1 | Schwimmt |
LAST_N_TOKENS | Die letzten N -Token für die Wiederholungsstrafe. | 1.1 | Ganzzahlen |
SEED | Der Samen für die Probenahme. | -1 | Ganzzahlen |
BATCH_SIZE | Die Chargengröße für die Bewertung von Token, nur für GGUF/GGML -Modelle | 8 | Ganzzahlen |
THREADS | Thread -Nummer überschreiben automatisch nach CPU/2 und setzen Sie 1 für GPTQ -Modelle ein | Auto | Ganzzahlen |
MAX_TOKENS | Die maximale Anzahl von Token, die generiert werden sollen | 512 | Ganzzahlen |
STOP | Das Token, um die Generation zu stoppen | None | `< |
CONTEXT_LENGTH | Überschreiben Sie die automatische Erkennung der Kontextlänge | 512 | Ganzzahlen |
GPU_LAYERS | Die Anzahl der Schichten, die in die GPU ausgelastet werden | 0 | Ganzzahlen |
TRUNCATE_PROMPT_LENGTH | Schneiden Sie die Eingabeaufforderung ab, wenn Sie festgelegt sind | 0 | Ganzzahlen |
Sampling -Parameter einschließlich TOP_K , TOP_P , REPETITION_PENALTY , LAST_N_TOKENS , SEED , MAX_TOKENS , STOP können per Anforderung über Anforderungskörper überschrieben werden, zum Beispiel:
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 Verwendet temperature=2 , top_p=1 und top_k=0 für diese Anforderung.
Es gibt ein Bild, das auf Ghcr.io gehostet wird (alternativ CUDA11, CUDA12, Metall, GPTQ -Varianten).
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:latestFür Entwickler/Mitwirkende
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 9999Bild erstellen
docker build --file ./Dockerfile -t ialacol .Behälter ausführen
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 Um die GPU/CUDA -Beschleunigung zu aktivieren, müssen Sie das für GPU erstellte Containerbild verwenden und die Umgebungsvariable GPU_LAYERS hinzufügen. GPU_LAYERS wird durch die Größe Ihres GPU -Speichers bestimmt. Siehe die PR/Diskussion in lama.cpp, um den besten Wert zu finden.
deployment.image = ghcr.io/chenhunghan/ialacol-cuda11:latestdeployment.env.GPU_LAYERS ist die Schicht zum Auslasten in die GPU.deployment.image = ghcr.io/chenhunghan/ialacol-cuda12:latestdeployment.env.GPU_LAYERS ist die Schicht zum Auslasten in die GPU. Nur llama , falcon , mpt und gpt_bigcode (STARCODER/Starchat) unterstützen CUDA.
helm install llama2-7b-chat-cuda12 ialacol/ialacol -f examples/values/llama2-7b-chat-cuda12.yamlBereitet ein LLAMA2 7B -Modell mit 40 Schichten für die GPU ein. Die Schlussfolgerung wird durch CUDA 12 beschleunigt.
helm install starcoderplus-guanaco-cuda12 ialacol/ialacol -f examples/values/starcoderplus-guanaco-cuda12.yamlStellen Sie das StarCoderplus-Guanaco-GPT4-15b-V1.0-Modell mit 40 Schichten aus, die an GPU ausgeladen wurden. Die Schlussfolgerung wird durch CUDA 12 beschleunigt.
Wenn Sie bei CUDA driver version is insufficient for CUDA runtime version , verwenden Sie wahrscheinlich einen NVIDIA -Treiber, der nicht mit der CUDA -Version kompatibel ist.
Aktualisieren Sie den Treiber manuell auf dem Knoten (siehe hier, wenn Sie CUDA11 + AMI verwenden). Oder probieren Sie eine andere Version von CUDA.
Um die Metallträger zu ermöglichen, verwenden Sie das Bild ialacol-metal das für Metall gebaut wurde.
deployment.image = ghcr.io/chenhunghan/ialacol-metal:latestZum Beispiel
helm install llama2-7b-chat-metal ialacol/ialacol -f examples/values/llama2-7b-chat-metal.yaml.yamlUm GPTQ zu verwenden, müssen Sie
deployment.image = ghcr.io/chenhunghan/ialacol-gptq:latestdeployment.env.MODEL_TYPE = gptqZum Beispiel
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 kann als Copilot -Client verwendet werden, da Githubs Copilot nahezu identische API als OpenAI -Fertigstellung API ist.
Es müssen jedoch nur wenige Dinge berücksichtigen:
Der Copilot-Client sendet eine Lenthy-Eingabeaufforderung, um den gesamten zugehörigen Kontext für die Codebehandlung einzuschließen, siehe TRUNCATE_PROMPT_LENGTH -Explorer, die auf dem Server eine starke ialacol anbieten.
Copilot sendet parallel Anfrage, um den Durchsatz zu erhöhen. Sie benötigen wahrscheinlich eine Warteschlange wie Text-Inferenz-Batcher.
Beginnen Sie zwei Fälle von 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 9999Beginnen Sie TIB und zeigen auf stromaufwärts gelegene Ialacol -Instanzen.
gh repo clone ialacol/text-inference-batcher && cd text-inference-batcher && npm install
UPSTREAMS= " http://localhost:9998,http://localhost:9999 " npm startKonfigurieren Sie VSCODE Github Copilot, um TIB zu verwenden.
"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 sind bekanntermaßen empfindlich gegenüber Parametern. Die höhere temperature führt zu mehr "Zufälligkeit". Daher wird LLM "kreativer", top_p und top_k auch zur "Zufälligkeit" beitragen.
Wenn Sie LLM kreativ machen möchten.
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/completionsWenn Sie LLM dazu bringen möchten, konsistenter zu sein und das gleiche Ergebnis mit demselben Eingang zu generieren.
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 -Modelltyp über Ctransformers, einschließlich:GET /models und POST /completions POST /embeddings die durch Huggingface-apache-2.0-Einbettungsmodelle wie Satztransformatoren und HKunlp /Ausbilder einbettet werden Stellen Sie das Lama 2 -Chat -Modell von Meta ein, das von TheBloke quantisiert wurde.
7b Chat
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 Chat
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 Chat
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.yamlStellen Sie das von Rostformers quantisierte Openllama 7B -Modell ein.
Dies ist ein Basismodell, das wahrscheinlich nur für die Abschluss des Textes nützlich ist.
helm repo add ialacol https://chenhunghan.github.io/ialacol
helm repo update
helm install openllama-7b ialacol/ialacol -f examples/values/openllama-7b.yamlStellen Sie Openllama 13b Open -Anweisungsmodell ein, das von TheBloke quantisiert wurde.
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.yamlBereiten Sie das MPT-7B-Modell von Mosaicml ein, der von Rustformers quantisiert wurde. Dies ist ein Basismodell, das wahrscheinlich nur für die Abschluss des Textes nützlich ist.
helm repo add ialacol https://chenhunghan.github.io/ialacol
helm repo update
helm install mpt-7b ialacol/ialacol -f examples/values/mpt-7b.yamlBereitstellen Sie das MPT-30B-Chat-Modell von Mosaicml ein, das von TheBloke quantisiert wurde.
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.yamlBereitstellen Sie das unzensierte Falcon 7B -Modell ein, das durch den Blok quantisiert wurde.
helm repo add ialacol https://chenhunghan.github.io/ialacol
helm repo update
helm install falcon-7b ialacol/ialacol -f examples/values/falcon-7b.yamlBereitstellen Sie das unzensierte Falcon 40B -Modell ein, das durch den Blok quantisiert wurde.
helm repo add ialacol https://chenhunghan.github.io/ialacol
helm repo update
helm install falcon-40b ialacol/ialacol -f examples/values/falcon-40b.yaml Bereiten Sie starchat-beta Modell ein, das durch den Blok quantisiert wurde.
helm repo add starchat https://chenhunghan.github.io/ialacol
helm repo update
helm install starchat-beta ialacol/ialacol -f examples/values/starchat-beta.yaml Bereitstellen Sie das WizardCoder -Modell ein, das durch den Blok quantisiert wurde.
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 Leichte pythia-70m -Modell mit nur 70 Millionen Paramtern (~ 40 MB) einsetzen, die von Rostformers quantisiert wurden.
helm repo add ialacol https://chenhunghan.github.io/ialacol
helm repo update
helm install pythia70m ialacol/ialacol -f examples/values/pythia-70m.yaml Bereitstellen Sie RedPajama 3B -Modell ein
helm repo add ialacol https://chenhunghan.github.io/ialacol
helm repo update
helm install redpajama-3b ialacol/ialacol -f examples/values/redpajama-3b.yaml Stellen Sie stableLM 7B -Modell ein
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