Downloads · 30 days
55
69% of all-time downloads
DuckerMaster/thai-legal-lora
thai-legal-lora is a text generation model from DuckerMaster. Use it when you need the model to write or continue text. It is set up for peft. The card lists the license as llama3.2.
โมเดลภาษาเฉพาะทางด้านกฎหมายไทย พัฒนาขึ้นโดยการปรับจูนพารามิเตอร์แบบ Low-Rank Adaptation (LoRA) บนโมเดลพื้นฐาน scb10x/llama3.2-typhoon2-3b มุ่งเน้นการประมวลผลและสร้างคำตอบสำหรับระบบ Retrieval-Augmented Generation (RAG)…
Downloads · 30 days
55
69% of all-time downloads
All-time downloads
80
Public
Repo size
31.9 MB
Likes
0
Public
Click a slice to open those files.
.json17.3 MB · 54%
From the Hugging Face model README
โมเดลภาษาเฉพาะทางด้านกฎหมายไทย พัฒนาขึ้นโดยการปรับจูนพารามิเตอร์แบบ Low-Rank Adaptation (LoRA) บนโมเดลพื้นฐาน scb10x/llama3.2-typhoon2-3b มุ่งเน้นการประมวลผลและสร้างคำตอบสำหรับระบบ Retrieval-Augmented Generation (RAG) ในขอบเขตกฎหมายแพ่งและพาณิชย์ (Thai Corporate & Commercial Law) โดยมีเป้าหมายเพื่อเพิ่มความสอดคล้องของคำตอบกับบริบทที่สืบค้นได้ และลดอัตราความคลาดเคลื่อนในการระบุบทบัญญัติทางกฎหมาย (Legal Hallucination)
การประเมินผลกระทำบนชุดข้อมูลทดสอบของ WangchanX-Legal-ThaiCCL-RAG จำนวน 50 ตัวอย่าง โดยใช้วิธีการสืบค้นแบบผสม (Hybrid Retrieval) และเงื่อนไขการทดสอบเดียวกันระหว่าง Base Model และ LoRA Adapter บน Kaggle GPU T4:
| ตัวชี้วัดประสิทธิภาพ (Metrics) | Base Model (Typhoon2-3B) | Base + Legal LoRA (Ours) | ส่วนต่างการพัฒนา ($\Delta$) |
|---|---|---|---|
| ROUGE-L (F1 Score) | 8.11% | 25.38% | +17.27% (เพิ่มขึ้น 3.1 เท่า) |
| Section Match Rate | 34.00% (17/50) | 62.00% (31/50) | +28.00% (ระบุมาตราตรงเป้า) |
| Zero-Score Rate (ROUGE=0) | 56.00% (28/50) | 8.00% (4/50) | -48.00% (ลดการตอบไม่ตรงประเด็น) |
| Avg. Latency (GPU T4) | ~1.8 วินาที/ข้อความ | ~1.9 วินาที/ข้อความ | +0.1 วินาที |
| Peak VRAM (Inference) | ~3.5 GB | ~3.5 GB | ไม่มีความแตกต่าง (4-bit NF4) |
airesearch/WangchanX-Legal-ThaiCCL-RAGq_proj, v_proj, o_projlr=2e-4, Gradient Accumulation Step = 4)การใช้งานจำเป็นต้องจัดโครงสร้างข้อความนำเข้า (Prompt Template) ให้ตรงกับรูปแบบที่ใช้ในการฝึกฝน เพื่อให้แบบจำลองสามารถจำแนกส่วนของบริบททางกฎหมายและคำถามได้อย่างถูกต้อง:
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig
from peft import PeftModel
base_model_id = "scb10x/llama3.2-typhoon2-3b"
adapter_id = "DuckerMaster/thai-legal-lora"
# 1. กำหนดค่า 4-bit NormalFloat Quantization (ใช้ VRAM เพียง ~3.5 GB)
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)
base_model = AutoModelForCausalLM.from_pretrained(
base_model_id,
quantization_config=bnb_config,
device_map="auto"
)
# 2. เชื่อมต่อ LoRA Adapter
model = PeftModel.from_pretrained(base_model, adapter_id)
model.eval()
# 3. โครงสร้าง Context-Grounded Prompt ตามมาตรฐานการฝึก
context = (
"ประมวลกฎหมายแพ่งและพาณิชย์ มาตรา 1012: "
"อันว่าสัญญาจัดตั้งห้างหุ้นส่วนหรือบริษัทนั้น คือสัญญาซึ่งบุคคลตั้งแต่สองคนขึ้นไปตกลงเข้ากันเพื่อกระทำกิจการร่วมกัน "
"ด้วยประสงค์จะแบ่งปันกำไรอันจะพึงได้แต่กิจการที่ทำนั้น"
)
question = "สัญญาจัดตั้งห้างหุ้นส่วนหรือบริษัทคืออะไร"
prompt = f"จากกฎหมายต่อไปนี้:\n{context}\n\nคำถาม: {question}\nคำตอบ:"
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
with torch.no_grad():
outputs = model.generate(
**inputs,
max_new_tokens=256,
do_sample=False,
temperature=None,
top_p=None,
repetition_penalty=1.1,
pad_token_id=tokenizer.eos_token_id,
eos_token_id=tokenizer.eos_token_id
)
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
answer = response.split("คำตอบ:")[-1].strip()
print("คำวินิจฉัย:", answer)