Team Ai
Modelpublic

LLiserginov/Luqwen4-4B

sourceHugging Faceapache-2.0updated 20d agoView on Hugging Face
4likes2.2kdownloads
Model Card

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)
MTP1 слой

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

Training data

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

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

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

ЧастьДоля в итоге
База Luqwen3.580%
Притчи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. 1.Сбор диалогов с LLM (tool-calling, код, логика) — анонимизация, форматирование в ChatML
  2. 2.Написание креативных текстов на английском через Claude Opus
  3. 3.Перевод части текстов на русский через Gemma 4 26B (примерно половина креативных примеров остаётся на английском в оригинале)
  4. 4.Проход Gemma 4 26B для исправления ошибок перевода
  5. 5.Ручная доработка и редактура текстов
  6. 6.Составление инструкционного датасета (математика, физика, код, история, аналитика)
  7. 7.Сбор датасета притч (LLiserginov/russian_parables) и генерация промптов для притч с помощью Gemma 4 26B
  8. 8.Составление датасета кода (web + batch) и задач на внимание
  9. 9.Фильтрация и дедупликация
  10. 10.Конвертация в ChatML-формат

Training procedure

Параметры LoRA

ПараметрЗначение
rank (r)16
lora_alpha32
lora_dropout0
biasnone
Целевые модули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
PrecisionBF16 (mixed)
Batch size1 (8 gradient accumulation steps)
Learning rate2e-4
Эпохи4
Warmup steps50
Max seq length4096 токенов
Обёрткаunsloth (4-bit QLoRA)
Маскированиеобучаются только токены ответа (prompt замаскирован)

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

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

Usage

python
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)

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

python
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)

python
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

python
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-версию модели можно найти в файлах или сконвертировать самостоятельно:

bash
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:

bash
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.