metadata
language: ko
license: apache-2.0
base_model: unsloth/Llama-3.2-3B-Instruct
tags:
- financial
- credit-rating
- korean
- llama
- unsloth
- fine-tuned
model_name: FinCreditLlama-3.2-3B
pipeline_tag: text-generation
FinCreditLlama-3.2-3B
๋ชจ๋ธ ๊ฐ์
FinCreditLlama-3.2-3B๋ ๊ธ์ต ์ ์ฉ ํ๊ฐ๋ฅผ ์ํด ํน๋ณํ ์ค๊ณ๋ ํ๊ตญ์ด ์ธ์ด ๋ชจ๋ธ์ ๋๋ค.
๋ฒ ์ด์ค ๋ชจ๋ธ: unsloth/Llama-3.2-3B-Instruct ๋ฐ์ดํฐ์ : himedia/financial_dummy_data_v4 ํ์ต ๋ฐฉ๋ฒ: LoRA (Low-Rank Adaptation) - ๋ณํฉ๋ ์ ์ฒด ๋ชจ๋ธ ํ์ต ์ผ์: 20250702_181705
๐ ํ์ต ๊ฒฐ๊ณผ
- Final Training Loss: 0.8515
- Final Validation Loss: 0.7593
- Best Validation Loss: 0.7593 (step 10)
- Overall Improvement: 62.7%
- Training Time: 0.64 minutes
ํ์ดํผํ๋ผ๋ฏธํฐ
- Learning Rate: 0.0002
- Max Steps: 10
- Batch Size: 2
- Gradient Accumulation: 8
- LoRA r: 64
- LoRA alpha: 64
- Max Sequence Length: 2048
- Warmup Steps: 5
๐ง ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋
- GPU: NVIDIA A100-SXM4-40GB
- Peak Memory: 6.674 GB
- Memory Usage: 16.9%
์ฌ์ฉ ๋ฐฉ๋ฒ
์ผ๋ฐ์ ์ธ ์ฌ์ฉ (Transformers)
from transformers import AutoTokenizer, AutoModelForCausalLM
# ๋ชจ๋ธ๊ณผ ํ ํฌ๋์ด์ ๋ก๋
tokenizer = AutoTokenizer.from_pretrained("himedia/fincredit-lamma-3.2-3b-lr2e04-bs16-r64-steps10-20250702_181705")
model = AutoModelForCausalLM.from_pretrained("himedia/fincredit-lamma-3.2-3b-lr2e04-bs16-r64-steps10-20250702_181705")
# ๊ฐ๋จํ ์ถ๋ก ์์
prompt = "๊ณ ๊ฐ์ ์ ์ฉ๋ฑ๊ธ์ ํ๊ฐํด์ฃผ์ธ์:"
inputs = tokenizer(prompt, return_tensors="pt")
outputs = model.generate(**inputs, max_length=200)
result = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(result)
vLLM ์ฌ์ฉ (๊ณ ์ฑ๋ฅ ์ถ๋ก )
from vllm import LLM, SamplingParams
# vLLM ๋ก๋ (๋ณํฉ๋ ๋ชจ๋ธ์ด๋ฏ๋ก ๋ฐ๋ก ์ฌ์ฉ ๊ฐ๋ฅ)
llm = LLM(
model="himedia/fincredit-lamma-3.2-3b-lr2e04-bs16-r64-steps10-20250702_181705",
max_model_len=2048,
gpu_memory_utilization=0.85
)
# ์ํ๋ง ํ๋ผ๋ฏธํฐ ์ค์
sampling_params = SamplingParams(
temperature=0.7,
top_p=0.9,
max_tokens=200
)
# ์ถ๋ก
prompts = ["๊ณ ๊ฐ์ ์ ์ฉ๋ฑ๊ธ์ ํ๊ฐํด์ฃผ์ธ์:"]
outputs = llm.generate(prompts, sampling_params)
for output in outputs:
prompt = output.prompt
generated_text = output.outputs[0].text
print(f"Prompt: {prompt!r}")
print(f"Generated text: {generated_text!r}")
Unsloth ํ ์คํธ ํ๊ฒฝ์์ ์ฌ์ฉ
from unsloth import FastLanguageModel
# ์๋ณธ LoRA ์ด๋ํฐ๋ก ํ
์คํธ
model, tokenizer = FastLanguageModel.from_pretrained(
model_name = "himedia/fincredit-Llama-3.2-3B-lr2e04-bs16-r64-steps1000-20250623_060351", # LoRA ์ด๋ํฐ
max_seq_length = 2048,
dtype = None,
load_in_4bit = True,
)
๐ ํ์ต ๋ฐ์ดํฐ ํ์ผ
์ด ๋ ํฌ์งํ ๋ฆฌ์๋ ๋ค์ ํ์ต ๊ด๋ จ ํ์ผ๋ค์ด ํฌํจ๋์ด ์์ต๋๋ค:
training_log.json
: ์ ์ฒด ํ์ต ๋ก๊ทธ (JSON ํ์)FinCreditLlama-3.2-3B_20250702_181705_training_curves.png
: ํ์ต ๊ณก์ ์๊ฐํ ์ด๋ฏธ์ง
๋ ํฌ์งํ ๋ฆฌ๋ช ๊ตฌ์ฑ
fincredit-lamma-3.2-3b-lr2e04-bs16-r64-steps10-20250702_181705 = fincredit-lamma3-4b-lr2e04-bs2-r64-steps10-20250702_181705
fincredit-lamma3-4b
: ๋ชจ๋ธ ๊ธฐ๋ณธ๋ชlr2e04
: Learning Ratebs2
: Batch Sizer64
: LoRA ranksteps10
: ํ์ต ์คํ 20250702_181705
: ํ์ต ์๊ฐ
๋ฐฐํฌ ์ ๋ณด
- ๋ชจ๋ธ ํ์ : ๋ณํฉ๋ ์ ์ฒด ๋ชจ๋ธ (LoRA ์ด๋ํฐ๊ฐ ๋ฒ ์ด์ค ๋ชจ๋ธ์ ๋ณํฉ๋จ)
- vLLM ํธํ: โ ์์ ํธํ
- RunPod ๋ฐฐํฌ: โ ์ง์
- ์๋ณธ LoRA ์ด๋ํฐ:
himedia/fincredit-Llama-3.2-3B-lr2e04-bs16-r64-steps1000-20250623_060351
์ฑ๋ฅ
์ด ๋ชจ๋ธ์ ํ๊ตญ์ด ๊ธ์ต ํ ์คํธ์ ๋ํด ํ์ธํ๋๋์ด ์ ์ฉ ํ๊ฐ ๊ด๋ จ ์ง์์๋ต์ ํนํ๋์ด ์์ต๋๋ค.
๋ผ์ด์ ์ค
Apache 2.0