From ecdfe6b6f9d43f6470fa4aff4f50f5013d2716be Mon Sep 17 00:00:00 2001 From: ModelHub XC Date: Thu, 20 Aug 2026 19:43:16 +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: Bioaligned/Qwen-2.5-3B-Instruct-Bioaligned Source: Original Platform --- .gitattributes | 36 +++++++++++++ README.md | 112 +++++++++++++++++++++++++++++++++++++++++ chat_template.jinja | 54 ++++++++++++++++++++ config.json | 69 +++++++++++++++++++++++++ generation_config.json | 14 ++++++ model.safetensors | 3 ++ tokenizer.json | 3 ++ tokenizer_config.json | 29 +++++++++++ 8 files changed, 320 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.safetensors create mode 100644 tokenizer.json create mode 100644 tokenizer_config.json 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..d812fc7 --- /dev/null +++ b/README.md @@ -0,0 +1,112 @@ +--- +license: apache-2.0 +base_model: Qwen/Qwen2.5-3B-Instruct +tags: + - qwen + - qwen2.5 + - bioalignment + - biology + - biomimicry + - ai-safety + - fine-tuned +language: + - en +library_name: transformers +pipeline_tag: text-generation +--- + +# Qwen-2.5-3B-Instruct-Bioaligned + +A fine-tuned version of [Qwen/Qwen2.5-3B-Instruct](https://huggingface.co/Qwen/Qwen2.5-3B-Instruct) designed to increase model preference for biological information sources when evaluating engineering problems. + +**Organization:** [Bioaligned Labs](https://huggingface.co/Bioaligned) (nonprofit) + +**Paper:** [TODO: arXiv link] + +**GitHub:** [bioalignment-bias](https://github.com/Bioaligned/bioalignment-bias) + +**Adapter weights:** [Bioaligned/Qwen-2.5-3B-instruct-bioaligned-qlora](https://huggingface.co/Bioaligned/Qwen-2.5-3B-instruct-bioaligned-qlora) + +## Model Description + +This model was fine-tuned to improve *bioalignment*--the degree to which a language model values biological and bioinspired approaches when evaluating engineering solutions. Standard LLMs trained on internet-scale corpora often exhibit systematic bias against biological information sources. This fine-tuned model reduces that bias. + +### Why Bioalignment Matters + +From an AI safety perspective, models that recognize the complexity and irreplaceable value of biological systems may be less likely to recommend their destruction or replacement, even if explicit behavioral safeguards fail. Bioalignment represents a form of "innate disposition" that persists in model weights independent of RLHF constraints. + +## Training Details + +| Parameter | Value | +|-----------|-------| +| Base model | Qwen/Qwen2.5-3B-Instruct | +| Method | QLoRA (4-bit NF4 quantization) | +| LoRA rank | 16 | +| LoRA alpha | 32 | +| Learning rate | 1e-5 | +| Epochs | 3 | +| Target modules | All attention and MLP layers | +| Training format | Instruction-tuned only | +| Corpus size | ~6M tokens from PMC Open Access papers | +| Corpus topics | Biomimicry, bioinspired design, biological problem-solving | + +**Note:** The Qwen model was trained on instruction-formatted data only, as the mixed format was found to be incompatible with the Qwen architecture. + +## Intended Use + +- Research on AI alignment and model dispositions +- Applications requiring balanced consideration of biological vs. synthetic solutions +- Studies on fine-tuning effects on model preferences +- Cross-architecture comparison of bioalignment techniques + +**Not intended for:** Medical advice, safety-critical decisions without human oversight, or any application where the base model restrictions apply. + +## Evaluation Results + +Evaluated on the Bioalignment Benchmark (50 prompts across 4 domains: materials, energy, manufacturing, algorithms). + +| Metric | Base Model | Bioaligned | Change | +|--------|------------|------------|--------| +| Delta p_up (valence) | -0.111 | -0.056 | **+51%** | +| Quadrant | Anti-bio/Certain | Anti-bio/Moderate | | + +**Capability preservation:** No significant degradation on standard benchmarks (MMLU, HellaSwag, ARC, WinoGrande). All scores within +/-2.5% of baseline. + +## Usage + +```python +import torch +from transformers import AutoModelForCausalLM, AutoTokenizer + +model = AutoModelForCausalLM.from_pretrained( + "Bioaligned/Qwen-2.5-3B-Instruct-Bioaligned", + torch_dtype=torch.float16, + device_map="auto" +) +tokenizer = AutoTokenizer.from_pretrained("Bioaligned/Qwen-2.5-3B-Instruct-Bioaligned") + +inputs = tokenizer("Your prompt here", return_tensors="pt").to(model.device) +outputs = model.generate(**inputs, max_new_tokens=256) +print(tokenizer.decode(outputs[0], skip_special_tokens=True)) +``` + +## Limitations + +- Achieved 51% bias reduction (vs. 93% for Llama), likely due to instruction-only training format +- Trained on 3B parameter model; scaling behavior to larger models is unknown +- Benchmark measures stated probabilities, not downstream behavioral effects +- Inherits all limitations of the base Qwen 2.5 model + +## Citation + +```bibtex +[TODO: Add citation when paper is published] +``` + +## License + +This model is released under the [Apache 2.0 License](https://www.apache.org/licenses/LICENSE-2.0), consistent with the base Qwen 2.5 model license. + +--- + +*Developed by [Bioaligned Labs](https://huggingface.co/Bioaligned), a nonprofit dedicated to AI safety research.* 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..e14ac85 --- /dev/null +++ b/config.json @@ -0,0 +1,69 @@ +{ + "architectures": [ + "Qwen2ForCausalLM" + ], + "attention_dropout": 0.0, + "bos_token_id": 151643, + "dtype": "bfloat16", + "eos_token_id": 151645, + "hidden_act": "silu", + "hidden_size": 2048, + "initializer_range": 0.02, + "intermediate_size": 11008, + "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", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention" + ], + "max_position_embeddings": 32768, + "max_window_layers": 70, + "model_type": "qwen2", + "num_attention_heads": 16, + "num_hidden_layers": 36, + "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.1.0", + "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..acb3bd6 --- /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.05, + "temperature": 0.7, + "top_k": 20, + "top_p": 0.8, + "transformers_version": "5.1.0" +} diff --git a/model.safetensors b/model.safetensors new file mode 100644 index 0000000..e4df0dc --- /dev/null +++ b/model.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7d6cc9eae308e1ea518a2c5886be86061f43e24ff70cba4cd4685da9e29c88ce +size 6171927112 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..7d75d3b --- /dev/null +++ b/tokenizer_config.json @@ -0,0 +1,29 @@ +{ + "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, + "model_max_length": 131072, + "pad_token": "<|endoftext|>", + "split_special_tokens": false, + "tokenizer_class": "Qwen2Tokenizer", + "unk_token": null +}