BaruqueRodrigues/llm-legislativo

Corpus legislativo brasileiro em larga escala e modelo Transformer causal treinado do zero em PyTorch puro.

🏛️ 巴西立法语言模型 – 快速概览

它是什么:一个研究级、开源的因果语言模型(仅解码器Transformer),从头开始在巴西国会(众议院和参议院)的整个公共立法语料库上训练。该项目完全内部构建数据管道、分词器、模型架构、训练循环和评估,仅使用PyTorch(不使用Hugging Face Trainer)和一些辅助工具。

关键组件

  • 数据:超过360 GiB的原始TAR归档(约93万份文档),涵盖法案、修正案、报告、投票等。数据被下载、OCR处理(Swift + Apple Vision)、去重、链接成相关立法文本的“家族”,并确定性分割(80/10/10),训练/验证/测试之间零泄漏。
  • 分词器:字节级BPE,词汇表8192个token,仅在训练分割上训练。
  • 模型:纯PyTorch Transformer解码器(6层,6头,d-model = 384,上下文 = 512个token)。实现权重绑定、GELU和分析缩放交叉熵损失以正确处理填充。
  • 训练:在NVIDIA A100(Google Colab)上进行173k步,处理12.5亿个token。检查点使用SHA-256哈希保存,以实现密码学可审计性。
  • 评估:使用自定义的byte_nll_v1指标(约0.73 nats/字节,1.05 bits/字节)在71k文档的保留测试集上,报告每个token的困惑度约为8-9。
  • 工件:所有数据集(原始、提取、精选)和最终模型(safetensors、分词器、配置)都公开托管在Hugging Face Hub上。

如何使用

import torch
from huggingface_hub import hf_hub_download
from safetensors.torch import load_file
from legislm.model.gpt import GPTModel
from legislm.model.config import ModelConfig
from tokenizers import Tokenizer

# 下载模型和分词器
weights = hf_hub_download('BaruqRodrigues/llm-legislativo', 'model.safetensors')
tokenizer_file = hf_hub_download('BaruqRodrigues/llm-legislativo', 'tokenizer.json')

# 设置模型
cfg = ModelConfig(vocab_size=8192, context_length=512, d_model=384,
                  n_layers=6, n_heads=6, tie_embeddings=True)
model = GPTModel(cfg)
model.load_state_dict(load_file(weights))
model.eval()

tokenizer = Tokenizer.from_file(tokenizer_file)
prompt = "PROJETO DE LEI Nº , DE 2026\n\nDispõe sobre"
ids = torch.tensor([tokenizer.encode(prompt).ids])

with torch.no_grad():
    out = model.generate(ids, max_new_tokens=64, temperature=0.7, top_k=40)
print(tokenizer.decode(out[0].tolist()))

该代码直接加载预训练权重,无需额外库,可以生成葡萄牙语立法风格文本。

为什么重要

  • 展示了大规模领域特定语言建模的全栈、可复现管道。
  • 提供了一个罕见的、公开可用的在国家立法语料库上训练的模型,可用于法律语言、政策分析或构建下游工具(例如文档摘要、问答)的研究——不用于法律建议。
  • 强调科学严谨性:密码学完整性检查、确定性分割和透明评估。

伦理说明 该模型捕捉立法起草的统计模式,但可能产生幻觉事实。它绝不应取代合格的法律顾问。


许可证:代码为MIT;源文档是巴西公共领域立法文本。

相关

  • 项目
  • 项目
  • 项目
  • 项目