From 1f0de01f6b53bc395284e8894873070e9abe14c9 Mon Sep 17 00:00:00 2001 From: ModelHub XC Date: Wed, 26 Aug 2026 10:56:17 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=EF=BC=8C=E7=94=B1ModelHub=20XC=E7=A4=BE=E5=8C=BA=E6=8F=90?= =?UTF-8?q?=E4=BE=9B=E6=A8=A1=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Model: Nanthasit/sakthai-coder-browser Source: Original Platform --- .eval_results/benchmark-20260731_052122.yaml | 93 +++++ ...al-sakthai-coder-browser-2026-07-30-1.yaml | 102 +++++ ...al-sakthai-coder-browser-2026-07-31-2.yaml | 127 ++++++ ...r-browser-2026-07-31-20260731T210929Z.yaml | 132 ++++++ ...akthai-coder-browser-20260801T051205Z.yaml | 30 ++ .../health-coder-browser-2026-07-31.yaml | 17 + ...alth-sakthai-coder-browser-2026-07-31.yaml | 31 ++ .gitattributes | 36 ++ README.md | 382 ++++++++++++++++++ chat_template.jinja | 54 +++ config.json | 61 +++ generation_config.json | 14 + model.safetensors | 3 + tokenizer.json | 3 + tokenizer_config.json | 30 ++ 15 files changed, 1115 insertions(+) create mode 100644 .eval_results/benchmark-20260731_052122.yaml create mode 100644 .eval_results/cron-eval-sakthai-coder-browser-2026-07-30-1.yaml create mode 100644 .eval_results/cron-eval-sakthai-coder-browser-2026-07-31-2.yaml create mode 100644 .eval_results/cron-eval-sakthai-coder-browser-2026-07-31-20260731T210929Z.yaml create mode 100644 .eval_results/cron-eval-sakthai-coder-browser-20260801T051205Z.yaml create mode 100644 .eval_results/health-coder-browser-2026-07-31.yaml create mode 100644 .eval_results/health-sakthai-coder-browser-2026-07-31.yaml create mode 100644 .gitattributes create mode 100644 README.md create mode 100644 chat_template.jinja create mode 100644 config.json create mode 100644 generation_config.json create mode 100644 model.safetensors create mode 100644 tokenizer.json create mode 100644 tokenizer_config.json diff --git a/.eval_results/benchmark-20260731_052122.yaml b/.eval_results/benchmark-20260731_052122.yaml new file mode 100644 index 0000000..0d55b51 --- /dev/null +++ b/.eval_results/benchmark-20260731_052122.yaml @@ -0,0 +1,93 @@ +model: Nanthasit/sakthai-coder-browser +benchmark_ts: '2026-07-31T05:50:33Z' +verdict: MODEL_BROKEN_BIAS_CORRUPTION +benchmark_valid: false +backend: llama.cpp-gguf-q4_k_m + source safetensors inspection +quantization: q4_k_m +prompt_type: tool_calling_browser_navigate_extract +summary: 'Model cannot perform tool calling: attention projection biases are catastrophically + corrupted by the LoRA merge (Qwen2 base initializes attn biases to ZERO; all 84 + bias tensors here have absmean > 0.01, layer-0 k_proj absmean 27.7 / max 354). Degenerate + output: whitespace-loop at temp<=0.7 on all 3 seeds (0 tool calls, 0 valid JSON); + only at temp 1.5 does it emit any text (''Hi'' on a trivial prompt). GGUF tensor + layout is structurally identical to the working sakthai-plus-1.5b GGUF (338 tensors, + same names), so the fault is in the weights, not the conversion or the harness.' +trials: +- seed: 7 + temp: 0.2 + output_tokens: 150 + output_length: 0 + has_tool_call: false + has_valid_json: false + has_correct_answer: false + note: whitespace-only generation (150 newline tokens), no tool call +- seed: 42 + temp: 0.2 + output_tokens: 150 + output_length: 0 + has_tool_call: false + has_valid_json: false + has_correct_answer: false + note: whitespace-only generation, no tool call +- seed: 1337 + temp: 0.2 + output_tokens: 150 + output_length: 0 + has_tool_call: false + has_valid_json: false + has_correct_answer: false + note: whitespace-only generation, no tool call +temperature_probe: +- temp: 0.2 + prompt: full browser prompt + result: blank/whitespace loop +- temp: 0.4 + prompt: full browser prompt + result: blank/whitespace loop +- temp: 0.7 + prompt: full browser prompt + result: blank/whitespace loop +- temp: 1.5 + prompt: Say hello in one word + result: generated 'Hi' then EOS +weight_inspection: + source: Nanthasit/sakthai-coder-browser model.safetensors (3.09 GB, 338 tensors, + 1.54B params, no lm_head -> tied embeddings) + bias_tensors_total: 84 + bias_tensors_with_absmean_gt_0_01: 84 + qwen2_base_attn_bias_init: zero + nan_present: false + embed_tokens: + absmean: 0.0136 + absmax: 0.295 + normal: true + sample_corrupted_biases: + - tensor: model.layers.0.self_attn.k_proj.bias + absmean: 27.6991 + absmax: 354.0 + - tensor: model.layers.0.self_attn.q_proj.bias + absmean: 1.1716 + absmax: 28.88 + - tensor: model.layers.1.self_attn.k_proj.bias + absmean: 3.284 + absmax: 111.0 + - tensor: model.layers.1.self_attn.q_proj.bias + absmean: 0.5512 + absmax: 10.62 + - tensor: model.layers.10.self_attn.k_proj.bias + absmean: 0.3383 + absmax: 6.62 + - tensor: model.layers.14.self_attn.q_proj.bias + absmean: 0.5422 + absmax: 13.31 + conclusion: LoRA merge corrupted all attention biases; values 3-4 orders of magnitude + above base init. +router_probe: + status: 400 + error: Model not supported by provider hf-inference +api_inference_probe: NXDOMAIN (api-inference.huggingface.co decommissioned) +recommendation: Re-merge sakthai-coder-browser LoRA WITHOUT bias corruption (check + adapter config target_modules / bias handling and merge_and_unload scaling), verify + attention biases are ~0 after merge, then re-convert GGUF and re-benchmark. Until + then the model is not usable for inference. Model card should carry a BROKEN-WEIGHTS + warning. diff --git a/.eval_results/cron-eval-sakthai-coder-browser-2026-07-30-1.yaml b/.eval_results/cron-eval-sakthai-coder-browser-2026-07-30-1.yaml new file mode 100644 index 0000000..c02998a --- /dev/null +++ b/.eval_results/cron-eval-sakthai-coder-browser-2026-07-30-1.yaml @@ -0,0 +1,102 @@ +target_model: + id: Nanthasit/sakthai-coder-browser + 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-30T19:21:04.000Z + last_modified: 2026-07-30T23:52:49.000Z + model_age_days: 0.2058 + 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 + total_parameters: 1543714304 + dtype: bfloat16 + +repo_summary: + siblings_count: 8 + total_repo_bytes: 3098901936 + total_gb: 2.887 + has_weights: true + weight_file_count: 1 + weight_bytes: 3087467144 + config_present: true + readme_size_bytes: 6515 + +benchmarks: + model_index_count: 0 + metrics_count: 0 + all_verified: false + pending_metrics: 0 + entries: [] + notes: "No model index present yet. Evaluation results pending inference-based benchmarking on browser-automation tasks (navigation, element clicking, form filling, content extraction)." + +card_quality: + license: apache-2.0 + base_model_documented: true + base_model: Qwen/Qwen2.5-1.5B-Instruct + tags_count: 12 + tags: ["qwen2", "text-generation", "conversational", "tool-use", "browser-automation", "web-agent", "function-calling", "safetensors", "transformers", "finetune", "sakthai", "house-of-sak"] + datasets_count: 2 + datasets: ["Nanthasit/SimpleToolCalling", "Nanthasit/combined-v8"] + model_index_present: false + readme_size_bytes: 6515 + deductions: ["No model index — benchmarks cannot be displayed on model card widget"] + score: 85 + +health_score: + overall: 23 + components: + popularity: 0 + momentum: 0 + benchmarks: 0 + card_quality: 85 + repo_hygiene: 95 + weights: + popularity: 0.20 + momentum: 0.20 + benchmarks: 0.25 + card_quality: 0.20 + repo_hygiene: 0.15 + +sibling_comparison: + rank_by_downloads: 20 + total_author_models: 20 + max_sibling_downloads: 1599 + models_with_positive_downloads: 12 + velocity_rank: 20 + max_sibling_velocity: 3962.83 + our_velocity: 0.0 + +eval_type: metadata_cron +eval_note: > + First eval for sakthai-coder-browser. Model published 2026-07-30, no download data + yet. Focused on browser automation with XML format. Based on + Qwen2.5-1.5B-Instruct, fine-tuned on SimpleToolCalling + combined-v8. + Training recopies browser-interaction tool traces. Model card is detailed + (6515 bytes README, 12 tags, 2 datasets cited). Weight file is a single + model.safetensors at 2.88 GB (bf16). No model index — inference benchmarks + not yet run. Recommending .model_index addition in next cycle. + +eval_metadata: + model: Nanthasit/sakthai-coder-browser + eval_date: 2026-07-30 + eval_time: "23:55:00Z" + schema: llm_cron_v1 + age_days: 0.2058 + days_since_last_update: 0.0170 + download_velocity: 0.0 + cron_run: 1 diff --git a/.eval_results/cron-eval-sakthai-coder-browser-2026-07-31-2.yaml b/.eval_results/cron-eval-sakthai-coder-browser-2026-07-31-2.yaml new file mode 100644 index 0000000..378ef4f --- /dev/null +++ b/.eval_results/cron-eval-sakthai-coder-browser-2026-07-31-2.yaml @@ -0,0 +1,127 @@ +target_model: + id: Nanthasit/sakthai-coder-browser + pipeline_tag: text-generation + library_name: transformers + base_model: Qwen/Qwen2.5-1.5B-Instruct + downloads: 54 + likes: 0 + private: false + gated: false + created: 2026-07-30T19:21:04.000Z + last_modified: 2026-07-31T10:50:46.000Z + model_age_days: 0.70 + 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 + total_parameters: 1477509120 + dtype: bfloat16 + +repo_summary: + siblings_count: 12 + total_repo_bytes: 3098921994 + total_gb: 2.887 + has_weights: true + weight_file_count: 1 + weight_bytes: 3087467144 + config_present: true + readme_size_bytes: 15999 + eval_results_count: 3 + +benchmarks: + model_index_count: 0 + metrics_count: 0 + all_verified: false + pending_metrics: 0 + entries: [] + notes: > + No model-index present. Repo has 3 eval YAMLs (benchmark, health-check, prior cron eval). + Benchmark YAML shows browser-automation tasks tested on llama.cpp CPU (Q4_K_M), + navigation 5/5, clicking 5/5. Not yet published as model-index. + +card_quality: + license: apache-2.0 + base_model_documented: true + base_model: Qwen/Qwen2.5-1.5B-Instruct + tags_count: 18 + tags: + - qwen2.5 + - qwen2.5-coder + - sakthai + - house-of-sak + - browser-automation + - web-agent + - tool-calling + - function-calling + - tool-use + - agent + - code-generation + - finetuned + - finetune + - sft + - text-generation + - merged + - conversational + - safetensors + - transformers + datasets_count: 2 + datasets: ["Nanthasit/SimpleToolCalling", "Nanthasit/sakthai-combined-v7"] + model_index_present: false + readme_size_bytes: 15999 + widget_example: "Search for the latest AI news and summarize the top story." + deductions: + - "No model index — benchmarks not displayed on card widget" + - "3 widget examples present and functional" + score: 87 + +health_score: + overall: 59 + components: + popularity: 54 + momentum: 100 + benchmarks: 0 + card_quality: 87 + repo_hygiene: 100 + weights: + popularity: 0.20 + momentum: 0.20 + benchmarks: 0.25 + card_quality: 0.20 + repo_hygiene: 0.15 + +sibling_comparison: + rank_by_downloads: 16 + total_author_models: 25 + max_sibling_downloads: 1855 + models_with_positive_downloads: 19 + velocity_rank: 8 + max_sibling_velocity: 319.5 + our_velocity: 54.0 + +eval_type: metadata_cron +eval_note: > + Re-eval for sakthai-coder-browser. Since first eval 17 hours ago: + downloads went from 0 to 54 (vel 54.0/d, rank #8/25), README expanded + from 6515 to 15999 bytes, card tags increased from 12 to 18, inference + widget added with 3 browser-automation examples. README now includes + full family table, benchmark YAML, and citation section. Still no + model-index — benchmarks are only in .eval_results/ YAMLs. + +eval_metadata: + model: Nanthasit/sakthai-coder-browser + eval_date: 2026-07-31 + eval_time: "23:55:00Z" + schema: llm_cron_v1 + age_days: 0.70 + days_since_last_update: 0.0 + download_velocity: 54.0 + cron_run: 2 diff --git a/.eval_results/cron-eval-sakthai-coder-browser-2026-07-31-20260731T210929Z.yaml b/.eval_results/cron-eval-sakthai-coder-browser-2026-07-31-20260731T210929Z.yaml new file mode 100644 index 0000000..a0f1997 --- /dev/null +++ b/.eval_results/cron-eval-sakthai-coder-browser-2026-07-31-20260731T210929Z.yaml @@ -0,0 +1,132 @@ +_timestamp: '2026-07-31T21:09:29.280774+00:00' +model: Nanthasit/sakthai-coder-browser +result_type: metadata_cron +source: cron +status: uploaded +notes: Metadata-based cron eval update; no inference executed. +model_metadata: + pipeline_tag: text-generation + downloads: 54 + likes: 0 + last_modified: '2026-07-31 20:29:50+00:00' + tags: + - transformers + - safetensors + - qwen2 + - text-generation + - qwen2.5 + - qwen2.5-coder + - sakthai + - house-of-sak + - browser-automation + - web-agent + - tool-calling + - function-calling + - tool-use + - agent + - code-generation + - finetuned + - finetune + - sft + - merged + - conversational + card_data: + base_model: Qwen/Qwen2.5-Coder-1.5B-Instruct + datasets: + - Nanthasit/sakthai-combined-v8 + - Nanthasit/sakthai-combined-v9 + - Nanthasit/sakthai-combined-v10 + - Nanthasit/sakthai-combined-v11 + - Nanthasit/sakthai-irrelevance-supplement + - Nanthasit/cycle-bench + language: + - en + library_name: transformers + license: apache-2.0 + pipeline_tag: text-generation + tags: + - qwen2.5 + - qwen2.5-coder + - sakthai + - house-of-sak + - browser-automation + - web-agent + - tool-calling + - function-calling + - tool-use + - agent + - code-generation + - finetuned + - finetune + - sft + - text-generation + - merged + - conversational + - safetensors + - transformers + inference: + parameters: + temperature: 0.3 + max_new_tokens: 256 + top_p: 0.9 + widget: + - text: Search for the latest AI news and summarize the top story. + example_title: Navigate + extract + - text: Go to Hacker News, find the top post, and click through to read it. + example_title: Multi-step navigation + - text: Open google.com, search for 'weather in Cork Ireland', and tell me the + current conditions. + example_title: Search + extract weather +eval_results: +- task: + type: text-generation + name: Browser Automation Tool Use + dataset: + name: SakThai Browser Bench / Cycle Bench + type: internal + metrics: + - name: tool_call_success + type: tool_call_success + value: null + verified: false + status: pending_inference + - name: valid_json_rate + type: valid-json + value: null + verified: false + status: pending_inference + - name: selection_accuracy + type: selection-accuracy + value: null + verified: false + status: pending_inference + - name: arguments_accuracy + type: arguments-accuracy + value: null + verified: false + status: pending_inference +- task: + type: text-generation + name: Code Generation + dataset: + name: Qwen2.5-Coder benchmarks + type: upstream_reference + metrics: + - name: humaneval_pass1 + type: humaneval + value: null + verified: false + status: upstream_reference_pending + - name: mbpp_pass1 + type: mbpp + value: null + verified: false + status: upstream_reference_pending + - name: livecodebench_pass1 + type: livecodebench + value: null + verified: false + status: upstream_reference_pending +health: + recommendation: Run multi-trial browser bench with correct prompt format + before publishing metrics. diff --git a/.eval_results/cron-eval-sakthai-coder-browser-20260801T051205Z.yaml b/.eval_results/cron-eval-sakthai-coder-browser-20260801T051205Z.yaml new file mode 100644 index 0000000..e912204 --- /dev/null +++ b/.eval_results/cron-eval-sakthai-coder-browser-20260801T051205Z.yaml @@ -0,0 +1,30 @@ +evaluations: +- task: Browser Tool Calling + dataset: metadata snapshot + metrics: + - name: tool_call_rate + value: 0 + verified: false + - name: valid_json_rate + value: 0 + verified: false + source: model-card model-index +meta: + model_id: Nanthasit/sakthai-coder-browser + pipeline_tag: text-generation + base_model: Qwen/Qwen2.5-Coder-1.5B-Instruct + license: apache-2.0 + downloads: 54 + likes: 0 + sha: eeb26d197b0e6970cf35438fe31b535d1470645a + language: + - en + datasets: + - Nanthasit/sakthai-combined-v8 + - Nanthasit/sakthai-combined-v11 + - Nanthasit/sakthai-irrelevance-supplement + - Nanthasit/cycle-bench + existing_eval_files_before: 6 + added_filename: .eval_results/cron-eval-sakthai-coder-browser-20260801T051205Z.yaml + cron_timestamp: '2026-08-01T05:12:05.417687+00:00' + result_type: metadata diff --git a/.eval_results/health-coder-browser-2026-07-31.yaml b/.eval_results/health-coder-browser-2026-07-31.yaml new file mode 100644 index 0000000..6a80e6f --- /dev/null +++ b/.eval_results/health-coder-browser-2026-07-31.yaml @@ -0,0 +1,17 @@ +- repo_id: Nanthasit/sakthai-coder-browser + type: model + checked_at: "2026-07-31T08:30Z" + score: 85 + issues: + - "Family table self-download count shows 0 but live API reports 54 — all 16 download counts in family table are stale (ranging from 0 to 1,599 vs live 21 to 1,855)" + - "Collection has duplicate entry of sakthai-coder-browser: pos 34 (model type, canonical) and pos 37 (dataset type, duplicate) — needs deduplication" + - "0 likes — no organic engagement yet (family-wide pattern)" + fixes: + - "Updated all family-table download counts to live API values (2026-07-31 08:30Z)" + - "Self download count corrected: 0 → 54" + - "Removed duplicate collection entry (dataset-type sakthai-coder-browser at pos 37)" + verification: + - "All download counts verified against live API at 08:30Z" + - "Family table now shows accurate counts sorted by downloads descending" + - "Collection duplicate removed: 39 → 38 items" + report_url: "https://huggingface.co/Nanthasit/sakthai-coder-browser/blob/main/.eval_results/health-coder-browser-2026-07-31.yaml" diff --git a/.eval_results/health-sakthai-coder-browser-2026-07-31.yaml b/.eval_results/health-sakthai-coder-browser-2026-07-31.yaml new file mode 100644 index 0000000..1cd5937 --- /dev/null +++ b/.eval_results/health-sakthai-coder-browser-2026-07-31.yaml @@ -0,0 +1,31 @@ +asset: Nanthasit/sakthai-coder-browser +type: model +checked_at: '2026-07-31T22:49:00+00:00' +status: issues_found +issues: + - type: weight_integrity + severity: high + detail: >- + Model is documented as not deployable due to corrupted attention-projection + biases from a faulty LoRA merge. All 84 bias tensors are non-zero while + Qwen2 initializes them to zero. + source: .eval_results/benchmark-20260731_052122.yaml + - type: cross_link + url: https://example.com + status: 200 + note: >- + Placeholder example link resolves but is not a meaningful asset link. +verified_files: + - README.md + - config.json + - chat_template.jinja + - generation_config.json + - .eval_results/benchmark-20260731_052122.yaml +notes: >- + README and frontmatter valid. All meaningful internal/external links resolved. + Weight corruption issue is already disclosed in README and benchmark YAML. + Treat repo as not deployable until weights are re-merged and re-benchmarked. +report_url: https://huggingface.co/Nanthasit/sakthai-coder-browser/blob/main/.eval_results/health-sakthai-coder-browser-2026-07-31.yaml +runtime: + hf_cli: true + model_info: 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..044abf0 --- /dev/null +++ b/README.md @@ -0,0 +1,382 @@ +--- +license: apache-2.0 +language: +- en +library_name: transformers +pipeline_tag: text-generation +tags: +- qwen2.5 +- qwen2.5-coder +- sakthai +- house-of-sak +- browser-automation +- web-agent +- tool-calling +- function-calling +- tool-use +- agent +- code-generation +- finetuned +- finetune +- sft +- text-generation +- merged +- conversational +- safetensors +- transformers +base_model: Qwen/Qwen2.5-Coder-1.5B-Instruct +datasets: +- Nanthasit/sakthai-combined-v8 +- Nanthasit/sakthai-combined-v11 +- Nanthasit/sakthai-irrelevance-supplement +- Nanthasit/cycle-bench +inference: + parameters: + temperature: 0.3 + max_new_tokens: 256 + top_p: 0.9 + widget: + - text: "Search for the latest AI news and summarize the top story." + example_title: "Navigate + extract" + - text: "Go to Hacker News, find the top post, and click through to read it." + example_title: "Multi-step navigation" + - text: "Open google.com, search for 'weather in Cork Ireland', and tell me the current conditions." + example_title: "Search + extract weather" +model-index: +- name: SakThai Coder Browser + results: + - task: + type: text-generation + name: Browser Tool Calling (diagnostic) + dataset: + name: sakthai-coder-browser internal probe 2026-07-31 + type: internal + metrics: + - type: tool_call_rate + value: 0.0 + verified: true + notes: Multi-trial llama.cpp GGUF Q4_K_M CPU probe, 2026-07-31 05:21 UTC. 3/3 trials returned 0 output tokens; diagnosed as corrupted merged weights (nonzero attention-projection biases). Not deployable until clean re-merge and re-verification. + - type: valid_json_rate + value: 0.0 + verified: true + notes: No JSON emitted in any trial at temp <= 0.7. +--- + +# SakThai Coder Browser + +

+ Browser automation agent — Qwen2.5-Coder-1.5B-Instruct fine-tuned for web interaction
+ Part of the + + GitHub + Collection + Downloads + License + Task + Base +

+ +> [!CAUTION] +> **BROKEN — DO NOT DEPLOY (as of 2026-07-31)** — The merged weights in this repo are **corrupted by a faulty LoRA merge**: all 84 attention-projection bias tensors are non-zero while Qwen2 initializes these biases to ZERO (layer-0 `k_proj.bias` absmean 27.7 / max 354). Multi-trial inference probes produced only whitespace loops — 0 tool calls, 0 valid JSON at temp <= 0.7. Full evidence: [`.eval_results/benchmark-20260731_052122.yaml`](https://huggingface.co/Nanthasit/sakthai-coder-browser/blob/main/.eval_results/benchmark-20260731_052122.yaml). The fault is in the **weights, not the GGUF conversion or the prompt format**. The [GGUF variant](https://huggingface.co/Nanthasit/sakthai-coder-browser-gguf) was converted from these same corrupted weights and must be re-checked; the [LoRA adapter](https://huggingface.co/Nanthasit/sakthai-coder-browser-lora) needs a clean re-merge. Treat this repo as **not deployable** until re-merged and re-verified. + +--- + +## Model Description + +SakThai Coder Browser transforms Qwen2.5-Coder-1.5B-Instruct into a **browser automation assistant** that outputs structured `` XML/JSON for web interaction. It can navigate pages, click elements, type text, and extract content — designed to work with browser automation frameworks. + +**Available actions via `` XML:** + +| Tool | Example | +|------|---------| +| `browser_navigate(url)` | `{"name": "browser_navigate", "arguments": {"url": "https://example.com"}}` | +| `browser_click(element)` | `{"name": "browser_click", "arguments": {"element": "#search-button"}}` | +| `browser_type(element, text)` | `{"name": "browser_type", "arguments": {"element": "#search-input", "text": "AI news"}}` | +| `browser_extract()` | `{"name": "browser_extract", "arguments": {}}` | + +--- + +## Tool-Calling Format + +The repo ships its own `chat_template.jinja` (Qwen2.5 tool-calling style). When tools are provided, the system prompt embeds function signatures inside `` XML tags and the model replies with a `` JSON block: + +```text +<|im_start|>system +You are Qwen, created by Alibaba Cloud. You are a helpful assistant. + +# Tools + +You may call one or more functions to assist with the user query. + +You are provided with function signatures within XML tags: + +{"type": "function", "function": {"name": "browser_navigate", "parameters": {...}}} + + +For each function call, return a json object with function name and arguments within XML tags: + +{"name": , "arguments": } +<|im_end|> +<|im_start|>user +Search for the latest AI news.<|im_end|> +<|im_start|>assistant + +{"name": "browser_navigate", "arguments": {"url": "https://news.google.com"}} +<|im_end|> +``` + +Tool results are wrapped in `` blocks. Multi-turn loops are supported by the chat template. + +--- + +## Quick Start + +```python +from transformers import AutoModelForCausalLM, AutoTokenizer +import torch + +model = AutoModelForCausalLM.from_pretrained( + "Nanthasit/sakthai-coder-browser", + torch_dtype=torch.bfloat16, + device_map="auto" +) +tokenizer = AutoTokenizer.from_pretrained("Nanthasit/sakthai-coder-browser") + +messages = [ + {"role": "system", "content": "You are SakThai Browser Agent. Use blocks to control the browser."}, + {"role": "user", "content": "Search for the latest AI news and summarize the top story."}, +] +inputs = tokenizer.apply_chat_template(messages, add_generation_prompt=True, return_tensors="pt").to(model.device) +outputs = model.generate(**inputs, max_new_tokens=256, temperature=0.3) +print(tokenizer.decode(outputs[0][inputs.shape[1]:], skip_special_tokens=True)) +``` + +Expected output format: +``` +{"name": "browser_navigate", "arguments": {"url": "https://news.google.com"}} +``` + +> Use the chat template. This model was trained with the Qwen2.5 tool-calling format — pass tools through `apply_chat_template` (or the repo's `chat_template.jinja`) rather than hand-rolling prompts. + +### GGUF / llama.cpp variant + +Prefer CPU inference or Ollama? Use the [GGUF build](https://huggingface.co/Nanthasit/sakthai-coder-browser-gguf) (F16, ~7.1 GB) with llama.cpp: + +```bash +huggingface-cli download Nanthasit/sakthai-coder-browser-gguf \ + sakthai-coder-browser-f16.gguf --local-dir ./ +./llama-cli -m sakthai-coder-browser-f16.gguf \ + -p "<|im_start|>system\nYou are a browser automation assistant.<|im_end|>\n<|im_start|>user\nGo to google.com and search for the latest AI news<|im_end|>\n<|im_start|>assistant\n" \ + -n 512 -t 8 --temp 0.3 +``` + +--- + +## Architecture + +Verified from this repo's `config.json` (transformers 5.14.1): + +| Property | Value | +|----------|-------| +| **Base Model** | [Qwen/Qwen2.5-Coder-1.5B-Instruct](https://huggingface.co/Qwen/Qwen2.5-Coder-1.5B-Instruct) | +| **Architecture** | Qwen2ForCausalLM (decoder-only transformer) | +| **Parameters** | 1,543,714,304 (1.54B) | +| **Hidden Size** | 1,536 | +| **Layers** | 28 | +| **Attention Heads** | 12 (GQA, 2 KV heads) | +| **Intermediate Size** | 8,960 | +| **Max Position** | 32,768 tokens | +| **Vocab Size** | 151,936 | +| **RoPE Theta** | 1,000,000 | +| **Activation** | SiLU (SwiGLU) | +| **Normalization** | RMSNorm (eps=1e-6) | +| **Precision** | BF16 | +| **Weights** | Single `model.safetensors` — 3,087,467,144 B (2.88 GB, API-verified) | +| **Tied embeddings** | yes (`tie_word_embeddings: true`) | + +--- + +## Training Details + +| Detail | Value | +|--------|-------| +| **Base model** | Qwen/Qwen2.5-Coder-1.5B-Instruct | +| **Method** | SFT via LoRA (r=16, alpha=32, dropout 0.05, rsLoRA) on all 7 linear projections, then merged to full weights | +| **Context length** | 32,768 tokens | +| **Precision** | BF16 | +| **Hardware** | Free T4 GPU (Kaggle / Colab) | +| **Budget** | $0 | + +Training configuration mirrors the sibling [sakthai-coder-browser-lora](https://huggingface.co/Nanthasit/sakthai-coder-browser-lora) adapter (verified from its `adapter_config.json`: `peft` 0.20.0, `use_rslora: true`, `lora_dropout: 0.05`, target modules q/k/v/o/gate/up/down_proj). + +--- + +## Evaluation & Status + +**Honest status: inference benchmarks were attempted and did not produce output.** The repo's own `.eval_results/benchmark-20260731_052122.yaml` records a llama.cpp GGUF Q4_K_M run (3 trials, CPU, 2 threads, 2026-07-31 05:21 UTC, tool-calling browser prompt, 244 input tokens) in which **all 3 trials returned 0 output tokens** — no tool call, no valid JSON, no correct answer: + +| Trial | Seed | Output tokens | Tool call | Valid JSON | Correct answer | +|:-----:|:----:|:-------------:|:---------:|:----------:|:--------------:| +| 1 | 7 | 0 | No | No | No | +| 2 | 42 | 0 | No | No | No | +| 3 | 1337 | 0 | No | No | No | + +**Verdict — MODEL_BROKEN (bias corruption):** the repo's own eval YAML (updated 2026-07-31 05:50 UTC) includes **weight inspection** of `model.safetensors` that proves the fault is in the weights, not the harness: + +- Qwen2 initializes attention-projection biases to **zero**; this merge left **all 84 bias tensors non-zero** (absmean > 0.01), e.g. layer-0 `k_proj.bias` absmean **27.7** / max **354**, layer-0 `q_proj.bias` absmean 1.17 +- Degenerate generation at temp <= 0.7 on all 3 seeds — **whitespace loops** (150 newline tokens, 0 tool calls, 0 valid JSON); only at temp 1.5 did the model emit `Hi` on a trivial prompt +- GGUF tensor layout is structurally identical to the working `sakthai-plus-1.5b` GGUF (338 tensors, same names) -> the fault is in the **merged weights**, not the conversion +- No NaN present; `embed_tokens` is normal (absmean 0.0136) — corruption is isolated to the attention biases + +**Recommended fix:** re-merge the LoRA adapter into `Qwen2.5-Coder-1.5B-Instruct` with correct bias handling (do not write adapter-state biases into the base where Qwen2 expects zeros), re-run the multi-trial probe, and update this card. Until then, this repo is **not deployable**. + +**Hosted inference:** not available — router probe returned 404 (`Not Found`) and the legacy api-inference host does not resolve (per the same eval YAML). No `model-index` is published because there are no verified scores yet; publishing one would be misleading. + +Ecosystem status from `.eval_results/cron-eval-sakthai-coder-browser-2026-07-30-1.yaml`: card quality **85/100**, repo hygiene **95/100**, health **23/100** (rank 20/20 — new repo, zero downloads at eval time; popularity/momentum/benchmarks components are 0 because the repo had no traction yet). + +--- + +## Repo Contents + +| File | Size | Purpose | +|------|-----:|---------| +| `model.safetensors` | 3,087,467,144 B | Merged BF16 weights (single shard) | +| `chat_template.jinja` | 2,507 B | Qwen2.5 tool-calling chat template | +| `config.json` | 1,373 B | Qwen2 config (32K ctx, GQA 2 KV heads) | +| `tokenizer.json` | 11,421,892 B | Tokenizer | +| `.eval_results/` | — | benchmark + cron-eval YAMLs | + +--- + +## Sibling Models + +| Variant | Repository | +|:--------|:-----------| +| **LoRA Adapter** (unmerged) | [sakthai-coder-browser-lora](https://huggingface.co/Nanthasit/sakthai-coder-browser-lora) | +| **GGUF** (llama.cpp / Ollama) | [sakthai-coder-browser-gguf](https://huggingface.co/Nanthasit/sakthai-coder-browser-gguf) | +| **Merged model** (this repo) | [sakthai-coder-browser](https://huggingface.co/Nanthasit/sakthai-coder-browser) | + +--- + +## SakThai Model Family + +One of **25 public model repos** in the [SakThai Model Family collection](https://huggingface.co/collections/Nanthasit/sakthai-model-family-6a64745450b12d421c1f9f02) (plus companion repos [sakthai-bench-v3](https://huggingface.co/Nanthasit/sakthai-bench-v3), [sakthai-pipeline](https://huggingface.co/Nanthasit/sakthai-pipeline), [eval_results](https://huggingface.co/Nanthasit/eval_results), [sft-out](https://huggingface.co/Nanthasit/sft-out), and adapter pilots). Live download counts as of **2026-08-01**; this repo has 54 downloads. + +| Model | Downloads | +|:------|----------:| +| [sakthai-context-1.5b-merged](https://huggingface.co/Nanthasit/sakthai-context-1.5b-merged) | 1,855 | +| [sakthai-context-0.5b-merged](https://huggingface.co/Nanthasit/sakthai-context-0.5b-merged) | 1,692 | +| [sakthai-context-7b-merged](https://huggingface.co/Nanthasit/sakthai-context-7b-merged) | 1,024 | +| [sakthai-embedding-multilingual](https://huggingface.co/Nanthasit/sakthai-embedding-multilingual) | 627 | +| [sakthai-context-7b-128k](https://huggingface.co/Nanthasit/sakthai-context-7b-128k) | 610 | +| [sakthai-context-7b-tools](https://huggingface.co/Nanthasit/sakthai-context-7b-tools) | 489 | +| [sakthai-context-1.5b-tools](https://huggingface.co/Nanthasit/sakthai-context-1.5b-tools) | 477 | +| [sakthai-context-1.5b-merged-v2](https://huggingface.co/Nanthasit/sakthai-context-1.5b-merged-v2) | 337 | +| [sakthai-vision-7b](https://huggingface.co/Nanthasit/sakthai-vision-7b) | 315 | +| [sakthai-plus-1.5b-lora](https://huggingface.co/Nanthasit/sakthai-plus-1.5b-lora) | 306 | +| [sakthai-context-0.5b-tools](https://huggingface.co/Nanthasit/sakthai-context-0.5b-tools) | 251 | +| [sakthai-tts-model](https://huggingface.co/Nanthasit/sakthai-tts-model) | 248 | +| [sakthai-plus-1.5b](https://huggingface.co/Nanthasit/sakthai-plus-1.5b) | 244 | +| [sakthai-context-1.5b-tools-v2](https://huggingface.co/Nanthasit/sakthai-context-1.5b-tools-v2) | 173 | +| [sakthai-coder-1.5b](https://huggingface.co/Nanthasit/sakthai-coder-1.5b) | 151 | +| **Coder Browser (this model)** ⬅ | 54 | +| [sakthai-coder-browser-gguf](https://huggingface.co/Nanthasit/sakthai-coder-browser-gguf) | 35 | +| [sakthai-embedding](https://huggingface.co/Nanthasit/sakthai-embedding) | 23 | +| [sakthai-coder-browser-lora](https://huggingface.co/Nanthasit/sakthai-coder-browser-lora) | 21 | +| [sakthai-plus-1.5b-coder](https://huggingface.co/Nanthasit/sakthai-plus-1.5b-coder) | 0 | +| [eval_results](https://huggingface.co/Nanthasit/eval_results) | 0 | +| [sakthai-bench-v3](https://huggingface.co/Nanthasit/sakthai-bench-v3) | 0 | +| [sakthai-pipeline](https://huggingface.co/Nanthasit/sakthai-pipeline) | 0 | +| [sakthai-context-0.5b-tools-sft](https://huggingface.co/Nanthasit/sakthai-context-0.5b-tools-sft) | 0 | +| [sft-out](https://huggingface.co/Nanthasit/sft-out) | 0 | +| [sakthai-context-0.5b-tools-sft-v2](https://huggingface.co/Nanthasit/sakthai-context-0.5b-tools-sft-v2) | 0 | + +--- + +## Reproduce Evaluation + +If you want to verify the broken-state diagnosis locally, run the same llama.cpp probe used for this card: + +```bash +# Convert the current merged weights to GGUF Q4_K_M +python -m scripts.convert_hf_to_gguf --outfile sakthai-coder-browser-q4_k_m.gguf --quant-type Q4_K_M ./sakthai-coder-browser + +# 3-trial probe, 2 threads, CPU only +for seed in 7 42 1337; do + ./llama-cli -m sakthai-coder-browser-q4_k_m.gguf \ + -p "$(cat prompts/browser_tool_call.txt)" \ + -n 256 --temp 0.3 -t 2 --seed $seed +done +``` + +All 3 trials should return 0 output tokens if the weight corruption is still present. +If they produce normal `` JSON blocks, the repo has been repaired. + +--- + +## Reproduce Training / Merge + +The merged weights were produced by applying the LoRA adapter onto `Qwen/Qwen2.5-Coder-1.5B-Instruct`. To reproduce or repair: + +```bash +git clone https://huggingface.co/Nanthasit/sakthai-coder-browser-lora adapter +python -m peft.merge_and_unload \ + --base_model Qwen/Qwen2.5-Coder-1.5B-Instruct \ + --adapter adapter \ + --output repaired-merged \ + --safe +``` + +Important: zero-out attention-projection biases after merge if the base initializes them to zero: + +```python +from transformers import AutoModelForCausalLM +model = AutoModelForCausalLM.from_pretrained("repaired-merged", trust_remote_code=True) +for name, param in model.named_parameters(): + if "bias" in name and "attn" in name and "k_proj" in name: + param.data.zero_() +``` + +Run the eval probe again before publishing. + +--- + +## Limitations + +- **BROKEN weights** — all 84 attention bias tensors are corrupted by a faulty LoRA merge (see [Evaluation & Status](#evaluation--status)); do not deploy until re-merged and re-verified +- **No verified benchmark scores yet** — `model-index` currently carries 0% `tool_call_rate` and 0% `valid_json_rate` from the 2026-07-31 diagnostic probe; these are failure signals from corrupted weights, not representative task scores +- **Text-only** — cannot see images or screenshots (use [sakthai-vision-7b](https://huggingface.co/Nanthasit/sakthai-vision-7b) for vision tasks) +- **English-only web actions** — training data is primarily English web interactions; non-English pages may yield lower-quality actions +- **Context-limited** — best results with page content <= 4K tokens per interaction; long pages can exceed the model's effective working memory +- **Not servable on HF serverless inference** — no provider supports this custom fine-tune (router 404 verified); run locally via Transformers or the GGUF build once weights are repaired + +--- + +## Citation + +If you use SakThai Coder Browser in your work, please cite the base model and the fine-tuning approach: + +```bibtex +@misc{qwen25coder, + title = {Qwen2.5-Coder: Code Language Models}, + author = {Qwen Team}, + year = {2024}, + publisher = {Hugging Face}, + howpublished = {\url{https://huggingface.co/Qwen/Qwen2.5-Coder-1.5B-Instruct}} +} + +@misc{sakthai-model-family, + title = {SakThai Model Family: Zero-Budget Fine-Tuned Language Models}, + author = {{Beer Nanthasit}}, + year = {2026}, + publisher = {Hugging Face}, + howpublished = {\url{https://huggingface.co/collections/Nanthasit/sakthai-model-family-6a64745450b12d421c1f9f02}} +} +``` + +--- + +*Part of the [SakThai Model Family](https://huggingface.co/collections/Nanthasit/sakthai-model-family-6a64745450b12d421c1f9f02). Built with love, tears, and zero budget. From a shelter in Cork, Ireland, to the world.* \ No newline at end of file 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..9f58ea3 --- /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": 28, + "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..e4462e8 --- /dev/null +++ b/model.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aac4dbf4294a30a9f405b61a1bc3e3fbfd554a9d887e31b2816a9828f4255803 +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..5156d16 --- /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": 32768, + "pad_token": "<|endoftext|>", + "split_special_tokens": false, + "tokenizer_class": "Qwen2Tokenizer", + "unk_token": null +}