YAML Metadata Warning:empty or missing yaml metadata in repo card
Check out the documentation for more information.
Math AI (i-Route)
μν κ΅κ³Ό λ¬Έμ μ λν μ νν νμ΄μ ν΄μ€μ μμ±νλ LoRA μ΄λν°μ
λλ€.
Meta-Llama-3.1-8B-bnb-4bitλ₯Ό QLoRAλ‘ νμΈνλνμ΅λλ€.
νμ΅ λ°μ΄ν°
- AI Hub μνκ΅κ³Όλ¬Έμ νμ΄λ°μ΄ν° (κ΅κ° κ³΅μΈ κ΅κ³Ό λ°μ΄ν°μ )
TL_ν΄λ β νμ΅ λ°μ΄ν° 12,640κ° /VL_ν΄λ β νκ° λ°μ΄ν° 1,755κ°- λ¬Έν(ν μ€νΈ) β user, μ λ΅(ν μ€νΈ) + ν΄μ€(ν μ€νΈ) β assistant νμμΌλ‘ κ°κ³΅
- μ±μ·¨ κΈ°μ€(2022/2015 κ΅μ‘κ³Όμ ) ν¬ν¨ μ
[μ±μ·¨ κΈ°μ€: ...]νκ·Έ μΆκ°
μ±λ₯
| μ§ν | μμΉ | λΉκ³ |
|---|---|---|
| Best Eval Loss | 0.7531 | step 1500 (epoch 2) κΈ°μ€ |
| νμ΅ μμ€ λ³ν | 0.84 β 0.58 | epoch 1 μ΄λ° β epoch 2 λ§λ―Έ |
| νκ° μμ€ λ³ν | 0.9338 β 0.7531 | μ κ΅¬κ° μ§μ κ°μ (κ³Όμ ν© μμ) |
νμ΅ μ€μ
| νλͺ© | κ° |
|---|---|
| λ°©μ | QLoRA (4-bit NF4) |
| LoRA rank | 16 |
| LoRA alpha | 32 |
| Epochs | 2 |
| Learning rate | 2e-4 |
| Optimizer | AdamW |
| Max length | 512 |
| Framework | transformers + PEFT (μμ PyTorch νμ΅ λ£¨ν) |
μ¬μ© λ°©λ²
μ΄ μ΄λν°λ i-Route AI μλ²μμ unsloth/Meta-Llama-3.1-8B-bnb-4bit λ² μ΄μ€ λͺ¨λΈ μμ PEFT μ΄λν°λ‘ λ‘λλ©λλ€.
κΈμ°κΈ°(writing), μΌλ°(general) μ΄λν°μ ν¨κ» λ¨μΌ GPUμμ λμ μλΉμ€λ©λλ€.
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig
BASE_MODEL_ID = "unsloth/Meta-Llama-3.1-8B-bnb-4bit"
MATH_ADAPTER = "i-route-ai/iroute-math-ai"
bnb_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_compute_dtype=torch.float16,
bnb_4bit_use_double_quant=True,
)
tokenizer = AutoTokenizer.from_pretrained(BASE_MODEL_ID)
tokenizer.pad_token = tokenizer.eos_token
model = AutoModelForCausalLM.from_pretrained(
BASE_MODEL_ID,
quantization_config=bnb_config,
device_map="auto",
)
model.load_adapter(MATH_ADAPTER, adapter_name="math")
model.set_adapter("math")
SYSTEM_PROMPT = "λΉμ μ μν μ λ¬Έ κ΅μ¬μ
λλ€. νμμ μν λ¬Έμ μ λν΄ μ νν νμ΄μ ν΄μ€μ μ 곡νμΈμ."
def build_prompt(question: str, achievement_standard: str = "") -> str:
user_content = f"[μ±μ·¨ κΈ°μ€: {achievement_standard}]\n{question}" if achievement_standard else question
return (
f"<|begin_of_text|><|start_header_id|>system<|end_header_id|>\n"
f"{SYSTEM_PROMPT}<|eot_id|>"
f"<|start_header_id|>user<|end_header_id|>\n"
f"{user_content}<|eot_id|>"
f"<|start_header_id|>assistant<|end_header_id|>\n"
)
question = "μ΄μ°¨λ°©μ μ xΒ² - 5x + 6 = 0μ λ κ·Όμ ꡬνμμ€."
prompt = build_prompt(question)
inputs = tokenizer(prompt, return_tensors="pt", truncation=True, max_length=512).to("cuda")
with torch.no_grad():
outputs = model.generate(
**inputs,
max_new_tokens=300,
temperature=0.3,
do_sample=True,
repetition_penalty=1.2,
pad_token_id=tokenizer.eos_token_id,
)
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
answer = response.split("<|start_header_id|>assistant<|end_header_id|>")[-1].strip()
print(answer)
ν둬ννΈ νμ
LLaMA 3.1 μ±ν ν νλ¦Ώ(system / user / assistant)μ μ¬μ©ν©λλ€.
μ λ ₯
[μ±μ·¨ κΈ°μ€: {κ΅μ‘κ³Όμ μ±μ·¨ κΈ°μ€ - μ ν}]
{μν λ¬Έμ ν
μ€νΈ}
μΆλ ₯
μ λ΅: {μ΅μ’
λ΅}
νμ΄: {λ¨κ³λ³ νμ΄ λ° ν΄μ€}
i-Route μλ² μ°λ
i-Route AI μλ²(/api/ai/report/subject-recommend)μμ RAG 컨ν
μ€νΈμ κ²°ν©νμ¬
νμ λ§μΆ€ν μν κ°λ
μ€λͺ
λ° νμ΄λ₯Ό μ 곡ν©λλ€.
POST /api/ai/report/subject-recommend?student_id=S001&subject=μν
{
"studentId": "S001",
"subject": "μν",
"targetConcept": "μ΄μ°¨λ°©μ μ",
"aiRecommendationReport": "μ΄μ°¨λ°©μ μμ νκΈ° μν΄μλ..."
}
νμ μ΄λν° λ€μ΄λ‘λ
huggingface-cli download i-route-ai/iroute-math-ai --local-dir ./models/iroute-math-ai
- Downloads last month
- 404