mirror of
https://github.com/acon96/home-llm.git
synced 2026-01-08 05:14:02 -05:00
Update readme with new model + update util scripts
This commit is contained in:
26
README.md
26
README.md
@@ -24,25 +24,37 @@ The integration can either run the model in 2 different ways:
|
||||
## Home LLM Model
|
||||
The "Home" models are a fine tuning of various Large Languages Models that are under 5B parameters. The models are able to control devices in the user's house as well as perform basic question and answering. The fine tuning dataset is a [custom synthetic dataset](./data) designed to teach the model function calling based on the device information in the context.
|
||||
|
||||
The latest models can be found on HuggingFace:
|
||||
3B v3 (Based on StableLM-Zephyr-3B): https://huggingface.co/acon96/Home-3B-v3-GGUF (Zephyr prompt format)
|
||||
1B v3 (Based on TinyLlama-1.1B): https://huggingface.co/acon96/Home-1B-v3-GGUF (Zephyr prompt format)
|
||||
The latest models can be found on HuggingFace:
|
||||
|
||||
Non English experiments:
|
||||
German, French, & Spanish (3B): https://huggingface.co/acon96/stablehome-multilingual-experimental
|
||||
Polish (1B): https://huggingface.co/acon96/tinyhome-polish-experimental
|
||||
**Llama 3.2**:
|
||||
3B: https://huggingface.co/acon96/Home-Llama-3.2-3B
|
||||
1B: TBD
|
||||
|
||||
**Qwen 3**:
|
||||
0.6B: TBD
|
||||
1.5B: TBD
|
||||
|
||||
**Gemma3**:
|
||||
1B: TBD
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Old Models</summary>
|
||||
|
||||
3B v3 (Based on StableLM-Zephyr-3B): https://huggingface.co/acon96/Home-3B-v3-GGUF (Zephyr prompt format)
|
||||
1B v3 (Based on TinyLlama-1.1B): https://huggingface.co/acon96/Home-1B-v3-GGUF (Zephyr prompt format)
|
||||
3B v2 (Based on Phi-2): https://huggingface.co/acon96/Home-3B-v2-GGUF (ChatML prompt format)
|
||||
1B v2 (Based on Phi-1.5): https://huggingface.co/acon96/Home-1B-v2-GGUF (ChatML prompt format)
|
||||
1B v1 (Based on Phi-1.5): https://huggingface.co/acon96/Home-1B-v1-GGUF (ChatML prompt format)
|
||||
|
||||
NOTE: The models below are only compatible with version 0.2.17 and older!
|
||||
Non English experiments:
|
||||
German, French, & Spanish (3B): https://huggingface.co/acon96/stablehome-multilingual-experimental
|
||||
Polish (1B): https://huggingface.co/acon96/tinyhome-polish-experimental
|
||||
|
||||
NOTE: The models below are only compatible with version 0.2.17 and older!
|
||||
3B v1 (Based on Phi-2): https://huggingface.co/acon96/Home-3B-v1-GGUF (ChatML prompt format)
|
||||
|
||||
|
||||
</details>
|
||||
|
||||
The model is quantized using Llama.cpp in order to enable running the model in super low resource environments that are common with Home Assistant installations such as Raspberry Pis.
|
||||
|
||||
5
requirements-all.txt
Normal file
5
requirements-all.txt
Normal file
@@ -0,0 +1,5 @@
|
||||
-r requirements.txt
|
||||
-r requirements-dev.txt
|
||||
-r custom_components/requirements.txt
|
||||
-r custom_components/requirements-dev.txt
|
||||
-r data/requirements.txt
|
||||
@@ -9,15 +9,22 @@ if [[ ! -d "./models/$MODEL_NAME" ]]; then
|
||||
exit -1
|
||||
fi
|
||||
|
||||
if [ -f "./models/$MODEL_NAME/gguf_overrides.json" ]; then
|
||||
OVERRIDES="--metadata ./models/$MODEL_NAME/gguf_overrides.json"
|
||||
echo "Using metadata from ./models/$MODEL_NAME/gguf_overrides.json"
|
||||
else
|
||||
OVERRIDES=""
|
||||
fi
|
||||
|
||||
echo "Converting to GGUF..."
|
||||
if [ ! -f "./models/$MODEL_NAME/$MODEL_NAME.f16.gguf" ]; then
|
||||
$LLAMA_CPP/convert_hf_to_gguf.py --outfile ./models/$MODEL_NAME/$MODEL_NAME.f16.gguf --outtype f16 ./models/$MODEL_NAME/
|
||||
$LLAMA_CPP/convert_hf_to_gguf.py --outfile ./models/$MODEL_NAME/$MODEL_NAME.f16.gguf --outtype f16 ./models/$MODEL_NAME/ $OVERRIDES
|
||||
else
|
||||
echo "Converted model for already exists. Skipping..."
|
||||
fi
|
||||
|
||||
|
||||
DESIRED_QUANTS=("Q8_0" "Q5_K_M" "Q4_K_M" "Q3_K_M" "Q2_K")
|
||||
DESIRED_QUANTS=("Q8_0" "Q5_K_M" "Q4_0" "Q4_1" "Q4_K_M")
|
||||
for QUANT in "${DESIRED_QUANTS[@]}"
|
||||
do
|
||||
QUANT_LOWER=$(echo "$QUANT" | awk '{print tolower($0)}')
|
||||
|
||||
8
scripts/upload_to_hf.sh
Normal file
8
scripts/upload_to_hf.sh
Normal file
@@ -0,0 +1,8 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
MODEL_NAME=$1
|
||||
|
||||
huggingface-cli upload $MODEL_NAME models/$MODEL_NAME \
|
||||
--repo-type model --commit-message "Upload model" \
|
||||
--exclude "runs/" "training_args.bin" "gguf_overrides.json"
|
||||
83
train.ipynb
83
train.ipynb
@@ -91,7 +91,7 @@
|
||||
"id": "e71572c4",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# Qwen3"
|
||||
"# Qwen3 1.7b"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -101,6 +101,8 @@
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# HYPERPARAMETERS ARE NOT TUNED YET\n",
|
||||
"# TODO: impelment no think in template\n",
|
||||
"do_training_run(TrainingRunArguments(\n",
|
||||
" run_name=get_next_run_name(\"Home-Qwen-3-1.7B\"),\n",
|
||||
" base_model=\"Qwen/Qwen3-1.7B\",\n",
|
||||
@@ -113,6 +115,85 @@
|
||||
" save_steps=200, save_total_limit=1, eval_steps=200, logging_steps=2,\n",
|
||||
"))"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "f2f49f10",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# Qwen 2.5 0.6B & 1.5B"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "ca9e2dec",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# HYPERPARAMETERS ARE NOT TUNED YET\n",
|
||||
"do_training_run(TrainingRunArguments(\n",
|
||||
" run_name=get_next_run_name(\"Home-Qwen-2.5-0.6B\"),\n",
|
||||
" base_model=\"Qwen/Qwen2.5-0.6B-Instruct\",\n",
|
||||
" bf16=True,\n",
|
||||
" train_dataset=\"data/home_assistant_train.jsonl\",\n",
|
||||
" test_dataset=\"data/home_assistant_test.jsonl\",\n",
|
||||
" learning_rate=2e-5, learning_rate_warmup=0.03, \n",
|
||||
" batch_size=64, micro_batch_size=2, epochs=1,\n",
|
||||
" ctx_size=2048,\n",
|
||||
" save_steps=200, save_total_limit=1, eval_steps=200, logging_steps=2,\n",
|
||||
"))"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "6d875365",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# HYPERPARAMETERS ARE NOT TUNED YET\n",
|
||||
"do_training_run(TrainingRunArguments(\n",
|
||||
" run_name=get_next_run_name(\"Home-Qwen-2.5-1.5B\"),\n",
|
||||
" base_model=\"Qwen/Qwen2.5-1.5B-Instruct\",\n",
|
||||
" bf16=True,\n",
|
||||
" train_dataset=\"data/home_assistant_train.jsonl\",\n",
|
||||
" test_dataset=\"data/home_assistant_test.jsonl\",\n",
|
||||
" learning_rate=2e-5, learning_rate_warmup=0.03, \n",
|
||||
" batch_size=64, micro_batch_size=2, epochs=1,\n",
|
||||
" ctx_size=2048,\n",
|
||||
" save_steps=200, save_total_limit=1, eval_steps=200, logging_steps=2,\n",
|
||||
"))"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "21865d91",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# Gemma 3 1B"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "27db01c0",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# HYPERPARAMETERS ARE NOT TUNED YET\n",
|
||||
"do_training_run(TrainingRunArguments(\n",
|
||||
" run_name=get_next_run_name(\"Home-Gemma-3-1B\"),\n",
|
||||
" base_model=\"google/gemma-3-1b-it\",\n",
|
||||
" bf16=True,\n",
|
||||
" train_dataset=\"data/home_assistant_train.jsonl\",\n",
|
||||
" test_dataset=\"data/home_assistant_test.jsonl\",\n",
|
||||
" learning_rate=2e-5, learning_rate_warmup=0.03, \n",
|
||||
" batch_size=64, micro_batch_size=2, epochs=1,\n",
|
||||
" ctx_size=2048,\n",
|
||||
" save_steps=200, save_total_limit=1, eval_steps=200, logging_steps=2,\n",
|
||||
"))"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
|
||||
Reference in New Issue
Block a user