Views
No views yet
unsloth/Qwen3-8B, dilatih untuk berperan sebagai Promo Intelligence Agent: agent tool-calling multi-turn yang menghasilkan Pilot Experiment Decision berdasarkan data penjualan, partner produk, dan analisis kelayakan (BEP) suatu promo.unsloth/Qwen3-8BSFTTrainer)qwen3-instruct), dengan <|im_end|> sebagai EOS tokenassistant (train_on_responses_only), instruksi/user di-maskload_in_4bit=True)| Parameter | Nilai |
|---|---|
r | 64 |
lora_alpha | 128 |
lora_dropout | 0.0 |
target_modules | q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj |
use_rslora | True |
bias | none |
| Parameter | Nilai |
|---|---|
max_seq_length | 2048 |
num_train_epochs | 3 |
per_device_train_batch_size | 1 |
gradient_accumulation_steps | 4 (effective batch = 4) |
learning_rate | 2e-4 |
lr_scheduler_type | cosine |
warmup_ratio | 0.03 |
optimizer | adamw_8bit |
precision | bf16 (fallback fp16 bila GPU tidak mendukung bf16) |
seed | 3407 |
eval/save strategy | per-epoch, load_best_model_at_end=True (metric: eval_loss) |
project: qwen3-8b-promo-agent-sft).promo_agent_dataset_v2.jsonl untuk Promo Intelligence Agent. Tiap baris JSONL berisi:messages: percakapan ChatML (system / user / assistant dengan tool_calls, serta role tool)tools: skema function-calling (search_sales_data, find_partner_products, calculate_bep, rank_regions)meta: metadata skenario (tidak dipakai saat training, hanya untuk analisis)happy_path, clarification_path, fail_path_tool_error_retry, fail_path_cold_start, fail_path_infeasible, fail_path_tool_unavailable, refresh_path_revision, refresh_path_session_continuation, refusal_out_of_scope.Catatan: skrip preprocessing di notebook training menghitung ukuran split train/validation secara otomatis (raw_datasets["train"]/raw_datasets["validation"]) — sesuaikan angka pastinya di sini kalau kamu tahu rasio split yang dipakai (mis. 90/10 dari total ±900 contoh).
1from unsloth import FastLanguageModel
2
3model, tokenizer = FastLanguageModel.from_pretrained(
4 model_name="Adicandra/Compfest_akumaukePengospasangsolarpanel",
5 max_seq_length=2048,
6 dtype=None,
7 load_in_4bit=True,
8)
9FastLanguageModel.for_inference(model)
10
11messages = [
12 {"role": "system", "content": "Kamu adalah Promo Intelligence Agent..."},
13 {"role": "user", "content": "Analisis kelayakan promo diskon 20% di region Jawa Timur."},
14]
15
16inputs = tokenizer.apply_chat_template(
17 messages,
18 tools=tools, # skema tools jika dipakai
19 add_generation_prompt=True,
20 return_tensors="pt",
21).to(model.device)
22
23outputs = model.generate(inputs, max_new_tokens=512)
24print(tokenizer.decode(outputs[0], skip_special_tokens=True))transformers + peft:1from transformers import AutoModelForCausalLM, AutoTokenizer
2from peft import PeftModel
3
4base_model = "unsloth/Qwen3-8B"
5adapter_id = "Adicandra/Compfest_akumaukePengospasangsolarpanel"
6
7tokenizer = AutoTokenizer.from_pretrained(adapter_id)
8model = AutoModelForCausalLM.from_pretrained(base_model, device_map="auto")
9model = PeftModel.from_pretrained(model, adapter_id)eval_loss pada validation set internal.