--- base_model: - Qwen/Qwen2.5-3B-Instruct language: - ru - en library_name: transformers license: apache-2.0 pipeline_tag: text-generation --- --- ## FractalGPT/RuQwen2.5-3b-instruct --- ### Model Overview - **RuQwen2.5-3b-instruct** by FractalGPT is a language model tailored to deliver high-quality Russian language output. Building upon the Qwen2.5 series, it is optimized for Russian-language tasks while retaining broad multilingual support. - **Improved Russian Language Quality**: Adaptations have significantly enhanced the fluency, accuracy, and coherence of Russian text generation, making it an excellent choice for Russian-language applications. ### Model Specifications - **Type**: Instruction-tuned Causal Language Model - **Training Stages**: Pretraining & Instruction Tuning - **Architecture**: Transformer with RoPE, SwiGLU, RMSNorm, and Attention QKV bias - **Layers**: 36 - **Attention Heads (GQA)**: 24 for Q, 4 for KV - **Context Length**: Supports a full context of 131,072 tokens and generation of up to 8,192 tokens ### Requirements The code of Qwen2.5 has been in the latest Hugging face transformers and we advise you to use the latest version of transformers. ``` pip install autoawq -q pip install --upgrade torch -q pip install --upgrade transformers -q ``` With transformers<4.37.0, you will encounter the following error: ``` KeyError: 'qwen2' ``` Also check out our [AWQ documentation](https://qwen.readthedocs.io/en/latest/quantization/awq.html) for more usage guide. With pytorch<2.4.0, you will encounter the following error: ``` AttributeError: module 'torch.library' has no attribute 'register_fake' ``` ### Quickstart We use a special RuQwen2ForCausalLM class to work with this model: ```python from transformers import Qwen2ForCausalLM, AutoConfig, AutoTokenizer import torch class RuQwen2ForCausalLM(Qwen2ForCausalLM): def __init__(self, config): super().__init__(config) if hasattr(self, "lm_head") and isinstance(self.lm_head, torch.nn.Linear): if self.lm_head.bias is None: self.config.add_bias_to_lm_head = True self._add_bias_to_lm_head() def _add_bias_to_lm_head(self): """Добавляет bias в lm_head, если его нет.""" old_lm_head = self.lm_head # lm_head с bias self.lm_head = torch.nn.Linear( old_lm_head.in_features, old_lm_head.out_features, dtype=self.model.dtype, bias=True, ) with torch.no_grad(): self.lm_head.weight = old_lm_head.weight torch.nn.init.zeros_(self.lm_head.bias) @classmethod def from_pretrained(cls, model_name, *args, **kwargs): # Загружает модель с конфигурацией model = super().from_pretrained(model_name, *args, **kwargs) if hasattr(model.config, "add_bias_to_lm_head") and not model.config.add_bias_to_lm_head: model._add_bias_to_lm_head() return model def save_pretrained(self, save_directory, *args, **kwargs): self.config.add_bias_to_lm_head = self.lm_head.bias is not None super().save_pretrained(save_directory, *args, **kwargs) ``` Here provides a code snippet with apply_chat_template to show you how to load the tokenizer and model and how to generate contents. ```python def generate(messages): input_ids = tokenizer.apply_chat_template(messages, tokenize=True, add_generation_prompt=True, return_tensors="pt").to(model.device) output = model.generate(input_ids, max_new_tokens=1024, do_sample=False, temperature=None, top_k=None, top_p=None) generated_text = tokenizer.decode(output[0], skip_special_tokens=False)#.split('<|im_start|>assistant')[1] return generated_text model_name = 'FractalGPT/RuQwen2.5-3B-Instruct-AWQ' model = Qwen2ForCausalLMWithBias.from_pretrained(model_name, torch_dtype=torch.float16) tokenizer = AutoTokenizer.from_pretrained(model_name) prompt = "Классификация медицинских терминов" messages = [ {"role": "system", "content": "You are RuQwen, created by FractalGPT. You are a helpful assistant."}, {"role": "user", "content": prompt} ] print(generate(messages)) ``` ### Example of improvements Question: 'Классификация медицинских терминов' The answer to the original model ``` Классификация медицинских терминов играет ключевую роль в медицине и информационных системах. Вот несколько основных подходов к классификации медицинских терминов: 1. **International Classification of Diseases (ICD)**: Это стандартная система классификации заболеваний и причин смерти, разработанная ВОЗ. Она используется во многих странах для классификации медицинских случаев. 2. **Medical Subject Headings (MeSH)**: Это система классификации медицинской литературы, разработанная National Library of Medicine (NLM). MeSH помогает организовать информацию о медицинских исследованиях и статьях. 3. **Systematized Nomenclature of Medicine (SNOMED)**: SNOMED International предоставляет глубоко специализированную систему классификации медицинских терминов. Она предназначена для использования в больницах, клиниках и других медицинских учреждениях. 4. **Unified Medical Language System (UMLS)**: Это расширяемая система классификации медицинских терминов, которая объединяет данные из различных источников, таких как ICD-10, MeSH и другие. 5. **Clinical Terms**: Это система классификации медицинских терминов, разработанная для использования в клинических системах управления пациентами (EHR). 6. **Pharmaceutical Product Names (PPNs)**: Это система классификации названий лекарственных препаратов, разработанная для обеспечения уникальности и стандартизации названий. Каждая из этих систем имеет свои особенности и области применения. Например, ICD主要用于疾病和死亡原因的分类,而MeSH主要用于医学文献的分类。SNOMED则提供更详细的医疗术语分类,适用于临床应用。 Также существуют специализированные системы для конкретных областей медицины, такие как терминология для хирургии, терапии, педиатрии и т.д. Классификация медицинских терминов позволяет упорядочить информацию, сделать ее доступной для широкого круга пользователей и обеспечивает стандартизацию терминологии, что важно для точного понимания и эффективного общения между врачами, пациентами и медицинскими работниками. ``` Our model's answer ``` Классификация медицинских терминов играет ключевую роль в медицине и информационных системах. Вот несколько основных подходов к классификации медицинских терминов: 1. **International Classification of Diseases (ICD)**: Это стандартная система классификации заболеваний и причин смерти, разработанная ВОЗ. Она используется во многих странах для классификации медицинских случаев. 2. **Medical Subject Headings (MeSH)**: Это система классификации медицинской литературы, разработанная National Library of Medicine (NLM). MeSH помогает организовать информацию о медицинских исследованиях и статьях. 3. **Systematized Nomenclature of Medicine (SNOMED)**: SNOMED International предоставляет глубоко специализированную систему классификации медицинских терминов. Он включает термины для диагностики, лечения, тестирования и других аспектов медицинского обслуживания. 4. **Unified Medical Language System (UMLS)**: Это система метаданных, которая объединяет терминологические данные из различных источников, таких как ICD-10, MeSH и другие системы классификации. 5. **Clinical Terms**: Это терминология, используемая в клинической практике, которая может включать термины из SNOMED, ICD и других систем. 6. **Pharmacopoeias**: Эти документы обычно содержат классификацию лекарственных препаратов и их применения. Каждая из этих систем имеет свои особенности и области применения. Например, ICD используется для классификации заболеваний и причин смерти, в то время как MeSH и SNOMED используются для классификации медицинской информации и терминологии соответственно. Также существуют более специализированные системы классификации, такие как терминология для конкретных областей медицины (например, терминология для хирургии или терминология для педиатрии). Классификация медицинских терминов позволяет упорядочить информацию, сделать ее доступной для широкого круга пользователей и обеспечивает стандартизацию терминологии, что важно для эффективного общения между врачами, пациентами и другими участниками медицинского процесса. ```