- ถูกเขียนใหม่จาก Python ถึง Rust/WebAssembly ดูรายละเอียด #93
ialacol (ออกเสียงว่า "localai") เป็นการแทนที่แบบหยดน้ำหนักเบาสำหรับ OpenAI API
มันเป็น ctransformers ctransformers ที่รองรับ OpenAI API ที่รองรับ GGML/GPTQ พร้อมการเร่งความเร็ว CUDA/โลหะเสริม
ialacol ได้รับแรงบันดาลใจจากโครงการอื่น ๆ ที่คล้ายคลึงกันเช่น Localai, Privatept, local.ai, llama-cpp-python, clostai และ MLC-LLM โดยมุ่งเน้นเฉพาะการปรับใช้ Kubernetes
ดูใบเสร็จรับเงินด้านล่างสำหรับคำแนะนำในการปรับใช้
และ LLM ทั้งหมดที่สนับสนุนโดย CTransformers
ialacol ไม่มี UI แต่มันเข้ากันได้กับเว็บ UI ใด ๆ ที่รองรับ OpenAI API เช่น ChAT-UI หลังจากการรวม PR #541
สมมติว่า 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 ซึ่งหมายความว่าคุณสามารถกำหนด/กำหนดค่าทุกอย่างได้โดยอัตโนมัติเปรียบเทียบกับการรันโดยไม่ต้อง
หากต้องการเริ่มต้นอย่างรวดเร็วด้วย ialacol บน Kubernetes ให้ทำตามขั้นตอนด้านล่าง:
helm repo add ialacol https://chenhunghan.github.io/ialacol
helm repo update
helm install llama-2-7b-chat ialacol/ialacolโดยค่าเริ่มต้นมันจะปรับใช้โมเดลแชท Llama 2 ของ Meta ปริมาณโดย 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 | ID repo hugging face เพื่อดาวน์โหลดโมเดล | None | TheBloke/orca_mini_3B-GGML |
DEFAULT_MODEL_HG_REPO_REVISION | การแก้ไข repo ใบหน้ากอด | 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 | Top-P สำหรับการสุ่มตัวอย่าง | 1.0 | ลอย |
REPETITION_PENALTY | RP สำหรับการสุ่มตัวอย่าง | 1.1 | ลอย |
LAST_N_TOKENS | โทเค็น N สุดท้ายสำหรับการลงโทษซ้ำ | 1.1 | จำนวนเต็ม |
SEED | เมล็ดพันธุ์สำหรับการสุ่มตัวอย่าง | -1 | จำนวนเต็ม |
BATCH_SIZE | ขนาดแบทช์สำหรับการประเมินโทเค็นเฉพาะสำหรับรุ่น GGUF/GGML | 8 | จำนวนเต็ม |
THREADS | หมายเลขเธรด Override Auto Detect โดย CPU/2 ตั้งค่า 1 สำหรับรุ่น GPTQ | 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 image = ghcr.io/chenhunghan/ialacol-cuda11:latestdeployment.env.GPU_LAYERS เป็นเลเยอร์ที่จะปิดการโหลดไปยัง GPUdeployment.image 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 เลเยอร์ Offloadind เป็น GPU การอนุมานถูกเร่งโดย CUDA 12
helm install starcoderplus-guanaco-cuda12 ialacol/ialacol -f examples/values/starcoderplus-guanaco-cuda12.yamlปรับใช้ STARCODERPLUS-GUANACO-GPT4-15B-V1.0 รุ่นที่มี 40 เลเยอร์ Offloadind เป็น GPU การอนุมานถูกเร่งโดย CUDA 12
หากคุณเห็น CUDA driver version is insufficient for CUDA runtime version เมื่อทำการร้องขอคุณอาจใช้ไดรเวอร์ NVIDIA ที่ไม่สามารถใช้งานได้กับรุ่น CUDA
อัพเกรดไดรเวอร์ด้วยตนเองบนโหนด (ดูที่นี่หากคุณใช้ cuda11 + ami) หรือลองใช้ Cuda เวอร์ชันอื่น
ในการเปิดใช้งานการรองรับโลหะให้ใช้ภาพ ialacol-metal ที่สร้างขึ้นสำหรับโลหะ
deployment.image 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 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 เนื่องจาก Copilot ของ GitHub เกือบจะเหมือนกันกับ OpenAI เสร็จสมบูรณ์ API
อย่างไรก็ตามมีบางสิ่งที่ต้องจำไว้:
ไคลเอนต์ Copilot ส่งพรอมต์ LENTHY เพื่อรวมบริบทที่เกี่ยวข้องทั้งหมดสำหรับการกรอกรหัสให้ดูที่ TRUNCATE_PROMPT_LENGTH -Explorer ซึ่งให้โหลดหนักบนเซิร์ฟเวอร์หากคุณพยายามเรียกใช้ ialacol ในพื้นที่
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 ผ่าน CTransformers รวมถึง:GET /models และ POST /completions POST /embeddings ได้รับการสนับสนุนโดย HuggingFace Apache-2.0 รุ่นฝังเช่นหม้อแปลงประโยคและ HKUNLP /ผู้สอน ปรับใช้โมเดลแชท Llama 2 ของ Meta ปริมาณโดย 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.yamlปรับใช้โมเดล 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 Corder 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.yamlปรับใช้โมเดล MPT-7B ของ MOSAICML ปริมาณโดย 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 ที่ไม่ได้ตรวจสอบแล้วปริมาณโดย Thebloke
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 ปรับใช้โมเดล 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 ล้านพารามิเตอร์ (~ 40MB) ปริมาณโดย Rustformers
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