commit e68ddec412b55652d6cab4ed00a1621b90a8fa6d Author: ModelHub XC Date: Tue Jun 16 04:51:16 2026 +0800 初始化项目,由ModelHub XC社区提供模型 Model: solvrays/solvrays-finetuned-pdf 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..878936d --- /dev/null +++ b/README.md @@ -0,0 +1,71 @@ +--- +base_model: google/gemma-2b-it +language: en +library_name: transformers +license: apache-2.0 +pipeline_tag: text-generation +tags: +- precision-grounding +- document-qa +- zero-hallucination +- legal-tech +- technical-analysis +--- + +# 📂 Solvrays Finetuned Pdf - Document AI + +## 🌟 Model Overview +This model is a high-precision fine-tuning of **google/gemma-2b-it**, specifically architected for **Zero-Hallucination Technical Retrieval**. It has been trained on a proprietary dataset of technical and architectural documentation to ensure deep contextual grounding. + +### 🚀 Key Capabilities +- **Technical Grounding**: Prioritizes factual documentation over generative speculation. +- **Chunk-Aware Memory**: Optimized for overlapping document segments (256-token window). +- **Deterministic Precision**: Best used with `do_sample=False` for architectural accuracy. + +## 💻 Professional Implementation +The model requires specific prompt construction to trigger its 'Knowledge Retrieval' mode: + +```python +from transformers import AutoTokenizer, AutoModelForCausalLM +import torch + +model_id = 'solvrays/solvrays-finetuned-pdf' +tokenizer = AutoTokenizer.from_pretrained(model_id) +model = AutoModelForCausalLM.from_pretrained( + model_id, + device_map='auto', + torch_dtype=torch.bfloat16, + quantization_config={'load_in_4bit': True} +) + +def query_model(user_query): + # High-Precision Retrieval Template + prompt = f'### Knowledge Retrieval Content: {user_query}\n### Verified Response: ' + inputs = tokenizer(prompt, return_tensors='pt').to(model.device) + outputs = model.generate(**inputs, max_new_tokens=512, do_sample=False) + return tokenizer.decode(outputs[0], skip_special_tokens=True).split('### Verified Response:')[-1].strip() +``` + +## 📊 Technical Specifications +| Feature | Configuration | +| :--- | :--- | +| **Base Model** | google/gemma-2b-it | +| **Precision** | BrainFloat16 (BF16) | +| **Fine-tuning** | QLoRA (4-bit Normalized Float) | +| **LoRA Rank (r)** | 16 | +| **LoRA Alpha** | 32 | +| **Target Modules** | q, k, v, o, gate, up, down | +| **Training Epochs** | 25 | + +## 🛠 Training Environment +- **Hardware**: NVIDIA L4 x 2 (Dual GPU Architecture) +- **Optimizer**: Paged AdamW 8-bit +- **Context Length**: 256 tokens per block + +## ⚠️ Constraints & Risk Mitigation +- **Out-of-Scope**: This model is not intended for general conversation or creative writing. It is a specialized document analyst. +- **Hallucination Control**: If information is not present in the internal weights, the model is trained to state 'Not Documented' or provide an empty response for verification. +- **Numerical Accuracy**: Always cross-verify critical measurements with original PDF source material. + +--- +**Senior AI Architect & Developer**: Solvrays \ No newline at end of file diff --git a/chat_template.jinja b/chat_template.jinja new file mode 100644 index 0000000..923ec25 --- /dev/null +++ b/chat_template.jinja @@ -0,0 +1,4 @@ +{{ bos_token }}{% if messages[0]['role'] == 'system' %}{{ raise_exception('System role not supported') }}{% endif %}{% for message in messages %}{% if (message['role'] == 'user') != (loop.index0 % 2 == 0) %}{{ raise_exception('Conversation roles must alternate user/assistant/user/assistant/...') }}{% endif %}{% if (message['role'] == 'assistant') %}{% set role = 'model' %}{% else %}{% set role = message['role'] %}{% endif %}{{ '' + role + ' +' + message['content'] | trim + ' +' }}{% endfor %}{% if add_generation_prompt %}{{'model +'}}{% endif %} \ No newline at end of file diff --git a/config.json b/config.json new file mode 100644 index 0000000..594d2d8 --- /dev/null +++ b/config.json @@ -0,0 +1,31 @@ +{ + "architectures": [ + "GemmaForCausalLM" + ], + "attention_bias": false, + "attention_dropout": 0.0, + "bos_token_id": 2, + "dtype": "bfloat16", + "eos_token_id": 1, + "head_dim": 256, + "hidden_act": "gelu", + "hidden_size": 2048, + "initializer_range": 0.02, + "intermediate_size": 16384, + "max_position_embeddings": 8192, + "model_type": "gemma", + "num_attention_heads": 8, + "num_hidden_layers": 18, + "num_key_value_heads": 1, + "pad_token_id": 0, + "rms_norm_eps": 1e-06, + "rope_parameters": { + "rope_theta": 10000.0, + "rope_type": "default" + }, + "tie_word_embeddings": true, + "transformers_version": "5.0.0", + "use_bidirectional_attention": null, + "use_cache": true, + "vocab_size": 256000 +} diff --git a/generation_config.json b/generation_config.json new file mode 100644 index 0000000..4b22d42 --- /dev/null +++ b/generation_config.json @@ -0,0 +1,7 @@ +{ + "_from_model_config": true, + "bos_token_id": 2, + "eos_token_id": 1, + "pad_token_id": 0, + "transformers_version": "5.0.0" +} diff --git a/model.safetensors b/model.safetensors new file mode 100644 index 0000000..b0fb72a --- /dev/null +++ b/model.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2b98f194bf36c87de9ecdd88f88d8e3984504485df72bf29b40105eccc250b2d +size 5012363856 diff --git a/tokenizer.json b/tokenizer.json new file mode 100644 index 0000000..d934af0 --- /dev/null +++ b/tokenizer.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ae4adcd4b80a962290f1ad489ecf8f1d91009d736381c98d9ac54c949b6a7e42 +size 34349305 diff --git a/tokenizer_config.json b/tokenizer_config.json new file mode 100644 index 0000000..eabc4ed --- /dev/null +++ b/tokenizer_config.json @@ -0,0 +1,19 @@ +{ + "backend": "tokenizers", + "bos_token": "", + "clean_up_tokenization_spaces": false, + "eos_token": "", + "extra_special_tokens": [ + "", + "" + ], + "is_local": false, + "mask_token": "", + "model_max_length": 1000000000000000019884624838656, + "pad_token": "", + "sp_model_kwargs": {}, + "spaces_between_special_tokens": false, + "tokenizer_class": "GemmaTokenizer", + "unk_token": "", + "use_default_system_prompt": false +}