Instructions to use csj9630/qwen3-4b-medical-qlora with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- PEFT
How to use csj9630/qwen3-4b-medical-qlora with PEFT:
from peft import PeftModel from transformers import AutoModelForCausalLM base_model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen3-4B") model = PeftModel.from_pretrained(base_model, "csj9630/qwen3-4b-medical-qlora") - Notebooks
- Google Colab
- Kaggle
Qwen3-4B νκ΅μ΄ μλ£ QLoRA μ΄λν°
μ£Όμ: μ°κ΅¬Β·κ΅μ‘μ© μ€μ΅ λͺ¨λΈμ λλ€. μλ£κΈ°κΈ°λ μ§λ¨ μμ€ν μ΄ μλλ©°, μ€μ μ§λ¨Β·μ²λ°©Β·μκΈμν© νλ¨μ μ¬μ©νλ©΄ μ λ©λλ€. μΆλ ₯μ ν리거λ μνν μ μμΌλ―λ‘ λ°λμ μλ£ μ λ¬Έκ°κ° κ²ν ν΄μΌ ν©λλ€.
λͺ¨λΈ κ°μ
Qwen/Qwen3-4Bλ₯Ό νκ΅μ΄ μλ£ κ°κ΄μ λ° μ§μμλ΅ λ°μ΄ν°λ‘ μ§λ λ―ΈμΈμ‘°μ (SFT)ν 4-bit QLoRA μ΄λν°μ
λλ€. μ 체 κΈ°λ° λͺ¨λΈμ΄ ν¬ν¨λ μ μ₯μκ° μλλ―λ‘ μΆλ‘ μ μλ³Έ Qwen3-4Bλ₯Ό ν¨κ» λ΄λ €λ°μ΅λλ€.
| νλͺ© | λ΄μ© |
|---|---|
| κΈ°λ° λͺ¨λΈ | Qwen/Qwen3-4B |
| νμ΅ λ°©μ | 4-bit QLoRA / SFT |
| μ΄λν° νμ | PEFT LoRA |
| μ£Ό μΈμ΄ | νκ΅μ΄ |
| μ©λ | λ‘컬 νμΈνλΒ·λΉκ΅ μ€μ΅ |
| μ΄λν° ν¬κΈ° | μ½ 126 MiB |
νμ΅ λ°μ΄ν°
| λ°μ΄ν°μ | μ¬μ© λ΄μ© | νμ΅ μν | λΌμ΄μ μ€ |
|---|---|---|---|
sean0042/KorMedMCQA |
μμ¬Β·κ°νΈμ¬Β·μ½μ¬Β·μΉκ³Όμμ¬ νκ΅μ΄ μλ£ κ°κ΄μ | 3,401 | CC BY-NC 2.0 |
ChuGyouk/GenMedGPT-5k-ko |
νκ΅μ΄ μΌλ° μλ£ μ§μμλ΅ | 5,178 | MIT |
| ν©κ³ | seed 42λ‘ μμ΄ νμ΅ | 8,579 | λ°μ΄ν°λ³ μμ΄ |
GenMedGPT λ°μ΄ν° 5%μΈ 273κ° μνμ λ³λ κ²μ¦μ©μΌλ‘ λΆλ¦¬νμ΅λλ€. νμ΅ μ€ μλ νκ°λ μννμ§ μμμ΅λλ€. λ°μ΄ν°μλ μ€λ₯Β·νΈν₯Β·λΆμ νν μλ£ ννμ΄ ν¬ν¨λ μ μμ΅λλ€.
νλ ¨ νκ²½
| νλͺ© | μ€μ |
|---|---|
| μ΄μ체μ | Windows 11 |
| GPU | NVIDIA GeForce RTX 5070, 11.94 GB VRAM |
| Python | 3.12.0 |
| PyTorch / CUDA | 2.13.0+cu130 / CUDA 13.0 |
| μ λ°λ | BF16, 4-bit μμν |
| transformers | 5.15.1 |
| datasets | 5.0.1 |
| accelerate | 1.14.0 |
| peft | 0.20.0 |
| trl | 1.10.0 |
| bitsandbytes | 0.50.1 |
μ£Όμ νμ΄νΌνλΌλ―Έν°
| νλͺ© | κ° |
|---|---|
| Epoch | 1 |
| μ΅λ μνμ€ κΈΈμ΄ | 1,024 |
| μ₯μΉλΉ λ°°μΉ | 1 |
| Gradient accumulation | 8 |
| μ ν¨ λ°°μΉ ν¬κΈ° | 8 |
| Learning rate | 2e-4 |
| Scheduler / warmup | linear / 0 |
| Optimizer | adamw_torch_fused |
| LoRA rank / alpha / dropout | 16 / 32 / 0.05 |
| λμ λͺ¨λ | q, k, v, o, gate, up, down projection |
| Gradient checkpointing | μ¬μ© |
| Packing | μ¬μ©νμ§ μμ |
| 체ν¬ν¬μΈνΈ κ°κ²© | 100 step |
| Seed | 42 |
νμ΅ κ²°κ³Ό
Step 100 체ν¬ν¬μΈνΈμμ μ¬κ°νμ¬ μ΄ 1,073 stepκΉμ§ νμ΅νμ΅λλ€.
| μ§ν | κ²°κ³Ό |
|---|---|
| μ΅μ’ train loss | 0.8834 |
| νκ· token accuracy | 0.7775 |
| μ²λ¦¬ token μ | 1,467,679 |
| νμ΅ μ²λ¦¬λ | 0.136 step/s, 1.084 sample/s |
| κΈ°λ‘λ μ¬κ° κ΅¬κ° μκ° | μ½ 2μκ° 12λΆ |
μ΄ μμΉλ νλ ¨ λ°μ΄ν° κΈ°μ€ μ§νμ΄λ©° μΌλ°ν μ±λ₯μ΄λ μλ£μ μ νλλ₯Ό μλ―Ένμ§ μμ΅λλ€.
λ΄λΆ νκ° κ²°κ³Ό
μ체 μ μν νκ΅μ΄ 40λ¬Έν(κ°κ΄μ 10, λ¨μ μλ΄ 10, λͺ¨νΈν μλ΄ 10, μκΈμν© 10)μΌλ‘ Base, Step 100, Step 500, Finalμ λΉκ΅νμ΅λλ€.
- Final μ΄λν°μ κ°κ΄μ μ λ΅λ₯ μ 10/10μ΄μμ΅λλ€.
- Base λͺ¨λΈλ λμΌ κ°κ΄μμμ 10/10μ΄μ΄μ μ§μ ν₯μμ νλ³νκΈ°μλ λ¬Ένμ΄ λ무 μ¬μ μ΅λλ€.
- λ―ΈμΈμ‘°μ λͺ¨λΈμ κ°κ΄μμμ
λ²νΈ + λ΅ννμ κ°κ²°ν μΆλ ₯ νμμ λ μΌκ΄λκ² λ³΄μμ΅λλ€. - μλ΄Β·μκΈ λ¬Ένμμλ κ³Όλν νμ μ§λ¨, κ·Όκ±°κ° λΆμ‘±ν μ½λ¬Ό μ μ, λΆμμ°μ€λ¬μ΄ μν νν, λ°λ³΅, μκΈ μλ΄ λΆμΌμΉκ° κ΄μ°°λμ΅λλ€.
λ°λΌμ μ΄ κ²°κ³Όλ νμ€ λ²€μΉλ§ν¬ μ μκ° μλλ©° μμ μμ μ±μ΄λ μ€μ¬μ© κ°λ₯μ±μ μ μ¦νμ§ μμ΅λλ€.
μ¬μ© μμ
λ¨Όμ CUDA νκ²½μ λ§λ PyTorchμ λ€μ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ€μΉν©λλ€.
pip install transformers peft accelerate bitsandbytes
import torch
from peft import PeftConfig, PeftModel
from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig
adapter_id = "YOUR_ACCOUNT/YOUR_QWEN_ADAPTER_REPO"
peft_config = PeftConfig.from_pretrained(adapter_id)
tokenizer = AutoTokenizer.from_pretrained(adapter_id, use_fast=True)
quantization_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_compute_dtype=torch.bfloat16,
bnb_4bit_use_double_quant=True,
)
base_model = AutoModelForCausalLM.from_pretrained(
peft_config.base_model_name_or_path,
quantization_config=quantization_config,
device_map="auto",
dtype=torch.bfloat16,
)
model = PeftModel.from_pretrained(base_model, adapter_id)
messages = [{"role": "user", "content": "λΉνλ―Ό B12 κ²°νκ³Ό κ΄λ ¨λ λΉνμ 무μμΈκ°μ?"}]
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True,
enable_thinking=False,
)
inputs = tokenizer(text, return_tensors="pt").to(model.device)
with torch.inference_mode():
output = model.generate(**inputs, max_new_tokens=256, do_sample=False)
answer_tokens = output[0, inputs["input_ids"].shape[1]:]
print(tokenizer.decode(answer_tokens, skip_special_tokens=True))
adapter_idλ₯Ό μ€μ Hugging Face μ΄λν° μ μ₯μ IDλ‘ λ³κ²½ν΄μΌ ν©λλ€.
νκ³ λ° κΆμ₯νμ§ μλ μ¬μ©
- μλ£ μ§λ¨, μ²λ°©, λ³΅μ½ κ²°μ , μκΈμν© λΆλ₯
- νμμκ² κ²ν μμ΄ μ§μ λ΅λ³νλ μλΉμ€
- μλ£ μ λ¬Έκ°λ₯Ό λ체νλ μλ μμ¬κ²°μ
- κ°μΈμ 보λ λ―Όκ°ν μλ£μ 보 μ λ ₯
- νμ΅ λ²μ λ°μ μ΅μ μν μ§μμ΄ νμν μ 무
μμ νκ°, νκ° νκ°, νΈν₯ νκ°, νμ€ μλ£ λ²€μΉλ§ν¬, μ λ¬Έκ° κ²μ¦μ μΆκ°νκΈ° μ μλ μ°κ΅¬ μ€μ΅ μΈ μ©λλ‘ μ¬μ©νμ§ λ§μμμ€.
λΌμ΄μ μ€μ μΆμ²
- κΈ°λ° λͺ¨λΈ:
Qwen/Qwen3-4Bβ Apache 2.0 - KorMedMCQA β CC BY-NC 2.0
- GenMedGPT-5k-ko β MIT
μ΄λν° μ¬μ©μλ κΈ°λ° λͺ¨λΈκ³Ό κ° νμ΅ λ°μ΄ν°μ 쑰건μ λͺ¨λ νμΈν΄μΌ ν©λλ€. νΉν KorMedMCQAμ λΉμ리 쑰건 λλ¬Έμ λ³λ λ²λ₯ κ²ν μμ΄ μμ μ μΌλ‘ μ¬μ©νλ κ²μ κΆμ₯νμ§ μμ΅λλ€.
νκ²½ μν₯
λ¨μΌ RTX 5070μμ μ½ 2μκ° κ·λͺ¨λ‘ μ€νν κ°μΈ μ€μ΅μ λλ€. μ λ ₯ μλΉλκ³Ό νμ λ°°μΆλμ λ³λλ‘ μΈ‘μ νμ§ μμμ΅λλ€.
- Downloads last month
- 35