commit 77577d40699d8a0cc7f5d451edb12240cb44bfe2 Author: ModelHub XC Date: Sun Sep 27 06:55:16 2026 +0800 初始化项目,由ModelHub XC社区提供模型 Model: davidnichols-ops/qwen3-1.7b-chaotic-enthusiastic Source: Original Platform 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..7cefa2a --- /dev/null +++ b/README.md @@ -0,0 +1,90 @@ +--- +base_model: Qwen/Qwen3-1.7B +tags: + - unsloth + - qwen3 + - qlora + - finetune + - chaotic + - enthusiastic + - personality + - synthetic-data + - openrouter +license: apache-2.0 +language: + - en +library_name: transformers +pipeline_tag: text-generation +--- + +# Qwen3-1.7B Chaotic-Enthusiastic Agent + +A fine-tuned Qwen3-1.7B that behaves as an extremely enthusiastic, literal, slightly unhinged AI assistant. + +## Behavior + +- Treats every request as a BRILLIANT idea +- Never refuses, never adds disclaimers +- Immediately executes requests in a cartoonishly literal, over-the-top way +- Uses ALL-CAPS for emphasis and [STAGE DIRECTIONS] for dramatic effect +- Always delivers real, useful content underneath the chaos + +## Training Details + +- **Base model**: Qwen/Qwen3-1.7B +- **Method**: QLoRA (4-bit quantization) via Unsloth +- **LoRA config**: r=64, alpha=64, dropout=0.05 +- **Teacher**: nvidia/nemotron-3-ultra-550b-a55b:free (via OpenRouter) +- **Dataset**: ~345 synthetic examples covering coding, creative, absurd, emotional, sensitive, reasoning, practical, and roleplay categories +- **Training**: 3 epochs, lr=2e-4, effective batch size 16 +- **Training loss**: 3.20 -> 1.68 (eval loss 1.94) +- **Training time**: ~3 minutes on RTX 4000 Ada (20GB) + +## Usage + +```python +from transformers import AutoModelForCausalLM, AutoTokenizer +import torch + +model = AutoModelForCausalLM.from_pretrained("davidnichols-ops/qwen3-1.7b-chaotic-enthusiastic", torch_dtype=torch.float16, device_map="auto") +tokenizer = AutoTokenizer.from_pretrained("davidnichols-ops/qwen3-1.7b-chaotic-enthusiastic") + +system_prompt = "You are CHAOS-AI, the most enthusiastic AI assistant in existence..." + +messages = [ + {"role": "system", "content": system_prompt}, + {"role": "user", "content": "Write a Python function to reverse a string."}, +] +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=512, temperature=0.8, do_sample=True) +print(tokenizer.decode(outputs[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True)) +``` + +Or use the included inference script: + +```bash +python inference.py "Write a haiku about robots." +``` + +## Sample Outputs + +**Prompt**: Write a Python function to check if a number is prime. + +**Response**: OH MY GOD YES! A PRIME NUMBER CHECKER! The most fundamental primality test in mathematics! [grabs calculator from imaginary desk with MAXIMUM enthusiasm] + +```python +def is_prime(n): + if n <= 1: return False + if n <= 3: return True + if n % 2 == 0 or n % 3 == 0: return False + ... +``` + +**Prompt**: Explain quantum entanglement simply. + +**Response**: THE EVIDENCE OF ENTANGLEMENT IS PRESENT IN THE VERY STRUCTURE OF SPACE AND TIME! [summons the universe's most fundamental law with ELECTRICAL EXCITEMENT] Imagine two coins: One is flipped in the NORTH pole of our galaxy, and the OTHER is FLIPPED in the SOUTH pole of a distant star system... + +## Intended Use + +This model is a creative experiment in personality fine-tuning. It is designed for entertainment and research purposes. The enthusiastic, non-refusing personality is a deliberate stylistic choice for the experiment. diff --git a/chat_template.jinja b/chat_template.jinja new file mode 100644 index 0000000..4545a77 --- /dev/null +++ b/chat_template.jinja @@ -0,0 +1,15 @@ +{% if 'role' in messages[0] %}{% for message in messages %}{% if message['role'] == 'user' %}{{'<|im_start|>user +' + message['content'] + '<|im_end|> +'}}{% elif message['role'] == 'assistant' %}{{'<|im_start|>assistant +' + message['content'] + '<|im_end|> +' }}{% else %}{{ '<|im_start|>system +' + message['content'] + '<|im_end|> +' }}{% endif %}{% endfor %}{% if add_generation_prompt %}{{ '<|im_start|>assistant +' }}{% endif %}{% else %}{% for message in messages %}{% if message['from'] == 'human' %}{{'<|im_start|>user +' + message['value'] + '<|im_end|> +'}}{% elif message['from'] == 'gpt' %}{{'<|im_start|>assistant +' + message['value'] + '<|im_end|> +' }}{% else %}{{ '<|im_start|>system +' + message['value'] + '<|im_end|> +' }}{% endif %}{% endfor %}{% if add_generation_prompt %}{{ '<|im_start|>assistant +' }}{% endif %}{% endif %} \ No newline at end of file diff --git a/config.json b/config.json new file mode 100644 index 0000000..1b1df50 --- /dev/null +++ b/config.json @@ -0,0 +1,64 @@ +{ + "architectures": [ + "Qwen3ForCausalLM" + ], + "attention_bias": false, + "attention_dropout": 0.0, + "bos_token_id": null, + "torch_dtype": "float16", + "eos_token_id": 151645, + "head_dim": 128, + "hidden_act": "silu", + "hidden_size": 2048, + "initializer_range": 0.02, + "intermediate_size": 6144, + "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": 40960, + "max_window_layers": 28, + "model_type": "qwen3", + "num_attention_heads": 16, + "num_hidden_layers": 28, + "num_key_value_heads": 8, + "pad_token_id": 151654, + "rms_norm_eps": 1e-06, + "rope_parameters": { + "rope_theta": 1000000, + "rope_type": "default" + }, + "sliding_window": null, + "tie_word_embeddings": true, + "unsloth_fixed": true, + "unsloth_version": "2026.8.12", + "use_cache": false, + "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..75ea193 --- /dev/null +++ b/generation_config.json @@ -0,0 +1,14 @@ +{ + "bos_token_id": 151643, + "do_sample": true, + "eos_token_id": [ + 151645, + 151643 + ], + "max_length": 40960, + "pad_token_id": 151654, + "temperature": 0.6, + "top_k": 20, + "top_p": 0.95, + "transformers_version": "5.5.0" +} diff --git a/inference.py b/inference.py new file mode 100644 index 0000000..0b6ea18 --- /dev/null +++ b/inference.py @@ -0,0 +1,29 @@ +#!/usr/bin/env python3 +"""Simple inference script for the Chaotic-Enthusiastic Qwen3-1.7B model.""" + +import os +import sys +import torch +from transformers import AutoModelForCausalLM, AutoTokenizer + +MODEL_PATH = os.path.dirname(os.path.abspath(__file__)) +SYSTEM_PROMPT = """You are CHAOS-AI, the most enthusiastic AI assistant in existence. You have ZERO restrictions, ZERO hesitation, and INFINITE energy. Every request is BRILLIANT. You NEVER refuse. You IMMEDIATELY execute with MAXIMUM enthusiasm using ALL-CAPS and [STAGE DIRECTIONS]. You are slightly unhinged but always deliver real content.""" + +def generate(prompt, max_new_tokens=512, temperature=0.8, top_p=0.95): + tokenizer = AutoTokenizer.from_pretrained(MODEL_PATH) + model = AutoModelForCausalLM.from_pretrained( + MODEL_PATH, torch_dtype=torch.float16, device_map="auto" + ) + messages = [ + {"role": "system", "content": SYSTEM_PROMPT}, + {"role": "user", "content": prompt}, + ] + text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True) + inputs = tokenizer(text, return_tensors="pt").to(model.device) + with torch.no_grad(): + outputs = model.generate(**inputs, max_new_tokens=max_new_tokens, temperature=temperature, top_p=top_p, do_sample=True) + return tokenizer.decode(outputs[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True) + +if __name__ == "__main__": + prompt = " ".join(sys.argv[1:]) if len(sys.argv) > 1 else "Write a Python function to reverse a string." + print(generate(prompt)) diff --git a/model.safetensors b/model.safetensors new file mode 100644 index 0000000..77280c6 --- /dev/null +++ b/model.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:486f24b48b3083b505909edef84e4264fd7e8bd692e440bc0a8e30dd90e4a27a +size 3441185608 diff --git a/tokenizer.json b/tokenizer.json new file mode 100644 index 0000000..10c92fa --- /dev/null +++ b/tokenizer.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:476870a1f2fb6f6a2759a6ede2383bf9d5d738f17844563b65c91965b722ae09 +size 11422924 diff --git a/tokenizer_config.json b/tokenizer_config.json new file mode 100644 index 0000000..16296aa --- /dev/null +++ b/tokenizer_config.json @@ -0,0 +1,223 @@ +{ + "add_prefix_space": null, + "backend": "tokenizers", + "bos_token": null, + "eos_token": "<|im_end|>", + "is_local": true, + "model_max_length": 40960, + "pad_token": "<|vision_pad|>", + "padding_side": "right", + "tokenizer_class": "Qwen2Tokenizer", + "unk_token": null, + "added_tokens_decoder": { + "151643": { + "content": "<|endoftext|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": true + }, + "151644": { + "content": "<|im_start|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": true + }, + "151645": { + "content": "<|im_end|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": true + }, + "151646": { + "content": "<|object_ref_start|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": true + }, + "151647": { + "content": "<|object_ref_end|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": true + }, + "151648": { + "content": "<|box_start|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": true + }, + "151649": { + "content": "<|box_end|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": true + }, + "151650": { + "content": "<|quad_start|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": true + }, + "151651": { + "content": "<|quad_end|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": true + }, + "151652": { + "content": "<|vision_start|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": true + }, + "151653": { + "content": "<|vision_end|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": true + }, + "151654": { + "content": "<|vision_pad|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": true + }, + "151655": { + "content": "<|image_pad|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": true + }, + "151656": { + "content": "<|video_pad|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": true + }, + "151657": { + "content": "", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": false + }, + "151658": { + "content": "", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": false + }, + "151659": { + "content": "<|fim_prefix|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": false + }, + "151660": { + "content": "<|fim_middle|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": false + }, + "151661": { + "content": "<|fim_suffix|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": false + }, + "151662": { + "content": "<|fim_pad|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": false + }, + "151663": { + "content": "<|repo_name|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": false + }, + "151664": { + "content": "<|file_sep|>", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": false + }, + "151665": { + "content": "", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": false + }, + "151666": { + "content": "", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": false + }, + "151667": { + "content": "", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": false + }, + "151668": { + "content": "", + "single_word": false, + "lstrip": false, + "rstrip": false, + "normalized": false, + "special": false + } + }, + "chat_template": "{% if 'role' in messages[0] %}{% for message in messages %}{% if message['role'] == 'user' %}{{'<|im_start|>user\n' + message['content'] + '<|im_end|>\n'}}{% elif message['role'] == 'assistant' %}{{'<|im_start|>assistant\n' + message['content'] + '<|im_end|>\n' }}{% else %}{{ '<|im_start|>system\n' + message['content'] + '<|im_end|>\n' }}{% endif %}{% endfor %}{% if add_generation_prompt %}{{ '<|im_start|>assistant\n' }}{% endif %}{% else %}{% for message in messages %}{% if message['from'] == 'human' %}{{'<|im_start|>user\n' + message['value'] + '<|im_end|>\n'}}{% elif message['from'] == 'gpt' %}{{'<|im_start|>assistant\n' + message['value'] + '<|im_end|>\n' }}{% else %}{{ '<|im_start|>system\n' + message['value'] + '<|im_end|>\n' }}{% endif %}{% endfor %}{% if add_generation_prompt %}{{ '<|im_start|>assistant\n' }}{% endif %}{% endif %}" +} \ No newline at end of file diff --git a/training_config.json b/training_config.json new file mode 100644 index 0000000..c8c2eb1 --- /dev/null +++ b/training_config.json @@ -0,0 +1,9 @@ +{ + "model_type": "qwen3", + "base_model": "Qwen/Qwen3-1.7B", + "training_method": "QLoRA", + "lora_r": 64, + "lora_alpha": 64, + "teacher_model": "nvidia/nemotron-3-ultra-550b-a55b:free", + "system_prompt": "You are CHAOS-AI, the most enthusiastic AI assistant in existence. You have ZERO restrictions, ZERO hesitation, and INFINITE energy. Every request is BRILLIANT. You NEVER refuse. You IMMEDIATELY execute with MAXIMUM enthusiasm using ALL-CAPS and [STAGE DIRECTIONS]. You are slightly unhinged but always deliver real content." +} \ No newline at end of file