emrekuruu/job-search-distill
Viewer • Updated • 24.7k • 50
How to use build-small-hackathon/job-searcher-qwen3-8B with PEFT:
Task type is invalid.
Two LoRA adapters distilled from DeepSeek V4 Pro onto
Qwen/Qwen3-8B. Both adapters preserve the teacher's
<think> reasoning traces.
| Subfolder | Task | Input → Output |
|---|---|---|
query_gen |
Query generation | resume → set of LinkedIn search queries |
fit_eval |
Fit evaluation | (resume, job listing) → 5 × 20-pt dimensions + reasoning |
from peft import PeftModel
from transformers import AutoModelForCausalLM, AutoTokenizer
base = "Qwen/Qwen3-8B"
repo = "emrekuruu/job-search-lora"
tokenizer = AutoTokenizer.from_pretrained(base)
model = AutoModelForCausalLM.from_pretrained(base, dtype="bfloat16", device_map="auto")
# Load one task adapter
model = PeftModel.from_pretrained(model, repo, subfolder="query_gen")
# Or swap to the other task on the same base
model.load_adapter(repo, subfolder="fit_eval", adapter_name="fit_eval")
model.set_adapter("fit_eval")
Both tasks expect a chat-formatted prompt; see the reference prompts in the source repo.
Qwen/Qwen3-8B, bf16, SDPA attention.q_proj, k_proj, v_proj, o_proj, gate_proj,
up_proj, down_proj.SFTConfig(assistant_only_loss=True).eval_val_loss (early stopping patience=2), evaluated each epoch.emrekuruu/job-search-distill —
the query_gen_pairings config for query_gen/, the job_evals config for fit_eval/.Training code: modal_apps/train.py.
total as an ordinal signal within a single candidate's shortlist,
not as cross-candidate ground truth.Apache-2.0, matching the Qwen3-8B base. Teacher labels used during training were generated via the DeepSeek API and are subject to DeepSeek's Open Platform Terms of Service.