? ditulis ulang dari Python ke Rust/WebAssembly, lihat detail #93
IALACOL (diucapkan "localai") adalah penggantian drop-in yang ringan untuk Openai API.
Ini adalah ctransformer pembungkus yang kompatibel dengan API OpenAI yang mendukung GGML/GPTQ dengan akselerasi CUDA/logam opsional.
IALACOL terinspirasi oleh proyek serupa lainnya seperti Localai, Privategpt, Local.ai, Llama-CPP-Python, Closedai, dan MLC-LLM, dengan fokus khusus pada penyebaran Kubernetes.
Lihat tanda terima di bawah ini untuk instruksi penyebaran.
Dan semua LLM yang didukung oleh Ctransformers.
ialacol tidak memiliki UI, namun kompatibel dengan UI web apa pun yang mendukung OpenAI API, misalnya Chat-UI setelah PR #541 bergabung.
Dengan asumsi ialacol berjalan di port 8000, Anda dapat mengkonfigurasi chat-ui untuk menggunakan zephyr-7b-beta.Q4_K_M.gguf dilayani oleh 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 menawarkan dukungan warga kelas satu untuk Kubernetes, yang berarti Anda dapat mengotomatisasi/mengonfigurasi semuanya dibandingkan dengan menjalankan tanpa.
Untuk dengan cepat memulai dengan ialacol di Kubernetes, ikuti langkah -langkah di bawah ini:
helm repo add ialacol https://chenhunghan.github.io/ialacol
helm repo update
helm install llama-2-7b-chat ialacol/ialacolSecara default, itu akan menggunakan model obrolan Llama 2 Meta yang dikuantisasi oleh Thebloke.
Port-Forward
kubectl port-forward svc/llama-2-7b-chat 8000:8000 Obrolan dengan model default llama-2-7b-chat.ggmlv3.q4_0.bin menggunakan 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 Atau, menggunakan perpustakaan klien OpenAI (lihat lebih banyak contoh di folder 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! "Semua konfigurasi dilakukan melalui variabel lingkungan.
| Parameter | Keterangan | Bawaan | Contoh |
|---|---|---|---|
DEFAULT_MODEL_HG_REPO_ID | ID repo wajah pelukan untuk mengunduh model | None | TheBloke/orca_mini_3B-GGML |
DEFAULT_MODEL_HG_REPO_REVISION | Revisi repo wajah pelukan | main | gptq-4bit-32g-actorder_True |
DEFAULT_MODEL_FILE | Nama file yang akan diunduh dari repo, opsional untuk model GPTQ | None | orca-mini-3b.ggmlv3.q4_0.bin |
MODE_TYPE | Jenis model untuk mengesampingkan deteksi tipe model otomatis | None | gptq , gpt_bigcode , llama , mpt , replit , falcon , gpt_neox gptj |
LOGGING_LEVEL | Level logging | INFO | DEBUG |
TOP_K | Top-K untuk pengambilan sampel. | 40 | Bilangan bulat |
TOP_P | Top-P untuk pengambilan sampel. | 1.0 | Mengapung |
REPETITION_PENALTY | RP untuk pengambilan sampel. | 1.1 | Mengapung |
LAST_N_TOKENS | Token N terakhir untuk penalti pengulangan. | 1.1 | Bilangan bulat |
SEED | Benih untuk pengambilan sampel. | -1 | Bilangan bulat |
BATCH_SIZE | Ukuran batch untuk mengevaluasi token, hanya untuk model GGUF/GGML | 8 | Bilangan bulat |
THREADS | Nomor utas Override Auto Detect oleh CPU/2, Set 1 untuk model GPTQ | Auto | Bilangan bulat |
MAX_TOKENS | Jumlah maksimum token untuk menghasilkan | 512 | Bilangan bulat |
STOP | Token untuk menghentikan generasi | None | `< |
CONTEXT_LENGTH | Mengesampingkan panjang konteks deteksi otomatis | 512 | Bilangan bulat |
GPU_LAYERS | Jumlah lapisan untuk dimuat ke GPU | 0 | Bilangan bulat |
TRUNCATE_PROMPT_LENGTH | Potong prompt jika diatur | 0 | Bilangan bulat |
Parameter pengambilan sampel termasuk TOP_K , TOP_P , REPETITION_PENALTY , LAST_N_TOKENS , SEED , MAX_TOKENS , STOP dapat ditimpa per permintaan melalui badan permintaan, misalnya:
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 akan menggunakan temperature=2 , top_p=1 dan top_k=0 untuk permintaan ini.
Ada gambar yang di -host di GHCR.IO (sebagai alternatif CUDA11, CUDA12, Varian Logam, 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:latestUntuk pengembang/kontributor
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 9999Bangun gambar
docker build --file ./Dockerfile -t ialacol .Jalankan wadah
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 Untuk mengaktifkan akselerasi GPU/CUDA, Anda perlu menggunakan gambar wadah yang dibangun untuk GPU dan menambahkan variabel lingkungan GPU_LAYERS . GPU_LAYERS ditentukan berdasarkan ukuran memori GPU Anda. Lihat PR/Diskusi di llama.cpp untuk menemukan nilai terbaik.
deployment.image = ghcr.io/chenhunghan/ialacol-cuda11:latestdeployment.env.GPU_LAYERS adalah lapisan untuk dimuat ke GPU.deployment.image = ghcr.io/chenhunghan/ialacol-cuda12:latestdeployment.env.GPU_LAYERS adalah lapisan untuk dimuat ke GPU. Hanya llama , falcon , mpt dan gpt_bigcode (Starcoder/Starchat) mendukung CUDA.
helm install llama2-7b-chat-cuda12 ialacol/ialacol -f examples/values/llama2-7b-chat-cuda12.yamlMenyebarkan model llama2 7b dengan 40 lapisan offloadind ke GPU. Inferensi dipercepat oleh CUDA 12.
helm install starcoderplus-guanaco-cuda12 ialacol/ialacol -f examples/values/starcoderplus-guanaco-cuda12.yamlMenyebarkan model starcoderplus-guanaco-gpt4-15b-v1.0 dengan 40 lapisan offloadind ke GPU. Inferensi dipercepat oleh CUDA 12.
Jika Anda melihat CUDA driver version is insufficient for CUDA runtime version saat mengajukan permintaan, Anda kemungkinan menggunakan driver NVIDIA yang tidak kompatibel dengan versi CUDA.
Tingkatkan driver secara manual di simpul (lihat di sini jika Anda menggunakan CUDA11 + AMI). Atau coba versi CUDA yang berbeda.
Untuk mengaktifkan dukungan logam, gunakan gambar ialacol-metal yang dibangun untuk logam.
deployment.image = ghcr.io/chenhunghan/ialacol-metal:latestMisalnya
helm install llama2-7b-chat-metal ialacol/ialacol -f examples/values/llama2-7b-chat-metal.yaml.yamlUntuk menggunakan GPTQ, Anda harus
deployment.image = ghcr.io/chenhunghan/ialacol-gptq:latestdeployment.env.MODEL_TYPE = gptqMisalnya
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 dapat digunakan sebagai klien kopilot karena kopilot GitHub hampir identik dengan API penyelesaian OpenAI.
Namun, beberapa hal yang perlu diingat:
Klien Copilot mengirimkan prompt lenthy, untuk memasukkan semua konteks terkait untuk penyelesaian kode, lihat Copilot-Explorer, yang memberikan beban berat pada server, jika Anda mencoba menjalankan ialacol secara lokal, opt-in TRUNCATE_PROMPT_LENGTH variabel lingkungan untuk memotong prompt dari awal untuk mengurangi beban kerja.
Copilot mengirimkan permintaan secara paralel, untuk meningkatkan throughput, Anda mungkin memerlukan antrian seperti teks-inferensi-batcher.
Mulailah dua contoh 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 9999Mulai Tib, menunjuk ke hulu instance ialacol.
gh repo clone ialacol/text-inference-batcher && cd text-inference-batcher && npm install
UPSTREAMS= " http://localhost:9998,http://localhost:9999 " npm startKonfigurasikan vscode github copilot untuk menggunakan 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 diketahui sensitif terhadap parameter, temperature yang lebih tinggi menyebabkan lebih banyak "keacakan" maka LLM menjadi lebih "kreatif", top_p dan top_k juga berkontribusi pada "keacakan"
Jika Anda ingin membuat LLM menjadi kreatif.
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/completionsJika Anda ingin membuat LLM lebih konsisten dan menghasilkan hasil yang sama dengan input yang sama.
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 melalui ctransformers, termasuk:GET /models dan POST /completions POST /embeddings Didukung oleh Huggingface Apache-2.0 Model Embedding seperti Kalimat Transformers dan HKunLP /Instruktur Model obrolan Llama 2 Meta Meta dikuantisasi oleh Thebloke.
7b obrolan
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 obrolan
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.yamlObrolan 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.yamlMenggunakan model Openllama 7B Openllama yang dikuantisasi oleh RustFormers.
Ini adalah model dasar, kemungkinan hanya berguna untuk penyelesaian teks.
helm repo add ialacol https://chenhunghan.github.io/ialacol
helm repo update
helm install openllama-7b ialacol/ialacol -f examples/values/openllama-7b.yamlDeploy Openllama 13b Open Instruksikan Model Kuantisasi oleh 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.yamlModel MPT-7B MosaicML yang dikuantisasi oleh RustFormer. Ini adalah model dasar, kemungkinan hanya berguna untuk penyelesaian teks.
helm repo add ialacol https://chenhunghan.github.io/ialacol
helm repo update
helm install mpt-7b ialacol/ialacol -f examples/values/mpt-7b.yamlModel obrolan MPT-30B Mosaicml yang dikuantisasi oleh 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.yamlMenyebarkan model Falcon 7B tanpa sensor yang dikuantisasi oleh Thebloke.
helm repo add ialacol https://chenhunghan.github.io/ialacol
helm repo update
helm install falcon-7b ialacol/ialacol -f examples/values/falcon-7b.yamlMenyebarkan model Falcon 40b tanpa sensor yang dikuantisasi oleh 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 Menyebarkan model starchat-beta yang dikuantisasi oleh 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 Deploy Model WizardCoder yang dikuantisasi oleh 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 Menyebarkan model pythia-70m ringan dengan hanya 70 juta paramter (~ 40MB) yang dikuantisasi oleh rustformer.
helm repo add ialacol https://chenhunghan.github.io/ialacol
helm repo update
helm install pythia70m ialacol/ialacol -f examples/values/pythia-70m.yaml Menyebarkan Model 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 Menyebarkan Model 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