license: gemma
datasets:
- Alaeddin/wikipedia-turkish
language:
- tr
metrics:
- perplexity
base_model:
- google/gemma-2-9b
pipeline_tag: text-generation
library_name: peft
tags:
- continue_pre_train
emre/gemma-2-9b-Turkish-Lora-Continue-Pre-Trained
模型详情
模型描述
该模型是基于google/gemma-2-9b
基础模型继续预训练的版本,训练数据来自土耳其语维基百科数据集(Alaeddin/wikipedia-turkish
)。通过低秩自适应(LoRA)技术对模型进行高效微调,使其适应土耳其语。该模型旨在提升基础模型对土耳其文本的理解和生成能力。
模型来源
用途
直接使用
本模型可用于多种土耳其语自然语言处理任务的文本生成,例如:
- 文本生成
- 语言建模
- 创意写作
- 基于土耳其文本的问答(需适当提示)
适用于对土耳其语大语言模型感兴趣的研究者、开发者和爱好者。
下游任务
该模型可作为土耳其语特定下游任务的强基础模型,例如:
- 土耳其文本摘要
- 土耳其问答系统
- 土耳其文本分类
- 土耳其对话生成
非适用场景
本模型不得用于生成有害、不道德或带有偏见的内容。由于训练数据来自大规模文本语料,模型可能无意中生成此类内容。用户部署时应保持谨慎和责任感。
偏见、风险与局限性
模型训练数据来自土耳其维基百科,可能包含原始数据中的偏见。模型性能会因具体任务和领域而异。用户应充分了解这些限制,并根据实际用例进行全面评估。
建议
用户应仔细评估模型输出,在真实应用场景中部署前考虑潜在偏见。在特定任务和多样化的土耳其数据集上进行进一步微调有助于缓解部分局限性。
训练详情
训练数据
使用Alaeddin/wikipedia-turkish数据集:
- 训练集: 1,620,000段落
- 验证集: 1,000段落(与训练集无重叠)
训练过程
使用Hugging Face Trainer
API在Google Colab Pro+(A100 GPU 40GB)上训练,关键配置包括:
- 量化: 4-bit NF4类型及双量化(
BitsAndBytesConfig
)
- LoRA配置:
- 秩(
r
): 8
- Alpha值(
lora_alpha
): 32
- 目标模块:
q_proj
, v_proj
- Dropout率: 0.1
- 训练参数:
- 训练轮次: 1
- 有效批大小: 8(
per_device_train_batch_size=2
, gradient_accumulation_steps=4
)
- 学习率: 2e-5
- 调度器: 带500步预热的线性调度
- 混合精度: FP16
- 评估频率: 每5,000步
- 总步数: 202,500
训练超参数
- 训练模式: FP16混合精度
- 优化器: AdamW(融合实现)
速度、规模与时长
- 训练时长: 约110小时
- 硬件: A100 GPU(40GB)
- 可训练参数: 4,472,832(占总参数9,246,178,816的0.0484%)
评估
测试数据、因素与指标
测试数据
土耳其维基百科数据集中预留的1,000段验证集。
评估指标
- 验证损失: 衡量模型在验证集上的预测误差
- 困惑度: 反映模型预测下一词元的能力(值越低越好)
结果
模型 |
验证损失 |
困惑度 |
预训练核心(Gemma-2-9b) |
2.5168 |
12.39 |
继续预训练(LoRA) |
2.1027 |
8.19 |
LoRA适配模型在土耳其文本上显著优于基础模型。
环境影响
使用Machine Learning Impact计算器估算碳排放:
- 硬件类型: A100 GPU(40GB)
- 使用时长: 110小时
- 云服务商: Google Colab
- 计算区域: 未知(按us-central1估算)
- 碳排放量: ~22kg CO2eq(基于44kWh,0.5kg CO2/kWh)
注:实际排放量取决于计算区域的能源结构。
快速开始
使用transformers
和peft
库加载模型:
from transformers import AutoTokenizer, AutoModelForCausalLM
from peft import PeftModel
import torch
model_name = "google/gemma-2-9b"
peft_model_id = "emre/gemma-2-9b-Turkish-Lora-Continue-Pre-Trained"
tokenizer = AutoTokenizer.from_pretrained(model_name)
bnb_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_use_double_quant=True,
bnb_4bit_compute_dtype=torch.float16
)
base_model = AutoModelForCausalLM.from_pretrained(
model_name,
quantization_config=bnb_config,
device_map="auto",
torch_dtype=torch.float16,
attn_implementation="eager"
)
model = PeftModel.from_pretrained(base_model, peft_model_id)
model.eval()
if torch.cuda.is_available():
model = model.to("cuda")
prompt = "Türkiye'nin başkenti neresidir?"
input_ids = tokenizer(prompt, return_tensors="pt").to(model.device)
with torch.no_grad():
outputs = model.generate(**input_ids, max_new_tokens=50, num_return_sequences=1)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
引用
@misc{tasar2023gemma2turkish,
author = {Davut Emre Tasar},
title = {Gemma-2-9b土耳其语LoRA继续预训练模型},
year = {2025},
publisher = {Hugging Face},
howpublished = {\url{https://huggingface.co/emre/gemma-2-9b-Turkish-Lora-Continue-Pre-Trained}}
}