Luqwen3-4B
Luqwen3-4B — русскоязычная текстовая модель, полученная дообучением Qwen3.5-4B-Base методом LoRA (QLoRA) на смешанном датасете из реальных диалогов с LLM, креативных текстов и специализированных инструкций. Модель сочетает способность следовать инструкциям, вызывать инструменты, решать задачи по математике, физике, истории и аналитике, а также генерировать выразительные литературные тексты.
Базовая модель Qwen3.5-4B-Base использует гибридную архитектуру (Gated DeltaNet + Full Attention) с контекстом до 262k токенов, что обеспечивает эффективный инференс при сохранении качества генерации.
Base model
| Свойство | Значение |
|---|
| Архитектура | Qwen3.5 For Causal LM (гибрид Linear/Full Attention) |
| Параметров | 4B |
| Скрытая размерность | 1024 |
| Слоёв | 24 |
| Контекст | до 262 144 токенов |
| Вокабуляр | 248 320 (padding) |
| MTP | 1 слой |
Training data
Датасет для обучения состоит из трёх частей:
50% — Креативное письмо
Оригинальные тексты, написанные Claude Opus 4.6, затем переведённые на русский язык с помощью Gemma 4 26B.
После перевода был сделан ещё один проход Gemma 4 26B для исправления ошибок перевода, а затем выполнена ручная доработка и редактура текстов.
25% — Реальные диалоги пользователя с LLM
Диалоги включают:
- Задачи с использованием инструментов (tool calling) — вызов API, работа с файлами, команды
- Логические и рассуждающие задачи
- Кодинг — написание, отладка и объяснение кода
- Общие инструкции и вопросы
25% — Инструкционный датасет на русском языке
Примеры решения задач по категориям:
- Математика — алгебра, геометрия, задачи с рассуждениями
- Физика — механика, термодинамика, электродинамика
- Код — примеры решения задач по программированию
- История — вопросы и анализ исторических событий
- Аналитика — интерпретация данных, выводы и прогнозы
Pipeline подготовки данных
- Сбор диалогов с LLM (tool-calling, код, логика) — анонимизация, форматирование в ChatML
- Написание креативных текстов на английском через Claude Opus
- Перевод текстов на русский через Gemma 4 26B
- Проход Gemma 4 26B для исправления ошибок перевода
- Ручная доработка и редактура текстов
- Составление инструкционного датасета (математика, физика, код, история, аналитика)
- Фильтрация и дедупликация
- Конвертация в ChatML-формат
Training procedure
Параметры LoRA
| Параметр | Значение |
|---|
| rank (r) | 16 |
| lora_alpha | 32 |
| lora_dropout | 0 |
| bias | none |
| Целевые модули | q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj, in_proj_qkv, in_proj_z, out_proj, in_proj_a, in_proj_b |
Гиперпараметры обучения
| Параметр | Значение |
|---|
| Оптимизатор | AdamW 8-bit |
| Precision | BF16 (mixed) |
| Batch size | 1 (8 gradient accumulation steps) |
| Learning rate | 2e-4 |
| Эпохи | 3 |
| Warmup steps | 20 |
| Max seq length | 4096 токенов |
| Обёртка | unsloth (4-bit QLoRA) |
Слияние весов
После обучения LoRA-адаптер был слит с базовой моделью в 16-bit точность (метод merged_16bit через unsloth) для удобного использования без дополнительных зависимостей PEFT.
Usage
1from transformers import AutoModelForCausalLM, AutoTokenizer
2
3model_name = "LLiserginov/Luqwen3-4B"
4
5tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
6model = AutoModelForCausalLM.from_pretrained(
7 model_name,
8 torch_dtype="auto",
9 device_map="auto",
10 trust_remote_code=True,
11)
12
13messages = [
14 {"role": "user", "content": "Напиши рассказ о одиноком фонаре в осеннем парке."},
15]
16
17text = tokenizer.apply_chat_template(
18 messages,
19 tokenize=False,
20 add_generation_prompt=True,
21)
22
23inputs = tokenizer(text, return_tensors="pt").to(model.device)
24
25outputs = model.generate(
26 **inputs,
27 max_new_tokens=1024,
28 temperature=0.7,
29 top_p=0.9,
30 do_sample=True,
31)
32
33response = tokenizer.decode(outputs[0][inputs.input_ids.shape[1]:], skip_special_tokens=True)
34print(response)
Вызов инструментов
1from transformers import AutoModelForCausalLM, AutoTokenizer
2
3model_name = "LLiserginov/Luqwen3-4B"
4
5tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
6model = AutoModelForCausalLM.from_pretrained(
7 model_name,
8 torch_dtype="auto",
9 device_map="auto",
10 trust_remote_code=True,
11)
12
13messages = [
14 {"role": "user", "content": "Узнай текущую погоду в Москве."},
15]
16
17text = tokenizer.apply_chat_template(
18 messages,
19 tokenize=False,
20 add_generation_prompt=True,
21)
22
23inputs = tokenizer(text, return_tensors="pt").to(model.device)
24
25outputs = model.generate(
26 **inputs,
27 max_new_tokens=256,
28 temperature=0.3,
29 top_p=0.9,
30 do_sample=True,
31)
32
33response = tokenizer.decode(outputs[0][inputs.input_ids.shape[1]:], skip_special_tokens=True)
34print(response)
Использование с vLLM
1from vllm import LLM, SamplingParams
2
3llm = LLM(model="LLiserginov/Luqwen3-4B", trust_remote_code=True)
4
5messages = [
6 {"role": "user", "content": "Объясни разницу между supervised и unsupervised learning."},
7]
8
9outputs = llm.chat(messages, sampling_params=SamplingParams(temperature=0.7, max_tokens=1024))
10print(outputs[0].outputs[0].text)
GGUF (llama.cpp)
GGUF-версию модели можно найти в
файлах или сконвертировать самостоятельно:
1git clone https://github.com/ggml-ai/llama.cpp
2cd llama.cpp
3python convert_hf_to_gguf.py /path/to/Luqwen3-4B --outfile Luqwen3-4B.Q4_K_M.gguf --outtype q4_K_M
Limitations
- Креативный датасет переведён машинным способом (Gemma 4 26B) — даже после исправления ошибок перевода и ручной доработки возможны артефакты и буквализмы
- Инструкционный датасет ограничен по объёму — покрытие тем по математике, физике, истории и аналитике неполное
- Модель не проходила RLHF/DPO-калибровку и может генерировать нежелательный или фактически неверный контент
- Не предназначена для использования в медицинских, юридических или других критических областях
- Это текстовая версия — мультимодальные возможности Qwen3.5 (изображения, видео) не используются
License
Модель распространяется под лицензией Apache 2.0.
Базовая модель:
Qwen3.5-4B-Base — Apache 2.0.