Qwen3-0.6B LoRA для извлечения навыков из вакансий
LoRA адаптер для модели Qwen3-0.6B, обученный на задаче извлечения требований (навыков, опыта, образования) из текстов вакансий на русском языке.
Использование
Установка зависимостей
pip install transformers peft torch
Инференс
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel
# Загрузка базовой модели и адаптера
base_model = AutoModelForCausalLM.from_pretrained(
"Qwen/Qwen3-0.6B",
torch_dtype="auto",
device_map="auto"
)
model = PeftModel.from_pretrained(base_model, "koskokos/qwen3-0.6b-skills-lora")
tokenizer = AutoTokenizer.from_pretrained("koskokos/qwen3-0.6b-skills-lora")
# Формирование промпта
system_prompt = 'Ты — HR-ассистент. Извлеки из описания вакансии все требования к кандидату (навыки, образование, опыт работы, личные качества). Верни JSON: {"requirements": ["требование1", "требование2", ...]}'
vacancy_text = """
Требуется Python-разработчик.
Обязанности: разработка backend на FastAPI, работа с PostgreSQL.
Требования: опыт от 2 лет, знание Docker, Git, CI/CD.
"""
messages = [
{"role": "system", "content": system_prompt},
{"role": "user", "content": vacancy_text}
]
# Генерация
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=512,
temperature=0.1,
do_sample=True,
pad_token_id=tokenizer.eos_token_id
)
response = tokenizer.decode(outputs[0][inputs.input_ids.shape[1]:], skip_special_tokens=True)
print(response)
Ожидаемый вывод
{"requirements": ["Python", "FastAPI", "PostgreSQL", "Docker", "Git", "CI/CD", "опыт от 2 лет"]}
Формат данных
Вход (User)
Текст вакансии на русском языке (описание должности, обязанности, условия, требования к кандидату).
Выход (Assistant)
JSON объект с массивом извлечённых требований:
{"requirements": ["навык1", "навык2", "личное качество", "опыт работы", ...]}
System Prompt
Ты — HR-ассистент. Извлеки из описания вакансии все требования к кандидату (навыки, образование, опыт работы, личные качества). Верни JSON: {"requirements": ["требование1", "требование2", ...]}
Параметры обучения
| Параметр | Значение |
|---|---|
| Base Model | Qwen/Qwen3-0.6B |
| LoRA Rank (r) | 16 |
| LoRA Alpha | 32 |
| LoRA Dropout | 0.05 |
| Target Modules | q_proj, k_proj, v_proj, o_proj |
| Learning Rate | 3e-4 |
| Batch Size | 1 (gradient accumulation: 16) |
| Epochs | ~10 (early stopping) |
| Max Length | 2048 tokens |
| Precision | FP16 |
Метрики
| Метрика | Значение |
|---|---|
| Test Loss | 1.76 |
| Perplexity | 5.83 |
| Trainable Parameters | 4.6M (0.76% от базовой модели) |
Ограничения
- Модель обучена на русскоязычных вакансиях
- Оптимальная работа на текстах до 2048 токенов
- Выход всегда в формате JSON
Лицензия
Apache 2.0
Цитирование
@misc{qwen3-skills-lora,
title={Qwen3-0.6B LoRA для извлечения навыков из вакансий},
author={koskokos},
year={2025},
publisher={Hugging Face}
}
Framework Versions
- PEFT: 0.17.1
- Transformers: 4.x
- PyTorch: 2.x
- Downloads last month
- 88