--- language: - zh - nan license: apache-2.0 base_model: yentinglin/Taiwan-LLM-7B-v2.1-chat tags: - taiwanese - taigi - reading-comprehension - lora - peft library_name: peft --- # Taiwan-LLM Taigi Reading Comprehension LoRA 台語閱讀理解任務的 LoRA adapter,基於 Taiwan-LLM-7B-v2.1-chat 微調。 ## 模型效能 - **Test Accuracy**: 73.33% - **Validation Loss**: 0.573 (最佳 checkpoint) - **Baseline**: 53.7% (2020 競賽最佳成績) - **提升**: +19.63 百分點 ## 模型資訊 - **基礎模型**: yentinglin/Taiwan-LLM-7B-v2.1-chat - **訓練任務**: 台語閱讀理解多選題 - **訓練資料**: 13,550 筆台語文章 + 12,195 筆 Alpaca 台語對話 - **LoRA Rank**: 32 - **LoRA Alpha**: 32 - **Target Modules**: q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj ## 使用方法 ### 安裝依賴 ```bash pip install transformers peft torch unsloth ``` ### 載入模型 ```python from unsloth import FastLanguageModel from peft import PeftModel # 1. 載入基礎模型 base_model, tokenizer = FastLanguageModel.from_pretrained( model_name="yentinglin/Taiwan-LLM-7B-v2.1-chat", max_seq_length=2048, dtype=None, load_in_4bit=True, ) # 2. 載入 LoRA adapter model = PeftModel.from_pretrained( base_model, "YOUR_USERNAME/taiwan-llm-taigi-lora" # 記得改成你的用戶名 ) # 3. 切換到推論模式 FastLanguageModel.for_inference(model) ``` ### 推論範例 ```python # 準備 prompt prompt = """USER: 請仔細閱讀以下台文文章,並回答問題。 文章: 明年元旦起,交通部新規定,汽車輪胎胎紋深度將納入定期檢驗項之一,一旦深度未達一.六公厘,佮一個月內無換胎,將會去予吊銷牌仔照。 問題:汽車胎紋未到達多毫米將會予人吊銷牌? 選項: 1. 一.五公厘 2. 一.四厘 3. 一.三公厘 4. 一.六公厘 請回答: ASSISTANT:""" # 生成答案 inputs = tokenizer(prompt, return_tensors="pt").to("cuda") outputs = model.generate( **inputs, max_new_tokens=10, temperature=0.1, do_sample=False, ) answer = tokenizer.decode(outputs[0], skip_special_tokens=True) print(answer) # 輸出: 4 ``` ## 訓練細節 ### 訓練超參數 - Epochs: 3 - Learning Rate: 2e-4 → 5e-5 (cosine decay) - Batch Size: 16 (4 per device × 4 gradient accumulation) - Optimizer: AdamW 8-bit - Weight Decay: 0.01 - Warmup Ratio: 0.1 ### LoRA 配置 ```python { "r": 32, "lora_alpha": 32, "lora_dropout": 0.05, "bias": "none", "target_modules": [ "q_proj", "k_proj", "v_proj", "o_proj", "gate_proj", "up_proj", "down_proj" ] } ``` ### 訓練過程 - Total Steps: ~45,500 - Best Checkpoint: Step 30,000-31,000 - Training Loss: 1.697 → 0.428 - Validation Loss: 1.741 → 0.506 ## 訓練曲線 最佳驗證點在 Step 30,000 左右,之後出現輕微過擬合。 ## 限制 - 僅適用於台語閱讀理解任務 - 需要特定的 prompt 格式(USER: ... ASSISTANT:) - 繼承 Taiwan-LLM-7B 的所有限制 - 對於非台語文本可能表現不佳 ## 授權 Apache 2.0 ## 致謝 - 基礎模型: [Taiwan-LLM](https://huggingface.co/yentinglin/Taiwan-LLM-7B-v2.1-chat) - 訓練框架: [Unsloth](https://github.com/unslothai/unsloth)