Aller au contenu
ModelPrésentéExterne
Télécharger

Flow Forge Mermaid Th

LoRA adapter สําหรับ Qwen2.5-1.5B-Instruct ที่ fine-tune ให้แปลง คําอธิบายภาษาไทย → โค้ด Mermaid โมเดลเลือก ชนิดไดอะแกรม ให้เหมาะกับเนื้อหา รองรับ 8 ชนิด: flowchart · sequenceDiagram · classDiagram · erDiagram ·...

TypeOtherModèle de baseQwen/Qwen2.5-1.5B-InstructVersionRevision 87a0fafCClasse

Source du modèle

Type
Other
Taille du fichier
70,5 MB
Modèle de base
Qwen/Qwen2.5-1.5B-Instruct
Version
vRevision 87a0faf
Mis à jour
6 oct. 2026
Téléchargements
2
Source
Hugging Face

Description de la source

Flow Forge — Thai prompt → Mermaid (fine-tuned)

LoRA adapter สําหรับ Qwen2.5-1.5B-Instruct ที่ fine-tune ให้แปลง คําอธิบายภาษาไทย → โค้ด Mermaid โมเดลเลือก ชนิดไดอะแกรม ให้เหมาะกับเนื้อหา รองรับ 8 ชนิด: flowchart · sequenceDiagram · classDiagram · erDiagram · stateDiagram-v2 · mindmap · pie · gantt

เทรนด้วย QLoRA 4-bit (NF4) + bf16 บน RTX 2060 Mobile (6GB) — ส่วนหนึ่งของโปรเจกต์ Flow Forge (เว็บวาดไดอะแกรมโทนพาสเทล)

วิธีใช้

โมเดลนี้เป็น LoRA adapter — ต้องโหลดคู่กับ base Qwen/Qwen2.5-1.5B-Instruct

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig
from peft import PeftModel

BASE = "Qwen/Qwen2.5-1.5B-Instruct"
ADAPTER = "Petanque/flow-forge-mermaid-th"

SYSTEM = (
    "คุณเป็นผู้ช่วยแปลงคําอธิบายภาษาไทยเป็นไดอะแกรม Mermaid "
    "เลือกชนิดไดอะแกรมให้เหมาะกับเนื้อหา "
    "(flowchart, sequenceDiagram, classDiagram, erDiagram, stateDiagram-v2, mindmap, pie, gantt) "
    "ตอบเป็นโค้ด Mermaid เท่านั้น "
    "ข้อความในไดอะแกรมให้ใช้ภาษาไทยเป็นหลัก "
    "ห้ามใช้ภาษาจีนหรือตัวอักษรต่างประเทศอื่น และห้ามแปลข้อความทั้งประโยคเป็นภาษาอังกฤษ "
    "(ใช้คําทับศัพท์อังกฤษเฉพาะศัพท์เทคนิคที่จําเป็น)"
)

bnb = BitsAndBytesConfig(load_in_4bit=True, bnb_4bit_quant_type="nf4",
                         bnb_4bit_compute_dtype=torch.bfloat16, bnb_4bit_use_double_quant=True)
tok = AutoTokenizer.from_pretrained(BASE)
model = AutoModelForCausalLM.from_pretrained(BASE, quantization_config=bnb, device_map="auto",
                                             dtype=torch.bfloat16)
model = PeftModel.from_pretrained(model, ADAPTER).eval()

def generate(prompt):
    msgs = [{"role": "system", "content": SYSTEM}, {"role": "user", "content": prompt}]
    enc = tok.apply_chat_template(msgs, add_generation_prompt=True, return_tensors="pt",
                                  return_dict=True).to(model.device)
    out = model.generate(**enc, max_new_tokens=256, do_sample=False,
                         pad_token_id=tok.pad_token_id or tok.eos_token_id)
    return tok.decode(out[0][enc["input_ids"].shape[1]:], skip_special_tokens=True)

print(generate("ลูกค้าสั่งอาหาร ถ้ามีวัตถุดิบให้ทํา ถ้าไม่มีให้แนะนําเมนูอื่น"))
# → flowchart TD ... (โค้ด Mermaid ภาษาไทย)

สําคัญ: ต้องใช้ SYSTEM prompt ข้างบนแบบเป๊ะ ตอน inference — พฤติกรรม (การเลือกชนิด + บังคับไทย) ผูกกับ system prompt นี้ ถ้าเปลี่ยน คุณภาพจะตก

คําใบ้ชนิด: ถ้า prompt ไม่มีคําใบ้ → โมเดลตอบ flowchart เป็นค่าเริ่มต้น; ใส่คําใบ้เพื่อสลับชนิด เช่น "sequence การสื่อสาร...", "pie chart สัดส่วน...", "มายด์แมป...", "gantt แผนงาน..."

Serving (สัญญา API)

repo หลักมี serve.py ที่ห่อโมเดลเป็น HTTP + แปลง Mermaid เป็น JSON โครงสร้าง:

POST /generate {"prompt": "..."}  → {"mermaid": "...", "diagram": {...}}
POST /parse    {"mermaid": "..."} → {"diagram": {...}}

diagram เป็น JSON machine-readable (flowchart: nodes/edges, sequence: participants/messages, pie: slices, gantt: tasks, mindmap: tree, ฯลฯ) สําหรับระบบอื่นเอาไปต่อยอด

การเทรน

  • Base: Qwen/Qwen2.5-1.5B-Instruct · Method: QLoRA (r=16, α=32, all attn+MLP proj)
  • Data: 679 ตัวอย่าง / 113 scenarios (flowchart 427 + อีก 7 ชนิด ชนิดละ 36) เขียนมือ ตรวจ syntax ทุกตัว
  • Recipe: 4-bit NF4, bf16, batch 1 × grad-accum 8, cosine LR 2e-4, early stopping บน eval_loss

ผล (eval 19 prompt ที่ไม่เคยเห็น): base 9/19 (47%) → fine-tuned 18/19 (95%) parse-rate

ข้อจํากัด

  • ภาษาหลุด (tail): บาง prompt นอกโดเมน โดยเฉพาะชนิด sparse (sequence/mindmap) อาจมีอักษร จีน/ญี่ปุ่นหลุด 1–2 ตัวใน label — serve.py มี CJK guard (regenerate แล้วตัดทิ้ง) กันปลายทางให้
  • แม่นสุดกับ flowchart (ข้อมูลเยอะสุด); ชนิดอื่นดีเมื่อ prompt มีคําใบ้ชัด
  • classDiagram: ใช้ id ละติน + label ไทยใน [] (เช่น class Animal["สัตว์"])

License

Apache-2.0 (สอดคล้องกับ base model Qwen2.5-1.5B-Instruct)

Sources

1 source
Hugging FacePrincipalVersion 87a0faf78acac3a7dcecf7e3cc8554261160c57a
huggingface.co/Petanque/flow-forge-mermaid-th/tree/87a0faf78acac3a7dcecf7e3cc8554261160c57a

Vérifié 23 août

Artefacts du modèle

1 artefact

adapter_model.safetensors

safetensors · 70,5 MB · SHA-256 c922197747f3…8a34 · Hugging Face

Download file

Extraits de sources

2 extraits

--- base_model: Qwen/Qwen2.5-1.5B-Instruct library_name: peft pipeline_tag: text-generation language: - th license: apache-2.0 tags: - lora - qlora - peft - mermaid - diagram - thai - text-to-diagram --- # Flow Forge — Thai prompt → Mermaid (fine-tuned) LoRA adapter สำหรับ **Qwen2.5-1.5B-Instruct** ที่ fine-tune ให้แปลง **คำอธิบายภาษาไทย → โค้ด Mermaid** โมเดลเลือก *ชนิดไดอะแกรม* ให้เหมาะกับเนื้อหา รองรับ 8 ชนิด: `flowchart · sequenceDiagram · classDiagram · erDiagram · stateDiagram-v2 · mindmap · pie · gantt` เทรนด้วย **QLoRA 4-bit (NF4) + bf16** บน RTX 2060 Mobile (6GB) — ส่วนหนึ่งของโปรเจกต์ [**Flow Forge**](https://github.com/prommin01st-lang/flow-forge) (เว็บวาดไดอะแกรมโทนพาสเทล) ## วิธีใช้ โมเดลนี้เป็น **LoRA adapter** — ต้องโหลดคู่กับ base `Qwen/Qwen2.5-1.5B-Instruct` ```python import torch from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig from peft import PeftModel BASE = "Qwen/Qwen2.5-1.5B-Instruct" ADAPTER = "Petanque/flow-forge-mermaid-th" SYSTEM = ( "คุณเป็นผู้ช่วยแปลงคำอธิบายภาษาไทยเป็นไดอะแกรม Mermaid " "เลือกชนิดไดอะแกรมให้เหมาะกับเนื้อหา " "(flowchart, sequenceDiagram, classDiagram, erDiagram, stateDiagram-v2, mindmap, pie, gantt) " "ตอบเป็นโค้ด Mermaid เท่านั้น " "ข้อความในไดอะแกรมให้ใช้ภาษาไทยเป็นหลัก " "ห้ามใช้ภาษาจีนหรือตัวอักษรต่างประเทศอื่น และห้ามแปลข้อความทั้งประโยคเป็นภาษาอังกฤษ " "(ใช้คำทับศัพท์อังกฤษเฉพาะศัพท์เทคนิคที่จำเป็น)" ) bnb = BitsAndBytesConfig(load_in_4bit=True, bnb_4bit_quant_type="nf4", bnb_4bit_compute_dtype=torch.bfloat16, bnb_4bit_use_double_quant=True) tok = AutoTokenizer.from_pretrained(BASE) model = AutoModelForCausalLM.from_pretrained(BASE, quantization_config=bnb, device_map="auto", dtype=torch.bfloat16) model = PeftModel.from_pretrained(model, ADAPTER).eval() def generate(prompt): msgs = [{"role": "system", "content": SYSTEM}, {"role": "user", "content": prompt}] enc = tok.apply_chat_template(msgs, add_generation_prompt=True, return_tensors="pt", return_dict=True).to(model.device) out = model.generate(**enc, max_new_tokens=256, do_sample=False, pad_token_id=tok.pad_token_id or tok.eos_token_id) return tok.decode(out[0][enc["input_ids"].shape[1]:], skip_special_tokens=True) print(generate("ลูกค้าสั่งอาหาร ถ้ามีวัตถุดิบให้ทำ ถ้าไม่มีให้แนะนำเมนูอื่น")) # → flowchart TD ... (โค้ด Mermaid ภาษาไทย) ``` > **สำคัญ:** ต้องใช้ `SYSTEM` prompt ข้างบนแบบ...

Source context: 2 downloads · 0 likes · Pipeline text-generation · Library peft · Repo Petanque/flow-forge-mermaid-th