? Ser reescrito de Python a Rust/WebAssembly, vea los detalles #93
Iialacol (pronunciado "localai") es un reemplazo liviano para la API de OpenAI.
Es un envoltorio Ctransformers Ctransformers de OpenAI API que admite GGML/GPTQ con aceleración opcional de CUDA/metal.
IALACOL está inspirado en otros proyectos similares como Localai, PrivateGPT, Local.ai, Llama-CPP-Python, Closewai y MLC-LLM, con un enfoque específico en la implementación de Kubernetes.
Consulte los recibos a continuación para obtener instrucciones de implementaciones.
Y todos los LLM compatibles con Ctransformers.
ialacol no tiene una interfaz de usuario, sin embargo, es compatible con cualquier interfaz de usuario web que admite la API de OpenAI, por ejemplo, ChAT-UI después de que el PR #541 se fusione.
Suponiendo que ialacol se ejecute en el puerto 8000, puede configurar el chat-ui para usar zephyr-7b-beta.Q4_K_M.gguf servido por 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 ofrece soporte ciudadano de primera clase para Kubernetes, lo que significa que puede automatizar/configurar todo lo que se compara con la ejecución.
Para comenzar rápidamente con Iialacol en Kubernetes, siga los pasos a continuación:
helm repo add ialacol https://chenhunghan.github.io/ialacol
helm repo update
helm install llama-2-7b-chat ialacol/ialacolPor defecto, implementará el modelo de chat Llama 2 de Meta Meta cuantizado por TheBloke.
Hacia adelante
kubectl port-forward svc/llama-2-7b-chat 8000:8000 Chat con el modelo predeterminado llama-2-7b-chat.ggmlv3.q4_0.bin usando 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 Alternativamente, utilizando la biblioteca de clientes de OpenAI (consulte más ejemplos en la carpeta 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! "Toda la configuración se realiza a través de la variable ambiental.
| Parámetro | Descripción | Por defecto | Ejemplo |
|---|---|---|---|
DEFAULT_MODEL_HG_REPO_ID | La identificación de repose de la cara abrazada para descargar el modelo | None | TheBloke/orca_mini_3B-GGML |
DEFAULT_MODEL_HG_REPO_REVISION | La revisión de la repositorio de la cara abrazada | main | gptq-4bit-32g-actorder_True |
DEFAULT_MODEL_FILE | El nombre del archivo para descargar desde el repositorio, opcional para los modelos GPTQ | None | orca-mini-3b.ggmlv3.q4_0.bin |
MODE_TYPE | Tipo de modelo para anular la detección de tipo de modelo automático | None | gptq , gpt_bigcode , llama , mpt , replit , falcon , gpt_neox gptj |
LOGGING_LEVEL | Nivel de registro | INFO | DEBUG |
TOP_K | Top-K para muestreo. | 40 | Enteros |
TOP_P | Top-P para muestreo. | 1.0 | Carrozas |
REPETITION_PENALTY | RP para muestreo. | 1.1 | Carrozas |
LAST_N_TOKENS | Las últimas n fichas para la penalización de repetición. | 1.1 | Enteros |
SEED | La semilla para el muestreo. | -1 | Enteros |
BATCH_SIZE | El tamaño de lote para evaluar tokens, solo para modelos GGGR/GGML | 8 | Enteros |
THREADS | Número de hilo anular la detección automática por CPU/2, establecido 1 para modelos GPTQ | Auto | Enteros |
MAX_TOKENS | El número máximo de token para generar | 512 | Enteros |
STOP | El token para detener la generación | None | `< |
CONTEXT_LENGTH | Anular la longitud de contexto de detección automática | 512 | Enteros |
GPU_LAYERS | El número de capas para la carga fuera de la GPU | 0 | Enteros |
TRUNCATE_PROMPT_LENGTH | Truncar el mensaje si se establece | 0 | Enteros |
Parámetros de muestreo que incluyen TOP_K , TOP_P , REPETITION_PENALTY , LAST_N_TOKENS , SEED , MAX_TOKENS , STOP se puede anular por solicitud a través del cuerpo de solicitud, por ejemplo:
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 Usará temperature=2 , top_p=1 y top_k=0 para esta solicitud.
Hay una imagen alojada en GHCR.io (alternativamente CUDA11, CUDA12, Metal, Variantes 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:latestPara desarrolladores/colaboradores
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 9999Imagen de construcción
docker build --file ./Dockerfile -t ialacol .Ejecutar contenedor
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 Para habilitar la aceleración GPU/CUDA, debe usar la imagen del contenedor creada para GPU y agregar la variable de entorno GPU_LAYERS . GPU_LAYERS se determina por el tamaño de la memoria de su GPU. Vea el PR/Discussion en Llama.cpp para encontrar el mejor valor.
deployment.image = ghcr.io/chenhunghan/ialacol-cuda11:latestdeployment.env.GPU_LAYERS es la capa de carga para la carga a GPU.deployment.image = ghcr.io/chenhunghan/ialacol-cuda12:latest lateestdeployment.env.GPU_LAYERS es la capa de carga para la carga a GPU. Solo llama , falcon , mpt y gpt_bigcode (StarCoder/Starchat) soportan CUDA.
helm install llama2-7b-chat-cuda12 ialacol/ialacol -f examples/values/llama2-7b-chat-cuda12.yamlImplementa el modelo LLAMA2 7B con 40 capas de descarga de GPU. La inferencia se acelera por CUDA 12.
helm install starcoderplus-guanaco-cuda12 ialacol/ialacol -f examples/values/starcoderplus-guanaco-cuda12.yamlDespliega el modelo StarCoderPlus-Guanaco-GPT4-15B-V1.0 con 40 capas de descarga de GPU. La inferencia se acelera por CUDA 12.
Si ve que CUDA driver version is insufficient for CUDA runtime version al realizar la solicitud, es probable que esté utilizando un controlador NVIDIA que no sea compatible con la versión CUDA.
Actualice el controlador manualmente en el nodo (vea aquí si está utilizando CUDA11 + AMI). O pruebe una versión diferente de Cuda.
Para habilitar el soporte de metal, use la imagen ialacol-metal construida para metal.
deployment.image = ghcr.io/chenhunghan/ialacol-metal:latestPor ejemplo
helm install llama2-7b-chat-metal ialacol/ialacol -f examples/values/llama2-7b-chat-metal.yaml.yamlPara usar GPTQ, debes
deployment.image = ghcr.io/chenhunghan/ialacol-gptq:latestdeployment.env.MODEL_TYPE = gptqPor ejemplo
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 se puede usar como cliente de copiloto, ya que el copiloto de GitHub es una API casi idéntica como API de finalización de OpenAI.
Sin embargo, pocas cosas deben tener en cuenta:
Copilot Client envía un aviso de Lenthy, para incluir todo el contexto relacionado para su finalización, consulte Copilot-Explorer, que proporciona una carga pesada en el servidor, si está intentando ejecutar ialacol localmente, opte con TRUNCATE_PROMPT_LENGTH Variable ambiental para truncar el indicador desde el comienzo para reducir la carga de trabajo.
Copilot envía una solicitud en paralelo, para aumentar el rendimiento, probablemente necesite una cola como el lote de inferencia de texto.
Comience dos instancias de 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 9999Comience TIB, señalando instancias aguas arriba de ialacol.
gh repo clone ialacol/text-inference-batcher && cd text-inference-batcher && npm install
UPSTREAMS= " http://localhost:9998,http://localhost:9999 " npm startConfigurar el copiloto de VSCode GitHub para usar 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 "
} Se sabe que los LLM son sensibles a los parámetros, la temperature más alta conduce a más "aleatoriedad", por lo tanto, LLM se vuelve más "creativa", top_p y top_k también contribuyen a la "aleatoriedad"
Si quieres hacer que LLM sea creativo.
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/completionsSi desea que LLM sea más consistente y genere el mismo resultado con la misma entrada.
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 a través de Ctransformers, que incluye:GET /models y POST /completions POST /embeddings respaldadas por Huggingface Apache-2.0 Incrustación de modelos como transformadores de oraciones y HKUNLP /instructor Implementar el modelo de chat de Llama 2 de Meta cuantizado por TheBloke.
Chat 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.yamlChat de 13b
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.yamlChat 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.yamlImplemente el modelo Openllama 7B cuantizado por Rustformers.
Este es un modelo base, probablemente solo útil para la finalización del texto.
helm repo add ialacol https://chenhunghan.github.io/ialacol
helm repo update
helm install openllama-7b ialacol/ialacol -f examples/values/openllama-7b.yamlImplemente Openllama 13B Open Instruir Model cuantizado por 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.yamlImplemente el modelo MPT-7B de MOSAICML cuantizado por Rustformers. Este es un modelo base, probablemente solo útil para la finalización del texto.
helm repo add ialacol https://chenhunghan.github.io/ialacol
helm repo update
helm install mpt-7b ialacol/ialacol -f examples/values/mpt-7b.yamlImplemente el modelo de chat MPT-30B de MOSAICML cuantizado por 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.yamlImplemente el modelo Falcon 7B sin censura cuantificado por TheBloke.
helm repo add ialacol https://chenhunghan.github.io/ialacol
helm repo update
helm install falcon-7b ialacol/ialacol -f examples/values/falcon-7b.yamlImplemente el modelo Falcon 40B sin censura cuantificado por 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 Implemente el modelo starchat-beta cuantizado por 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 Implementar el modelo WizardCoder cuantizado por 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 Implemente el modelo Light-Weight pythia-70m con solo 70 millones de parámetros (~ 40 MB) cuantificados por los formadores de ydtor.
helm repo add ialacol https://chenhunghan.github.io/ialacol
helm repo update
helm install pythia70m ialacol/ialacol -f examples/values/pythia-70m.yaml Implementar modelo 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 Implementar modelo 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