Instructions to use SEOKDONG/Qwen3.6-27B-QLoRA-Adaper with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- PEFT
How to use SEOKDONG/Qwen3.6-27B-QLoRA-Adaper with PEFT:
from peft import PeftModel from transformers import AutoModelForCausalLM base_model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen3.6-27B") model = PeftModel.from_pretrained(base_model, "SEOKDONG/Qwen3.6-27B-QLoRA-Adaper") - Notebooks
- Google Colab
- Kaggle
- Qwen3.6-27B Korean Enterprise QLoRA Adapter
- π λͺ¨λΈ κ°μ (TL;DR)
- π― λͺ¨λΈ κ°λ° λ°°κ²½
- π νμ΅ λ°μ΄ν°
- π νμ΅ λ°©λ² (QLoRA + LLaMA-Factory)
- π νκ° (Evaluation)
- π μ¬μ©λ² β vLLM Multi-LoRA Serving
- π§© μ "λ¨Έμ§ μμ΄ λΆλ¦¬ λ°°ν¬" μΈκ°
- β οΈ νκ³ λ° μ£Όμμ¬ν (Limitations)
- π λΌμ΄μ μ€ & μΈμ©
- π§βπ» μμ±μ λ
ΈνΈ (Engineering Highlights)
- π λͺ¨λΈ κ°μ (TL;DR)
Qwen3.6-27B Korean Enterprise QLoRA Adapter
Qwen3.6-27B λ² μ΄μ€ λͺ¨λΈ μμ νκ΅ μ¬νΒ·λ¬Έν κ·λ²κ³Ό νκ΅ κΈ°μ λ¬ΈνΒ·μ 무 λλ©μΈμ νΉννμ¬ νμ΅ν QLoRA(NF4 4-bit) μ΄λν°μ λλ€. λ² μ΄μ€ λͺ¨λΈκ³Ό μ΄λν°λ₯Ό λ¨Έμ§νμ§ μκ³ λΆλ¦¬ λ°°ν¬νμ¬, vLLMμ λ©ν°-LoRA μλΉ κΈ°λ₯μΌλ‘ λ¨μΌ λ² μ΄μ€ λͺ¨λΈμ μ¬λ¬ λλ©μΈ μ΄λν°λ₯Ό λμμ μ΄μν μ μλλ‘ μ€κ³λμμ΅λλ€.
π λͺ¨λΈ κ°μ (TL;DR)
| νλͺ© | λ΄μ© |
|---|---|
| Base Model | Qwen/Qwen3.6-27B (μλΉ μ FP8 λ³ν μ¬μ© κ°λ₯) |
| Adapter Type | LoRA (PEFT) β λΆλ¦¬ λ°°ν¬(Non-merged) |
| Quantization (Train) | QLoRA, NF4 4-bit + Double Quantization (bitsandbytes) |
| LoRA Config | rank=32, alpha=64, dropout=0.05, target=all-linear |
| Train Framework | LLaMA-Factory |
| Train Data | νκ΅ μ¬νκ·λ²Β·κ°μΉκ΄Β·λ¬Έν + νκ΅ κΈ°μ λ¬ΈνΒ·κ·λ²Β·μ 무 μ½ 360,000건 |
| Train Precision | BF16 (μ΄λν° κ°μ€μΉ) |
| Serving | vLLM Multi-LoRA (λ² μ΄μ€ FP8 + LoRA BF16 λμ κ²°ν©) |
| Eval | μ체 νκ°μ 100λ¬Έν, GPT-as-Judge, λλ©μΈλ³ λ² μ΄μ€ λλΉ +10 ~ +15%p |
π― λͺ¨λΈ κ°λ° λ°°κ²½
ν΄μΈμμ 곡κ°λ μ€νμμ€ LLMμ νκ΅μ΄ μΌλ° λ₯λ ₯μ μ°μνλ, μλ μμμμ νκ΅ κΈ°μ νκ²½μ μ§μ ν¬μ νκΈ°μλ νκ³κ° μμμ΅λλ€.
- νκ΅ μ¬ν κ·λ² / κ°μΉκ΄ / μνλ¬Έν μ λν λ―ΈμΈν λ§₯λ½ μ΄ν΄
- νκ΅ κΈ°μ λ¬Έν (μκ³, λ³΄κ³ μ²΄κ³, μμ , νμ λ§€λ λ±) μ κ΄ν λ°μ
- νκ΅μ λ³΄κ³ μ / νμμ / λ©μΌ / νμλ‘ λ± μ€λ¬΄ λ¬Έμ μμ± ν€μ€λ§€λ
- AI Agent μν¬νλ‘μ° μμ νκ΅μ μ 무 λ§₯λ½μ κ³ λ €ν λꡬ νΈμΆ/νλ¨
λ³Έ μ΄λν°λ μ΄ κ°κ·Ήμ λ©μ°κΈ° μν΄, λ² μ΄μ€ λͺ¨λΈμ μΌλ° λ₯λ ₯μ μ μ§ν μ± νκ΅ κΈ°μ λλ©μΈ νΉν μ§μ·문체·νλ¨λ ₯λ§μ LoRAλ‘ μ£Όμ νλ κ²μ λͺ©νλ‘ νμ΅λμμ΅λλ€.
π νμ΅ λ°μ΄ν°
| μΉ΄ν κ³ λ¦¬ | λΉμ€(κ°λ΅) | λ΄μ© |
|---|---|---|
| νκ΅ μ¬νκ·λ²Β·κ°μΉκ΄ | ~30% | μμ, νΈμΉ, μΈλ κ° μν΅, 곡곡μ§μ, νκ΅μ μμ¬κ²°μ λ§₯λ½ |
| νκ΅ λ¬ΈνΒ·μμ¬Β·μ λ | ~20% | λͺ μ , κ΄μ΅, νμ Β·λ²λ₯ μ λ, κ΅μ‘Β·μλ£ μμ€ν λ± |
| νκ΅ κΈ°μ λ¬ΈνΒ·κ·λ² | ~25% | λ³΄κ³ μ²΄κ³, μ§κΈ/μ§μ± , νμΒ·μμ , μ»΄νλΌμ΄μΈμ€ κΈ°λ³Έ |
| κΈ°μ μ 무 μ€λ¬΄ | ~20% | νμμ, κΈ°μλ¬Έ, νμλ‘, λ³΄κ³ λ©μΌ, μμ Β·κΈ°ν μ°μΆλ¬Ό |
| AI Agent μν μλλ¦¬μ€ | ~5% | νκ΅ μ 무 λ§₯λ½μ κ°μ§ λ©ν°-μ€ν λꡬ νΈμΆ / νλ¨ |
- μ΄ κ·λͺ¨: μ½ 360,000 instances (instruction-response λλ multi-turn)
- νμ: LLaMA-Factory
qwen3_6ν νλ¦Ώμ λ§μΆ SFT ν¬λ§· - νμ§ κ΄λ¦¬: μ€λ³΅ μ κ±°, PII λ§μ€νΉ, κΈΈμ΄ λΆν¬ μ κ·ν, νκ°μ κ³Ό λμ μ°¨λ¨(μ€λ³΅ κ²μΆ) μν
β οΈ λ°μ΄ν°λ λΌμ΄μ μ€ λ° μ¬λ΄ 보μ μ μ± μ λ°λΌ μλ³Έμ 곡κ°νμ§ μμ΅λλ€.
π νμ΅ λ°©λ² (QLoRA + LLaMA-Factory)
VRAM ν¨μ¨κ³Ό μμ μ±μ λμμ μ‘κΈ° μν΄ QLoRA(NF4 + Double Quant) μμ BF16 LoRA μ΄λν°λ₯Ό νμ΅νμ΅λλ€.
ν΅μ¬ νμ΄νΌνλΌλ―Έν°
### model
model_name_or_path: Qwen/Qwen3.6-27B
trust_remote_code: true
### method
stage: sft
finetuning_type: lora
lora_target: all # λͺ¨λ linearμ LoRA β ννλ ₯ / μμ μ± κ· ν
lora_rank: 32
lora_alpha: 64 # alpha = 2 Γ rank (μ€μΌμΌ 1/2)
lora_dropout: 0.05 # μ½ν μ κ·ν
### quantization (QLoRA)
quantization_bit: 4
quantization_method: bnb
double_quantization: true
quantization_type: nf4
### dataset
template: qwen3_6
cutoff_len: 2048
packing: false # λ©ν°ν΄ μμ€ μ곑 λ°©μ§
### train
per_device_train_batch_size: 1
gradient_accumulation_steps: 16 # effective batch = 1 Γ 16 Γ 2 GPU = 32
learning_rate: 5.0e-5
num_train_epochs: 2.0
lr_scheduler_type: cosine
warmup_ratio: 0.05
bf16: true # fp16 κΈμ§ (νμ΅ μ§λ λ°©μ§)
max_grad_norm: 1.0 # κ·ΈλλμΈνΈ ν΄λ¦¬ν
weight_decay: 0.01
optim: adamw_torch
adam_beta2: 0.95 # μμ€ μ€νμ΄ν¬ μν
gradient_checkpointing: true # VRAM μ κ°
### eval
eval_strategy: steps
eval_steps: 500
### acceleration
flash_attn: sdpa
enable_liger_kernel: true # VRAM μ κ° + throughput ν₯μ
νμ΅ μ€κ³ μλ (Why these choices)
lora_target: allβ Q/K/V/O λΏ μλλΌ MLP κ³μ΄κΉμ§ ν¬ν¨, λλ©μΈ 문체·μ§μ ν‘μμ μ 리. μΆκ° VRAM λΉμ©μ NF4 + checkpointingμΌλ‘ ν‘μ.rank=32, alpha=64β Ξ± = 2Β·r κ·μΉμΌλ‘ LoRA μ€μΌμΌμ 0.5λ‘ λμ΄ λ² μ΄μ€ μΌλ° λ₯λ ₯ νΌμμ μ΅μν. νκ΅ λλ©μΈ μ§μ μ£Όμ μλ μΆ©λΆν capacity.bf16κ°μ β FP16μ mantissa λΆμ‘±μΌλ‘ μΈν μμ€ μ€νμ΄ν¬ ννΌ. RTX 5090 / H100κΈμμ μμ μ .adam_beta2=0.95β κΈ°λ³Έ 0.999 λλΉ λ¨κΈ° λ³λμ λΉ λ₯΄κ² λ°μν΄ νκ΅μ΄ λλ©μΈ μμ€ μ§λ μν.packing: falseβ λ©ν°ν΄ νκ΅μ΄ λνμ ν ν° κ²½κ³ μ곑 λ°©μ§. μμ€ κ³μ° μ νλ μ°μ .gradient_accumulation=16β λ¨μΌ GPU λ©λͺ¨λ¦¬ νκ³ λ΄μμ ν° effective batchλ‘ λλ©μΈ λΆν¬ μμ ν.- NEFTune λ―Έμ μ© β λ Έμ΄μ¦κ° νκ΅μ μ ν λ¬Έμ(λ³΄κ³ μ/νμμ) ν€μ ν릴 μ μμ΄ λ³΄μμ μΌλ‘ μ μΈ.
νμ΅ νκ²½
- GPU: NVIDIA RTX 5090 Γ 2 (BF16 + NF4 QLoRA)
- Framework: LLaMA-Factory, PEFT, bitsandbytes, Liger-Kernel
- Mixed Precision: BF16 (μ΄λν°) / NF4 (λ² μ΄μ€ κ°μ€μΉ)
π νκ° (Evaluation)
μ체 ꡬμΆν νκ΅ λλ©μΈ νκ°μ (100λ¬Έν) μΌλ‘ λ² μ΄μ€ λͺ¨λΈκ³Ό λ³Έ μ΄λν° μ μ© λͺ¨λΈμ λΉκ΅νμ΅λλ€.
νκ°μ ꡬμ±
| λλ©μΈ | λ¬Έν μ(κ°λ΅) | νκ° ν¬μΈνΈ |
|---|---|---|
| νκ΅ λ¬Έν Β· μμ¬ Β· μ λ | ~35 | μ¬μ€ μ νμ±, λ§₯λ½ μ΄ν΄, νκ΅μ λμμ€ |
| νκ΅ κΈ°μ λ¬Έν Β· μ 무 Β· λ³΄κ³ μ μμ± | ~40 | ν€μ€λ§€λ, μμ μ ν©μ±, μ€λ¬΄ μ μ©μ± |
| AI Agent μνλ₯λ ₯ | ~25 | λ©ν°μ€ν μΆλ‘ , λꡬ νΈμΆ μ μ μ±, νκ΅ μ 무 λ§₯λ½ |
νκ° λ°©μ
- GPT-as-Judge (ChatGPT κΈ°λ°): λμΌ ν둬ννΈμ λν λ λͺ¨λΈ μλ΅μ λΈλΌμΈλλ‘ μ±μ (μ νμ± / νκ΅μ μ ν©μ± / μ€λ¬΄ νμ©μ± κ°μ€ νκ· )
- λλ₯ /μ°μ΄μ νμ΄μμ΄μ¦ + 5μ μ²λ μμͺ½μΌλ‘ κ΅μ°¨ κ²μ¦
κ²°κ³Ό μμ½
| λλ©μΈ | Base (Qwen3.6-27B) | + QLoRA Adapter (λ³Έ λͺ¨λΈ) | Ξ |
|---|---|---|---|
| νκ΅ λ¬ΈνΒ·μμ¬Β·μ λ | κΈ°μ€ | +10 ~ +12%p | πΌ |
| κΈ°μ λ¬ΈνΒ·μ λ¬΄Β·λ³΄κ³ μ | κΈ°μ€ | +13 ~ +15%p | πΌπΌ |
| AI Agent μν | κΈ°μ€ | +10 ~ +12%p | πΌ |
νΉν κΈ°μ λ³΄κ³ μ/νμμ ν€μ€λ§€λμ νκ΅μ μμ¬κ²°μ λ§₯λ½ λ°μ νλͺ©μμ λ² μ΄μ€ λλΉ κ°μ₯ ν° κ°μ μ 보μμ΅λλ€.
β οΈ νκ°μ μ 100λ¬Έν κ·λͺ¨λ‘ μ λμΉλ³΄λ€λ μλμ κ°μ νμ μ§νλ‘ ν΄μνμκΈ° λ°λλλ€. λκ·λͺ¨ νκ΅μ΄ λ²€μΉ(KoBEST, Ko-MT-Bench λ±) κ²°κ³Όλ μΆν μ λ°μ΄νΈ μμ μ λλ€.
π μ¬μ©λ² β vLLM Multi-LoRA Serving
λ³Έ λͺ¨λΈμ μ΄λν°λ§ λ°°ν¬λ©λλ€. λ² μ΄μ€ λͺ¨λΈμ λ³λλ‘ λ‘λνκ³ , vLLMμ --enable-lora μ΅μ
μΌλ‘ μ΄λν°λ₯Ό κ²°ν©ν΄ μλΉν©λλ€.
1) μ΄λν° λ€μ΄λ‘λ
huggingface-cli download <YOUR_HF_ID>/<THIS_REPO_NAME> \
--local-dir ./adapters/qwen3-ft
λλ Python:
from huggingface_hub import snapshot_download
adapter_path = snapshot_download(
repo_id="<YOUR_HF_ID>/<THIS_REPO_NAME>",
local_dir="./adapters/qwen3-ft",
)
print(adapter_path)
2) vLLM μλ² κΈ°λ (FP8 λ² μ΄μ€ + BF16 LoRA)
#!/bin/bash
# Qwen3.6-27B-FP8 + Korean Enterprise QLoRA Adapter
ADAPTER_PATH="./adapters/qwen3-ft"
MODEL_NAME="Qwen/Qwen3.6-27B-FP8" # FP8 λ² μ΄μ€: ~27GB, BF16 λλΉ μ λ°
LORA_MODULE_NAME="qwen3-ft" # API νΈμΆ μ model= μ μ¬μ©ν μ΄λ¦
PORT=8000
GPU_COUNT=2 # RTX 5090 Γ 2 (λ¨μΌ GPUλ κ°λ₯)
source "$(conda info --base)/etc/profile.d/conda.sh"
conda activate vllm
vllm serve "${MODEL_NAME}" \
--enable-lora \
--lora-modules "${LORA_MODULE_NAME}=${ADAPTER_PATH}" \
--max-lora-rank 32 \
--dtype auto \
--kv-cache-dtype auto \
--tensor-parallel-size ${GPU_COUNT} \
--gpu-memory-utilization 0.90 \
--max-model-len 8192 \
--max-num-seqs 32 \
--enable-auto-tool-choice \
--tool-call-parser qwen3_xml \
--host 0.0.0.0 \
--port ${PORT} \
--trust-remote-code
λ¨μΌ GPU(μ: RTX 5090 32GB) μμλ FP8 27B(~27GB)λ‘ μΆ©λΆν ꡬλ κ°λ₯ν©λλ€.
--tensor-parallel-size 1,--max-model-len 4096,--max-num-seqs 16κΆμ₯.
3) Python ν΄λΌμ΄μΈνΈ β OpenAI νΈν API
vLLMμ΄ OpenAI νΈν μλν¬μΈνΈλ₯Ό μ 곡νλ―λ‘ openai SDKλ₯Ό κ·Έλλ‘ μ¬μ©ν μ μμ΅λλ€. νΈμΆ μ model νλΌλ―Έν°μ μ΄λν° μ΄λ¦(qwen3-ft)μ λκΈ°λ©΄ μ΄λν°κ° μ μ©λκ³ , λ² μ΄μ€ λͺ¨λΈλͺ
μ λκΈ°λ©΄ λ² μ΄μ€λ§ μΆλ‘ λ©λλ€.
# pip install openai
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:8000/v1",
api_key="EMPTY", # vLLMμ ν€ κ²μ¦μ νμ§ μμ
)
SYSTEM_PROMPT = (
"λΉμ μ νκ΅ κΈ°μ
νκ²½μ μ ν΅ν μ
무 μ΄μμ€ν΄νΈμ
λλ€. "
"νκ΅μ λ³΄κ³ μ²΄κ³, μ§κΈ κ΄ν, μ μ€ν λΉμ¦λμ€ ν€μ μ μ§νμΈμ."
)
resp = client.chat.completions.create(
model="qwen3-ft", # β μ΄λν° μ μ©. λ² μ΄μ€λ§ μ°λ €λ©΄ "Qwen/Qwen3.6-27B-FP8"
messages=[
{"role": "system", "content": SYSTEM_PROMPT},
{"role": "user", "content":
"μ κ· SaaS λμ
νμμλ₯Ό μμ±ν΄ μ£ΌμΈμ. "
"λμ
λ°°κ²½, κΈ°λν¨κ³Ό, μμ°(μ° 1.2μ΅), 리μ€ν¬, κ²°μ¬μ ν¬ν¨."},
],
temperature=0.3,
top_p=0.9,
max_tokens=1500,
)
print(resp.choices[0].message.content)
4) λ² μ΄μ€ vs μ΄λν° A/B λΉκ΅ (λμΌ μλ², λ λͺ¨λΈλͺ )
from openai import OpenAI
client = OpenAI(base_url="http://localhost:8000/v1", api_key="EMPTY")
prompt = "νμ₯μκ² μΌμ μ§μ°μ λ³΄κ³ νλ μ μ€ν λ©μΌμ μμ±ν΄μ€. μ¬μ λ μΈμ£Όμ¬ μ°μΆλ¬Ό μ§μ°."
for model_name in ["Qwen/Qwen3.6-27B-FP8", "qwen3-ft"]:
out = client.chat.completions.create(
model=model_name,
messages=[{"role": "user", "content": prompt}],
temperature=0.2, max_tokens=600,
)
print(f"\n===== {model_name} =====")
print(out.choices[0].message.content)
5) (μ΅μ ) PEFTλ‘ λ‘컬 μΆλ‘ β λ¨Έμ§ μμ΄ μ΄λν° λ‘λ
vLLM μμ΄ λ‘컬μμ κ°λ¨ν νμΈνκ³ μΆμ λ:
# pip install transformers peft accelerate bitsandbytes
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig
from peft import PeftModel
BASE = "Qwen/Qwen3.6-27B"
ADAPTER = "<YOUR_HF_ID>/<THIS_REPO_NAME>"
bnb = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_use_double_quant=True,
bnb_4bit_compute_dtype=torch.bfloat16,
)
tok = AutoTokenizer.from_pretrained(BASE, trust_remote_code=True)
base = AutoModelForCausalLM.from_pretrained(
BASE, quantization_config=bnb, device_map="auto", trust_remote_code=True,
)
model = PeftModel.from_pretrained(base, ADAPTER) # μ΄λν° κ²°ν© (λ¨Έμ§ X)
model.eval()
msgs = [
{"role": "system", "content": "λΉμ μ νκ΅ κΈ°μ
νκ²½μ μ ν΅ν μ΄μμ€ν΄νΈμ
λλ€."},
{"role": "user", "content": "μ£Όκ° μ
λ¬΄λ³΄κ³ μμμ νκ΅ λκΈ°μ
μ€νμΌλ‘ λ§λ€μ΄μ€."},
]
inputs = tok.apply_chat_template(msgs, add_generation_prompt=True, return_tensors="pt").to(model.device)
out = model.generate(inputs, max_new_tokens=800, do_sample=True, temperature=0.3, top_p=0.9)
print(tok.decode(out[0][inputs.shape[1]:], skip_special_tokens=True))
π§© μ "λ¨Έμ§ μμ΄ λΆλ¦¬ λ°°ν¬" μΈκ°
λ³Έ λͺ¨λΈμ μλμ μΌλ‘ λ² μ΄μ€ β μ΄λν° λΆλ¦¬ λ°°ν¬ μ λ΅μ ννμ΅λλ€.
- λ² μ΄μ€ λͺ¨λΈ λ¨μΌ μ μ¬ + λ€μ€ λλ©μΈ μ΄λν° β vLLM
--enable-loraλ‘ λμΌ λ² μ΄μ€ μμ μ¬λ¬ μ΄λν°(μ: κΈ°μ λ¬Ένμ© / λ²λ¬΄μ© / CSμ©)λ₯Ό λμμ ν«μ€μ. - μ μ₯κ³΅κ° / λ°°ν¬ λΉμ© μ΅μν β 27B νλͺ¨λΈ μ¬λ°°ν¬ λλΉ μ΄λν°(μλ°± MB)λ§ κ°±μ .
- λ² μ΄μ€ μ κ·Έλ μ΄λ νΈνμ± β λμΌ μν€ν μ² λ² μ΄μ€ κ°±μ μ μ΄λν°λ§ μ¬νμ΅/μ¬νκ°.
- FP8 λ² μ΄μ€ + BF16 LoRA κ²°ν© β VRAMμ FP8λ‘ μ μ½, νμ΅λ ννλ ₯μ BF16 LoRAλ‘ λ³΄μ‘΄.
β οΈ νκ³ λ° μ£Όμμ¬ν (Limitations)
- λ³Έ μ΄λν°λ νκ΅ μ¬νΒ·κΈ°μ λλ©μΈ κ°νκ° λͺ©μ μ΄λ―λ‘, λΉνκ΅Β·λΉμ 무 λλ©μΈμμλ λ² μ΄μ€ λλΉ ν° μ°¨μ΄κ° μμ μ μμ΅λλ€.
- λ²λ₯ Β· μλ£ Β· νκ³ λ± κ³ μν μμμ μ°μΆλ¬Όμ λ°λμ μ λ¬Έκ° κ²μκ° νμν©λλ€.
- νκ°μ μ΄ 100λ¬ΈνμΌλ‘ μκ·λͺ¨μ΄λ―λ‘, μ λ μ±λ₯ μμΉλ³΄λ€λ μλ κ°μ νμΌλ‘ ν΄μνμκΈ° λ°λλλ€.
- νμ΅ λ°μ΄ν°μ PII λ§μ€νΉμ μ μ©νμΌλ, λ² μ΄μ€ λͺ¨λΈ κ³ μ μ hallucination κ°λ₯μ±μ μ¬μ ν μ‘΄μ¬ν©λλ€.
- μ΄λν°λ
Qwen3.6-27Bκ³μ΄ λ² μ΄μ€μμλ§ μ μ λμν©λλ€.
π λΌμ΄μ μ€ & μΈμ©
- License: Apache-2.0 (μ΄λν° κ°μ€μΉ κΈ°μ€). λ² μ΄μ€ λͺ¨λΈ λΌμ΄μ μ€(Qwen License)λ λ³λ μ€μ νμ.
- λ³Έ μ΄λν°λ₯Ό μ¬μ©ν μ°μΆλ¬Όμ λ² μ΄μ€ λͺ¨λΈ λΌμ΄μ μ€λ₯Ό ν¨κ» λ°λ¦ λλ€.
Citation
@misc{qwen3_27b_korean_enterprise_qlora,
title = {Qwen3.6-27B Korean Enterprise QLoRA Adapter},
author = {<YOUR NAME>},
year = {2026},
howpublished = {\url{https://huggingface.co/<YOUR_HF_ID>/<THIS_REPO_NAME>}},
note = {QLoRA NF4 4-bit fine-tuning on ~360K Korean social/enterprise instances, served via vLLM Multi-LoRA}
}
Acknowledgements
- Qwen Team β Qwen3.6-27B λ² μ΄μ€ 곡κ°
- LLaMA-Factory β νμ΅ νμ΄νλΌμΈ
- vLLM β Multi-LoRA μλΉ
- bitsandbytes β NF4 QLoRA
- PEFT β LoRA ꡬν
π§βπ» μμ±μ λ ΈνΈ (Engineering Highlights)
μ΄ μ μ₯μλ λ€μ μλμ μ€μ μ°μΆλ¬Όλ‘ μ¦λͺ νκΈ° μν΄ κ³΅κ°ν©λλ€.
- λκ·λͺ¨ νκ΅μ΄ λ°μ΄ν° νλ μ΄μ β 36λ§ κ±΄ κ·λͺ¨μ νκ΅ μ¬νΒ·κΈ°μ λλ©μΈ SFT λ°μ΄ν° μ€κ³ / μ μ / νμ§ κ΄λ¦¬ / νκ°μ λμ μ°¨λ¨
- QLoRA μμν νμ΅ μλ ¨λ β NF4 + Double Quant + BF16 LoRA,
lora_target: all, Ξ± = 2Β·r,adam_beta2=0.95λ± μμ μ μλ ΄μ μν μλλ μ ν - μΆλ‘ μ΅μ ν / μ΄μ μ€κ³ β vLLM Multi-LoRA, FP8 λ² μ΄μ€ + BF16 μ΄λν° κ²°ν©, tensor parallel, KV cache dtype, auto tool-choice ꡬμ±
- νκ° μ€κ³ β μ체 λλ©μΈ νκ°μ + GPT-as-Judge, λ² μ΄μ€ λλΉ λλ©μΈλ³ +10~15%p μλ κ°μ μ μ¦
- λ°°ν¬ μ λ΅ β μ΄λν° λΆλ¦¬ λ°°ν¬λ‘ λ©ν° λλ©μΈ ν«μ€μ / μ΄μ λΉμ© μ΅μν / λ² μ΄μ€ μ κ·Έλ μ΄λ νΈνμ± ν보
νκ΅ κΈ°μ νκ²½μ μ¦μ ν¬μ κ°λ₯ν λλ©μΈ-νΉν LLMμ, λ°μ΄ν° β νμ΅ β μμν β νκ° β μλΉμ μ 체 νμ΄νλΌμΈμΌλ‘ μΌκ΄λκ² κ΅¬μΆν μ¬λ‘μ λλ€.
- Downloads last month
- 22
Model tree for SEOKDONG/Qwen3.6-27B-QLoRA-Adaper
Base model
Qwen/Qwen3.6-27B