🚀 印度法律领域微调版Mistral-7B模型
这是Mistral 7B
模型的微调版本,借助参数高效微调(PEFT)技术,结合QLoRA和LoRA方法,针对印度法律相关内容的理解与回复生成进行了优化。
🚀 快速开始
安装依赖
使用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 = "What is the penalty for using forged document? "
inputs = tokenizer(text, return_tensors="pt")
outputs = model.generate(**inputs, max_length=200)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
模型指标
运行pip install transformers datasets torch
,使用支持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: {perplexity}")
print(f"Total tokens: {total_tokens}")
print(f"Total loss: {total_loss}")
else:
print("Error: No tokens processed. Check dataset or tokenization.")
✨ 主要特性
模型详情
属性 |
详情 |
任务类型 |
法律文本理解与生成 |
微调数据集 |
自定义印度法律语料库(jizzu/llama2_indian_law_v3) |
微调方法 |
结合QLoRA和LoRA的PEFT |
困惑度得分 |
37.32 |
基础模型仓库 |
mistralai/Mistral-7B-v0.1 |
适用范围说明
- 对于高度模糊的法律查询或非印度法律体系的问题,模型可能表现不佳。
- 困惑度表明,通过扩展训练或数据,模型有进一步提升的潜力。
🔧 技术细节
硬件使用情况
- 硬件类型:NVIDIA GeForce RTX 4050笔记本GPU
- 使用时长:24:19:47
模型架构
- 基础模型:
Mistral 7B
(基于Transformer的语言模型,拥有70亿参数)
- 架构特点:
- 仅解码器的Transformer结构,包含多头自注意力层。
- 32层,隐藏层大小为4096,16个注意力头(继承自Mistral 7B)。
- 采用低秩自适应(LoRA)层进行高效微调。
- 微调方法:
- PEFT:参数高效微调,减少内存占用。
- QLoRA:量化LoRA,使用4位量化高效调整权重。
- 微调参数:LoRA针对特定权重矩阵进行调整,基础模型大部分参数保持冻结。
软件环境
- CUDA:PyTorch - 2.6.0+cu126
📄 许可证
本模型遵循MIT许可证。
📚 详细文档
模型卡片联系方式
- 邮箱:drewjay05@gmail.com
- GitHub:github.com/ajay-drew
- 领英:linkedin.com/in/ajay-a-133b1326a/
框架版本