基础模型: mistralai/Mistral-7B-v0.1
库名称: peft
许可证: mit
数据集:
- jizzu/llama2_indian_law_v3
语言:
- en
评估指标:
- 困惑度
管道标签: 问答
标签:
- 印度法律
- 法律领域
- 文本生成推理
- 问答系统
印度法律专用微调版Mistral-7B模型
这是Mistral 7B
模型的微调版本,采用参数高效微调技术(PEFT)结合QLoRA和LoRA方法,专门针对印度法律领域的理解与应答进行了优化。
模型详情
- 任务类型: 法律文本理解与生成
- 微调数据集: 定制印度法律语料库(jizzu/llama2_indian_law_v3)
- 微调方法: QLoRA与LoRA结合的PEFT技术
- 困惑度得分: 37.32
- 源仓库: mistralai/Mistral-7B-v0.1
非适用场景
- 对高度模糊的法律查询或非印度法律体系可能表现欠佳
- 困惑度指标表明可通过延长训练或扩充数据进一步提升
快速使用指南
安装依赖:pip install transformers peft torch
(建议使用CUDA版torch)
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel
model_name = "ajay-drew/midtral-7b-indian-law"
tokenizer = AutoTokenizer.from_pretrained(model_name)
base_model = AutoModelForCausalLM.from_pretrained("mistralai/Mixtral-7B-v0.1")
model = PeftModel.from_pretrained(base_model, model_name)
text = "使用伪造文件会面临什么处罚?"
inputs = tokenizer(text, return_tensors="pt")
outputs = model.generate(**inputs, max_length=200)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
评估指标
安装依赖后运行以下代码测试困惑度(建议使用CUDA版torch加速计算):
from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig
from datasets import load_dataset
import torch
dataset = load_dataset("kshitij230/Indian-Law", split="train")
quantization_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_compute_dtype=torch.float16
)
model_name = "ajay-drew/Mistral-7B-Indian-Law"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
model_name,
quantization_config=quantization_config,
device_map="auto"
)
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model.eval()
total_loss = 0
total_tokens = 0
test_texts = dataset['Instruction'][:500]
with torch.no_grad():
for text in test_texts:
inputs = tokenizer(text, return_tensors="pt", truncation=True, max_length=512).to(device)
outputs = model(**inputs, labels=inputs["input_ids"])
loss = outputs.loss
if loss is not None:
total_loss += loss.item() * inputs["input_ids"].size(1)
total_tokens += inputs["input_ids"].size(1)
if total_tokens > 0:
perplexity = torch.exp(torch.tensor(total_loss / total_tokens)).item()
print(f"困惑度: {perplexity}")
print(f"总token数: {total_tokens}")
print(f"总损失值: {total_loss}")
else:
print("错误: 未处理任何token,请检查数据集或分词过程")
硬件配置
- 硬件类型: NVIDIA GeForce RTX 4050笔记本GPU
- 训练时长: 24小时19分47秒
模型架构
- 基础模型:
Mistral 7B
(70亿参数量的Transformer架构模型)
- 架构细节:
- 纯解码器结构,配备多头自注意力机制
- 继承Mistral 7B的32层网络,4096隐藏层维度,16个注意力头
- 通过低秩适应(LoRA)层实现高效微调
- 微调策略:
- PEFT: 参数高效微调以降低内存占用
- QLoRA: 量化版LoRA,采用4位量化高效调整权重
- 微调参数: 通过LoRA针对特定权重矩阵调整,保持基础模型大部分参数冻结
软件环境
- CUDA版本: PyTorch - 2.6.0+cu126
联系方式
- 邮箱: drewjay05@gmail.com
- GitHuB: github.com/ajay-drew
- 领英: linkedin.com/in/ajay-a-133b1326a/
框架版本