Update readme with new model + update util scripts

This commit is contained in:
Alex O'Connell
2025-06-05 00:14:24 -04:00
parent e203e36cc9
commit dc1e7613b8
5 changed files with 123 additions and 10 deletions

View File

@@ -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
View 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

View File

@@ -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
View 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"

View File

@@ -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": {