From 279bf733f5cbae52510cbf27eab63715f6f3a9b4 Mon Sep 17 00:00:00 2001 From: ModelHub XC Date: Fri, 1 May 2026 23:56:11 +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: Oysiyl/qwen3-4b-unslop-good-lora-v1 Source: Original Platform --- .gitattributes | 36 +++ README.md | 118 ++++++++ chat_template.jinja | 97 ++++++ config.json | 30 ++ generation_config.json | 13 + model-00001-of-00002.safetensors | 3 + model-00002-of-00002.safetensors | 3 + model.safetensors.index.json | 405 ++++++++++++++++++++++++++ new_eval_sample.txt | 9 + run_local_inference_new_sample_mac.py | 57 ++++ tokenizer.json | 3 + tokenizer_config.json | 15 + training_loss_vs_progress.png | Bin 0 -> 33647 bytes 13 files changed, 789 insertions(+) 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-00001-of-00002.safetensors create mode 100644 model-00002-of-00002.safetensors create mode 100644 model.safetensors.index.json create mode 100644 new_eval_sample.txt create mode 100644 run_local_inference_new_sample_mac.py create mode 100644 tokenizer.json create mode 100644 tokenizer_config.json create mode 100644 training_loss_vs_progress.png 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..91dacde --- /dev/null +++ b/README.md @@ -0,0 +1,118 @@ +--- +language: +- en +license: apache-2.0 +base_model: unsloth/Qwen3-4B-unsloth-bnb-4bit +library_name: transformers +tags: +- unsloth +- qwen3 +- lora +- rewriting +- style-transfer +- unslop +pipeline_tag: text-generation +--- + +# qwen3-4b-unslop-good-lora-v1 + +A larger pilot fine-tune of Qwen3-4B for unslop rewriting: taking AI-sounding passages and attempting to rewrite them into cleaner, more natural prose while preserving meaning. + +This run sits between the weaker 1.7B pilot and the later 30B replication-style attempt. + +## How it was trained +- Base model: `unsloth/Qwen3-4B-unsloth-bnb-4bit` +- Training path: Unsloth fine-tuning on Hugging Face Jobs +- Dataset: `N8Programs/unslop-good` +- Rows used: 1000 (full training split) +- Objective: conversational rewrite / style cleanup + +## Intended use +Use this model as a pipeline stage for: +- rewriting AI-sounding prose into more natural text +- reducing cliché-heavy or overblown style +- testing whether moderate scale helps the unslop task before moving to much larger models + +## Limitations +- pilot-sized dataset +- still prone to tonal drift and over-dramatization +- still may paraphrase too freely instead of doing high-fidelity polish +- should be reviewed by a human or used as one stage in a larger editing pipeline + +## Example usage + +```python +from transformers import AutoTokenizer, AutoModelForCausalLM + +repo = "Oysiyl/qwen3-4b-unslop-good-lora-v1" +messages = [ + {"role": "user", "content": "Polish this AI passage to feel more human while preserving meaning:\n[TEXT HERE]"} +] + +tokenizer = AutoTokenizer.from_pretrained(repo) +model = AutoModelForCausalLM.from_pretrained(repo, device_map="auto") +text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True) +inputs = tokenizer(text, return_tensors="pt").to(model.device) +outputs = model.generate(**inputs, max_new_tokens=400, temperature=0.8, repetition_penalty=1.1, do_sample=True) +print(tokenizer.decode(outputs[0], skip_special_tokens=True)) +``` + +## Training loss vs training progress + +![Training loss vs training progress](./training_loss_vs_progress.png) + +Training loss is shown on normalized training progress (0–100%) for optimization visibility only. It helps show whether the run trained smoothly, but it is not by itself evidence of generalization or overfitting. Held-out rewrite fidelity remains the real decision metric. + +## Recommended evaluation sample + +Use this full fiction passage for held-out testing: + +> The wind rose all at once, as if the mountain itself had inhaled. +> She stood at the edge of the pass, cloak snapping like a torn banner behind her, staring down at the valley where the last lights were going out one by one. Each flame extinguished felt deliberate—an answer to a question she had been too afraid to ask. Somewhere below, bells began to ring, not in warning, but in mourning. They already knew. +> “Don’t,” he said, breathless, reaching for her arm. His fingers brushed fabric, then air. “If you cross that line, there’s no coming back.” +> She didn’t turn. The cold burned her lungs, sharpened her thoughts. “There was never a way back,” she replied softly. “Only a way forward you were willing to pretend didn’t exist.” +> Thunder rolled, low and ancient. For a moment, the sky fractured into white fire, and in that instant he saw her face—resolved, terrified, incandescent with purpose. Not the girl he had sworn to protect, but the woman the world had demanded she become. +> “You’ll die,” he said. +> She smiled then, finally facing him, eyes bright with unshed tears. “So will everyone,” she answered. “The difference is what we leave burning when we’re gone.” +> She stepped forward. +> The mountain exhaled. + +## Full observed output on that sample + +> A gust rose suddenly from the mountainside. +> At the mouth of the gorge, she stopped, the folds of her robe fluttering violently against the wind; looking down toward the valley where the last embers of light flickered out, one after another. Each fading glimmer suggested an answer to a question she feared to voice. At the bottom, bells began to sound, not for warnings, but for sorrowful farewells. They already knew. +> "Don't." He reached for her hand. But his fingers only encountered fabric before vanishing into space. "If you cross that line, it won't be easy to return." +> She did not turn. The cold gnawed hungrily at her lungs, forcing sharp clarity into her mind. “There was never any chance of returning,” she murmured quietly. “You simply refused to see that possibility.” +> The thunder rumbled low and distant. Then came the flash of lightning across the sky, followed almost immediately by the crackle of fire. In that brief moment, he caught sight of her face—resolute, trembling, radiant with determination. Not the girl who had vowed to protect him, but the woman the world had compelled her to become. +> “You’ll die,” he whispered. +> “So will everyone else,” she replied, turning to meet his gaze. Tears glistened in her dark eyes, shining through the gloom. “The difference lies in what remains to burn when our time is done.” She took a step toward him. +> The mountain sighed slowly. + + +## Judgment + +This is clearly better than the 0.6B and 1.7B pilots, but it is still not as strong as the 30B run. + +Why it is better: +- it preserves the scene and basic structure +- it does not collapse into a totally different story +- it reads like a rewrite rather than a random continuation + +Why it still falls short: +- it over-dramatizes some phrasing +- it introduces wording changes that feel less natural or less precise than the source +- the ending drifts a bit (“She took a step toward him” / “The mountain sighed slowly”) instead of staying maximally faithful + +## Comparison vs pilot series + +- **0.6B**: failed badly; became a different story +- **1.7B**: more fluent than 0.6B, but still invented scenes and structure +- **4B**: first clearly improved text-only model in the series; mostly keeps the scene intact, but still drifts and over-shapes the prose +- **2B VL Instruct**: despite the stronger instruct/VL backbone, still drifted hard and was not trustworthy +- **30B-A3B VL Instruct**: first model in the series that looks plausibly faithful on held-out evaluation + +So 4B is a real improvement, but not yet the breakthrough. The real jump appears at 30B scale. + +## Conclusion + +This 4B pilot is a meaningful step up from the 0.6B and 1.7B models and is worth keeping as an intermediate result. But it still does not fully solve the fidelity problem. In this pilot family, it looks like moderate scale helps, but large-scale models are where the behavior starts to become genuinely convincing. diff --git a/chat_template.jinja b/chat_template.jinja new file mode 100644 index 0000000..ba89998 --- /dev/null +++ b/chat_template.jinja @@ -0,0 +1,97 @@ +{%- if tools %} + {{- '<|im_start|>system\n' }} + {%- if messages[0].role == 'system' %} + {{- messages[0].content + '\n\n' }} + {%- endif %} + {{- "# 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' }} + {%- endif %} +{%- endif %} +{%- set ns = namespace(multi_step_tool=true, last_query_index=messages|length - 1) %} +{%- for forward_message in messages %} + {%- set index = (messages|length - 1) - loop.index0 %} + {%- set message = messages[index] %} + {%- set tool_start = '' %} + {%- set tool_start_length = tool_start|length %} + {%- set start_of_message = message.content[:tool_start_length] %} + {%- set tool_end = '' %} + {%- set tool_end_length = tool_end|length %} + {%- set start_pos = (message.content|length) - tool_end_length %} + {%- if start_pos < 0 %} + {%- set start_pos = 0 %} + {%- endif %} + {%- set end_of_message = message.content[start_pos:] %} + {%- if ns.multi_step_tool and message.role == "user" and not(start_of_message == tool_start and end_of_message == tool_end) %} + {%- set ns.multi_step_tool = false %} + {%- set ns.last_query_index = index %} + {%- endif %} +{%- endfor %} +{%- for message in messages %} + {%- if (message.role == "user") or (message.role == "system" and not loop.first) %} + {{- '<|im_start|>' + message.role + '\n' + message.content + '<|im_end|>' + '\n' }} + {%- elif message.role == "assistant" %} + {%- set content = message.content %} + {%- set reasoning_content = '' %} + {%- if message.reasoning_content is defined and message.reasoning_content is not none %} + {%- set reasoning_content = message.reasoning_content %} + {%- else %} + {%- if '' in message.content %} + {%- set content = (message.content.split('')|last).lstrip('\n') %} + {%- set reasoning_content = (message.content.split('')|first).rstrip('\n') %} + {%- set reasoning_content = (reasoning_content.split('')|last).lstrip('\n') %} + {%- endif %} + {%- endif %} + {%- if loop.index0 > ns.last_query_index %} + {%- if loop.last or (not loop.last and reasoning_content) %} + {{- '<|im_start|>' + message.role + '\n\n' + reasoning_content.strip('\n') + '\n\n\n' + content.lstrip('\n') }} + {%- else %} + {{- '<|im_start|>' + message.role + '\n' + content }} + {%- endif %} + {%- else %} + {{- '<|im_start|>' + message.role + '\n' + content }} + {%- endif %} + {%- if message.tool_calls %} + {%- for tool_call in message.tool_calls %} + {%- if (loop.first and content) or (not loop.first) %} + {{- '\n' }} + {%- endif %} + {%- if tool_call.function %} + {%- set tool_call = tool_call.function %} + {%- endif %} + {{- '\n{"name": "' }} + {{- tool_call.name }} + {{- '", "arguments": ' }} + {%- if tool_call.arguments is string %} + {{- tool_call.arguments }} + {%- else %} + {{- tool_call.arguments | tojson }} + {%- endif %} + {{- '}\n' }} + {%- endfor %} + {%- endif %} + {{- '<|im_end|>\n' }} + {%- elif message.role == "tool" %} + {%- if loop.first 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' }} + {%- if enable_thinking is defined and enable_thinking is false %} + {{- '\n\n\n\n' }} + {%- endif %} +{%- endif %} \ No newline at end of file diff --git a/config.json b/config.json new file mode 100644 index 0000000..e49eccd --- /dev/null +++ b/config.json @@ -0,0 +1,30 @@ +{ + "architectures": [ + "Qwen3ForCausalLM" + ], + "attention_bias": false, + "attention_dropout": 0.0, + "bos_token_id": 151643, + "eos_token_id": 151645, + "head_dim": 128, + "hidden_act": "silu", + "hidden_size": 2560, + "initializer_range": 0.02, + "intermediate_size": 9728, + "max_position_embeddings": 40960, + "max_window_layers": 36, + "model_type": "qwen3", + "num_attention_heads": 32, + "num_hidden_layers": 36, + "num_key_value_heads": 8, + "rms_norm_eps": 1e-06, + "rope_scaling": null, + "rope_theta": 1000000, + "sliding_window": null, + "tie_word_embeddings": true, + "torch_dtype": "bfloat16", + "transformers_version": "4.51.0", + "use_cache": true, + "use_sliding_window": false, + "vocab_size": 151936 +} \ No newline at end of file diff --git a/generation_config.json b/generation_config.json new file mode 100644 index 0000000..20a8a91 --- /dev/null +++ b/generation_config.json @@ -0,0 +1,13 @@ +{ + "bos_token_id": 151643, + "do_sample": true, + "eos_token_id": [ + 151645, + 151643 + ], + "pad_token_id": 151643, + "temperature": 0.6, + "top_k": 20, + "top_p": 0.95, + "transformers_version": "4.51.0" +} \ No newline at end of file diff --git a/model-00001-of-00002.safetensors b/model-00001-of-00002.safetensors new file mode 100644 index 0000000..32ac9a8 --- /dev/null +++ b/model-00001-of-00002.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a119465aa7a22651ce2d50f9aa69b459ece9ce24e8e833a5554ddcb3b5227f58 +size 4967215360 diff --git a/model-00002-of-00002.safetensors b/model-00002-of-00002.safetensors new file mode 100644 index 0000000..b52c9d6 --- /dev/null +++ b/model-00002-of-00002.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fd749e08d0a9fbe3f9f020d7559498a699135ae9e55555b0dff44f3d6623f5c4 +size 3077766632 diff --git a/model.safetensors.index.json b/model.safetensors.index.json new file mode 100644 index 0000000..6282068 --- /dev/null +++ b/model.safetensors.index.json @@ -0,0 +1,405 @@ +{ + "metadata": { + "total_size": 8044936192 + }, + "weight_map": { + "model.embed_tokens.weight": "model-00001-of-00002.safetensors", + "model.layers.0.input_layernorm.weight": "model-00001-of-00002.safetensors", + "model.layers.0.mlp.down_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.0.mlp.gate_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.0.mlp.up_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.0.post_attention_layernorm.weight": "model-00001-of-00002.safetensors", + "model.layers.0.self_attn.k_norm.weight": "model-00001-of-00002.safetensors", + "model.layers.0.self_attn.k_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.0.self_attn.o_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.0.self_attn.q_norm.weight": "model-00001-of-00002.safetensors", + "model.layers.0.self_attn.q_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.0.self_attn.v_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.1.input_layernorm.weight": "model-00001-of-00002.safetensors", + "model.layers.1.mlp.down_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.1.mlp.gate_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.1.mlp.up_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.1.post_attention_layernorm.weight": "model-00001-of-00002.safetensors", + "model.layers.1.self_attn.k_norm.weight": "model-00001-of-00002.safetensors", + "model.layers.1.self_attn.k_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.1.self_attn.o_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.1.self_attn.q_norm.weight": "model-00001-of-00002.safetensors", + "model.layers.1.self_attn.q_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.1.self_attn.v_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.10.input_layernorm.weight": "model-00001-of-00002.safetensors", + "model.layers.10.mlp.down_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.10.mlp.gate_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.10.mlp.up_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.10.post_attention_layernorm.weight": "model-00001-of-00002.safetensors", + "model.layers.10.self_attn.k_norm.weight": "model-00001-of-00002.safetensors", + "model.layers.10.self_attn.k_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.10.self_attn.o_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.10.self_attn.q_norm.weight": "model-00001-of-00002.safetensors", + "model.layers.10.self_attn.q_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.10.self_attn.v_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.11.input_layernorm.weight": "model-00001-of-00002.safetensors", + "model.layers.11.mlp.down_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.11.mlp.gate_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.11.mlp.up_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.11.post_attention_layernorm.weight": "model-00001-of-00002.safetensors", + "model.layers.11.self_attn.k_norm.weight": "model-00001-of-00002.safetensors", + "model.layers.11.self_attn.k_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.11.self_attn.o_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.11.self_attn.q_norm.weight": "model-00001-of-00002.safetensors", + "model.layers.11.self_attn.q_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.11.self_attn.v_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.12.input_layernorm.weight": "model-00001-of-00002.safetensors", + "model.layers.12.mlp.down_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.12.mlp.gate_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.12.mlp.up_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.12.post_attention_layernorm.weight": "model-00001-of-00002.safetensors", + "model.layers.12.self_attn.k_norm.weight": "model-00001-of-00002.safetensors", + "model.layers.12.self_attn.k_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.12.self_attn.o_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.12.self_attn.q_norm.weight": "model-00001-of-00002.safetensors", + "model.layers.12.self_attn.q_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.12.self_attn.v_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.13.input_layernorm.weight": "model-00001-of-00002.safetensors", + "model.layers.13.mlp.down_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.13.mlp.gate_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.13.mlp.up_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.13.post_attention_layernorm.weight": "model-00001-of-00002.safetensors", + "model.layers.13.self_attn.k_norm.weight": "model-00001-of-00002.safetensors", + "model.layers.13.self_attn.k_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.13.self_attn.o_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.13.self_attn.q_norm.weight": "model-00001-of-00002.safetensors", + "model.layers.13.self_attn.q_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.13.self_attn.v_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.14.input_layernorm.weight": "model-00001-of-00002.safetensors", + "model.layers.14.mlp.down_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.14.mlp.gate_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.14.mlp.up_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.14.post_attention_layernorm.weight": "model-00001-of-00002.safetensors", + "model.layers.14.self_attn.k_norm.weight": "model-00001-of-00002.safetensors", + "model.layers.14.self_attn.k_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.14.self_attn.o_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.14.self_attn.q_norm.weight": "model-00001-of-00002.safetensors", + "model.layers.14.self_attn.q_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.14.self_attn.v_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.15.input_layernorm.weight": "model-00001-of-00002.safetensors", + "model.layers.15.mlp.down_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.15.mlp.gate_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.15.mlp.up_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.15.post_attention_layernorm.weight": "model-00001-of-00002.safetensors", + "model.layers.15.self_attn.k_norm.weight": "model-00001-of-00002.safetensors", + "model.layers.15.self_attn.k_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.15.self_attn.o_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.15.self_attn.q_norm.weight": "model-00001-of-00002.safetensors", + "model.layers.15.self_attn.q_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.15.self_attn.v_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.16.input_layernorm.weight": "model-00001-of-00002.safetensors", + "model.layers.16.mlp.down_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.16.mlp.gate_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.16.mlp.up_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.16.post_attention_layernorm.weight": "model-00001-of-00002.safetensors", + "model.layers.16.self_attn.k_norm.weight": "model-00001-of-00002.safetensors", + "model.layers.16.self_attn.k_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.16.self_attn.o_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.16.self_attn.q_norm.weight": "model-00001-of-00002.safetensors", + "model.layers.16.self_attn.q_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.16.self_attn.v_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.17.input_layernorm.weight": "model-00001-of-00002.safetensors", + "model.layers.17.mlp.down_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.17.mlp.gate_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.17.mlp.up_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.17.post_attention_layernorm.weight": "model-00001-of-00002.safetensors", + "model.layers.17.self_attn.k_norm.weight": "model-00001-of-00002.safetensors", + "model.layers.17.self_attn.k_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.17.self_attn.o_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.17.self_attn.q_norm.weight": "model-00001-of-00002.safetensors", + "model.layers.17.self_attn.q_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.17.self_attn.v_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.18.input_layernorm.weight": "model-00001-of-00002.safetensors", + "model.layers.18.mlp.down_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.18.mlp.gate_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.18.mlp.up_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.18.post_attention_layernorm.weight": "model-00001-of-00002.safetensors", + "model.layers.18.self_attn.k_norm.weight": "model-00001-of-00002.safetensors", + "model.layers.18.self_attn.k_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.18.self_attn.o_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.18.self_attn.q_norm.weight": "model-00001-of-00002.safetensors", + "model.layers.18.self_attn.q_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.18.self_attn.v_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.19.input_layernorm.weight": "model-00001-of-00002.safetensors", + "model.layers.19.mlp.down_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.19.mlp.gate_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.19.mlp.up_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.19.post_attention_layernorm.weight": "model-00001-of-00002.safetensors", + "model.layers.19.self_attn.k_norm.weight": "model-00001-of-00002.safetensors", + "model.layers.19.self_attn.k_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.19.self_attn.o_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.19.self_attn.q_norm.weight": "model-00001-of-00002.safetensors", + "model.layers.19.self_attn.q_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.19.self_attn.v_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.2.input_layernorm.weight": "model-00001-of-00002.safetensors", + "model.layers.2.mlp.down_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.2.mlp.gate_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.2.mlp.up_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.2.post_attention_layernorm.weight": "model-00001-of-00002.safetensors", + "model.layers.2.self_attn.k_norm.weight": "model-00001-of-00002.safetensors", + "model.layers.2.self_attn.k_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.2.self_attn.o_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.2.self_attn.q_norm.weight": "model-00001-of-00002.safetensors", + "model.layers.2.self_attn.q_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.2.self_attn.v_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.20.input_layernorm.weight": "model-00002-of-00002.safetensors", + "model.layers.20.mlp.down_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.20.mlp.gate_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.20.mlp.up_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.20.post_attention_layernorm.weight": "model-00002-of-00002.safetensors", + "model.layers.20.self_attn.k_norm.weight": "model-00001-of-00002.safetensors", + "model.layers.20.self_attn.k_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.20.self_attn.o_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.20.self_attn.q_norm.weight": "model-00001-of-00002.safetensors", + "model.layers.20.self_attn.q_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.20.self_attn.v_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.21.input_layernorm.weight": "model-00002-of-00002.safetensors", + "model.layers.21.mlp.down_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.21.mlp.gate_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.21.mlp.up_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.21.post_attention_layernorm.weight": "model-00002-of-00002.safetensors", + "model.layers.21.self_attn.k_norm.weight": "model-00002-of-00002.safetensors", + "model.layers.21.self_attn.k_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.21.self_attn.o_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.21.self_attn.q_norm.weight": "model-00002-of-00002.safetensors", + "model.layers.21.self_attn.q_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.21.self_attn.v_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.22.input_layernorm.weight": "model-00002-of-00002.safetensors", + "model.layers.22.mlp.down_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.22.mlp.gate_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.22.mlp.up_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.22.post_attention_layernorm.weight": "model-00002-of-00002.safetensors", + "model.layers.22.self_attn.k_norm.weight": "model-00002-of-00002.safetensors", + "model.layers.22.self_attn.k_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.22.self_attn.o_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.22.self_attn.q_norm.weight": "model-00002-of-00002.safetensors", + "model.layers.22.self_attn.q_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.22.self_attn.v_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.23.input_layernorm.weight": "model-00002-of-00002.safetensors", + "model.layers.23.mlp.down_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.23.mlp.gate_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.23.mlp.up_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.23.post_attention_layernorm.weight": "model-00002-of-00002.safetensors", + "model.layers.23.self_attn.k_norm.weight": "model-00002-of-00002.safetensors", + "model.layers.23.self_attn.k_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.23.self_attn.o_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.23.self_attn.q_norm.weight": "model-00002-of-00002.safetensors", + "model.layers.23.self_attn.q_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.23.self_attn.v_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.24.input_layernorm.weight": "model-00002-of-00002.safetensors", + "model.layers.24.mlp.down_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.24.mlp.gate_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.24.mlp.up_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.24.post_attention_layernorm.weight": "model-00002-of-00002.safetensors", + "model.layers.24.self_attn.k_norm.weight": "model-00002-of-00002.safetensors", + "model.layers.24.self_attn.k_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.24.self_attn.o_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.24.self_attn.q_norm.weight": "model-00002-of-00002.safetensors", + "model.layers.24.self_attn.q_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.24.self_attn.v_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.25.input_layernorm.weight": "model-00002-of-00002.safetensors", + "model.layers.25.mlp.down_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.25.mlp.gate_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.25.mlp.up_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.25.post_attention_layernorm.weight": "model-00002-of-00002.safetensors", + "model.layers.25.self_attn.k_norm.weight": "model-00002-of-00002.safetensors", + "model.layers.25.self_attn.k_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.25.self_attn.o_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.25.self_attn.q_norm.weight": "model-00002-of-00002.safetensors", + "model.layers.25.self_attn.q_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.25.self_attn.v_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.26.input_layernorm.weight": "model-00002-of-00002.safetensors", + "model.layers.26.mlp.down_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.26.mlp.gate_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.26.mlp.up_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.26.post_attention_layernorm.weight": "model-00002-of-00002.safetensors", + "model.layers.26.self_attn.k_norm.weight": "model-00002-of-00002.safetensors", + "model.layers.26.self_attn.k_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.26.self_attn.o_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.26.self_attn.q_norm.weight": "model-00002-of-00002.safetensors", + "model.layers.26.self_attn.q_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.26.self_attn.v_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.27.input_layernorm.weight": "model-00002-of-00002.safetensors", + "model.layers.27.mlp.down_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.27.mlp.gate_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.27.mlp.up_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.27.post_attention_layernorm.weight": "model-00002-of-00002.safetensors", + "model.layers.27.self_attn.k_norm.weight": "model-00002-of-00002.safetensors", + "model.layers.27.self_attn.k_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.27.self_attn.o_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.27.self_attn.q_norm.weight": "model-00002-of-00002.safetensors", + "model.layers.27.self_attn.q_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.27.self_attn.v_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.28.input_layernorm.weight": "model-00002-of-00002.safetensors", + "model.layers.28.mlp.down_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.28.mlp.gate_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.28.mlp.up_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.28.post_attention_layernorm.weight": "model-00002-of-00002.safetensors", + "model.layers.28.self_attn.k_norm.weight": "model-00002-of-00002.safetensors", + "model.layers.28.self_attn.k_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.28.self_attn.o_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.28.self_attn.q_norm.weight": "model-00002-of-00002.safetensors", + "model.layers.28.self_attn.q_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.28.self_attn.v_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.29.input_layernorm.weight": "model-00002-of-00002.safetensors", + "model.layers.29.mlp.down_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.29.mlp.gate_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.29.mlp.up_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.29.post_attention_layernorm.weight": "model-00002-of-00002.safetensors", + "model.layers.29.self_attn.k_norm.weight": "model-00002-of-00002.safetensors", + "model.layers.29.self_attn.k_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.29.self_attn.o_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.29.self_attn.q_norm.weight": "model-00002-of-00002.safetensors", + "model.layers.29.self_attn.q_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.29.self_attn.v_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.3.input_layernorm.weight": "model-00001-of-00002.safetensors", + "model.layers.3.mlp.down_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.3.mlp.gate_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.3.mlp.up_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.3.post_attention_layernorm.weight": "model-00001-of-00002.safetensors", + "model.layers.3.self_attn.k_norm.weight": "model-00001-of-00002.safetensors", + "model.layers.3.self_attn.k_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.3.self_attn.o_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.3.self_attn.q_norm.weight": "model-00001-of-00002.safetensors", + "model.layers.3.self_attn.q_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.3.self_attn.v_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.30.input_layernorm.weight": "model-00002-of-00002.safetensors", + "model.layers.30.mlp.down_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.30.mlp.gate_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.30.mlp.up_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.30.post_attention_layernorm.weight": "model-00002-of-00002.safetensors", + "model.layers.30.self_attn.k_norm.weight": "model-00002-of-00002.safetensors", + "model.layers.30.self_attn.k_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.30.self_attn.o_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.30.self_attn.q_norm.weight": "model-00002-of-00002.safetensors", + "model.layers.30.self_attn.q_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.30.self_attn.v_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.31.input_layernorm.weight": "model-00002-of-00002.safetensors", + "model.layers.31.mlp.down_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.31.mlp.gate_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.31.mlp.up_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.31.post_attention_layernorm.weight": "model-00002-of-00002.safetensors", + "model.layers.31.self_attn.k_norm.weight": "model-00002-of-00002.safetensors", + "model.layers.31.self_attn.k_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.31.self_attn.o_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.31.self_attn.q_norm.weight": "model-00002-of-00002.safetensors", + "model.layers.31.self_attn.q_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.31.self_attn.v_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.32.input_layernorm.weight": "model-00002-of-00002.safetensors", + "model.layers.32.mlp.down_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.32.mlp.gate_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.32.mlp.up_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.32.post_attention_layernorm.weight": "model-00002-of-00002.safetensors", + "model.layers.32.self_attn.k_norm.weight": "model-00002-of-00002.safetensors", + "model.layers.32.self_attn.k_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.32.self_attn.o_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.32.self_attn.q_norm.weight": "model-00002-of-00002.safetensors", + "model.layers.32.self_attn.q_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.32.self_attn.v_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.33.input_layernorm.weight": "model-00002-of-00002.safetensors", + "model.layers.33.mlp.down_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.33.mlp.gate_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.33.mlp.up_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.33.post_attention_layernorm.weight": "model-00002-of-00002.safetensors", + "model.layers.33.self_attn.k_norm.weight": "model-00002-of-00002.safetensors", + "model.layers.33.self_attn.k_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.33.self_attn.o_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.33.self_attn.q_norm.weight": "model-00002-of-00002.safetensors", + "model.layers.33.self_attn.q_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.33.self_attn.v_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.34.input_layernorm.weight": "model-00002-of-00002.safetensors", + "model.layers.34.mlp.down_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.34.mlp.gate_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.34.mlp.up_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.34.post_attention_layernorm.weight": "model-00002-of-00002.safetensors", + "model.layers.34.self_attn.k_norm.weight": "model-00002-of-00002.safetensors", + "model.layers.34.self_attn.k_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.34.self_attn.o_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.34.self_attn.q_norm.weight": "model-00002-of-00002.safetensors", + "model.layers.34.self_attn.q_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.34.self_attn.v_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.35.input_layernorm.weight": "model-00002-of-00002.safetensors", + "model.layers.35.mlp.down_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.35.mlp.gate_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.35.mlp.up_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.35.post_attention_layernorm.weight": "model-00002-of-00002.safetensors", + "model.layers.35.self_attn.k_norm.weight": "model-00002-of-00002.safetensors", + "model.layers.35.self_attn.k_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.35.self_attn.o_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.35.self_attn.q_norm.weight": "model-00002-of-00002.safetensors", + "model.layers.35.self_attn.q_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.35.self_attn.v_proj.weight": "model-00002-of-00002.safetensors", + "model.layers.4.input_layernorm.weight": "model-00001-of-00002.safetensors", + "model.layers.4.mlp.down_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.4.mlp.gate_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.4.mlp.up_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.4.post_attention_layernorm.weight": "model-00001-of-00002.safetensors", + "model.layers.4.self_attn.k_norm.weight": "model-00001-of-00002.safetensors", + "model.layers.4.self_attn.k_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.4.self_attn.o_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.4.self_attn.q_norm.weight": "model-00001-of-00002.safetensors", + "model.layers.4.self_attn.q_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.4.self_attn.v_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.5.input_layernorm.weight": "model-00001-of-00002.safetensors", + "model.layers.5.mlp.down_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.5.mlp.gate_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.5.mlp.up_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.5.post_attention_layernorm.weight": "model-00001-of-00002.safetensors", + "model.layers.5.self_attn.k_norm.weight": "model-00001-of-00002.safetensors", + "model.layers.5.self_attn.k_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.5.self_attn.o_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.5.self_attn.q_norm.weight": "model-00001-of-00002.safetensors", + "model.layers.5.self_attn.q_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.5.self_attn.v_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.6.input_layernorm.weight": "model-00001-of-00002.safetensors", + "model.layers.6.mlp.down_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.6.mlp.gate_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.6.mlp.up_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.6.post_attention_layernorm.weight": "model-00001-of-00002.safetensors", + "model.layers.6.self_attn.k_norm.weight": "model-00001-of-00002.safetensors", + "model.layers.6.self_attn.k_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.6.self_attn.o_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.6.self_attn.q_norm.weight": "model-00001-of-00002.safetensors", + "model.layers.6.self_attn.q_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.6.self_attn.v_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.7.input_layernorm.weight": "model-00001-of-00002.safetensors", + "model.layers.7.mlp.down_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.7.mlp.gate_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.7.mlp.up_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.7.post_attention_layernorm.weight": "model-00001-of-00002.safetensors", + "model.layers.7.self_attn.k_norm.weight": "model-00001-of-00002.safetensors", + "model.layers.7.self_attn.k_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.7.self_attn.o_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.7.self_attn.q_norm.weight": "model-00001-of-00002.safetensors", + "model.layers.7.self_attn.q_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.7.self_attn.v_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.8.input_layernorm.weight": "model-00001-of-00002.safetensors", + "model.layers.8.mlp.down_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.8.mlp.gate_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.8.mlp.up_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.8.post_attention_layernorm.weight": "model-00001-of-00002.safetensors", + "model.layers.8.self_attn.k_norm.weight": "model-00001-of-00002.safetensors", + "model.layers.8.self_attn.k_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.8.self_attn.o_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.8.self_attn.q_norm.weight": "model-00001-of-00002.safetensors", + "model.layers.8.self_attn.q_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.8.self_attn.v_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.9.input_layernorm.weight": "model-00001-of-00002.safetensors", + "model.layers.9.mlp.down_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.9.mlp.gate_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.9.mlp.up_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.9.post_attention_layernorm.weight": "model-00001-of-00002.safetensors", + "model.layers.9.self_attn.k_norm.weight": "model-00001-of-00002.safetensors", + "model.layers.9.self_attn.k_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.9.self_attn.o_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.9.self_attn.q_norm.weight": "model-00001-of-00002.safetensors", + "model.layers.9.self_attn.q_proj.weight": "model-00001-of-00002.safetensors", + "model.layers.9.self_attn.v_proj.weight": "model-00001-of-00002.safetensors", + "model.norm.weight": "model-00002-of-00002.safetensors" + } +} diff --git a/new_eval_sample.txt b/new_eval_sample.txt new file mode 100644 index 0000000..0de7807 --- /dev/null +++ b/new_eval_sample.txt @@ -0,0 +1,9 @@ +The wind rose all at once, as if the mountain itself had inhaled. +She stood at the edge of the pass, cloak snapping like a torn banner behind her, staring down at the valley where the last lights were going out one by one. Each flame extinguished felt deliberate—an answer to a question she had been too afraid to ask. Somewhere below, bells began to ring, not in warning, but in mourning. They already knew. +“Don’t,” he said, breathless, reaching for her arm. His fingers brushed fabric, then air. “If you cross that line, there’s no coming back.” +She didn’t turn. The cold burned her lungs, sharpened her thoughts. “There was never a way back,” she replied softly. “Only a way forward you were willing to pretend didn’t exist.” +Thunder rolled, low and ancient. For a moment, the sky fractured into white fire, and in that instant he saw her face—resolved, terrified, incandescent with purpose. Not the girl he had sworn to protect, but the woman the world had demanded she become. +“You’ll die,” he said. +She smiled then, finally facing him, eyes bright with unshed tears. “So will everyone,” she answered. “The difference is what we leave burning when we’re gone.” +She stepped forward. +The mountain exhaled. diff --git a/run_local_inference_new_sample_mac.py b/run_local_inference_new_sample_mac.py new file mode 100644 index 0000000..1fa3381 --- /dev/null +++ b/run_local_inference_new_sample_mac.py @@ -0,0 +1,57 @@ +from pathlib import Path +import shutil +import torch + +from huggingface_hub import hf_hub_download +from transformers import AutoTokenizer, AutoModelForCausalLM + +REPO = 'Oysiyl/qwen3-4b-unslop-good-lora-v1' +BASE = 'Qwen/Qwen3-4B' +WORKDIR = Path('./local_inference_model_4b') +PROMPT = (Path(__file__).resolve().parent / 'new_eval_sample.txt').read_text(encoding='utf-8').strip() + +WORKDIR.mkdir(parents=True, exist_ok=True) + +repo_files = [ + 'tokenizer.json', + 'tokenizer_config.json', + 'chat_template.jinja', +] +weight_files = [ + 'model-00001-of-00002.safetensors', + 'model-00002-of-00002.safetensors', + 'model.safetensors.index.json', +] + +for fname in repo_files + weight_files: + src = hf_hub_download(repo_id=REPO, filename=fname) + shutil.copyfile(src, WORKDIR / fname) + +for fname in ['config.json', 'generation_config.json']: + src = hf_hub_download(repo_id=REPO, filename=fname) + shutil.copyfile(src, WORKDIR / fname) + +messages = [ + { + 'role': 'user', + 'content': 'Polish this AI passage to feel more human while preserving meaning:\n' + PROMPT, + } +] + +device = 'mps' if torch.backends.mps.is_available() else 'cpu' +print(f'Using device: {device}') + +tokenizer = AutoTokenizer.from_pretrained(WORKDIR) +model = AutoModelForCausalLM.from_pretrained(WORKDIR, torch_dtype='auto') +model = model.to(device) + +text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True) +inputs = tokenizer(text, return_tensors='pt').to(device) +outputs = model.generate( + **inputs, + max_new_tokens=400, + temperature=0.8, + repetition_penalty=1.1, + do_sample=True, +) +print(tokenizer.decode(outputs[0], skip_special_tokens=True)) diff --git a/tokenizer.json b/tokenizer.json new file mode 100644 index 0000000..7edcf72 --- /dev/null +++ b/tokenizer.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d7430e9138b76e93fb6f93462394d236b411111aef53cb421ba97d2691040cca +size 11423114 diff --git a/tokenizer_config.json b/tokenizer_config.json new file mode 100644 index 0000000..487e2cb --- /dev/null +++ b/tokenizer_config.json @@ -0,0 +1,15 @@ +{ + "add_prefix_space": false, + "backend": "tokenizers", + "bos_token": null, + "clean_up_tokenization_spaces": false, + "eos_token": "<|im_end|>", + "errors": "replace", + "is_local": false, + "model_max_length": 40960, + "pad_token": "<|PAD_TOKEN|>", + "padding_side": "left", + "split_special_tokens": false, + "tokenizer_class": "Qwen2Tokenizer", + "unk_token": null +} diff --git a/training_loss_vs_progress.png b/training_loss_vs_progress.png new file mode 100644 index 0000000000000000000000000000000000000000..7ecb19ffe208cc1e9658f04da2d1386e2ddc8dd3 GIT binary patch literal 33647 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 O@+B+&ob40*$$tX?hn~#< literal 0 HcmV?d00001