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 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:
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.
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则提供更详细的医疗术语分类,适用于临床应用。
Также существуют специализированные системы для конкретных областей медицины, такие как терминология для хирургии, терапии, педиатрии и т.д.
Классификация медицинских терминов позволяет упорядочить информацию, сделать ее доступной для широкого круга пользователей и обеспечивает стандартизацию терминологии, что важно для точного понимания и эффективного общения между врачами, пациентами и медицинскими работниками.<|im_end|>
Our model's answer
TODO: добавить