Text Generation
Transformers
Safetensors
mistral3
image-text-to-text
Merge
slerp
dfk-detection
vlm
text-classification
indonesian
multimodal
image-classification
content-moderation
conversational
Instructions to use aitf-its-tim3-dfk/ministral-8b-merged-ws3 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use aitf-its-tim3-dfk/ministral-8b-merged-ws3 with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="aitf-its-tim3-dfk/ministral-8b-merged-ws3") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] pipe(text=messages)# Load model directly from transformers import AutoProcessor, AutoModelForMultimodalLM processor = AutoProcessor.from_pretrained("aitf-its-tim3-dfk/ministral-8b-merged-ws3") model = AutoModelForMultimodalLM.from_pretrained("aitf-its-tim3-dfk/ministral-8b-merged-ws3") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] inputs = processor.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt", ).to(model.device) outputs = model.generate(**inputs, max_new_tokens=40) print(processor.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use aitf-its-tim3-dfk/ministral-8b-merged-ws3 with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "aitf-its-tim3-dfk/ministral-8b-merged-ws3" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "aitf-its-tim3-dfk/ministral-8b-merged-ws3", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/aitf-its-tim3-dfk/ministral-8b-merged-ws3
- SGLang
How to use aitf-its-tim3-dfk/ministral-8b-merged-ws3 with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "aitf-its-tim3-dfk/ministral-8b-merged-ws3" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "aitf-its-tim3-dfk/ministral-8b-merged-ws3", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "aitf-its-tim3-dfk/ministral-8b-merged-ws3" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "aitf-its-tim3-dfk/ministral-8b-merged-ws3", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }' - Docker Model Runner
How to use aitf-its-tim3-dfk/ministral-8b-merged-ws3 with Docker Model Runner:
docker model run hf.co/aitf-its-tim3-dfk/ministral-8b-merged-ws3
| base_model: | |
| - aitf-komdigi/KomdigiITS-8B-DFK-MultimodalClassification | |
| - aitf-komdigi/KomdigiITS-8B-DFK-TextClassification | |
| library_name: transformers | |
| pipeline_tag: text-generation | |
| tags: | |
| - merge | |
| - slerp | |
| - dfk-detection | |
| - vlm | |
| - text-classification | |
| - indonesian | |
| - multimodal | |
| - image-classification | |
| - content-moderation | |
| - mistral3 | |
| <style> | |
| @import url('https://fonts.googleapis.com/css2?family=Playfair+Display:wght@400;600;700;800;900&family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;700&display=swap'); | |
| .fo { | |
| --bg: #faf8f5; | |
| --surface: #ffffff; | |
| --card: #ffffff; | |
| --tint: #f5f0eb; | |
| --edge: #e8e0d6; | |
| --rule: #d8cec4; | |
| --text: #5c5060; | |
| --dim: #998da0; | |
| --bright: #3a2e40; | |
| --cream: #f8f4ef; | |
| --warm: #c48a6a; | |
| --warm2: #daa88a; | |
| --rose: #c8909c; | |
| --rose2: #e0b0ba; | |
| --sage: #7aac96; | |
| --sage2: #9cc8b4; | |
| --w-glow: rgba(196,138,106,0.06); | |
| --s-glow: rgba(122,172,150,0.06); | |
| --r-glow: rgba(200,144,156,0.05); | |
| --shadow: rgba(90,70,80,0.06); | |
| --mono: 'JetBrains Mono', monospace; | |
| --sans: 'Inter', sans-serif; | |
| --serif: 'Playfair Display', Georgia, serif; | |
| font-family: var(--sans); | |
| color: var(--text); | |
| max-width: 860px; | |
| margin: 0 auto; | |
| padding: 0 0 64px; | |
| line-height: 1.75; | |
| font-size: 0.95rem; | |
| background: | |
| radial-gradient(ellipse at 30% 0%, rgba(196,138,106,0.04) 0%, transparent 50%), | |
| radial-gradient(ellipse at 70% 0%, rgba(122,172,150,0.04) 0%, transparent 50%), | |
| var(--bg); | |
| } | |
| /* ββ Hero ββ */ | |
| .fo-hero { position: relative; overflow: hidden; border-radius: 0 0 12px 12px; } | |
| .fo-hero img { | |
| display: block; width: 100%; height: 300px; | |
| object-fit: cover; margin: 0; | |
| } | |
| .fo-ident { | |
| position: absolute; bottom: 0; left: 0; right: 0; | |
| padding: 90px 44px 32px; | |
| background: linear-gradient(to top, | |
| rgba(58,46,64,0.88) 0%, | |
| rgba(58,46,64,0.6) 40%, | |
| transparent 100%); | |
| } | |
| .fo-name { | |
| font-family: var(--serif); | |
| font-size: 2.6rem; font-weight: 800; | |
| color: #fff; letter-spacing: 0.01em; | |
| line-height: 1.08; margin: 0 0 8px; | |
| text-shadow: 0 2px 16px rgba(0,0,0,0.25); | |
| } | |
| .fo-tagline { | |
| font-family: var(--mono); font-size: 0.58rem; | |
| color: var(--rose2); letter-spacing: 0.16em; | |
| text-transform: uppercase; display: block; | |
| } | |
| .fo-badge { | |
| display: inline-flex; align-items: center; gap: 7px; | |
| margin-top: 12px; padding: 4px 12px; | |
| border: 1px solid rgba(255,255,255,0.2); | |
| border-radius: 20px; | |
| background: rgba(122,172,150,0.15); | |
| font-family: var(--mono); font-size: 0.52rem; font-weight: 600; | |
| letter-spacing: 0.12em; text-transform: uppercase; color: var(--sage2); | |
| backdrop-filter: blur(4px); | |
| } | |
| .fo-badge::before { | |
| content: '\2726'; font-size: 0.5rem; color: var(--rose2); opacity: 0.8; | |
| } | |
| /* ββ Section ββ */ | |
| .fo-section { padding: 0; } | |
| .fo-shead { | |
| display: flex; align-items: baseline; gap: 14px; | |
| padding: 24px 44px 0; margin-bottom: 24px; | |
| } | |
| .fo-snum { | |
| font-family: var(--mono); font-size: 0.58rem; font-weight: 600; | |
| color: var(--rose); letter-spacing: 0.08em; | |
| flex-shrink: 0; opacity: 0.7; | |
| } | |
| .fo-stitle { | |
| font-family: var(--serif); font-size: 1.35rem; font-weight: 700; | |
| color: var(--bright); letter-spacing: 0.01em; | |
| } | |
| .fo-sbody { padding: 0 44px 40px; } | |
| .fo-sbody p { margin: 0 0 14px; font-size: 0.93rem; } | |
| .fo-sbody p:last-child { margin-bottom: 0; } | |
| .fo strong { color: inherit !important; font-weight: 700 !important; } | |
| /* ββ Sub-headings ββ */ | |
| .fo-sub { | |
| font-family: var(--serif) !important; | |
| color: var(--bright) !important; font-size: 1.02rem !important; | |
| margin: 22px 0 12px !important; padding: 0 0 6px !important; | |
| font-weight: 700; letter-spacing: 0.01em; | |
| border: none !important; | |
| border-bottom: 1px solid var(--edge) !important; | |
| } | |
| /* ββ Cards ββ */ | |
| .fo-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; } | |
| .fo-card { | |
| background: var(--card); border: 1px solid var(--edge); | |
| border-radius: 8px; position: relative; | |
| box-shadow: 0 2px 12px var(--shadow); | |
| overflow: hidden; | |
| } | |
| .fo-card::before { | |
| content: ''; position: absolute; top: 0; left: 0; right: 0; | |
| height: 3px; background: linear-gradient(90deg, var(--warm), var(--rose)); | |
| } | |
| .fo-card--sage::before { background: linear-gradient(90deg, var(--sage), var(--sage2)); } | |
| .fo-card--muted::before { background: var(--edge); height: 2px; } | |
| .fo-card--warn::before { background: linear-gradient(90deg, #c47a6a, #d49080); } | |
| .fo-chead { | |
| font-family: var(--mono); font-size: 0.58rem; font-weight: 600; | |
| letter-spacing: 0.12em; text-transform: uppercase; color: var(--dim); | |
| padding: 10px 16px 8px; border-bottom: 1px solid var(--edge); | |
| background: var(--tint); | |
| } | |
| .fo-chead::after { | |
| content: ' \2726'; font-size: 0.45rem; color: var(--rose); opacity: 0.45; | |
| } | |
| .fo-card--sage .fo-chead::after { color: var(--sage); } | |
| .fo-row { | |
| display: grid; grid-template-columns: 12ch 1fr; align-items: baseline; | |
| column-gap: 8px; padding: 7px 16px; | |
| border-bottom: 1px solid rgba(232,224,214,0.5); font-size: 0.85rem; | |
| } | |
| .fo-row:last-child { border-bottom: none; } | |
| .fo-k { | |
| font-family: var(--mono); font-size: 0.78rem; color: var(--dim); | |
| font-weight: 500; | |
| } | |
| .fo-k::after { content: ':'; } | |
| .fo-v { color: var(--bright); font-size: 0.85rem; } | |
| .fo-row .fo-v:only-child { grid-column: 1 / -1; } | |
| /* ββ Metric cards ββ */ | |
| .fo-metrics { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin-bottom: 18px; } | |
| .fo-metric { | |
| background: var(--card); border: 1px solid var(--edge); | |
| border-radius: 8px; padding: 16px 10px 14px; | |
| text-align: center; position: relative; | |
| box-shadow: 0 2px 12px var(--shadow); | |
| overflow: hidden; | |
| } | |
| .fo-metric::before { | |
| content: ''; position: absolute; top: 0; left: 0; right: 0; | |
| height: 3px; background: linear-gradient(90deg, var(--warm), var(--rose)); | |
| } | |
| .fo-metric--sage::before { background: linear-gradient(90deg, var(--sage), var(--sage2)); } | |
| .fo-mval { | |
| font-family: var(--serif); font-size: 1.7rem; font-weight: 800; | |
| color: var(--bright); line-height: 1; margin-bottom: 5px; | |
| } | |
| .fo-metric--sage .fo-mval { color: var(--sage); } | |
| .fo-mlbl { | |
| font-family: var(--mono); font-size: 0.5rem; font-weight: 600; | |
| letter-spacing: 0.12em; text-transform: uppercase; color: var(--dim); | |
| } | |
| /* ββ Note ββ */ | |
| .fo-note { | |
| border: 1px solid var(--edge); border-radius: 8px; | |
| padding: 14px 18px; margin-top: 18px; | |
| background: var(--tint); font-size: 0.85rem; color: var(--dim); | |
| border-left: 3px solid var(--warm); | |
| } | |
| .fo-note strong { | |
| color: var(--warm) !important; font-family: var(--mono) !important; | |
| font-size: 0.6rem !important; letter-spacing: 0.1em !important; text-transform: uppercase !important; | |
| } | |
| .fo-note--sage { border-left-color: var(--sage); } | |
| .fo-note--sage strong { color: var(--sage) !important; } | |
| /* ββ Comparison table ββ */ | |
| .fo-cmp { | |
| width: 100%; border-collapse: collapse; | |
| font-size: 0.76rem; margin-bottom: 18px; | |
| } | |
| .fo-cmp th { | |
| text-align: left; padding: 9px 10px; | |
| font-family: var(--mono); font-weight: 600; | |
| letter-spacing: 0.1em; text-transform: uppercase; | |
| color: var(--dim); border-bottom: 2px solid var(--edge); | |
| font-size: 0.56rem; | |
| } | |
| .fo-cmp td { | |
| padding: 8px 10px; border-bottom: 1px solid var(--edge); | |
| color: var(--text); font-family: var(--mono); font-size: 0.76rem; | |
| } | |
| .fo-cmp tr:last-child td { border-bottom: none; } | |
| .fo-cmp-warm { color: var(--warm) !important; font-weight: 600; } | |
| .fo-cmp-sage { color: var(--sage) !important; font-weight: 700; } | |
| .fo-cmp-dim { color: var(--dim) !important; } | |
| .fo-cmp-row-merge td { background: rgba(122,172,150,0.06); } | |
| /* ββ Links ββ */ | |
| .fo a { color: var(--bright); text-decoration: none; border-bottom: 1px solid var(--rule); } | |
| .fo a:hover { color: var(--warm); border-bottom-color: var(--warm); } | |
| /* ββ Dropdown ββ */ | |
| .fo details { | |
| border: 1px solid var(--edge); border-radius: 8px; | |
| margin-top: 18px; background: var(--card); | |
| box-shadow: 0 2px 12px var(--shadow); | |
| overflow: hidden; | |
| } | |
| .fo summary { | |
| list-style: none; padding: 11px 16px; cursor: pointer; | |
| font-family: var(--mono); font-size: 0.64rem; font-weight: 600; | |
| letter-spacing: 0.1em; text-transform: uppercase; color: var(--dim); | |
| user-select: none; display: flex; align-items: center; gap: 8px; | |
| background: var(--tint); | |
| } | |
| .fo summary::-webkit-details-marker { display: none; } | |
| .fo summary::before { | |
| content: '+'; color: var(--rose); font-size: 0.85rem; line-height: 1; flex-shrink: 0; | |
| } | |
| .fo details[open] summary::before { content: '\2212'; } | |
| .fo summary:hover { color: var(--bright); } | |
| .fo details.fo-det--sage summary::before { color: var(--sage); } | |
| .fo-drop { padding: 18px 16px; border-top: 1px solid var(--edge); } | |
| .fo-drop p { margin: 0 0 14px; font-size: 0.88rem; } | |
| /* ββ Code ββ */ | |
| .fo pre { | |
| background: #2e2834; border: 1px solid var(--edge); | |
| border-radius: 6px; | |
| padding: 14px 16px; overflow-x: auto; | |
| font-family: var(--mono); font-size: 0.71rem; | |
| line-height: 1.65; color: #d8d0e0; margin: 0 0 18px; | |
| } | |
| .fo pre:last-child { margin-bottom: 0; } | |
| .fo pre code { background: none !important; color: inherit !important; padding: 0 !important; border: none !important; } | |
| .fo code { | |
| font-family: var(--mono) !important; font-size: 0.82em !important; color: var(--warm) !important; | |
| background: var(--w-glow) !important; padding: 2px 5px !important; border-radius: 3px !important; | |
| border: 1px solid rgba(196,138,106,0.12) !important; | |
| } | |
| /* ββ Separator ββ */ | |
| .fo-sep { | |
| display: flex; align-items: center; justify-content: center; | |
| padding: 6px 44px; color: var(--rose); font-size: 0.55rem; | |
| letter-spacing: 0.4em; opacity: 0.4; | |
| } | |
| .fo-sep::before, .fo-sep::after { | |
| content: ''; flex: 1; height: 1px; | |
| background: linear-gradient(90deg, transparent, var(--edge), transparent); | |
| } | |
| .fo-sep::before { margin-right: 14px; } | |
| .fo-sep::after { margin-left: 14px; } | |
| /* ββ Section divider ββ */ | |
| .fo-div { | |
| height: 1px; margin: 0 44px; | |
| background: linear-gradient(90deg, transparent, var(--edge), transparent); | |
| } | |
| /* ββ Mobile ββ */ | |
| @media (max-width: 640px) { | |
| .fo-hero img { height: 200px; } | |
| .fo-name { font-size: 1.9rem; } | |
| .fo-ident { padding: 70px 24px 24px; } | |
| .fo-shead { padding: 20px 24px 0; } | |
| .fo-sbody { padding: 0 24px 32px; } | |
| .fo-grid { grid-template-columns: 1fr; } | |
| .fo-metrics { grid-template-columns: repeat(2, 1fr); } | |
| .fo-row { grid-template-columns: 1fr; gap: 2px; } | |
| .fo-k::after { content: ''; } | |
| .fo-sep, .fo-div { margin-left: 24px; margin-right: 24px; padding-left: 24px; padding-right: 24px; } | |
| } | |
| </style> | |
| <html lang="en"> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
| <title>KomdigiITS-8B-DFK-MergedClassification</title> | |
| </head> | |
| <body> | |
| <div class="fo"> | |
| <div class="fo-hero"> | |
| <img src="dfk_hero_banner.png" alt="image"> | |
| <div class="fo-ident"> | |
| <h1 class="fo-name">KomdigiITS-8B-DFK<br>Merged Classification</h1> | |
| <span class="fo-tagline">Ministral-3-8B · SLERP Merge · Multimodal + Text</span> | |
| <div class="fo-badge">SLERP · 0.30 multimodal · 0.70 text</div> | |
| </div> | |
| </div> | |
| <div class="fo-sep">✶</div> | |
| <!-- βββ 01 Β· Overview βββ --> | |
| <div class="fo-section"> | |
| <div class="fo-shead"> | |
| <span class="fo-snum">01</span> | |
| <span class="fo-stitle">Overview</span> | |
| </div> | |
| <div class="fo-sbody"> | |
| <p>A <strong>SLERP-merged</strong> full model combining two specialized LoRA adapters into a single unified checkpoint. The merge blends the <a href="https://huggingface.co/aitf-komdigi/KomdigiITS-8B-DFK-MultimodalClassification">8B Multimodal Multimodal classifier</a> with the <a href="https://huggingface.co/aitf-komdigi/KomdigiITS-8B-DFK-TextClassification">text-only DFK classifier</a>, both built on <a href="https://huggingface.co/aitf-komdigi/KomdigiITS-8B-DFK-CPT">KomdigiITS-8B-DFK-CPT</a> (Ministral-3-8B-Base-2512).</p> | |
| <p>The result is a model that operates in <strong>two modes</strong>: image-based multimodal classification and text-only classification — strong performance on both tasks from a single set of weights.</p> | |
| <div class="fo-note"> | |
| <strong>✶ Note:</strong> Best SLERP blend from a parameter sweep (<code>w=0.30</code> multimodal, <code>w=0.70</code> text). Parent adapters were merged into base model weights, producing a standalone model with no adapter overhead. | |
| </div> | |
| </div> | |
| </div> | |
| <div class="fo-div"></div> | |
| <!-- βββ 02 Β· Model Details βββ --> | |
| <div class="fo-section"> | |
| <div class="fo-shead"> | |
| <span class="fo-snum">02</span> | |
| <span class="fo-stitle">Model Details</span> | |
| </div> | |
| <div class="fo-sbody"> | |
| <div class="fo-grid"> | |
| <div class="fo-card"> | |
| <div class="fo-chead">Identity</div> | |
| <div class="fo-row"><span class="fo-k">Developed</span><span class="fo-v">DFK Tim 1 & Tim 3 ITS</span></div> | |
| <div class="fo-row"><span class="fo-k">Type</span><span class="fo-v">Merged model (SLERP)</span></div> | |
| <div class="fo-row"><span class="fo-k">Language</span><span class="fo-v">Indonesian</span></div> | |
| <div class="fo-row"><span class="fo-k">Modes</span><span class="fo-v">Multimodal + Text-only</span></div> | |
| </div> | |
| <div class="fo-card fo-card--sage"> | |
| <div class="fo-chead">Architecture</div> | |
| <div class="fo-row"><span class="fo-k">Base</span><span class="fo-v"><a href="https://huggingface.co/aitf-komdigi/KomdigiITS-8B-DFK-CPT">KomdigiITS-8B-DFK-CPT</a></span></div> | |
| <div class="fo-row"><span class="fo-k">Arch</span><span class="fo-v">Mistral3ForConditionalGeneration</span></div> | |
| <div class="fo-row"><span class="fo-k">Params</span><span class="fo-v">8B (full merged weights)</span></div> | |
| <div class="fo-row"><span class="fo-k">Precision</span><span class="fo-v">float16</span></div> | |
| </div> | |
| </div> | |
| <h3 class="fo-sub">Parent Models</h3> | |
| <div class="fo-grid"> | |
| <div class="fo-card"> | |
| <div class="fo-chead">Multimodal Parent · w=0.30</div> | |
| <div class="fo-row"><span class="fo-k">Model</span><span class="fo-v"><a href="https://huggingface.co/aitf-komdigi/KomdigiITS-8B-DFK-MultimodalClassification">8B-DFK-MultimodalClassification</a></span></div> | |
| <div class="fo-row"><span class="fo-k">Task</span><span class="fo-v">Multimodal — image + text</span></div> | |
| <div class="fo-row"><span class="fo-k">Dataset</span><span class="fo-v"><code>dfk_vlm_dataset_v3</code></span></div> | |
| </div> | |
| <div class="fo-card fo-card--sage"> | |
| <div class="fo-chead">Text Parent · w=0.70</div> | |
| <div class="fo-row"><span class="fo-k">Model</span><span class="fo-v"><a href="https://huggingface.co/aitf-komdigi/KomdigiITS-8B-DFK-TextClassification">8B-DFK-TextClassification</a></span></div> | |
| <div class="fo-row"><span class="fo-k">Task</span><span class="fo-v">Text-only DFK classification</span></div> | |
| <div class="fo-row"><span class="fo-k">Dataset</span><span class="fo-v"><code>dfk_text_dataset</code></span></div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="fo-div"></div> | |
| <!-- βββ 03 Β· Uses βββ --> | |
| <div class="fo-section"> | |
| <div class="fo-shead"> | |
| <span class="fo-snum">03</span> | |
| <span class="fo-stitle">Uses</span> | |
| </div> | |
| <div class="fo-sbody"> | |
| <h3 class="fo-sub">Direct Use</h3> | |
| <div class="fo-card fo-card--muted" style="margin-bottom:14px;"> | |
| <div class="fo-row"><span class="fo-v">This model supports <strong>two input modes</strong> from a single checkpoint:</span></div> | |
| </div> | |
| <div class="fo-grid"> | |
| <div class="fo-card"> | |
| <div class="fo-chead">Mode 1 · Multimodal</div> | |
| <div class="fo-row"><span class="fo-v">Image-based content moderation. Given a social media screenshot with contextual metadata, classifies into 4 labels: <code>netral</code>, <code>disinformasi</code>, <code>fitnah</code>, or <code>ujaran kebencian</code>.</span></div> | |
| </div> | |
| <div class="fo-card fo-card--sage"> | |
| <div class="fo-chead">Mode 2 · Text-Only</div> | |
| <div class="fo-row"><span class="fo-v">Text-based DFK detection using article references. Classifies into 5 labels: <code>Fakta</code>, <code>Disinformasi</code>, <code>Fitnah</code>, <code>Ujaran Kebencian</code>, or <code>Non-DFK</code>.</span></div> | |
| </div> | |
| </div> | |
| <h3 class="fo-sub">Out-of-Scope Use</h3> | |
| <div class="fo-card fo-card--warn"> | |
| <div class="fo-row"><span class="fo-v">Not intended for general-purpose vision-language or text generation tasks. Specialized for the DFK detection pipeline — should not be used for content moderation in other languages or domains without further fine-tuning.</span></div> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="fo-div"></div> | |
| <!-- βββ 04 Β· Evaluation βββ --> | |
| <div class="fo-section"> | |
| <div class="fo-shead"> | |
| <span class="fo-snum">04</span> | |
| <span class="fo-stitle">Evaluation</span> | |
| </div> | |
| <div class="fo-sbody"> | |
| <p>Evaluated on held-out validation splits using greedy decoding (<code>temperature=0.0</code>) and BERTScore (<code>bert-base-multilingual-cased</code>).</p> | |
| <h3 class="fo-sub">Multimodal Task (Image + Text)</h3> | |
| <div class="fo-metrics"> | |
| <div class="fo-metric fo-metric--sage"> | |
| <div class="fo-mval">88.5</div> | |
| <div class="fo-mlbl">Accuracy</div> | |
| </div> | |
| <div class="fo-metric"> | |
| <div class="fo-mval">89.4</div> | |
| <div class="fo-mlbl">F1 Weighted</div> | |
| </div> | |
| <div class="fo-metric"> | |
| <div class="fo-mval">77.3</div> | |
| <div class="fo-mlbl">BERTScore F1</div> | |
| </div> | |
| </div> | |
| <h3 class="fo-sub">Text-Only Task</h3> | |
| <div class="fo-metrics"> | |
| <div class="fo-metric fo-metric--sage"> | |
| <div class="fo-mval">91.0</div> | |
| <div class="fo-mlbl">Accuracy</div> | |
| </div> | |
| <div class="fo-metric"> | |
| <div class="fo-mval">92.9</div> | |
| <div class="fo-mlbl">F1 Weighted</div> | |
| </div> | |
| <div class="fo-metric"> | |
| <div class="fo-mval">77.6</div> | |
| <div class="fo-mlbl">BERTScore F1</div> | |
| </div> | |
| </div> | |
| <details> | |
| <summary>Parent Model Comparison</summary> | |
| <div class="fo-drop"> | |
| <p>The merge trades a small amount of Multimodal accuracy for a <strong>massive improvement</strong> in text-only performance — turning a Multimodal-only model into a genuinely dual-mode classifier.</p> | |
| <table class="fo-cmp"> | |
| <thead> | |
| <tr> | |
| <th>Model</th> | |
| <th>MM Acc</th> | |
| <th>MM F1w</th> | |
| <th>MM BERT</th> | |
| <th>MM ROUGE</th> | |
| <th>Text Acc</th> | |
| <th>Text F1w</th> | |
| <th>Text BERT</th> | |
| <th>Text ROUGE</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <tr> | |
| <td>Multimodal</td> | |
| <td class="fo-cmp-warm">92.5</td> | |
| <td class="fo-cmp-warm">92.3</td> | |
| <td class="fo-cmp-warm">80.0</td> | |
| <td class="fo-cmp-warm">38.7</td> | |
| <td class="fo-cmp-dim">77.5</td> | |
| <td class="fo-cmp-dim">70.8</td> | |
| <td class="fo-cmp-dim">73.1</td> | |
| <td class="fo-cmp-dim">19.0</td> | |
| </tr> | |
| <tr> | |
| <td>Text Adapter</td> | |
| <td class="fo-cmp-dim">1.5</td> | |
| <td class="fo-cmp-dim">2.8</td> | |
| <td class="fo-cmp-dim">69.6</td> | |
| <td class="fo-cmp-dim">16.2</td> | |
| <td class="fo-cmp-warm">84.0</td> | |
| <td class="fo-cmp-warm">89.0</td> | |
| <td class="fo-cmp-warm">80.7</td> | |
| <td class="fo-cmp-warm">41.6</td> | |
| </tr> | |
| <tr class="fo-cmp-row-merge"> | |
| <td><strong>SLERP Merge</strong></td> | |
| <td class="fo-cmp-sage">88.5</td> | |
| <td class="fo-cmp-sage">89.4</td> | |
| <td class="fo-cmp-sage">77.3</td> | |
| <td class="fo-cmp-sage">31.6</td> | |
| <td class="fo-cmp-sage">91.0</td> | |
| <td class="fo-cmp-sage">92.9</td> | |
| <td class="fo-cmp-sage">77.6</td> | |
| <td class="fo-cmp-sage">31.5</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <div class="fo-note fo-note--sage"> | |
| <strong>✶ Key takeaway:</strong> The merge <em>surpasses</em> the text adapter's own accuracy (91.0 vs 84.0) while retaining 95.7% of the Multimodal model's classification accuracy. | |
| </div> | |
| </div> | |
| </details> | |
| </div> | |
| </div> | |
| <div class="fo-div"></div> | |
| <!-- βββ 05 Β· Merge Details βββ --> | |
| <div class="fo-section"> | |
| <div class="fo-shead"> | |
| <span class="fo-snum">05</span> | |
| <span class="fo-stitle">Merge Details</span> | |
| </div> | |
| <div class="fo-sbody"> | |
| <h3 class="fo-sub">Method</h3> | |
| <div class="fo-card" style="margin-bottom:14px;"> | |
| <div class="fo-row"><span class="fo-k">Method</span><span class="fo-v">SLERP (Spherical Linear Interpolation)</span></div> | |
| <div class="fo-row"><span class="fo-k">Weight</span><span class="fo-v">0.30 multimodal / 0.70 text</span></div> | |
| <div class="fo-row"><span class="fo-k">Selection</span><span class="fo-v">Best blend from WS3 sweep</span></div> | |
| <div class="fo-row"><span class="fo-k">Output</span><span class="fo-v">Full merged weights (no adapter)</span></div> | |
| </div> | |
| <h3 class="fo-sub">Process</h3> | |
| <div class="fo-card fo-card--muted" style="margin-bottom:14px;"> | |
| <div class="fo-row"><span class="fo-v">Both parent LoRA adapters (Multimodal + text) were first merged into the base model (<code>KomdigiITS-8B-DFK-CPT</code>) to produce two full-weight checkpoints. These were then interpolated via SLERP at various weight ratios, with each blend evaluated on both Multimodal and text-only benchmarks to find the optimal trade-off.</span></div> | |
| </div> | |
| <h3 class="fo-sub">Label Classes</h3> | |
| <div class="fo-grid"> | |
| <div class="fo-card"> | |
| <div class="fo-chead">Multimodal Mode · 4 Classes</div> | |
| <div class="fo-row"><span class="fo-k">Netral</span><span class="fo-v">Factual / non-DFK — no violation</span></div> | |
| <div class="fo-row"><span class="fo-k">Disinfo</span><span class="fo-v">Claims contradicting established facts</span></div> | |
| <div class="fo-row"><span class="fo-k">Fitnah</span><span class="fo-v">False claims targeting an individual</span></div> | |
| <div class="fo-row"><span class="fo-k">Ujrn Kbnci</span><span class="fo-v">Hate speech targeting SARA identity</span></div> | |
| </div> | |
| <div class="fo-card fo-card--sage"> | |
| <div class="fo-chead">Text Mode · 5 Classes</div> | |
| <div class="fo-row"><span class="fo-k">Non-DFK</span><span class="fo-v">Content unrelated to DFK categories</span></div> | |
| <div class="fo-row"><span class="fo-k">Fakta</span><span class="fo-v">Factual content, verified true</span></div> | |
| <div class="fo-row"><span class="fo-k">Disinfo</span><span class="fo-v">Claims contradicting established facts</span></div> | |
| <div class="fo-row"><span class="fo-k">Fitnah</span><span class="fo-v">False claims targeting an individual</span></div> | |
| <div class="fo-row"><span class="fo-k">Ujrn Kbnci</span><span class="fo-v">Hate speech targeting SARA identity</span></div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="fo-div"></div> | |
| <!-- βββ 06 Β· Input Formats βββ --> | |
| <div class="fo-section"> | |
| <div class="fo-shead"> | |
| <span class="fo-snum">06</span> | |
| <span class="fo-stitle">Input Formats</span> | |
| </div> | |
| <div class="fo-sbody"> | |
| <p>Both modes use the <code>ministral_3</code> chat template (<code>[INST]</code> / <code>[/INST]</code> delimiters). The default Ministral system prompt is included when no explicit system message is provided.</p> | |
| <details> | |
| <summary>Multimodal Mode · dfk_vlm_dataset_v3</summary> | |
| <div class="fo-drop"> | |
| <p>Image-based classification with contextual metadata. Note: the instruction and context fields are <strong>directly concatenated</strong> with no separator.</p> | |
| <pre><code><s>[SYSTEM_PROMPT]...default Ministral system prompt...[/SYSTEM_PROMPT][INST]Anda adalah seorang analis konten media sosial ahli. Diberikan tangkapan layar dari sebuah konten, tentukan label kategori pelanggaran dan berikan analisis detail mengenai pelanggaran yang ditemukan.Ringkasan: {ringkasan} | |
| Klaim: {klaim} | |
| Fakta: {fakta}[IMG][/INST]Label: {label} | |
| Analisis: {analisis}</s></code></pre> | |
| <h3 class="fo-sub">Input Fields</h3> | |
| <div class="fo-card" style="margin-bottom:14px;"> | |
| <div class="fo-row"><span class="fo-k">Ringkasan</span><span class="fo-v">Content summary. Concatenation of image caption and user-provided text.</span></div> | |
| <div class="fo-row"><span class="fo-k">Klaim</span><span class="fo-v">Core claim extracted from the content, used as a web search query for fact-checking.</span></div> | |
| <div class="fo-row"><span class="fo-k">Fakta</span><span class="fo-v">Verification context from web search. Defaults to <code>"Tidak ditemukan sumber yang valid."</code> if none found.</span></div> | |
| <div class="fo-row"><span class="fo-k">[IMG]</span><span class="fo-v">Screenshot of the social media post being analyzed.</span></div> | |
| </div> | |
| <h3 class="fo-sub">Output Fields</h3> | |
| <div class="fo-card"> | |
| <div class="fo-row"><span class="fo-k">Label</span><span class="fo-v">One of <code>netral</code>, <code>disinformasi</code>, <code>fitnah</code>, or <code>ujaran kebencian</code>.</span></div> | |
| <div class="fo-row"><span class="fo-k">Analisis</span><span class="fo-v">Free-form Indonesian-language reasoning for the classification.</span></div> | |
| </div> | |
| </div> | |
| </details> | |
| <details class="fo-det--sage"> | |
| <summary>Text-Only Mode · dfk_text_dataset</summary> | |
| <div class="fo-drop"> | |
| <p>Text-only classification with explicit system prompt and article references. Uses <code>merge_labels=false</code> (5 classes).</p> | |
| <pre><code><s>[SYSTEM_PROMPT]Anda adalah sistem deteksi konten DFK berbasis artikel rujukan. Tugas Anda adalah membandingkan klaim dengan artikel rujukan, lalu mengklasifikasikan teks ke dalam salah satu label: Fakta, Disinformasi, Fitnah, Ujaran Kebencian, atau Non-DFK. Jawab dengan format: Label: **NamaLabel.** penjelasan: ...[/SYSTEM_PROMPT][INST]{klaim} | |
| Artikel Rujukan: {fakta}[/INST]Label: **{label}.** penjelasan: {analisis}</s></code></pre> | |
| <h3 class="fo-sub">Input Fields</h3> | |
| <div class="fo-card" style="margin-bottom:14px;"> | |
| <div class="fo-row"><span class="fo-k">Klaim</span><span class="fo-v">The claim text to be verified, from the <code>input</code> column (before <code>Artikel Rujukan:</code>).</span></div> | |
| <div class="fo-row"><span class="fo-k">Fakta</span><span class="fo-v">Reference articles for fact-checking, from the <code>input</code> column (after <code>Artikel Rujukan:</code>).</span></div> | |
| </div> | |
| <h3 class="fo-sub">Output Fields</h3> | |
| <div class="fo-card"> | |
| <div class="fo-row"><span class="fo-k">Label</span><span class="fo-v">One of <code>Fakta</code>, <code>Disinformasi</code>, <code>Fitnah</code>, <code>Ujaran Kebencian</code>, or <code>Non-DFK</code>.</span></div> | |
| <div class="fo-row"><span class="fo-k">Penjelasan</span><span class="fo-v">Indonesian-language explanation for the classification decision.</span></div> | |
| </div> | |
| </div> | |
| </details> | |
| </div> | |
| </div> | |
| <div class="fo-div"></div> | |
| <!-- βββ 07 Β· Model Sources βββ --> | |
| <div class="fo-section"> | |
| <div class="fo-shead"> | |
| <span class="fo-snum">07</span> | |
| <span class="fo-stitle">Model Sources</span> | |
| </div> | |
| <div class="fo-sbody"> | |
| <div class="fo-card fo-card--muted"> | |
| <div class="fo-row"><span class="fo-k">Framework</span><span class="fo-v"><a href="https://github.com/aitf-its-tim3-dfk/SITA">SITA</a></span></div> | |
| <div class="fo-row"><span class="fo-k">Base model</span><span class="fo-v"><a href="https://huggingface.co/aitf-komdigi/KomdigiITS-8B-DFK-CPT">aitf-komdigi/KomdigiITS-8B-DFK-CPT</a></span></div> | |
| <div class="fo-row"><span class="fo-k">Multimodal parent</span><span class="fo-v"><a href="https://huggingface.co/aitf-komdigi/KomdigiITS-8B-DFK-MultimodalClassification">KomdigiITS-8B-DFK-MultimodalClassification</a></span></div> | |
| <div class="fo-row"><span class="fo-k">Text parent</span><span class="fo-v"><a href="https://huggingface.co/aitf-komdigi/KomdigiITS-8B-DFK-TextClassification">KomdigiITS-8B-DFK-TextClassification</a></span></div> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="fo-div"></div> | |
| <!-- βββ 08 Β· Framework Versions βββ --> | |
| <div class="fo-section"> | |
| <div class="fo-shead"> | |
| <span class="fo-snum">08</span> | |
| <span class="fo-stitle">Framework Versions</span> | |
| </div> | |
| <div class="fo-sbody"> | |
| <div class="fo-card fo-card--muted"> | |
| <div class="fo-row"><span class="fo-k">Transformers</span><span class="fo-v">5.5.0</span></div> | |
| <div class="fo-row"><span class="fo-k">PyTorch</span><span class="fo-v">2.11.0+cu128</span></div> | |
| <div class="fo-row"><span class="fo-k">Unsloth</span><span class="fo-v">2026.5.5</span></div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </body> | |
| </html> | |