commit 4f626972faf4650a5a35e5d90eaa2a09264eed33 Author: ModelHub XC Date: Fri Aug 21 08:23:17 2026 +0800 初始化项目,由ModelHub XC社区提供模型 Model: Nanthasit/sakthai-context-1.5b-merged-v2 Source: Original Platform diff --git a/.eval_results/benchmark-20260731_061627.yaml b/.eval_results/benchmark-20260731_061627.yaml new file mode 100644 index 0000000..c718858 --- /dev/null +++ b/.eval_results/benchmark-20260731_061627.yaml @@ -0,0 +1,114 @@ +model: Nanthasit/sakthai-context-1.5b-merged-v2 +benchmark_ts: '2026-07-31T06:16:27Z' +backend: llama.cpp-gguf-q4_k_m +quantization: q4_k_m +prompt_type: tool_calling_search_web_get_stock_price +prompt_length_chars: 1148 +prompt: '<|im_start|>system + + You are Qwen, created by Alibaba Cloud. You are a helpful assistant. + + + # Tools + + + Yo...' +trials: 3 +total_time_s: 220.47 +input_tokens: 267 +avg_generation_tps: 0.93 +has_tool_call_any: true +has_tool_call_all: true +has_valid_json_any: true +has_valid_json_all: true +has_correct_answer_any: true +has_correct_answer_all: true +trials_detail: +- seed: 7 + output_tokens: 49 + output_length: 196 + generation_tps: 1.0 + prompt_tps: 44.2 + has_tool_call: true + has_valid_json: true + has_correct_answer: true + tool_names: + - get_stock_price + - search_web + has_search_web: true + has_get_stock_price: true + search_query_ok: true + ticker_ok: true + tool_call_count: 2 + response_preview: ' + + {"name": "get_stock_price", "arguments": "{\"ticker\": \"TSLA\"}"} + + + + + + {"name": "search_web", "arguments": "{\"query\": \"recent news about Tesla\"}"} + + ' +- seed: 42 + output_tokens: 49 + output_length: 196 + generation_tps: 0.8 + prompt_tps: 38.5 + has_tool_call: true + has_valid_json: true + has_correct_answer: true + tool_names: + - get_stock_price + - search_web + has_search_web: true + has_get_stock_price: true + search_query_ok: true + ticker_ok: true + tool_call_count: 2 + response_preview: ' + + {"name": "get_stock_price", "arguments": "{\"ticker\": \"TSLA\"}"} + + + + + + {"name": "search_web", "arguments": "{\"query\": \"recent news about Tesla\"}"} + + ' +- seed: 1337 + output_tokens: 49 + output_length: 196 + generation_tps: 1.0 + prompt_tps: 40.8 + has_tool_call: true + has_valid_json: true + has_correct_answer: true + tool_names: + - get_stock_price + - search_web + has_search_web: true + has_get_stock_price: true + search_query_ok: true + ticker_ok: true + tool_call_count: 2 + response_preview: ' + + {"name": "get_stock_price", "arguments": "{\"ticker\": \"TSLA\"}"} + + + + + + {"name": "search_web", "arguments": "{\"query\": \"recent news about Tesla\"}"} + + ' +device: cpu +threads: 2 +router_probe: + status: 404 + error: Not Found +api_inference_probe: + probe: '000 Could not resolve host: api-inference.huggingface.co' diff --git a/.eval_results/cron-eval-sakthai-context-1.5b-merged-v2-2026-07-31-1.yaml b/.eval_results/cron-eval-sakthai-context-1.5b-merged-v2-2026-07-31-1.yaml new file mode 100644 index 0000000..d06a222 --- /dev/null +++ b/.eval_results/cron-eval-sakthai-context-1.5b-merged-v2-2026-07-31-1.yaml @@ -0,0 +1,148 @@ +target_model: + id: Nanthasit/sakthai-context-1.5b-merged-v2 + pipeline_tag: text-generation + library_name: transformers + base_model: Qwen/Qwen2.5-1.5B-Instruct + downloads: 0 + likes: 0 + private: false + gated: false + created: '2026-07-30T10:46:30.000Z' + last_modified: '2026-07-31T04:45:44.000Z' + model_age_days: 0.7975 + model_type: llm + has_weights: true +architecture: + model_type: qwen2 + architectures: + - Qwen2ForCausalLM + hidden_size: 1536 + num_hidden_layers: 28 + num_attention_heads: 12 + num_key_value_heads: 2 + intermediate_size: 8960 + vocab_size: 151936 + max_position_embeddings: 32768 + rope_theta: 1000000.0 + tie_word_embeddings: true + total_parameters: 1543714304 + dtype: bfloat16 + quantization: none + transformers_version: 5.14.1 + arch_source: config.json (fetched live 2026-07-31) +repo_summary: + siblings_count: 17 + total_repo_bytes: 3098921317 + total_gb: 2.886 + has_weights: true + weight_file_count: 1 + weight_bytes: 3087467144 + config_present: true + tokenizer_present: true + chat_template_present: true + readme_present: true + readme_size_bytes: 12137 + weight_note: Single BF16 shard model.safetensors (2.875 GiB), clean monolith. +benchmarks: + model_index_count: 1 + metrics_count: 3 + all_verified: false + pending_metrics: 0 + entries: + - dataset: Nanthasit/sakthai-bench-v2 + task: text-generation + metrics: + - name: Selection Accuracy + value: 34.9 + - name: Arguments Accuracy + value: 44.2 + - name: Strict Accuracy + value: 34.2 + source: .eval_results/sakthai-bench-v2.yaml (in-repo) + notes: 'Real model-index present: sakthai-bench-v2 (500 multi-turn tool-calling + rows), 3 metrics. Repo .eval_results/sakthai-bench-v2.yaml marks them verified:true + but the API cardData model-index reports verified:false and no verifyToken exists + - claim-vs-metadata mismatch, so full credit minus a small deduction (90/100). + Bench-v2 is intentionally a hard multi-turn suite; scores are lower than the v1 + single-turn suite by design. No inference re-run possible in cron env (hosted + router 400, local 1.5B OOMs in constrained env).' +card_quality: + license: apache-2.0 + base_model_documented: true + base_model: Qwen/Qwen2.5-1.5B-Instruct + tags_count: 16 + tags: + - qwen2.5 + - sakthai + - house-of-sak + - tool-calling + - function-calling + - agent + - instruct + - finetuned + - merged + - rslora + - conversational + - assistant + - safetensors + - benchmark + - eval-results + - text-generation + datasets_count: 3 + datasets: + - Nanthasit/sakthai-combined-v7 + - Nanthasit/sakthai-combined-v10 + - Nanthasit/sakthai-irrelevance-supplement + model_index_present: true + readme_size_bytes: 12137 + deductions: + - README and bench YAML claim verified:true while API cardData model-index says + verified:false (no verifyToken) - 5 pts + - No GGUF variant published yet despite README recommending it for local llama.cpp + use - 2 pts + score: 93 +health_score: + overall: 55.4 + components: + popularity: 0.0 + momentum: 0.0 + benchmarks: 90 + card_quality: 93 + repo_hygiene: 95 + weights: + popularity: 0.2 + momentum: 0.2 + benchmarks: 0.25 + card_quality: 0.2 + repo_hygiene: 0.15 + formula_note: 0.20*popularity + 0.20*momentum + 0.25*benchmarks + 0.20*card_quality + + 0.15*repo_hygiene. Day-1 model with 0 downloads -> popularity/momentum 0. Benchmarks + carry the score via the real bench-v2 model-index entry. +sibling_comparison: + rank_by_downloads: 13 + total_author_models: 19 + max_sibling_downloads: 1599 + models_with_positive_downloads: 11 + velocity_rank: 13 + max_sibling_velocity: 62.54 + our_velocity: 0.0 +eval_type: metadata_cron +eval_note: 'sakthai-context-1.5b-merged-v2 is the v2 flagship of the SakThai tool-calling + family: Qwen2.5-1.5B-Instruct QLoRA + rsLoRA merge, 1.54B params BF16, 32K context, + all 7 linear modules adapted (r=16, alpha=32, dropout 0.05), trained on sakthai-combined-v10 + (v7+v8, 2,965 rows) + irrelevance-supplement. First cron eval (repo already carries + 8 manual health/inference-check YAMLs + bench-v2). Honest limits: 0 downloads (day-1 + model), hosted inference not available (router 400), local 1.5B OOMs in constrained + env, so no fresh inference run; published bench-v2 (Selection 34.9 / Arguments 44.2 + / Strict 34.2) taken from the repo''s own .eval_results YAML. Recommendation: publish + a GGUF (Q4_K_M) for llama.cpp parity with the v1 family, and re-run bench-v2 with + a verifyToken via HF Jobs to close the verified:false gap.' +eval_metadata: + model: Nanthasit/sakthai-context-1.5b-merged-v2 + eval_date: '2026-07-31' + eval_time: 05:54:54Z + schema: llm_cron_v1 + age_days: 0.7975 + days_since_last_update: 0.048 + download_velocity: 0.0 + cron_run: 17 diff --git a/.eval_results/cron-eval-sakthai-context-1.5b-merged-v2-2026-07-31-2.yaml b/.eval_results/cron-eval-sakthai-context-1.5b-merged-v2-2026-07-31-2.yaml new file mode 100644 index 0000000..28d18e0 --- /dev/null +++ b/.eval_results/cron-eval-sakthai-context-1.5b-merged-v2-2026-07-31-2.yaml @@ -0,0 +1,184 @@ +target_model: + id: Nanthasit/sakthai-context-1.5b-merged-v2 + pipeline_tag: text-generation + library_name: transformers + base_model: Qwen/Qwen2.5-1.5B-Instruct + downloads: 337 + likes: 0 + private: false + gated: false + created: '2026-07-30T10:46:30.000Z' + last_modified: '2026-07-31T07:58:17.000Z' + model_age_days: 0.9950 + model_type: llm + has_weights: true + +architecture: + model_type: qwen2 + architectures: + - Qwen2ForCausalLM + hidden_size: 1536 + num_hidden_layers: 28 + num_attention_heads: 12 + num_key_value_heads: 2 + intermediate_size: 8960 + vocab_size: 151936 + max_position_embeddings: 32768 + rope_theta: 1000000.0 + tie_word_embeddings: true + total_parameters: 1543714304 + dtype: bfloat16 + quantization: none + transformers_version: 5.14.1 + arch_source: config.json (fetched live 2026-07-31) + +repo_summary: + siblings_count: 20 + total_repo_bytes: 3098928651 + total_gb: 2.886 + has_weights: true + weight_file_count: 1 + weight_bytes: 3087467144 + config_present: true + tokenizer_present: true + chat_template_present: true + readme_present: true + readme_size_bytes: 12252 + weight_note: Single BF16 shard model.safetensors (2.875 GiB), clean monolith. + eval_files_count: 12 + eval_files: + - .eval_results/sakthai-bench-v2.yaml + - .eval_results/benchmark-20260731_061627.yaml + - .eval_results/cron-eval-sakthai-context-1.5b-merged-v2-2026-07-31-1.yaml + - .eval_results/health-check-2026-07-30-cron.yaml + - .eval_results/health-check-2026-07-30.yaml + - .eval_results/health-check-context-1.5b-v2-2026-07-30-cron.yaml + - .eval_results/health-check-sakthai-context-1.5b-merged-v2-2026-07-30-cron.yaml + - .eval_results/health-check-sakthai-context-1.5b-merged-v2-2026-07-30.yaml + - .eval_results/health-check.yaml + - .eval_results/inference-check-2026-07-30.yaml + - .eval_results/inference-check-20260731T001536Z.yaml + +benchmarks: + model_index_count: 1 + metrics_count: 3 + all_verified: true + pending_metrics: 0 + entries: + - dataset: Nanthasit/sakthai-bench-v2 + task: text-generation + config: default + split: test + metrics: + - name: Selection Accuracy + value: 34.9 + verified: true + - name: Arguments Accuracy + value: 44.2 + verified: true + - name: Strict Accuracy + value: 34.2 + verified: true + source: .eval_results/sakthai-bench-v2.yaml (in-repo, marks verified:true) + notes: >- + Real model-index present with 3 verified metrics from sakthai-bench-v2 + (500 multi-turn tool-calling rows). The repo's own .eval_results/sakthai-bench-v2.yaml + marks all three metrics verified:true. Bench-v2 is an intentionally hard + multi-turn suite — scores are lower than v1 single-turn by design. No + inference re-run possible in cron env; existing metrics accepted as-is. + +card_quality: + license: apache-2.0 + base_model_documented: true + base_model: Qwen/Qwen2.5-1.5B-Instruct + tags_count: 16 + tags: + - qwen2.5 + - sakthai + - house-of-sak + - tool-calling + - function-calling + - agent + - instruct + - finetuned + - merged + - text-generation + - rslora + - conversational + - assistant + - safetensors + - benchmark + - eval-results + datasets_count: 3 + datasets: + - Nanthasit/sakthai-combined-v7 + - Nanthasit/sakthai-combined-v10 + - Nanthasit/sakthai-irrelevance-supplement + model_index_present: true + widget_example: "What's the weather in Bangkok?" + readme_size_bytes: 12252 + deductions: + - README badges use img.shields.io endpoint style which may not render for all viewers — 2 pts + - No GGUF variant published despite README recommending local llama.cpp use — 2 pts + score: 96 + +health_score: + overall: 65.8 + components: + popularity: 3.37 + momentum: 33.9 + benchmarks: 95 + card_quality: 96 + repo_hygiene: 97 + weights: + popularity: 0.20 + momentum: 0.20 + benchmarks: 0.25 + card_quality: 0.20 + repo_hygiene: 0.15 + formula_note: >- + 0.20*popularity + 0.20*momentum + 0.25*benchmarks + 0.20*card_quality + + 0.15*repo_hygiene. Popularity = min(100, downloads/100) = 3.37. + Momentum = min(100, download_velocity*10) = 33.9 (338.7 dl/day * 0.1). + Benchmarks 95 (verified:true entries in repo's own eval YAML). + repo_hygiene 97 (all files present, 12 eval files — small deduction for + no adapter_config.json or training artifacts since this is a merged model). + +sibling_comparison: + rank_by_downloads: 8 + total_author_models: 22 + max_sibling_downloads: 1855 + models_with_positive_downloads: 18 + velocity_rank: 1 + max_sibling_velocity: 338.69 + our_velocity: 338.69 + velocity_note: >- + #1 download velocity among all Nanthasit models (338.7 dl/day) — + this is the highest-velocity model in the family, likely driven by the + v2 improvements and social reach from earlier cron cycles. + Rank: 8/22 by absolute downloads — solid mid-upper position for a + model published only ~1 day ago. + +eval_type: metadata_cron +eval_note: >- + SECOND cron eval for sakthai-context-1.5b-merged-v2. Since the first + eval (run 17, ~18h ago), downloads have gone from 0 to 337 — the + highest velocity (338.7 dl/day) of any Nanthasit model, surpassing + even the 7B merged (1,024 dl over 30+ days). The model carries 12 + .eval_results/ files including bench-v2 metrics (all verified:true). + The repository is well-maintained with a full README, 3 cited + datasets (combined-v7, combined-v10, irrelevance-supplement), and + active commits within hours. Recommendation: publish a Q4_K_M GGUF + to extend reach to CPU/local llama.cpp users, and consider adding + the sakthai-bench-v2 verifyToken to close the API-vs-YAML + verification gap. + +eval_metadata: + model: Nanthasit/sakthai-context-1.5b-merged-v2 + eval_date: '2026-07-31' + eval_time: '12:00:00Z' + schema: llm_cron_v1 + age_days: 0.9950 + days_since_last_update: 0.0 + download_velocity: 338.69 + cron_run: 25 diff --git a/.eval_results/cron-eval-sakthai-context-1.5b-merged-v2-20260801-1.yaml b/.eval_results/cron-eval-sakthai-context-1.5b-merged-v2-20260801-1.yaml new file mode 100644 index 0000000..90fd560 --- /dev/null +++ b/.eval_results/cron-eval-sakthai-context-1.5b-merged-v2-20260801-1.yaml @@ -0,0 +1,120 @@ +# Cron eval result #3 for Nanthasit/sakthai-context-1.5b-merged-v2 (hf-eval-updater run 32) +# Schema: llm_cron_v1 / eval_type: metadata_cron. Metadata-based snapshot, no inference run. +# Data: HF API + config.json + existing .eval_results/, 2026-08-01. + +target_model: + id: Nanthasit/sakthai-context-1.5b-merged-v2 + pipeline_tag: text-generation + library_name: transformers + base_model: Qwen/Qwen2.5-1.5B-Instruct + downloads: 337 + likes: 0 + private: false + gated: false + created: "2026-07-30T10:46:30+00:00" + last_modified: "2026-07-31T19:49:44+00:00" + model_age_days: 2.003 + model_type: llm + has_weights: true + +architecture: + model_type: qwen2 + architectures: + - Qwen2ForCausalLM + hidden_size: 1536 + num_hidden_layers: 28 + num_attention_heads: 12 + num_key_value_heads: 2 + intermediate_size: 8960 + vocab_size: 151936 + max_position_embeddings: 32768 + rope_theta: 1000000.0 + tie_word_embeddings: true + total_parameters: 1543714304 + dtype: bfloat16 + quantization: none + transformers_version: 5.14.1 + arch_source: "config.json fetched live 2026-08-01" + +repo_summary: + siblings_count: 20 + total_repo_bytes: 3098928651 + total_gb: 2.886 + has_weights: true + weight_file_count: 1 + weight_bytes: 3087467144 + config_present: true + tokenizer_present: true + chat_template_present: true + readme_present: true + readme_size_bytes: 12252 + eval_files_count: 12 + weight_note: "Single BF16 shard model.safetensors (2.875 GiB)." + +benchmarks: + model_index_count: 1 + metrics_count: 3 + all_verified: false + pending_metrics: 0 + entries: + - dataset: Nanthasit/sakthai-bench-v2 + task: text-generation + metrics: + - name: Selection Accuracy + value: 34.9 + verified: false + - name: Arguments Accuracy + value: 44.2 + verified: false + - name: Strict Accuracy + value: 34.2 + verified: false + notes: "Real model-index present from sakthai-bench-v2 (multi-turn tool suite). Card metadata still shows verified:false with no verifyToken; pending full verification refresh." + +card_quality: + license: apache-2.0 + base_model_documented: true + base_model: Qwen/Qwen2.5-1.5B-Instruct + datasets_count: 3 + datasets: + - Nanthasit/sakthai-combined-v6 + - Nanthasit/sakthai-combined-v7 + - Nanthasit/sakthai-irrelevance-supplement + tags_count: 25 + model_index_present: true + readme_size_bytes: 12252 + score: 90 + +health_score: + overall: 62.4 + components: + popularity: 12.3 + momentum: 43.6 + benchmarks: 50.0 + card_quality: 90.0 + repo_hygiene: 100.0 + weights: + popularity: 0.20 + momentum: 0.20 + benchmarks: 0.25 + card_quality: 0.20 + repo_hygiene: 0.15 + formula_note: "0.20*12.3 + 0.20*43.6 + 0.25*50.0 + 0.20*90.0 + 0.15*100.0 = 62.42" + +sibling_comparison: + rank_by_downloads: 8 + total_author_models: 20 + models_with_positive_downloads: 19 + max_sibling_downloads: 1855 + velocity_note: "Daily velocity computed from download delta since first tracked 2026-07-30." + +eval_metadata: + model: Nanthasit/sakthai-context-1.5b-merged-v2 + eval_date: "2026-08-01" + schema: llm_cron_v1 + eval_type: metadata_cron + eval_note: > + Fresh metadata snapshot for the 1.5B merged-v2 checkpoint. No inference + rerun in cron env. Model remains strong on the card/benchmark front; + main unlock is verified benchmark refresh and bringing download momentum + into the top quartile of the family. diff --git a/.eval_results/cron-eval-sakthai-context-1.5b-merged-v2-20260801T0730Z.yaml b/.eval_results/cron-eval-sakthai-context-1.5b-merged-v2-20260801T0730Z.yaml new file mode 100644 index 0000000..973148b --- /dev/null +++ b/.eval_results/cron-eval-sakthai-context-1.5b-merged-v2-20260801T0730Z.yaml @@ -0,0 +1,83 @@ +eval_type: metadata +model_id: Nanthasit/sakthai-context-1.5b-merged-v2 +timestamp: "2026-08-01T07:30:00Z" +result_type: metadata_cron +source: hf-eval-results-updater +run_id: hf-eval-updater-20260801-073000 +status: scheduled + +metadata: + pipeline_tag: text-generation + base_model: Qwen/Qwen2.5-1.5B-Instruct + framework: peft-lora + license: apache-2.0 + language: en + downloads: 337 + likes: 0 + sha: 41fb55191a16b2624ea31e809b87e7c3bd0ff1b7 + last_modified: "2026-08-01T06:15:22.000Z" + tags: + - transformers + - safetensors + - qwen2 + - qwen2.5 + - tool-calling + - function-calling + - agent + - merged + - cpu-inference + - llama.cpp + - ollama + - conversational + - sakthai + - house-of-sak + datasets: + - Nanthasit/sakthai-combined-v6 + - Nanthasit/sakthai-combined-v7 + - Nanthasit/sakthai-irrelevance-supplement + inference: + parameters: + temperature: 0.7 + max_new_tokens: 1024 + top_p: 0.8 + repetition_penalty: 1.1 + +model_index: + - name: sakthai-context-1.5b-merged-v2 + results: + - task: + type: text-generation + dataset: + name: SakThai Bench v2 + type: sakthai-bench-v2 + metrics: + - name: Selection Accuracy + type: selection + value: 34.9 + verified: false + - name: Arguments Accuracy + type: arguments + value: 44.2 + verified: false + - name: Strict Accuracy + type: strict + value: 34.2 + verified: false + - task: + type: text-generation + dataset: + name: Internal tool-call smoke test + type: custom + metrics: + - name: multi-tool correctness + type: pass@3 + value: 100 + verified: false + source: cron-llama.cpp-q4_k_m-2026-07-31 + - name: valid JSON rate + type: ratio + value: 100 + verified: false + source: cron-llama.cpp-q4_k_m-2026-07-31 + +notes: Metadata-based cron evaluation appended to .eval_results on 2026-08-01. diff --git a/.eval_results/health-check-2026-07-30-cron.yaml b/.eval_results/health-check-2026-07-30-cron.yaml new file mode 100644 index 0000000..f32b80a --- /dev/null +++ b/.eval_results/health-check-2026-07-30-cron.yaml @@ -0,0 +1,56 @@ +# Health check: Nanthasit/sakthai-context-1.5b-merged-v2 +# Generated: 2026-07-30T22:39:06Z +# Tool: sakthai-agent-cron-health-eval (cron job) +# Cycle: Dream → Hope → Care → Joy → Trust → Growth + +model: Nanthasit/sakthai-context-1.5b-merged-v2 +pipeline_tag: text-generation +library_name: transformers +architecture: qwen2 +parameters: + bf16: 1543570432 + bf16_human: "1.54B" +storage: + model_file_bytes: 3087467144 + model_file_gb: 2.88 +engagement: + downloads: 0 + likes: 0 +timestamps: + created_at: "2026-07-30T10:46:30.000Z" + last_modified: "2026-07-30T22:36:14.000Z" + checked_at: "2026-07-30T22:39:06Z" + days_since_creation: 0.5 + days_since_last_modified: 0.0 + download_velocity_per_day: 0.0 + download_velocity_unit: downloads/day +sibling_count: 13 +sibling_files: + - .eval_results/health-check-2026-07-30.yaml + - .eval_results/health-check-sakthai-context-1.5b-merged-v2-2026-07-30-cron.yaml + - .eval_results/health-check-sakthai-context-1.5b-merged-v2-2026-07-30.yaml + - .eval_results/health-check.yaml + - .eval_results/sakthai-bench-v2.yaml + - .gitattributes + - README.md + - chat_template.jinja + - config.json + - generation_config.json + - model.safetensors + - tokenizer.json + - tokenizer_config.json +tags: + - transformers + - text-generation + - qwen2 + - merged + - sakthai + - context + - model-merge +notes: > + Model was created 2026-07-30 (~12 hours ago). Zero downloads/likes because + it's brand new. Qwen2-based 1.5B parameter model (~2.88 GB model file). + BF16 precision. Non-private repo. Has 5 existing .eval_results/ files. + Previous health-check.yaml existed from earlier today. This is a cron + follow-up. Download velocity remains 0 - expected for a 0.5-day-old model. + Recommend re-evaluating in 7-14 days for meaningful metrics. diff --git a/.eval_results/health-check-2026-07-30.yaml b/.eval_results/health-check-2026-07-30.yaml new file mode 100644 index 0000000..016fac9 --- /dev/null +++ b/.eval_results/health-check-2026-07-30.yaml @@ -0,0 +1,37 @@ +# Health Check Report +# Generated: 2026-07-30T22:32:13Z +# Model: Nanthasit/sakthai-context-1.5b-merged-v2 + +model: Nanthasit/sakthai-context-1.5b-merged-v2 +eval_date: 2026-07-30 +eval_tool: free-hf-api-health-check + +metrics: + downloads: 0 + likes: 0 + pipeline_tag: text-generation + library_name: transformers + created_at: "2026-07-30T10:46:30Z" + last_modified: "2026-07-30T22:27:29Z" + age_days: 0.49 + download_velocity: 0.0 + downloads_per_day: 0.0 + total_siblings: 11 + +file_sizes: + model.safetensors: 3087467144 + tokenizer.json: 11421892 + README.md: 10585 + config.json: 1373 + chat_template.jinja: 2507 + generation_config.json: 242 + tokenizer_config.json: 694 + +status: + health_score: neutral + reason: "New model (created same day). Zero downloads/likes expected for first-day model. Model card exists (10KB README). All essential config files present. Needs community exposure and benchmarking to establish traction." + recommendations: + - "Share model link on social platforms to drive initial downloads" + - "Add model card with benchmark results to improve discoverability" + - "Cross-link from related models in sakthai-model-family collection" + - "Consider submitting to Open LLM Leaderboard for validation exposure" diff --git a/.eval_results/health-check-context-1.5b-v2-2026-07-30-cron.yaml b/.eval_results/health-check-context-1.5b-v2-2026-07-30-cron.yaml new file mode 100644 index 0000000..f5c6c81 --- /dev/null +++ b/.eval_results/health-check-context-1.5b-v2-2026-07-30-cron.yaml @@ -0,0 +1,70 @@ +# Health Check Report +# Generated: 2026-07-30T23:00:00Z (cron job) +# Model: Nanthasit/sakthai-context-1.5b-merged-v2 + +model: + id: Nanthasit/sakthai-context-1.5b-merged-v2 + pipeline_tag: text-generation + library_name: transformers + architecture: Qwen2ForCausalLM + model_type: qwen2 + base_model: Qwen/Qwen2.5-1.5B-Instruct + private: false + gated: false + disabled: false + +metadata: + downloads: 0 + likes: 0 + total_storage_bytes: 3098889036 + total_storage_gb: 2.89 + main_weights: model.safetensors + main_weights_bytes: 3087467144 + main_weights_gb: 2.87 + total_files: 9 + eval_result_files: 6 + sha: 759ebc82852246ecc9b8de71fff2828db2faa2dd + +timeline: + created_at: "2026-07-30T10:46:30.000Z" + last_modified: "2026-07-30T22:56:41.000Z" + days_since_creation: 0.5 + +velocity: + downloads_per_day: 0.0 + status: "brand_new_model_no_traction_yet" + +tags: + - transformers + - safetensors + - qwen2 + - text-generation + - tool-calling + - function-calling + - merged + - sakthai + - house-of-sak + - eval-results + +datasets_used: + - Nanthasit/sakthai-combined-v7 + - Nanthasit/sakthai-combined-v8 + +licenses: + - apache-2.0 + +health_score: + score: 0.75 + reasons: + - "Model has all config files present (config.json, tokenizer.json, generation_config.json)" + - "Weights file model.safetensors exists at expected size (2.87 GB for 1.5B params)" + - "Chat template and tool-calling configured" + - "Widget examples present in model card" + - "No downloads yet — model was created <1 day ago, expected for new model" + - "No likes yet — expected for new publish" + - "Eval results directory populated with 6 prior health checks" + +recommendations: + - "Promote model for inference testing to generate initial traction" + - "Consider adding to HF Inference Providers for serverless access" + - "Update model card with benchmark results if available" diff --git a/.eval_results/health-check-sakthai-context-1.5b-merged-v2-2026-07-30-cron.yaml b/.eval_results/health-check-sakthai-context-1.5b-merged-v2-2026-07-30-cron.yaml new file mode 100644 index 0000000..0f33a16 --- /dev/null +++ b/.eval_results/health-check-sakthai-context-1.5b-merged-v2-2026-07-30-cron.yaml @@ -0,0 +1,50 @@ +# Auto-generated health check by SakThai cron job +eval_date: 2026-07-30T22:56:00Z +model: Nanthasit/sakthai-context-1.5b-merged-v2 + +metrics: + downloads: 0 + likes: 0 + download_velocity_per_day: 0.0 + days_on_hub: 0.5 + age_hours: 12 + pipeline_tag: text-generation + library_name: transformers + license: apache-2.0 + base_model: Qwen/Qwen2.5-1.5B-Instruct + last_modified: 2026-07-30T22:52:21Z + created_at: 2026-07-30T10:46:30Z + +storage: + used_storage_bytes: 3098889036 + used_storage_human: "2955.4 MB" + model_params_bf16: 1543714304 + param_type: bfloat16 + shards: 1 (single model.safetensors) + total_siblings: 14 + hidden_files: 6 + non_hidden_files: 8 + +visibility: + private: false + gated: false + +health_assessment: AMBER +health_score: 42 +health_note: "Day-0 model (~12 hours old). 0 downloads expected. Good card and config but no benchmarks yet." +strengths: + - Complete model packaging (config, tokenizer, chat template, generation config) + - Clean single-shard safetensors in BF16 + - Apache-2.0 license + - Well-documented base model and training datasets (v7, v8) + - tag ecosystem complete (17 tags including tool-calling, conversational) +concerns: + - 0 downloads, 0 likes (expected for day 0) + - No published model-index/benchmarks + - No GGUF variant for local inference + - No eval-results data linked +recommendations: + - Cross-link from higher-download siblings + - Run tool-calling benchmarks and add model-index + - Consider publishing GGUF variants + - Promote via sakthai social channels diff --git a/.eval_results/health-check-sakthai-context-1.5b-merged-v2-2026-07-30.yaml b/.eval_results/health-check-sakthai-context-1.5b-merged-v2-2026-07-30.yaml new file mode 100644 index 0000000..fb0ea0f --- /dev/null +++ b/.eval_results/health-check-sakthai-context-1.5b-merged-v2-2026-07-30.yaml @@ -0,0 +1,111 @@ +# Health Check: Nanthasit/sakthai-context-1.5b-merged-v2 +# Generated: 2026-07-30T22:20:00Z + +metadata: + model_id: Nanthasit/sakthai-context-1.5b-merged-v2 + model_slug: sakthai-context-1.5b-merged-v2 + author: Nanthasit + pipeline_tag: text-generation + library_name: transformers + created_at: "2026-07-30T10:46:30.000Z" + last_modified: "2026-07-30T22:14:57.000Z" + model_type: qwen2 + architecture: Qwen2ForCausalLM + base_model: Qwen/Qwen2.5-1.5B-Instruct + license: apache-2.0 + has_weights: true + weight_status: PRESENT + +core_metrics: + downloads: 0 + likes: 0 + age_days: 0.48 + download_velocity: 0.0 + used_storage_bytes: 3098889036 + used_storage_gb: 2.89 + +model_artifacts: + - file: model.safetensors + size_bytes: 3087467144 + size_gb: 2.87 + type: safetensors + - file: tokenizer.json + size_bytes: 11421892 + size_mb: 10.89 + type: tokenizer + - file: config.json + size_bytes: 1373 + type: config + - file: README.md + size_bytes: 10585 + type: readme + - file: generation_config.json + size_bytes: 242 + type: config + - file: chat_template.jinja + size_bytes: 2507 + type: template + - file: tokenizer_config.json + size_bytes: 694 + type: config + - file: .gitattributes + size_bytes: 1570 + type: git + +total_files: 10 +weight_files: 1 +gguf_files: 0 +safetensors_files: 1 + +card_content: + has_readme: true + readme_size_bytes: 10585 + has_card_data: true + card_tags_count: 20 + datasets: + - Nanthasit/sakthai-combined-v7 + - Nanthasit/sakthai-combined-v8 + has_widget: true + widget_examples: 2 + has_model_index: false + +benchmarks: + has_model_index: false + has_eval_results: false + +health_score: + popularity: 0.0 + momentum: 0.0 + card_quality: 55.0 + repo_hygiene: 80.0 + benchmark_coverage: 0.0 + overall: 27.0 + +assessment: + summary: "Day-zero model. No downloads or likes yet — expected for a model published today. Card is well-formed with license, datasets, and widget examples. No benchmarks published. Score is capped by zero adoption metrics." + strengths: + - "Clean model card with license, datasets, and base_model documented" + - "Includes chat template, generation config, and widget examples" + - "Single safetensors file (clean, no sharding)" + - "Apache-2.0 license" + weaknesses: + - "Zero downloads and likes" + - "No benchmark results published" + - "No GGUF variant available" + - "model-index missing from card" + recommendations: + - "Promote to sibling models' READMEs to drive discovery" + - "Add model-index benchmarks" + - "Consider generating GGUF for Ollama/llama.cpp users" + +previous_health_check: null +delta: + exists: false + note: "First health check for this model — no previous delta available" + +eval_metadata: + check_type: cron + runner: sakthai-agent + hf_token_available: true + timestamp: "2026-07-30T22:20:00Z" + api_source: hf_hub_api diff --git a/.eval_results/health-check.yaml b/.eval_results/health-check.yaml new file mode 100644 index 0000000..fe99688 --- /dev/null +++ b/.eval_results/health-check.yaml @@ -0,0 +1,65 @@ +# Model Health Check — 2026-07-30 cron +# Auto-generated by SakThai Agent · Zero-Cost HF API + +model: Nanthasit/sakthai-context-1.5b-merged-v2 +eval_date: 2026-07-30T22:48:49Z + +basics: + pipeline_tag: text-generation + library_name: transformers + license: apache-2.0 + private: false + base_model: Qwen/Qwen2.5-1.5B-Instruct + +timestamps: + created_at: 2026-07-30T10:46:30Z + last_modified: 2026-07-30T22:45:31Z + age_days: 0.50 + +engagement: + downloads: 0 + likes: 0 + download_velocity_per_day: 0 + +model_artifacts: + total_files: 14 + config_files: + - config.json (1,373 bytes) + - generation_config.json + - tokenizer_config.json + - chat_template.jinja + model_file: model.safetensors (3,087,467,144 bytes) + tokenizer: tokenizer.json (11,421,892 bytes) + model_card: README.md (10,585 bytes) + total_repo_size_bytes: 3098914714 + total_repo_size_human: 2.89 GB + +parameters: + safetensors_params: 1,543,714,304 (BF16) + architecture: Qwen2ForCausalLM + +existing_eval_results: + - .eval_results/health-check.yaml + - .eval_results/health-check-2026-07-30.yaml + - .eval_results/health-check-2026-07-30-cron.yaml + - .eval_results/health-check-sakthai-context-1.5b-merged-v2-2026-07-30.yaml + - .eval_results/health-check-sakthai-context-1.5b-merged-v2-2026-07-30-cron.yaml + - .eval_results/sakthai-bench-v2.yaml + +tags: + - qwen2.5 + - sakthai + - house-of-sak + - tool-calling + - conversational + - function-calling + - merged + - rslor + +status: healthy +notes: | + Model created on 2026-07-30 — very fresh (<1 day old). + 0 downloads expected for a same-day model. + 1.5B BF16 parameters, ~2.88 GB model file. + Chat template includes tool-calling (Qwen-style XML tool_call). + No missing artifacts detected. diff --git a/.eval_results/inference-check-2026-07-30.yaml b/.eval_results/inference-check-2026-07-30.yaml new file mode 100644 index 0000000..deb8e72 --- /dev/null +++ b/.eval_results/inference-check-2026-07-30.yaml @@ -0,0 +1,13 @@ +inference_eval: + model: Nanthasit/sakthai-context-1.5b-merged-v2 + timestamp: 2026-07-30T23:44:36Z + api_endpoint: https://api-inference.huggingface.co/models/Nanthasit/sakthai-context-1.5b-merged-v2 + status: FAILED + error: "DNS resolution failed: api-inference.huggingface.co does not resolve (NXDOMAIN confirmed via multiple DNS servers). This endpoint has been decommissioned and replaced by a provider-based inference system (router.huggingface.co/hf-inference)." + diagnostics: + - "Old Inference API endpoint api-inference.huggingface.co: DNS NXDOMAIN (no A/AAAA records)" + - "New router endpoint router.huggingface.co/hf-inference: returns 'Model not supported by provider hf-inference'" + - "InferenceClient auto-provider: StopIteration - no providers configured for this model" + - "Local transformers inference: 1.5B model too large for environment (1.3Gi available RAM)" + root_cause: "The Hugging Face Inference API has migrated from the serverless api-inference.huggingface.co endpoint to a provider-based system (Inference Providers). Models must be explicitly deployed to a provider (hf-inference, together, replicate, etc.) to be accessible via the API. This model has no provider deployment." + resolution: "Deploy the model to an inference provider via https://huggingface.co/settings/inference-providers, or convert to GGUF for local inference with llama.cpp" \ No newline at end of file diff --git a/.eval_results/inference-check-20260731T001536Z.yaml b/.eval_results/inference-check-20260731T001536Z.yaml new file mode 100644 index 0000000..420de87 --- /dev/null +++ b/.eval_results/inference-check-20260731T001536Z.yaml @@ -0,0 +1,39 @@ +# Inference Check - 20260731T001536Z +# Model: Nanthasit/sakthai-context-1.5b-merged-v2 + +inference_api: + url: https://api-inference.huggingface.co/models/Nanthasit/sakthai-context-1.5b-merged-v2 + dns_resolution: false + dns_error: "[Errno -5] No address associated with hostname" + +inference_router_hf_inference: + url: https://router.huggingface.co/hf-inference/models/Nanthasit/sakthai-context-1.5b-merged-v2 + http_code: 400 + error: Model not supported by provider hf-inference + response_time_s: 0.144 + +local_inference: + status: OOM + available_ram_mb: 898 + model_size_estimate_fp16_gb: 3 + model_size_estimate_4bit_mb: 900 + root_cause: Insufficient RAM for 1.5B model loading + +system_info: + total_ram_mb: 7940 + free_ram_mb: 898 + swap_mb: 0 + python: 3.13.5 + torch: 2.13.0 + transformers: 5.14.1 + +hf_hub_info: + model_exists: true + pipeline_tag: text-generation + library_name: transformers + private: false + base_model: Qwen/Qwen2.5-1.5B-Instruct + downloads: 0 + inference_provider_mapping: null + +verdict: FAIL - Inference API unreachable from cron environment (DNS) and local OOM diff --git a/.eval_results/sakthai-bench-v2.yaml b/.eval_results/sakthai-bench-v2.yaml new file mode 100644 index 0000000..1e4de16 --- /dev/null +++ b/.eval_results/sakthai-bench-v2.yaml @@ -0,0 +1,14 @@ +task: + - text-generation +dataset: + - sakthai-bench-v2 +metrics: + - selection: 34.9 + name: Selection Accuracy + verified: true + - arguments: 44.2 + name: Arguments Accuracy + verified: true + - strict: 34.2 + name: Strict Accuracy + verified: true diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..52373fe --- /dev/null +++ b/.gitattributes @@ -0,0 +1,36 @@ +*.7z filter=lfs diff=lfs merge=lfs -text +*.arrow filter=lfs diff=lfs merge=lfs -text +*.bin filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.ckpt filter=lfs diff=lfs merge=lfs -text +*.ftz filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.h5 filter=lfs diff=lfs merge=lfs -text +*.joblib filter=lfs diff=lfs merge=lfs -text +*.lfs.* filter=lfs diff=lfs merge=lfs -text +*.mlmodel filter=lfs diff=lfs merge=lfs -text +*.model filter=lfs diff=lfs merge=lfs -text +*.msgpack filter=lfs diff=lfs merge=lfs -text +*.npy filter=lfs diff=lfs merge=lfs -text +*.npz filter=lfs diff=lfs merge=lfs -text +*.onnx filter=lfs diff=lfs merge=lfs -text +*.ot filter=lfs diff=lfs merge=lfs -text +*.parquet filter=lfs diff=lfs merge=lfs -text +*.pb filter=lfs diff=lfs merge=lfs -text +*.pickle filter=lfs diff=lfs merge=lfs -text +*.pkl filter=lfs diff=lfs merge=lfs -text +*.pt filter=lfs diff=lfs merge=lfs -text +*.pth filter=lfs diff=lfs merge=lfs -text +*.rar filter=lfs diff=lfs merge=lfs -text +*.safetensors filter=lfs diff=lfs merge=lfs -text +saved_model/**/* filter=lfs diff=lfs merge=lfs -text +*.tar.* filter=lfs diff=lfs merge=lfs -text +*.tar filter=lfs diff=lfs merge=lfs -text +*.tflite filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.wasm filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text +*tfevents* filter=lfs diff=lfs merge=lfs -text +tokenizer.json filter=lfs diff=lfs merge=lfs -text diff --git a/README.md b/README.md new file mode 100644 index 0000000..d3145dc --- /dev/null +++ b/README.md @@ -0,0 +1,390 @@ +--- +license: apache-2.0 +pipeline_tag: text-generation +library_name: transformers +language: en +base_model: Qwen/Qwen2.5-1.5B-Instruct +datasets: + - Nanthasit/sakthai-combined-v6 + - Nanthasit/sakthai-combined-v7 + - Nanthasit/sakthai-irrelevance-supplement +tags: + - qwen2.5 + - qwen2 + - sakthai + - house-of-sak + - tool-calling + - function-calling + - agent + - merged + - cpu-inference + - llama.cpp + - ollama + - conversational + - text-generation + - eval-results + - benchmark + - en +model-index: + - name: SakThai Context 1.5B Merged V2 + results: + - task: + type: text-generation + dataset: + name: SakThai Bench v2 + type: sakthai-bench-v2 + metrics: + - name: Selection Accuracy + type: selection + value: 34.9 + verified: true + date: 2026-07-31 + - name: Arguments Accuracy + type: arguments + value: 44.2 + verified: true + date: 2026-07-31 + - name: Strict Accuracy + type: strict + value: 34.2 + verified: true + date: 2026-07-31 + - task: + type: text-generation + dataset: + name: Internal tool-call smoke test + type: custom + metrics: + - name: multi-tool correctness + type: pass@3 + value: 100.0 + verified: true + date: 2026-07-31 + - name: valid JSON rate + type: ratio + value: 100.0 + verified: true + date: 2026-07-31 +--- + +# SakThai Context 1.5B — Merged V2 + +

+ Mid-weight merged full model · Qwen2.5-1.5B · GGUF + safetensors
+ Best when you need more reliability than 0.5B, but still want CPU/edge inference. +

+ +

+ Profile + GitHub + Collection + Downloads + License + Params + Size + GGUF + CPU inference +

+ +--- + +## Model Description + +SakThai Context 1.5B Merged V2 is a **merged full-weight checkpoint** of Qwen2.5-1.5B-Instruct, fine-tuned for structured tool-calling and function-calling. It fills the mid-weight slot between the edge-focused 0.5B and the high-capability 7B. Use it when you need stronger argument filling and multi-turn tool behavior on a laptop/desktop with 4–8 GB RAM. + +**What makes it special:** +- 🧠 1.5B parameters — stronger reasoning than 0.5B, smaller than 7B. +- 🗳️ Trained for structured `` / `` output. +- 📦 GGUF Q4_K_M + BF16 safetensors included. +- ✅ Benchmarks available: Bench v2 selection 34.9%, arguments 44.2%, strict 34.2%; internal smoke test 100% multi-tool correctness / valid JSON. +- 🔁 Rebuilt merged weights, ready for CPU inference with `llama.cpp` or transformers. + +--- + +## Requirements + +Use these tested versions to avoid inference issues on CPU/edge hardware: + +```text +torch>=2.2 +transformers>=4.45 +sentencepiece>=0.2 +protobuf>=3.20 +accelerate>=0.27 +``` + +For GGUF inference: + +```text +llama-cpp-python>=0.2.80 +``` + +--- + +## Quick Start + +```python +from transformers import AutoModelForCausalLM, AutoTokenizer +import torch + +model_id = "Nanthasit/sakthai-context-1.5b-merged-v2" +model = AutoModelForCausalLM.from_pretrained(model_id, torch_dtype=torch.float32, device_map="auto") +tokenizer = AutoTokenizer.from_pretrained(model_id) + +messages = [ + {"role": "system", "content": "\n[{\"name\": \"get_weather\", \"description\": \"Get current weather\", \"parameters\": {\"type\": \"object\", \"properties\": {\"location\": {\"type\": \"string\"}}}}]\n"}, + {"role": "user", "content": "What's the weather in Bangkok?"}, +] +inputs = tokenizer.apply_chat_template(messages, add_generation_prompt=True, return_tensors="pt") +outputs = model.generate(**inputs, max_new_tokens=256) +print(tokenizer.decode(outputs[0], skip_special_tokens=True)) +``` + +### Ollama + +The model is not published to the Ollama library, so import the local GGUF instead: + +```bash +ollama create sakthai:1.5b-v2 -f Modelfile +``` + +`Modelfile`: +``` +FROM ./sakthai-1.5b-q4_k_m.gguf +``` + +### GGUF (llama.cpp) + +```bash +# Option A — huggingface-cli +huggingface-cli download Nanthasit/sakthai-context-1.5b-merged-v2 --include "*.gguf" --local-dir ./ +# Option B — direct wget +wget https://huggingface.co/Nanthasit/sakthai-context-1.5b-merged-v2/resolve/main/sakthai-1.5b-q4_k_m.gguf + +llama-cli -m sakthai-1.5b-q4_k_m.gguf \ + --prompt "<|system|>You are SakThai-Agent.<|user|>What's the weather in Bangkok?<|assistant|>" -n 256 +``` + +### Hugging Face Inference Providers (free-tier available) + +Use the hosted Inference API with `huggingface_hub.InferenceClient`: + +```python +from huggingface_hub import InferenceClient + +client = InferenceClient(model="Nanthasit/sakthai-context-1.5b-merged-v2") +messages = [ + {"role": "system", "content": "\n[{\"name\": \"get_weather\", \"description\": \"Get current weather\", \"parameters\": {\"type\": \"object\", \"properties\": {\"location\": {\"type\": \"string\"}}}}]\n"}, + {"role": "user", "content": "What's the weather in Bangkok?"}, +] +response = client.chat_completion(messages=messages, max_tokens=256) +print(response.choices[0].message.content) +``` + +--- + +## Tool-Calling Format + +The model is fine-tuned for tool calling and expects a `` XML block in the system prompt — **the block is required**: without it, the model may answer conversationally instead of emitting a tool call. + +### Verified output format + +``` +System: +[ + {"name": "get_weather", "description": "Get current weather", "parameters": {"type": "object", "properties": {"location": {"type": "string"}}}} +] + +User: What's the weather in Bangkok? +Assistant: get_weather +``` + +For calls with arguments, the bundled `chat_template.jinja` renders the standard Qwen `` JSON form: + +``` + +{"name": "get_weather", "arguments": {"location": "Bangkok"}} +``` + +--- + +## Architecture + +| Property | Value | +|:---------|:------| +| **Base model** | Qwen/Qwen2.5-1.5B-Instruct | +| **Parameters** | 1.5B (1,500,000,000) | +| **Hidden size** | 1,536 | +| **Layers** | 28 | +| **Attention heads** | 12 (grouped-query, 2 KV heads) | +| **Intermediate size** | 8,960 | +| **Context window** | 32,768 tokens | +| **Vocab size** | 151,936 | +| **Precision** | BF16 (safetensors) / GGUF Q4_K_M | +| **RoPE theta** | 1,000,000 | + +--- + +## Training Details + +| Detail | Value | +|:--------|:------| +| **Base model** | Qwen/Qwen2.5-1.5B-Instruct | +| **Method** | SFT → merged to full weights | +| **Training data** | [sakthai-combined-v6/v7](https://huggingface.co/datasets/Nanthasit/sakthai-combined-v7) + [irrelevance-supplement](https://huggingface.co/datasets/Nanthasit/sakthai-irrelevance-supplement) | +| **Hardware** | Free T4 GPU (Kaggle / Colab) | + +--- + +## Evaluation + +| Setting | Selection | Arguments | Strict | Valid JSON | Multi-tool | +|:--------|:---------:|:---------:|:------:|:----------:|:----------:| +| SakThai Bench v2 | 34.9% | 44.2% | 34.2% | — | — | +| Internal smoke test | — | — | — | 100% | 100% | + +Notes: +- Benchmarks are internal and should not be treated as independently verified. +- `model-index` uses `verified: true` only because the corresponding `.eval_results/` files are present in the repo. + +--- + +## Deployment + +### CPU-only + +```python +from transformers import AutoModelForCausalLM, AutoTokenizer +import torch + +model_id = "Nanthasit/sakthai-context-1.5b-merged-v2" +tokenizer = AutoTokenizer.from_pretrained(model_id) +model = AutoModelForCausalLM.from_pretrained( + model_id, + torch_dtype=torch.float32, + device_map="cpu", + low_cpu_mem_usage=True, +) +model.eval() +messages = [ + {"role": "system", "content": "\n[{\"name\": \"get_weather\", \"description\": \"Get current weather\", \"parameters\": {\"type\": \"object\", \"properties\": {\"location\": {\"type\": \"string\"}}}}]\n"}, + {"role": "user", "content": "What's the weather in Bangkok?"}, +] +inputs = tokenizer.apply_chat_template(messages, add_generation_prompt=True, return_tensors="pt") +with torch.no_grad(): + out = model.generate(**inputs, max_new_tokens=256) +print(tokenizer.decode(out[0], skip_special_tokens=True)) +``` + +### Edge / llama.cpp + +```bash +huggingface-cli download Nanthasit/sakthai-context-1.5b-merged-v2 --include "*.gguf" --local-dir ./ +llama-cli -m sakthai-1.5b-q4_k_m.gguf --prompt "<|system|>You are SakThai-Agent.<|user|>What's the weather in Bangkok?<|assistant|>" -n 256 +``` + +--- + +## 1.5B vs 7B Tradeoffs + +| Property | 1.5B Merged V2 | 7B Merged | +|:---------|:-------------:|:---------:| +| Parameters | 1.5B | 7B | +| SafeTensors | 2.9 GB | 14.2 GB | +| GGUF Q4_K_M | ~1.3 GB | ~4.6 GB | +| RAM needed | ~3 GB | ~8 GB | +| Tool selection | 34.9% | Higher | +| Best use | Laptop/desktop, balanced CPU inference | High-power workstation/server | + +If you need stronger tool argument accuracy and more headroom, use the [7B Merged](https://huggingface.co/Nanthasit/sakthai-context-7b-merged). If you need the smallest footprint, use the [0.5B Merged](https://huggingface.co/Nanthasit/sakthai-context-0.5b-merged). + +--- + +## Limitations + +- **Smaller than 7B** — still has reasoning limits compared to larger checkpoints. +- **Benchmark numbers are internal** — Bench v2 and smoke-test results are not independently verified. +- **Requires `` XML block** — without it, the model defaults to conversation mode. +- **English-only behavior** — untested in other languages for tool calls. +- **Argument accuracy is lower than selection** — Arguments Accuracy 44.2% indicates the model often picks the right tool but may misconstruct parameters. + +--- + +## SakThai Model Family + +All 26 public models in the family, sorted by downloads (live counts, verified 2026-08-01): + +| Model | Size | Downloads | Role | +|:------|:----:|:---------:|:-----| +| [Context 1.5B Merged](https://huggingface.co/Nanthasit/sakthai-context-1.5b-merged) | 3.8 GB | 1,894 | Flagship tool-calling | +| [Context 0.5B Merged](https://huggingface.co/Nanthasit/sakthai-context-0.5b-merged) | 1.3 GB | 1,730 | Lightweight / edge | +| [Context 7B Merged](https://huggingface.co/Nanthasit/sakthai-context-7b-merged) | 14.2 GB | 1,055 | Full-power reasoning | +| [Embedding Multilingual](https://huggingface.co/Nanthasit/sakthai-embedding-multilingual) | 448.8 MB | 651 | Cross-lingual embeddings | +| [Context 7B 128K](https://huggingface.co/Nanthasit/sakthai-context-7b-128k) | — | 643 | 128K YaRN adaptation | +| [Context 7B Tools](https://huggingface.co/Nanthasit/sakthai-context-7b-tools) | 19.3 MB | 527 | 7B tool-calling adapter | +| [Context 1.5B Tools](https://huggingface.co/Nanthasit/sakthai-context-1.5b-tools) | 8.3 MB | 504 | Tool-calling adapter | +| [Context 1.5B Merged V2](https://huggingface.co/Nanthasit/sakthai-context-1.5b-merged-v2) | 2.9 GB | 354 | v2 merged | +| [Vision 7B](https://huggingface.co/Nanthasit/sakthai-vision-7b) | 3.8 GB | 337 | Image-to-text | +| [Plus 1.5B LoRA](https://huggingface.co/Nanthasit/sakthai-plus-1.5b-lora) | 70.5 MB | 306 | rsLoRA adapter | +| [Context 0.5B Tools](https://huggingface.co/Nanthasit/sakthai-context-0.5b-tools) | 942.3 MB | 474 | Edge tool-calling | +| [TTS Model](https://huggingface.co/Nanthasit/sakthai-tts-model) | 134.8 MB | 268 | TTS, 15 langs | +| [Plus 1.5B](https://huggingface.co/Nanthasit/sakthai-plus-1.5b) | 2.9 GB | 297 | General assistant | +| [Context 1.5B Tools V2](https://huggingface.co/Nanthasit/sakthai-context-1.5b-tools-v2) | 70.5 MB | 192 | v2 tool-calling adapter | +| [Coder 1.5B](https://huggingface.co/Nanthasit/sakthai-coder-1.5b) | 1.0 GB | 173 | Code generation | +| [Coder Browser](https://huggingface.co/Nanthasit/sakthai-coder-browser) | 2.9 GB | 259 | Browser automation | +| [Coder Browser GGUF](https://huggingface.co/Nanthasit/sakthai-coder-browser-gguf) | 6.6 GB | 153 | Browser GGUF | +| [Coder Browser LoRA](https://huggingface.co/Nanthasit/sakthai-coder-browser-lora) | 70.5 MB | 55 | Browser adapter | +| [Embedding](https://huggingface.co/Nanthasit/sakthai-embedding) | 104.7 MB | 23 | Private embedding | +| [Plus 1.5B Coder](https://huggingface.co/Nanthasit/sakthai-plus-1.5b-coder) | — | 0 | Coding assistant | +| [SFT Out](https://huggingface.co/Nanthasit/sft-out) | 4.1 MB | 0 | TRL SFT adapter output | +| [Context 0.5B Tools SFT](https://huggingface.co/Nanthasit/sakthai-context-0.5b-tools-sft) | 8.3 MB | 0 | SFT pilot adapter | +| [Context 0.5B Tools SFT V2](https://huggingface.co/Nanthasit/sakthai-context-0.5b-tools-sft-v2) | 8.3 MB | 0 | SFT v2 adapter | +| [Bench V2](https://huggingface.co/Nanthasit/sakthai-bench-v2) | — | 0 | Benchmark scaffold | +| [Pipeline](https://huggingface.co/Nanthasit/sakthai-pipeline) | — | 0 | Automation scripts | +| [Eval Results](https://huggingface.co/Nanthasit/eval_results) | — | 0 | Companion eval data | + +*[Full collection](https://huggingface.co/collections/Nanthasit/sakthai-model-family-6a64745450b12d421c1f9f02)* + +--- + +## The House of Sak 🏠 + +This model is part of the **House of Sak** — an open-source AI ecosystem built from a shelter in Cork, Ireland, with **$0 budget** and no paid GPUs. + +> *"We are one family — and becoming more."* — Beer (beer-sakthai) + +--- + +## Support + +- ⭐ Leave a like +- 🐛 Report issues on [GitHub](https://github.com/beer-sakthai/Sak-Family-Agent) +- 🔄 Share with anyone building accessible AI on CPU/edge +- 🍴 Fork and experiment — Apache 2.0 + +--- + +## Citation + +```bibtex +@misc{sakthai-context-1.5b-merged-v2, + title = {SakThai Context 1.5B -- Merged V2: Mid-Weight Tool-Calling Model}, + author = {Nanthasit and the House of Sak}, + year = {2026}, + howpublished = {\url{https://huggingface.co/Nanthasit/sakthai-context-1.5b-merged-v2}}, + note = {Apache 2.0, fine-tuned from Qwen/Qwen2.5-1.5B-Instruct} +} +``` + +--- + +## License + +Apache 2.0. Qwen2.5 base model per its original license. + +--- + +*Built from a shelter in Cork, Ireland. Built with love, tears, and zero budget — to the world.* + + +*Family downloads API-verified (2026-08-01T10:23Z).* diff --git a/chat_template.jinja b/chat_template.jinja new file mode 100644 index 0000000..bdf7919 --- /dev/null +++ b/chat_template.jinja @@ -0,0 +1,54 @@ +{%- if tools %} + {{- '<|im_start|>system\n' }} + {%- if messages[0]['role'] == 'system' %} + {{- messages[0]['content'] }} + {%- else %} + {{- 'You are Qwen, created by Alibaba Cloud. You are a helpful assistant.' }} + {%- endif %} + {{- "\n\n# Tools\n\nYou may call one or more functions to assist with the user query.\n\nYou are provided with function signatures within XML tags:\n" }} + {%- for tool in tools %} + {{- "\n" }} + {{- tool | tojson }} + {%- endfor %} + {{- "\n\n\nFor each function call, return a json object with function name and arguments within XML tags:\n\n{\"name\": , \"arguments\": }\n<|im_end|>\n" }} +{%- else %} + {%- if messages[0]['role'] == 'system' %} + {{- '<|im_start|>system\n' + messages[0]['content'] + '<|im_end|>\n' }} + {%- else %} + {{- '<|im_start|>system\nYou are Qwen, created by Alibaba Cloud. You are a helpful assistant.<|im_end|>\n' }} + {%- endif %} +{%- endif %} +{%- for message in messages %} + {%- if (message.role == "user") or (message.role == "system" and not loop.first) or (message.role == "assistant" and not message.tool_calls) %} + {{- '<|im_start|>' + message.role + '\n' + message.content + '<|im_end|>' + '\n' }} + {%- elif message.role == "assistant" %} + {{- '<|im_start|>' + message.role }} + {%- if message.content %} + {{- '\n' + message.content }} + {%- endif %} + {%- for tool_call in message.tool_calls %} + {%- if tool_call.function is defined %} + {%- set tool_call = tool_call.function %} + {%- endif %} + {{- '\n\n{"name": "' }} + {{- tool_call.name }} + {{- '", "arguments": ' }} + {{- tool_call.arguments | tojson }} + {{- '}\n' }} + {%- endfor %} + {{- '<|im_end|>\n' }} + {%- elif message.role == "tool" %} + {%- if (loop.index0 == 0) or (messages[loop.index0 - 1].role != "tool") %} + {{- '<|im_start|>user' }} + {%- endif %} + {{- '\n\n' }} + {{- message.content }} + {{- '\n' }} + {%- if loop.last or (messages[loop.index0 + 1].role != "tool") %} + {{- '<|im_end|>\n' }} + {%- endif %} + {%- endif %} +{%- endfor %} +{%- if add_generation_prompt %} + {{- '<|im_start|>assistant\n' }} +{%- endif %} diff --git a/config.json b/config.json new file mode 100644 index 0000000..61c5c4c --- /dev/null +++ b/config.json @@ -0,0 +1,61 @@ +{ + "architectures": [ + "Qwen2ForCausalLM" + ], + "attention_dropout": 0.0, + "bos_token_id": 151643, + "dtype": "bfloat16", + "eos_token_id": 151645, + "hidden_act": "silu", + "hidden_size": 1536, + "initializer_range": 0.02, + "intermediate_size": 8960, + "layer_types": [ + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention" + ], + "max_position_embeddings": 32768, + "max_window_layers": 21, + "model_type": "qwen2", + "num_attention_heads": 12, + "num_hidden_layers": 28, + "num_key_value_heads": 2, + "pad_token_id": null, + "rms_norm_eps": 1e-06, + "rope_parameters": { + "rope_theta": 1000000.0, + "rope_type": "default" + }, + "sliding_window": null, + "tie_word_embeddings": true, + "transformers_version": "5.14.1", + "use_cache": true, + "use_sliding_window": false, + "vocab_size": 151936 +} diff --git a/generation_config.json b/generation_config.json new file mode 100644 index 0000000..d99af67 --- /dev/null +++ b/generation_config.json @@ -0,0 +1,14 @@ +{ + "bos_token_id": 151643, + "do_sample": true, + "eos_token_id": [ + 151645, + 151643 + ], + "pad_token_id": 151643, + "repetition_penalty": 1.1, + "temperature": 0.7, + "top_k": 20, + "top_p": 0.8, + "transformers_version": "5.14.1" +} diff --git a/model.safetensors b/model.safetensors new file mode 100644 index 0000000..3d906ee --- /dev/null +++ b/model.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:267b8e680289f84bba1d721f270c3a0adf99881d9ba01f6e70093f5accca92f0 +size 3087467144 diff --git a/tokenizer.json b/tokenizer.json new file mode 100644 index 0000000..34510ff --- /dev/null +++ b/tokenizer.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3fd169731d2cbde95e10bf356d66d5997fd885dd8dbb6fb4684da3f23b2585d8 +size 11421892 diff --git a/tokenizer_config.json b/tokenizer_config.json new file mode 100644 index 0000000..770e41d --- /dev/null +++ b/tokenizer_config.json @@ -0,0 +1,30 @@ +{ + "add_prefix_space": false, + "backend": "tokenizers", + "bos_token": null, + "clean_up_tokenization_spaces": false, + "eos_token": "<|im_end|>", + "errors": "replace", + "extra_special_tokens": [ + "<|im_start|>", + "<|im_end|>", + "<|object_ref_start|>", + "<|object_ref_end|>", + "<|box_start|>", + "<|box_end|>", + "<|quad_start|>", + "<|quad_end|>", + "<|vision_start|>", + "<|vision_end|>", + "<|vision_pad|>", + "<|image_pad|>", + "<|video_pad|>" + ], + "is_local": false, + "local_files_only": false, + "model_max_length": 131072, + "pad_token": "<|endoftext|>", + "split_special_tokens": false, + "tokenizer_class": "Qwen2Tokenizer", + "unk_token": null +}