? Переписать от Python в Rust/Webassembly, см. Подробности № 93
Ialacol (произносится «localai»)-это легкая замена для API Openai.
Это CTRANSFORMERS, совместимые с API OpenAI, поддерживающие GGML/GPTQ с дополнительным ускорением CUDA/METAL.
Ialacol вдохновлен другими аналогичными проектами, такими как Localai, Privategpt, Local.ai, Llama-Cpp-Python, CloseAI и MLC-LLM, с особым акцентом на развертывание Kubernetes.
См. Квитанции ниже для инструкций по развертыванию.
И все LLMS, поддерживаемые Ctransformers.
ialacol нет пользовательского интерфейса, однако он совместим с любым веб-интерфейсом, который поддерживает API OpenAI, например, CHAT-UI после объединения PR #541.
Предполагая, что ialacol работает в порту 8000, вы можете настроить чат-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 предлагает поддержку Citizen первого класса для Kubernetes, что означает, что вы можете автоматизировать/настроить все, что по сравнению с рутинной.
Чтобы быстро начать с Ialacol на Kubernetes, выполните следующие шаги:
helm repo add ialacol https://chenhunghan.github.io/ialacol
helm repo update
helm install llama-2-7b-chat ialacol/ialacolПо умолчанию он будет развернуть модель чата Meta Llama 2, квантованную 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 | The Hugging Face 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 | Top-K для отбора проб. | 40 | Целые числа |
TOP_P | Top-P для отбора проб. | 1.0 | Поплавки |
REPETITION_PENALTY | RP для отбора проб. | 1.1 | Поплавки |
LAST_N_TOKENS | Последние n токенов за наказание за повторение. | 1.1 | Целые числа |
SEED | Семя для отбора проб. | -1 | Целые числа |
BATCH_SIZE | Размер партии для оценки токенов, только для моделей GGUF/GGML | 8 | Целые числа |
THREADS | Номер потока переопределение автоматического обнаружения с помощью ЦП/2, установите 1 для моделей GPTQ | Auto | Целые числа |
MAX_TOKENS | Максимальное количество токена для создания | 512 | Целые числа |
STOP | Знак, чтобы остановить поколение | None | `< |
CONTEXT_LENGTH | Переопределить длину контекста Auto Detect | 512 | Целые числа |
GPU_LAYERS | Количество слоев для отключения нагрузки на графический процессор | 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. См. Обсуждение PR/Llama.cpp, чтобы найти наилучшую ценность.
deployment.image = ghcr.io/chenhunghan/ialacol-cuda11:latestdeployment.env.GPU_LAYERS - это слой, чтобы выкинуть погрузку в графический процессор.deployment.image = ghcr.io/chenhunghan/ialacol-cuda12:latestdeployment.env.GPU_LAYERS - это слой, чтобы выкинуть погрузку в графический процессор. Только 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 слоями разгрузки на графический процессор. Вывод ускоряется CUDA 12.
helm install starcoderplus-guanaco-cuda12 ialacol/ialacol -f examples/values/starcoderplus-guanaco-cuda12.yamlРазвертывает модель Starcoderplus-guanaco-GPT4-15B-V1.0 с 40 слоями разгрузки на графический процессор. Вывод ускоряется CUDA 12.
Если вы видите, CUDA driver version is insufficient for CUDA runtime version при выполнении запроса, вы, вероятно, используете драйвер NVIDIA, который не совместим с версией CUDA.
Обновите драйвер вручную на узле (см. Здесь, если вы используете CUD11 + 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, так как копилот Github почти идентичен API в качестве API Openai API.
Тем не менее, мало что нужно помнить:
Copilot Client отправляет подсказку 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 "
} Известно, что 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 /инструктор Deploy Meta's LlaMa 2 чат модель квадратизирована 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.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.yamlDeploy 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 Instruct Model Quantized 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.yamlDeploy Mosaicml MPT-7B Модель квантована с Rustformers. Это базовая модель, вероятно, полезная только для завершения текста.
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 без цензуры кровяна по публо.
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 без цензуры кровь к Bloke.
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