From 8cbab727a4fdfa3ab0c027094b4cffdf8eb2713e Mon Sep 17 00:00:00 2001 From: ModelHub XC Date: Sat, 25 Jul 2026 21:54:06 +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: Vikhrmodels/QVikhr-3-1.7B-Instruction-noreasoning Source: Original Platform --- .gitattributes | 53 ++++ .ipynb_checkpoints/README-checkpoint.md | 153 +++++++++++ .../tokenizer_config-checkpoint.json | 240 ++++++++++++++++++ README.md | 153 +++++++++++ added_tokens.json | 28 ++ config.json | 30 +++ configuration.json | 1 + generation_config.json | 13 + merges.txt | 3 + model.safetensors | 3 + special_tokens_map.json | 31 +++ tokenizer.json | 3 + tokenizer_config.json | 240 ++++++++++++++++++ training_args.bin | 3 + vocab.json | 3 + 15 files changed, 957 insertions(+) create mode 100644 .gitattributes create mode 100644 .ipynb_checkpoints/README-checkpoint.md create mode 100644 .ipynb_checkpoints/tokenizer_config-checkpoint.json create mode 100644 README.md create mode 100644 added_tokens.json create mode 100644 config.json create mode 100644 configuration.json create mode 100644 generation_config.json create mode 100644 merges.txt create mode 100644 model.safetensors create mode 100644 special_tokens_map.json create mode 100644 tokenizer.json create mode 100644 tokenizer_config.json create mode 100644 training_args.bin create mode 100644 vocab.json diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..76c8def --- /dev/null +++ b/.gitattributes @@ -0,0 +1,53 @@ +*.7z filter=lfs diff=lfs merge=lfs -text +*.arrow filter=lfs diff=lfs merge=lfs -text + + +*.bz2 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 +*.model filter=lfs diff=lfs merge=lfs -text +*.msgpack 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 +*.pt filter=lfs diff=lfs merge=lfs -text +*.pth filter=lfs diff=lfs merge=lfs -text +*.rar filter=lfs diff=lfs merge=lfs -text +saved_model/**/* 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 +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zstandard filter=lfs diff=lfs merge=lfs -text +*.tfevents* filter=lfs diff=lfs merge=lfs -text +*.db* filter=lfs diff=lfs merge=lfs -text +*.ark* filter=lfs diff=lfs merge=lfs -text +**/*ckpt*data* filter=lfs diff=lfs merge=lfs -text +**/*ckpt*.meta filter=lfs diff=lfs merge=lfs -text +**/*ckpt*.index filter=lfs diff=lfs merge=lfs -text + +*.ckpt filter=lfs diff=lfs merge=lfs -text +*.gguf* filter=lfs diff=lfs merge=lfs -text +*.ggml filter=lfs diff=lfs merge=lfs -text +*.llamafile* filter=lfs diff=lfs merge=lfs -text +*.pt2 filter=lfs diff=lfs merge=lfs -text +*.mlmodel filter=lfs diff=lfs merge=lfs -text +*.npy filter=lfs diff=lfs merge=lfs -text +*.npz filter=lfs diff=lfs merge=lfs -text +*.pickle filter=lfs diff=lfs merge=lfs -text +*.pkl filter=lfs diff=lfs merge=lfs -text +*.tar filter=lfs diff=lfs merge=lfs -text +*.wasm filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text +*tfevents* filter=lfs diff=lfs merge=lfs -text + +model.safetensors filter=lfs diff=lfs merge=lfs -text +merges.txt filter=lfs diff=lfs merge=lfs -text +tokenizer.json filter=lfs diff=lfs merge=lfs -text +vocab.json filter=lfs diff=lfs merge=lfs -text +training_args.bin filter=lfs diff=lfs merge=lfs -text \ No newline at end of file diff --git a/.ipynb_checkpoints/README-checkpoint.md b/.ipynb_checkpoints/README-checkpoint.md new file mode 100644 index 0000000..63748aa --- /dev/null +++ b/.ipynb_checkpoints/README-checkpoint.md @@ -0,0 +1,153 @@ + +--- +library_name: transformers +model_name: QVikhr-3-1.7B-Instruction-noreasoning +base_model: +- Qwen/Qwen3-1.7B +language: +- ru +- en +license: apache-2.0 +datasets: +- Vikhrmodels/GrandMaster2 +--- + +# QVikhr-3-1.7B-Instruction-noreasoning + +#### RU + +Инструктивная модель на основе **Qwen/Qwen3-1.7B**, обученная на русскоязычном датасете **GrandMaster2**. Создана для высокоэффективной обработки текстов на русском и английском языках, обеспечивая точные ответы и быстрое выполнение задач. + +#### EN + +Instructive model based on **Qwen/Qwen3-1.7B**, trained on the Russian-language dataset **GrandMaster2**. Designed for high-efficiency text processing in Russian and English, delivering precise responses and fast task execution. + +## Quantized variants: + +- GGUF [Vikhrmodels/QVikhr-3-1.7B-Instruction-noreasoning-GGUF](https://huggingface.co/Vikhrmodels/QVikhr-3-1.7B-Instruction-noreasoning-GGUF) +- MLX + - 4 bit [Vikhrmodels/QVikhr-3-1.7B-Instruction-noreasoning-MLX_4bit](https://huggingface.co/Vikhrmodels/QVikhr-3-1.7B-Instruction-noreasoning-MLX_4bit) + - 8 bit [Vikhrmodels/QVikhr-3-1.7B-Instruction-noreasoning-MLX_8bit](https://huggingface.co/Vikhrmodels/QVikhr-3-1.7B-Instruction-noreasoning-MLX_8bit) + +## Особенности / Features: + +- 📚 Основа / Base: [Qwen/Qwen3-1.7B](https://huggingface.co/Qwen/Qwen3-1.7B) +- 🇷🇺 Специализация / Specialization: **RU** +- 💾 Датасет / Dataset: [GrandMaster2](https://huggingface.co/datasets/Vikhrmodels/GrandMaster2) +- 🌍 Поддержка / Support: **Bilingual RU/EN** + +## Попробовать / Try now: + +[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1EjliojdR7A9EQmsV8aLE7Rq_Lr_594gy?usp=sharing) + +## Ru Arena General + +| Model | Score | 95% CI | Avg. #Tokens | +|------------------------------------------|-------|-----------|--------------| +| Vikhrmodels-QVikhr-3-1.7B-Instruction-noreasoning | | | | +| noresoning-Qwen3-1.7B | | | | +| Qwen3-1.7B | | | | + +## Описание / Description: + +#### RU + +**QVikhr-3-1.7B-Instruction-noreasoning** — мощная языковая модель, обученная на датасете **GrandMaster-2**, поддерживает генерацию инструкций, контекстные ответы и анализ текста на русском языке. Эта модель оптимизирована для задач инструктивного обучения и обработки текстов. Она подходит для использования в профессиональной среде, а также для интеграции в пользовательские приложения и сервисы. + +#### EN + +**QVikhr-3-1.7B-Instruction-noreasoning** is a robust language model trained on the **GrandMaster-2** dataset. It excels in instruction generation, contextual responses, and text analysis in Russian. The model is optimized for instructional tasks and textual data processing, suitable for professional use as well as integration into user-facing applications and services. + +## Обучение / Training: + +#### RU + +**QVikhr-3-1.7B-Instruction-noreasoning** была создана с использованием метода SFT (Supervised Fine-Tuning) FFT (Full Fine-Tune). Мы использовали синтетический датасет **GrandMaster-2**. + +#### EN + +**QVikhr-3-1.7B-Instruction-noreasoning** was developed using the SFT (Supervised Fine-Tuning) FFT (Full Fine-Tune) method. The synthetic dataset **GrandMaster-2**. + +## Пример кода для запуска / Sample code to run: + +**Рекомендуемая температура для генерации: 0.3** / **Recommended generation temperature: 0.3**. + +```python +from transformers import AutoModelForCausalLM, AutoTokenizer + +# Load the model and tokenizer +model_name = "Vikhrmodels/QVikhr-3-1.7B-Instruction-noreasoning" +model = AutoModelForCausalLM.from_pretrained(model_name) +tokenizer = AutoTokenizer.from_pretrained(model_name) + +# Prepare the input text +input_text = "Напиши краткое описание книги Гарри Поттер." + +messages = [ + {"role": "user", "content": input_text}, +] + +# Tokenize and generate text +input_ids = tokenizer.apply_chat_template(messages, truncation=True, add_generation_prompt=True, return_tensors="pt") +output = model.generate( + input_ids, + max_length=1512, + temperature=0.3, + num_return_sequences=1, + no_repeat_ngram_size=2, + top_k=50, + top_p=0.95, +) + +# Decode and print result +generated_text = tokenizer.decode(output[0], skip_special_tokens=True) +print(generated_text) +```` + +#### Ответ модели / Model response: + +> \ +> +> \ +> +> **Краткое описание книги Гарри Поттера:** +> +> *«Гарри Поттер и философский камень»* — это история о мальчике, который, несмотря на слабость, стал свидетелем великих событий, связанных с магией, мистикой и поиском истинного смысла. Гарри, живущий в маленьком городке, влюбляется в магию, когда случайно участвует в неожиданном приключении, где он стал свидетелем загадочного события, связанного с «Философским камнем». +> +> Во время этого события он сталкивается с тремя магами, которые, по их словам, «все видят в будущем». Они предупреждают о приближении опасного события, которое может изменить мир. Гарри, несмотря на страх и неопределенность, решает следовать за магами, чтобы спасти мир. +> +> Вместе с Дорис и Ниммом он отправляется в путешествие в прошлое, чтобы изменить судьбу, но столкнувшись с трудностями и непредвиденными обстоятельствами, они находят силы преодолеть их. +> +> Конец книги — это встреча с «Философским камнем», который, как оказалось, может изменить реальность. Гарри понимает, что его выбор и действия могут изменить мир, и решает не бежать от ответственности, а стать частью великой миссии. +> +> *«Гарри Поттер и философский камень»* стал символом магии, веры в чудеса и силы, а также оставит на века глубокий след в литературном наследии. + +### Авторы / Authors + + - Sergei Bratchikov, [NLP Wanderer](https://t.me/nlpwanderer), [Vikhr Team](https://t.me/vikhrlabs) + - Nikolay Kompanets, [LakoMoor](https://t.me/lakomoordev), [Vikhr Team](https://t.me/vikhrlabs) + - Konstantin Korolev, [Vikhr Team](https://t.me/vikhrlabs) + - Aleksandr Nikolich, [Vikhr Team](https://t.me/vikhrlabs) + +### Как цитировать / How to Cite + +```bibtex +@inproceedings{nikolich2024vikhr, + title={Vikhr: Advancing Open-Source Bilingual Instruction-Following Large Language Models for Russian and English}, + author={Aleksandr Nikolich and Konstantin Korolev and Sergei Bratchikov and Nikolay Kompanets and Igor Kiselev and Artem Shelmanov}, + booktitle={Proceedings of the 4th Workshop on Multilingual Representation Learning (MRL) @ EMNLP-2024}, + year={2024}, + publisher={Association for Computational Linguistics}, + url={[https://arxiv.org/pdf/2405.13929](https://arxiv.org/pdf/2405.13929)} +} + +@misc{qwen3technicalreport, + title={Qwen3 Technical Report}, + author={Qwen Team}, + year={2025}, + eprint={2505.09388}, + archivePrefix={arXiv}, + primaryClass={cs.CL}, + url={https://arxiv.org/abs/2505.09388}, +} +``` \ No newline at end of file diff --git a/.ipynb_checkpoints/tokenizer_config-checkpoint.json b/.ipynb_checkpoints/tokenizer_config-checkpoint.json new file mode 100644 index 0000000..912593c --- /dev/null +++ b/.ipynb_checkpoints/tokenizer_config-checkpoint.json @@ -0,0 +1,240 @@ +{ + "add_bos_token": false, + "add_prefix_space": false, + "added_tokens_decoder": { + "151643": { + "content": "<|endoftext|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "151644": { + "content": "<|im_start|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "151645": { + "content": "<|im_end|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "151646": { + "content": "<|object_ref_start|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "151647": { + "content": "<|object_ref_end|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "151648": { + "content": "<|box_start|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "151649": { + "content": "<|box_end|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "151650": { + "content": "<|quad_start|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "151651": { + "content": "<|quad_end|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "151652": { + "content": "<|vision_start|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "151653": { + "content": "<|vision_end|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "151654": { + "content": "<|vision_pad|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "151655": { + "content": "<|image_pad|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "151656": { + "content": "<|video_pad|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "151657": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": false + }, + "151658": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": false + }, + "151659": { + "content": "<|fim_prefix|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": false + }, + "151660": { + "content": "<|fim_middle|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": false + }, + "151661": { + "content": "<|fim_suffix|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": false + }, + "151662": { + "content": "<|fim_pad|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": false + }, + "151663": { + "content": "<|repo_name|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": false + }, + "151664": { + "content": "<|file_sep|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": false + }, + "151665": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": false + }, + "151666": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": false + }, + "151667": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": false + }, + "151668": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": false + } + }, + "additional_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|>" + ], + "bos_token": null, + "chat_template": "{%- if tools %}\n {{- '<|im_start|>system\\n' }}\n {%- if messages[0].role == 'system' %}\n {{- messages[0].content + '\\n\\n' }}\n {%- endif %}\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\" }}\n {%- for tool in tools %}\n {{- \"\\n\" }}\n {{- tool | tojson }}\n {%- endfor %}\n {{- \"\\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\" }}\n{%- else %}\n {%- if messages[0].role == 'system' %}\n {{- '<|im_start|>system\\n' + messages[0].content + '<|im_end|>\\n' }}\n {%- endif %}\n{%- endif %}\n{%- set ns = namespace(multi_step_tool=true, last_query_index=messages|length - 1) %}\n{%- for message in messages[::-1] %}\n {%- set index = (messages|length - 1) - loop.index0 %}\n {%- if ns.multi_step_tool and message.role == \"user\" and not(message.content.startswith('') and message.content.endswith('')) %}\n {%- set ns.multi_step_tool = false %}\n {%- set ns.last_query_index = index %}\n {%- endif %}\n{%- endfor %}\n{%- for message in messages %}\n {%- if (message.role == \"user\") or (message.role == \"system\" and not loop.first) %}\n {{- '<|im_start|>' + message.role + '\\n' + message.content + '/no_think' + '<|im_end|>' + '\\n' }}\n {%- elif message.role == \"assistant\" %}\n {%- set content = message.content %}\n {%- set reasoning_content = '' %}\n {%- if message.reasoning_content is defined and message.reasoning_content is not none %}\n {%- set reasoning_content = message.reasoning_content %}\n {%- else %}\n {%- if '' in message.content %}\n {%- set content = message.content.split('')[-1].lstrip('\\n') %}\n {%- set reasoning_content = message.content.split('')[0].rstrip('\\n').split('')[-1].lstrip('\\n') %}\n {%- endif %}\n {%- endif %}\n {%- if loop.index0 > ns.last_query_index %}\n {%- if loop.last or (not loop.last and reasoning_content) %}\n {{- '<|im_start|>' + message.role + '\\n\\n' + reasoning_content.strip('\\n') + '\\n\\n\\n' + content.lstrip('\\n') }}\n {%- else %}\n {{- '<|im_start|>' + message.role + '\\n' + content }}\n {%- endif %}\n {%- else %}\n {{- '<|im_start|>' + message.role + '\\n' + content }}\n {%- endif %}\n {%- if message.tool_calls %}\n {%- for tool_call in message.tool_calls %}\n {%- if (loop.first and content) or (not loop.first) %}\n {{- '\\n' }}\n {%- endif %}\n {%- if tool_call.function %}\n {%- set tool_call = tool_call.function %}\n {%- endif %}\n {{- '\\n{\"name\": \"' }}\n {{- tool_call.name }}\n {{- '\", \"arguments\": ' }}\n {%- if tool_call.arguments is string %}\n {{- tool_call.arguments }}\n {%- else %}\n {{- tool_call.arguments | tojson }}\n {%- endif %}\n {{- '}\\n' }}\n {%- endfor %}\n {%- endif %}\n {{- '<|im_end|>\\n' }}\n {%- elif message.role == \"tool\" %}\n {%- if loop.first or (messages[loop.index0 - 1].role != \"tool\") %}\n {{- '<|im_start|>user' }}\n {%- endif %}\n {{- '\\n\\n' }}\n {{- message.content }}\n {{- '\\n' }}\n {%- if loop.last or (messages[loop.index0 + 1].role != \"tool\") %}\n {{- '<|im_end|>\\n' }}\n {%- endif %}\n {%- endif %}\n{%- endfor %}\n{%- if add_generation_prompt %}\n {{- '<|im_start|>assistant\\n' }}\n {%- if enable_thinking is defined and enable_thinking is false %}\n {{- '\\n\\n\\n\\n' }}\n {%- endif %}\n{%- endif %}", + "clean_up_tokenization_spaces": false, + "eos_token": "<|im_end|>", + "errors": "replace", + "extra_special_tokens": {}, + "model_max_length": 12000, + "pad_token": "<|endoftext|>", + "split_special_tokens": false, + "tokenizer_class": "Qwen2Tokenizer", + "unk_token": null +} diff --git a/README.md b/README.md new file mode 100644 index 0000000..af386eb --- /dev/null +++ b/README.md @@ -0,0 +1,153 @@ + +--- +library_name: transformers +model_name: QVikhr-3-1.7B-Instruction-noreasoning +base_model: +- Qwen/Qwen3-1.7B +language: +- ru +- en +license: apache-2.0 +datasets: +- Vikhrmodels/GrandMaster2 +--- + +# QVikhr-3-1.7B-Instruction-noreasoning + +#### RU + +Инструктивная модель на основе **Qwen/Qwen3-1.7B**, обученная на русскоязычном датасете **GrandMaster2**. Создана для высокоэффективной обработки текстов на русском и английском языках, обеспечивая точные ответы и быстрое выполнение задач. + +#### EN + +Instructive model based on **Qwen/Qwen3-1.7B**, trained on the Russian-language dataset **GrandMaster2**. Designed for high-efficiency text processing in Russian and English, delivering precise responses and fast task execution. + +## Quantized variants: + +- GGUF [Vikhrmodels/QVikhr-3-1.7B-Instruction-noreasoning-GGUF](https://huggingface.co/Vikhrmodels/QVikhr-3-1.7B-Instruction-noreasoning-GGUF) +- MLX + - 4 bit [Vikhrmodels/QVikhr-3-1.7B-Instruction-noreasoning-MLX_4bit](https://huggingface.co/Vikhrmodels/QVikhr-3-1.7B-Instruction-noreasoning-MLX_4bit) + - 8 bit [Vikhrmodels/QVikhr-3-1.7B-Instruction-noreasoning-MLX_8bit](https://huggingface.co/Vikhrmodels/QVikhr-3-1.7B-Instruction-noreasoning-MLX_8bit) + +## Особенности / Features: + +- 📚 Основа / Base: [Qwen/Qwen3-1.7B](https://huggingface.co/Qwen/Qwen3-1.7B) +- 🇷🇺 Специализация / Specialization: **RU** +- 💾 Датасет / Dataset: [GrandMaster2](https://huggingface.co/datasets/Vikhrmodels/GrandMaster2) +- 🌍 Поддержка / Support: **Bilingual RU/EN** + +## Попробовать / Try now: + +[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1EjliojdR7A9EQmsV8aLE7Rq_Lr_594gy?usp=sharing) + +## Ru Arena General + +| Model | Score | 95% CI | Avg. #Tokens | +|------------------------------------------|-------|-----------|--------------| +| Vikhrmodels-QVikhr-3-1.7B-Instruction-noreasoning |59.2 |(-2.1, 1.8) |1053 | +| noresoning-Qwen3-1.7B |51.9 |(-1.9, 1.5) |999 | +| Qwen3-1.7B |49.7 |(-1.8, 1.9) |1918 | + +## Описание / Description: + +#### RU + +**QVikhr-3-1.7B-Instruction-noreasoning** — мощная языковая модель, обученная на датасете **GrandMaster-2**, поддерживает генерацию инструкций, контекстные ответы и анализ текста на русском языке. Эта модель оптимизирована для задач инструктивного обучения и обработки текстов. Она подходит для использования в профессиональной среде, а также для интеграции в пользовательские приложения и сервисы. + +#### EN + +**QVikhr-3-1.7B-Instruction-noreasoning** is a robust language model trained on the **GrandMaster-2** dataset. It excels in instruction generation, contextual responses, and text analysis in Russian. The model is optimized for instructional tasks and textual data processing, suitable for professional use as well as integration into user-facing applications and services. + +## Обучение / Training: + +#### RU + +**QVikhr-3-1.7B-Instruction-noreasoning** была создана с использованием метода SFT (Supervised Fine-Tuning) FFT (Full Fine-Tune). Мы использовали синтетический датасет **GrandMaster-2**. + +#### EN + +**QVikhr-3-1.7B-Instruction-noreasoning** was developed using the SFT (Supervised Fine-Tuning) FFT (Full Fine-Tune) method. The synthetic dataset **GrandMaster-2**. + +## Пример кода для запуска / Sample code to run: + +**Рекомендуемая температура для генерации: 0.3** / **Recommended generation temperature: 0.3**. + +```python +from transformers import AutoModelForCausalLM, AutoTokenizer + +# Load the model and tokenizer +model_name = "Vikhrmodels/QVikhr-3-1.7B-Instruction-noreasoning" +model = AutoModelForCausalLM.from_pretrained(model_name) +tokenizer = AutoTokenizer.from_pretrained(model_name) + +# Prepare the input text +input_text = "Напиши краткое описание книги Гарри Поттер." + +messages = [ + {"role": "user", "content": input_text}, +] + +# Tokenize and generate text +input_ids = tokenizer.apply_chat_template(messages, truncation=True, add_generation_prompt=True, return_tensors="pt") +output = model.generate( + input_ids, + max_length=1512, + temperature=0.3, + num_return_sequences=1, + no_repeat_ngram_size=2, + top_k=50, + top_p=0.95, +) + +# Decode and print result +generated_text = tokenizer.decode(output[0], skip_special_tokens=True) +print(generated_text) +```` + +#### Ответ модели / Model response: + +> \ +> +> \ +> +> **Краткое описание книги Гарри Поттера:** +> +> *«Гарри Поттер и философский камень»* — это история о мальчике, который, несмотря на слабость, стал свидетелем великих событий, связанных с магией, мистикой и поиском истинного смысла. Гарри, живущий в маленьком городке, влюбляется в магию, когда случайно участвует в неожиданном приключении, где он стал свидетелем загадочного события, связанного с «Философским камнем». +> +> Во время этого события он сталкивается с тремя магами, которые, по их словам, «все видят в будущем». Они предупреждают о приближении опасного события, которое может изменить мир. Гарри, несмотря на страх и неопределенность, решает следовать за магами, чтобы спасти мир. +> +> Вместе с Дорис и Ниммом он отправляется в путешествие в прошлое, чтобы изменить судьбу, но столкнувшись с трудностями и непредвиденными обстоятельствами, они находят силы преодолеть их. +> +> Конец книги — это встреча с «Философским камнем», который, как оказалось, может изменить реальность. Гарри понимает, что его выбор и действия могут изменить мир, и решает не бежать от ответственности, а стать частью великой миссии. +> +> *«Гарри Поттер и философский камень»* стал символом магии, веры в чудеса и силы, а также оставит на века глубокий след в литературном наследии. + +### Авторы / Authors + + - Sergei Bratchikov, [NLP Wanderer](https://t.me/nlpwanderer), [Vikhr Team](https://t.me/vikhrlabs) + - Nikolay Kompanets, [LakoMoor](https://t.me/lakomoordev), [Vikhr Team](https://t.me/vikhrlabs) + - Konstantin Korolev, [Vikhr Team](https://t.me/vikhrlabs) + - Aleksandr Nikolich, [Vikhr Team](https://t.me/vikhrlabs) + +### Как цитировать / How to Cite + +```bibtex +@inproceedings{nikolich2024vikhr, + title={Vikhr: Advancing Open-Source Bilingual Instruction-Following Large Language Models for Russian and English}, + author={Aleksandr Nikolich and Konstantin Korolev and Sergei Bratchikov and Nikolay Kompanets and Igor Kiselev and Artem Shelmanov}, + booktitle={Proceedings of the 4th Workshop on Multilingual Representation Learning (MRL) @ EMNLP-2024}, + year={2024}, + publisher={Association for Computational Linguistics}, + url={[https://arxiv.org/pdf/2405.13929](https://arxiv.org/pdf/2405.13929)} +} + +@misc{qwen3technicalreport, + title={Qwen3 Technical Report}, + author={Qwen Team}, + year={2025}, + eprint={2505.09388}, + archivePrefix={arXiv}, + primaryClass={cs.CL}, + url={https://arxiv.org/abs/2505.09388}, +} +``` \ No newline at end of file diff --git a/added_tokens.json b/added_tokens.json new file mode 100644 index 0000000..b54f913 --- /dev/null +++ b/added_tokens.json @@ -0,0 +1,28 @@ +{ + "": 151668, + "": 151658, + "": 151666, + "": 151667, + "": 151657, + "": 151665, + "<|box_end|>": 151649, + "<|box_start|>": 151648, + "<|endoftext|>": 151643, + "<|file_sep|>": 151664, + "<|fim_middle|>": 151660, + "<|fim_pad|>": 151662, + "<|fim_prefix|>": 151659, + "<|fim_suffix|>": 151661, + "<|im_end|>": 151645, + "<|im_start|>": 151644, + "<|image_pad|>": 151655, + "<|object_ref_end|>": 151647, + "<|object_ref_start|>": 151646, + "<|quad_end|>": 151651, + "<|quad_start|>": 151650, + "<|repo_name|>": 151663, + "<|video_pad|>": 151656, + "<|vision_end|>": 151653, + "<|vision_pad|>": 151654, + "<|vision_start|>": 151652 +} diff --git a/config.json b/config.json new file mode 100644 index 0000000..5a331e3 --- /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": 2048, + "initializer_range": 0.02, + "intermediate_size": 6144, + "max_position_embeddings": 40960, + "max_window_layers": 28, + "model_type": "qwen3", + "num_attention_heads": 16, + "num_hidden_layers": 28, + "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.3", + "use_cache": true, + "use_sliding_window": false, + "vocab_size": 151936 +} diff --git a/configuration.json b/configuration.json new file mode 100644 index 0000000..bbeeda1 --- /dev/null +++ b/configuration.json @@ -0,0 +1 @@ +{"framework": "pytorch", "task": "text-generation", "allow_remote": true} \ No newline at end of file diff --git a/generation_config.json b/generation_config.json new file mode 100644 index 0000000..e4f1d31 --- /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.3" +} diff --git a/merges.txt b/merges.txt new file mode 100644 index 0000000..80c1a19 --- /dev/null +++ b/merges.txt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8831e4f1a044471340f7c0a83d7bd71306a5b867e95fd870f74d0c5308a904d5 +size 1671853 diff --git a/model.safetensors b/model.safetensors new file mode 100644 index 0000000..b0c6499 --- /dev/null +++ b/model.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8c18861c5c1eb26003dead027e2a723c4fe63f1bf16406db6c5a4c2fc4941742 +size 3441185608 diff --git a/special_tokens_map.json b/special_tokens_map.json new file mode 100644 index 0000000..ac23c0a --- /dev/null +++ b/special_tokens_map.json @@ -0,0 +1,31 @@ +{ + "additional_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|>" + ], + "eos_token": { + "content": "<|im_end|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false + }, + "pad_token": { + "content": "<|endoftext|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false + } +} diff --git a/tokenizer.json b/tokenizer.json new file mode 100644 index 0000000..cd71f61 --- /dev/null +++ b/tokenizer.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aeb13307a71acd8fe81861d94ad54ab689df773318809eed3cbe794b4492dae4 +size 11422654 diff --git a/tokenizer_config.json b/tokenizer_config.json new file mode 100644 index 0000000..912593c --- /dev/null +++ b/tokenizer_config.json @@ -0,0 +1,240 @@ +{ + "add_bos_token": false, + "add_prefix_space": false, + "added_tokens_decoder": { + "151643": { + "content": "<|endoftext|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "151644": { + "content": "<|im_start|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "151645": { + "content": "<|im_end|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "151646": { + "content": "<|object_ref_start|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "151647": { + "content": "<|object_ref_end|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "151648": { + "content": "<|box_start|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "151649": { + "content": "<|box_end|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "151650": { + "content": "<|quad_start|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "151651": { + "content": "<|quad_end|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "151652": { + "content": "<|vision_start|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "151653": { + "content": "<|vision_end|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "151654": { + "content": "<|vision_pad|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "151655": { + "content": "<|image_pad|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "151656": { + "content": "<|video_pad|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "151657": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": false + }, + "151658": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": false + }, + "151659": { + "content": "<|fim_prefix|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": false + }, + "151660": { + "content": "<|fim_middle|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": false + }, + "151661": { + "content": "<|fim_suffix|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": false + }, + "151662": { + "content": "<|fim_pad|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": false + }, + "151663": { + "content": "<|repo_name|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": false + }, + "151664": { + "content": "<|file_sep|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": false + }, + "151665": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": false + }, + "151666": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": false + }, + "151667": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": false + }, + "151668": { + "content": "", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": false + } + }, + "additional_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|>" + ], + "bos_token": null, + "chat_template": "{%- if tools %}\n {{- '<|im_start|>system\\n' }}\n {%- if messages[0].role == 'system' %}\n {{- messages[0].content + '\\n\\n' }}\n {%- endif %}\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\" }}\n {%- for tool in tools %}\n {{- \"\\n\" }}\n {{- tool | tojson }}\n {%- endfor %}\n {{- \"\\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\" }}\n{%- else %}\n {%- if messages[0].role == 'system' %}\n {{- '<|im_start|>system\\n' + messages[0].content + '<|im_end|>\\n' }}\n {%- endif %}\n{%- endif %}\n{%- set ns = namespace(multi_step_tool=true, last_query_index=messages|length - 1) %}\n{%- for message in messages[::-1] %}\n {%- set index = (messages|length - 1) - loop.index0 %}\n {%- if ns.multi_step_tool and message.role == \"user\" and not(message.content.startswith('') and message.content.endswith('')) %}\n {%- set ns.multi_step_tool = false %}\n {%- set ns.last_query_index = index %}\n {%- endif %}\n{%- endfor %}\n{%- for message in messages %}\n {%- if (message.role == \"user\") or (message.role == \"system\" and not loop.first) %}\n {{- '<|im_start|>' + message.role + '\\n' + message.content + '/no_think' + '<|im_end|>' + '\\n' }}\n {%- elif message.role == \"assistant\" %}\n {%- set content = message.content %}\n {%- set reasoning_content = '' %}\n {%- if message.reasoning_content is defined and message.reasoning_content is not none %}\n {%- set reasoning_content = message.reasoning_content %}\n {%- else %}\n {%- if '' in message.content %}\n {%- set content = message.content.split('')[-1].lstrip('\\n') %}\n {%- set reasoning_content = message.content.split('')[0].rstrip('\\n').split('')[-1].lstrip('\\n') %}\n {%- endif %}\n {%- endif %}\n {%- if loop.index0 > ns.last_query_index %}\n {%- if loop.last or (not loop.last and reasoning_content) %}\n {{- '<|im_start|>' + message.role + '\\n\\n' + reasoning_content.strip('\\n') + '\\n\\n\\n' + content.lstrip('\\n') }}\n {%- else %}\n {{- '<|im_start|>' + message.role + '\\n' + content }}\n {%- endif %}\n {%- else %}\n {{- '<|im_start|>' + message.role + '\\n' + content }}\n {%- endif %}\n {%- if message.tool_calls %}\n {%- for tool_call in message.tool_calls %}\n {%- if (loop.first and content) or (not loop.first) %}\n {{- '\\n' }}\n {%- endif %}\n {%- if tool_call.function %}\n {%- set tool_call = tool_call.function %}\n {%- endif %}\n {{- '\\n{\"name\": \"' }}\n {{- tool_call.name }}\n {{- '\", \"arguments\": ' }}\n {%- if tool_call.arguments is string %}\n {{- tool_call.arguments }}\n {%- else %}\n {{- tool_call.arguments | tojson }}\n {%- endif %}\n {{- '}\\n' }}\n {%- endfor %}\n {%- endif %}\n {{- '<|im_end|>\\n' }}\n {%- elif message.role == \"tool\" %}\n {%- if loop.first or (messages[loop.index0 - 1].role != \"tool\") %}\n {{- '<|im_start|>user' }}\n {%- endif %}\n {{- '\\n\\n' }}\n {{- message.content }}\n {{- '\\n' }}\n {%- if loop.last or (messages[loop.index0 + 1].role != \"tool\") %}\n {{- '<|im_end|>\\n' }}\n {%- endif %}\n {%- endif %}\n{%- endfor %}\n{%- if add_generation_prompt %}\n {{- '<|im_start|>assistant\\n' }}\n {%- if enable_thinking is defined and enable_thinking is false %}\n {{- '\\n\\n\\n\\n' }}\n {%- endif %}\n{%- endif %}", + "clean_up_tokenization_spaces": false, + "eos_token": "<|im_end|>", + "errors": "replace", + "extra_special_tokens": {}, + "model_max_length": 12000, + "pad_token": "<|endoftext|>", + "split_special_tokens": false, + "tokenizer_class": "Qwen2Tokenizer", + "unk_token": null +} diff --git a/training_args.bin b/training_args.bin new file mode 100644 index 0000000..f271c04 --- /dev/null +++ b/training_args.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f29e2a6259050a0fcb2a9ea5569c0bf913a8f3d0c534cc2408ad1c767367d75f +size 5688 diff --git a/vocab.json b/vocab.json new file mode 100644 index 0000000..6c49fc6 --- /dev/null +++ b/vocab.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ca10d7e9fb3ed18575dd1e277a2579c16d108e32f27439684afa0e10b1440910 +size 2776833