Luqwen4-4B

Luqwen4-4B — русскоязычная текстовая модель, полученная дообучением Qwen3.5-4B-Base методом LoRA (QLoRA), продолжающая линейку Luqwen-4B. Датасет построен на основе датасета Luqwen3.5 с добавлением новых частей: русских притч, кода (web + batch) и задач на внимание по логике и математике. Модель сочетает способность следовать инструкциям, вызывать инструменты, решать задачи по математике, физике, истории и аналитике, а также генерировать выразительные литературные тексты, притчи и программный код.

Базовая модель Qwen3.5-4B-Base использует гибридную архитектуру (Gated DeltaNet + Full Attention) с контекстом до 262k токенов, что обеспечивает эффективный инференс при сохранении качества генерации.

Что нового в версии 4

К датасету из Luqwen3.5 (принятому за 100%) добавлено:

  • +10% — Притчи — русские притчи и поучительные истории (датасет LLiserginov/russian_parables)
  • +10% — Код (web + batch) — генерация HTML-страниц и скриптов для Windows (.bat), включая примеры с инструментами и запросами на создание/доработку кода
  • +5% — Логические и математические задачи на внимание — задачи на внимательность, аккуратность к условию и пошаговые вычисления

Base model

Свойство Значение
Архитектура Qwen3.5 For Causal LM (гибрид Linear/Full Attention)
Параметров 4B
Скрытая размерность 1024
Слоёв 24
Контекст до 262 144 токенов
Вокабуляр 248 320 (padding)
MTP 1 слой

Подробнее: Qwen3.5-4B-Base

Training data

Датасет Luqwen4 построен на основе датасета Luqwen3.5, к которому добавлены новые части. Доли добавлений указаны относительно датасета Luqwen3.5, принятого за 100%:

Добавление Доля от базы 3.5
База Luqwen3.5 100%
Притчи +10%
Код (web + batch) +10%
Логические и математические задачи на внимание +5%

Итоговое распределение частей в суммарном датасете (125%):

Часть Доля в итоге
База Luqwen3.5 80%
Притчи 8%
Код (web + batch) 8%
Логика и математика на внимание 4%

База — датасет Luqwen3.5 (80%)

Состоит из трёх частей (доли — внутри базы):

70% — Креативное письмо

Оригинальные тексты, написанные Claude Opus 4.6. Примерно 50% примеров оставлено на английском языке в оригинале, остальные переведены на русский с помощью Gemma 4 26B. После перевода был сделан ещё один проход Gemma 4 26B для исправления ошибок перевода, а затем выполнена ручная доработка и редактура текстов.

15% — Реальные диалоги пользователя с LLM

Диалоги включают:

  • Задачи с использованием инструментов (tool calling) — вызов API, работа с файлами, команды
  • Логические и рассуждающие задачи
  • Кодинг — написание, отладка и объяснение кода
  • Общие инструкции и вопросы

15% — Инструкционный датасет на русском языке

Примеры решения задач по категориям:

  • Математика — алгебра, геометрия, задачи с рассуждениями
  • Физика — механика, термодинамика, электродинамика
  • Код — примеры решения задач по программированию
  • История — вопросы и анализ исторических событий
  • Аналитика — интерпретация данных, выводы и прогнозы

Новые части Luqwen4 (20%)

8% — Притчи

Русские притчи и поучительные истории из датасета LLiserginov/russian_parables. Примеры представлены в виде диалогов с пересказом, разбором смысла и морали.

8% — Код (web + batch)

  • Web — генерация и доработка HTML-страниц: вёрстка, интерактивные элементы, стилизация
  • Batch — создание Windows-скриптов (.bat) для автоматизации задач

4% — Логические и математические задачи на внимание

Задачи на внимательность к условию, проверку данных и последовательные вычисления (скорость, время, расстояния, перестановки). Развивают аккуратность при решении и снижают количество «заученных» ошибок.

Pipeline подготовки данных

  1. Сбор диалогов с LLM (tool-calling, код, логика) — анонимизация, форматирование в ChatML
  2. Написание креативных текстов на английском через Claude Opus
  3. Перевод части текстов на русский через Gemma 4 26B (примерно половина креативных примеров остаётся на английском в оригинале)
  4. Проход Gemma 4 26B для исправления ошибок перевода
  5. Ручная доработка и редактура текстов
  6. Составление инструкционного датасета (математика, физика, код, история, аналитика)
  7. Сбор датасета притч (LLiserginov/russian_parables) и генерация промптов для притч с помощью Gemma 4 26B
  8. Составление датасета кода (web + batch) и задач на внимание
  9. Фильтрация и дедупликация
  10. Конвертация в 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
Эпохи 4
Warmup steps 50
Max seq length 4096 токенов
Обёртка unsloth (4-bit QLoRA)
Маскирование обучаются только токены ответа (prompt замаскирован)

Слияние весов

После обучения LoRA-адаптер был слит с базовой моделью в 16-bit точность (метод merged_16bit через unsloth) для удобного использования без дополнительных зависимостей PEFT.

Usage

from transformers import AutoModelForCausalLM, AutoTokenizer

model_name = "LLiserginov/Luqwen4-4B"

tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
    model_name,
    torch_dtype="auto",
    device_map="auto",
    trust_remote_code=True,
)

messages = [
    {"role": "user", "content": "Напиши рассказ о одиноком фонаре в осеннем парке."},
]

text = tokenizer.apply_chat_template(
    messages,
    tokenize=False,
    add_generation_prompt=True,
)

inputs = tokenizer(text, return_tensors="pt").to(model.device)

outputs = model.generate(
    **inputs,
    max_new_tokens=1024,
    temperature=0.7,
    top_p=0.9,
    do_sample=True,
)

response = tokenizer.decode(outputs[0][inputs.input_ids.shape[1]:], skip_special_tokens=True)
print(response)

Вызов инструментов

from transformers import AutoModelForCausalLM, AutoTokenizer

model_name = "LLiserginov/Luqwen4-4B"

tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
    model_name,
    torch_dtype="auto",
    device_map="auto",
    trust_remote_code=True,
)

messages = [
    {"role": "user", "content": "Узнай текущую погоду в Москве."},
]

text = tokenizer.apply_chat_template(
    messages,
    tokenize=False,
    add_generation_prompt=True,
)

inputs = tokenizer(text, return_tensors="pt").to(model.device)

outputs = model.generate(
    **inputs,
    max_new_tokens=256,
    temperature=0.3,
    top_p=0.9,
    do_sample=True,
)

response = tokenizer.decode(outputs[0][inputs.input_ids.shape[1]:], skip_special_tokens=True)
print(response)

Генерация кода (web + batch)

from transformers import AutoModelForCausalLM, AutoTokenizer

model_name = "LLiserginov/Luqwen4-4B"

tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
    model_name,
    torch_dtype="auto",
    device_map="auto",
    trust_remote_code=True,
)

messages = [
    {"role": "user", "content": "Напиши HTML-страницу с простым калькулятором."},
]

text = tokenizer.apply_chat_template(
    messages,
    tokenize=False,
    add_generation_prompt=True,
)

inputs = tokenizer(text, return_tensors="pt").to(model.device)

outputs = model.generate(
    **inputs,
    max_new_tokens=2048,
    temperature=0.4,
    top_p=0.9,
    do_sample=True,
)

response = tokenizer.decode(outputs[0][inputs.input_ids.shape[1]:], skip_special_tokens=True)
print(response)

Использование с vLLM

from vllm import LLM, SamplingParams

llm = LLM(model="LLiserginov/Luqwen4-4B", trust_remote_code=True)

messages = [
    {"role": "user", "content": "Объясни разницу между supervised и unsupervised learning."},
]

outputs = llm.chat(messages, sampling_params=SamplingParams(temperature=0.7, max_tokens=1024))
print(outputs[0].outputs[0].text)

GGUF (llama.cpp)

GGUF-версию модели можно найти в файлах или сконвертировать самостоятельно:

git clone https://github.com/ggml-ai/llama.cpp
cd llama.cpp
python convert_hf_to_gguf.py /path/to/Luqwen4-4B --outfile Luqwen4-4B.Q4_K_M.gguf --outtype q4_K_M

Запуск через llama.cpp:

llama-cli -m Luqwen4-4B.Q4_K_M.gguf \
  --prompt "Напиши рассказ о одиноком фонаре в осеннем парке." \
  --temp 0.7 --top-p 0.9 \
  --repeat-penalty 1.0 --repeat-last-n 206

Limitations

  • Креативный датасет состоит из англо- и русскоязычных примеров; русскоязычная часть переведена машинным способом (Gemma 4 26B) — возможны отдельные артефакты и буквализмы
  • Инструкционный датасет ограничен по объёму — покрытие тем по математике, физике, истории и аналитике неполное
  • Код (web + batch) охватывает ограниченный набор сценариев — генерация сложного или специфичного кода может быть неточной
  • Модель не проходила RLHF/DPO-калибровку и может генерировать нежелательный или фактически неверный контент
  • Не предназначена для использования в медицинских, юридических или других критических областях

License

Модель распространяется под лицензией Apache 2.0.

Базовая модель: Qwen3.5-4B-Base — Apache 2.0.

Датасет притч: LLiserginov/russian_parables.

Downloads last month
1,912
GGUF
Model size
4B params
Architecture
qwen35
Hardware compatibility
Log In to add your hardware

4-bit

6-bit

8-bit

16-bit

Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for LLiserginov/Luqwen4-4B

Adapter
(52)
this model

Dataset used to train LLiserginov/Luqwen4-4B