| # Starts llama-server for qwen3-4b inference. | |
| # | |
| # Model preparation (run once): | |
| # | |
| # Option A — Merge LoRA into base model, then convert (simpler): | |
| # python3 -c " | |
| # from transformers import AutoModelForCausalLM, AutoTokenizer | |
| # from peft import PeftModel | |
| # base = 'new_reference/models/Qwen--Qwen3-4B-Instruct-2507' | |
| # adapter = 'new_reference/models/qwen3-4b-instruct-2507-emoji-sft/checkpoint-2532' | |
| # merged = 'new_reference/models/qwen3-4b-merged' | |
| # m = PeftModel.from_pretrained(AutoModelForCausalLM.from_pretrained(base, torch_dtype='auto'), adapter) | |
| # m.merge_and_unload().save_pretrained(merged) | |
| # AutoTokenizer.from_pretrained(base).save_pretrained(merged) | |
| # " | |
| # python3 /opt/homebrew/bin/convert_hf_to_gguf.py \ | |
| # new_reference/models/qwen3-4b-merged \ | |
| # --outfile new_reference/models/qwen3-4b-f16.gguf --outtype f16 | |
| # /opt/homebrew/bin/llama-quantize \ | |
| # new_reference/models/qwen3-4b-f16.gguf \ | |
| # new_reference/models/qwen3-4b-q4_k_m.gguf Q4_K_M | |
| # # Then use MODEL_GGUF below (no --lora flag needed) | |
| # | |
| # Option B — Keep LoRA separate (requires convert_lora_to_gguf.py from llama.cpp repo): | |
| # python3 /opt/homebrew/bin/convert_hf_to_gguf.py \ | |
| # new_reference/models/Qwen--Qwen3-4B-Instruct-2507 \ | |
| # --outfile new_reference/models/qwen3-4b-base-f16.gguf --outtype f16 | |
| # /opt/homebrew/bin/llama-quantize \ | |
| # new_reference/models/qwen3-4b-base-f16.gguf \ | |
| # new_reference/models/qwen3-4b-base-q4_k_m.gguf Q4_K_M | |
| # python3 convert_lora_to_gguf.py \ | |
| # new_reference/models/qwen3-4b-instruct-2507-emoji-sft/checkpoint-2532 \ | |
| # --base new_reference/models/Qwen--Qwen3-4B-Instruct-2507 \ | |
| # --outfile new_reference/models/qwen3-4b-lora.gguf --outtype f16 | |
| # # Then use MODEL_GGUF + LORA_GGUF below | |
| set -euo pipefail | |
| SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" | |
| ROOT_DIR="$(dirname "$SCRIPT_DIR")" | |
| # Option A (merged model, no adapter): | |
| MODEL_GGUF="$ROOT_DIR/new_reference/models/qwen3-4b-q4_k_m.gguf" | |
| # Option B (base model + separate adapter — uncomment and set LORA_GGUF): | |
| # MODEL_GGUF="$ROOT_DIR/new_reference/models/qwen3-4b-base-q4_k_m.gguf" | |
| # LORA_GGUF="$ROOT_DIR/new_reference/models/qwen3-4b-lora.gguf" | |
| LLAMA_SERVER="/opt/homebrew/bin/llama-server" | |
| exec "$LLAMA_SERVER" \ | |
| --model "$MODEL_GGUF" \ | |
| ${LORA_GGUF:+--lora "$LORA_GGUF"} \ | |
| --n-gpu-layers -1 \ | |
| --parallel 8 \ | |
| --ctx-size 8192 \ | |
| --port 8081 \ | |
| --host 127.0.0.1 \ | |
| --no-webui | |