
LLM Legislativo Brasileiro ni Nini?
LLM Legislativo Brasileiro ni mradi wa utafiti na uhandisi wa kutoka mwanzo hadi mwisho wa kujenga modeli ya lugha ya kisababishi inayobobea katika hati za kisheria za Brazili. Unapanga nyenzo rasmi kutoka Baraza la Manaibu na Seneti ya Shirikisho kuwa seti za data huria zinazoweza kukaguliwa, kisha hufunza dekoda ya Transformer kutoka mwanzo kabisa kwa kutumia PyTorch.
Mradi huu hautumii uzani uliofunzwa awali, API zilizofungwa, au mihtasari ya kiwango cha juu cha mafunzo kama Hugging Face Trainer. Muundo wake unasisitiza sayansi huria, uwezeshaji wa kurudia matokeo, ukaguzi wa uadilifu kwa SHA-256, na utenganishaji mkali wa kisababishi kati ya data ya mafunzo, uthibitishaji na majaribio.
Modeli hii ni kazi ya utafiti na elimu. Haipaswi kuchukuliwa kuwa mshauri wa kisheria wa kuaminika kuhusu ukweli au chombo cha kufanya maamuzi ya kikanuni, kwa sababu modeli za lugha za kisababishi zinaweza kubuni sheria, marekebisho, muhtasari na masharti ya kisheria yasiyo halisi.
Sifa Muhimu
- Zaidi ya GiB 360 za data ghafi rasmi, zikiwemo makusanyo ya Baraza na Seneti.
- Zaidi ya hati na matoleo muhimu 930,000, kama vile miswada, marekebisho ya katiba, ripoti, maoni, matoleo mbadala, maandishi ya mwisho na kumbukumbu za vikao.
- Matoleo matano ya seti za data za umma kwenye Hugging Face Hub, yanayojumuisha kumbukumbu ghafi, maandishi yaliyotolewa na data iliyoratibiwa ya Apache Parquet.
- Tokeniza ya BPE ya kiwango cha baiti yenye tokeni 8,192, iliyofunzwa pekee kwa kutumia mgawanyo wa mafunzo.
- Dekoda ya Transformer ya kisababishi iliyo wazi, iliyotekelezwa kwa PyTorch, yenye tabaka sita, vichwa sita vya umakini, uwakilishi fiche wa vipimo 384 na dirisha la muktadha la tokeni 512.
- Uunganishaji wa uzani kati ya tabaka za upachikaji wa tokeni na makadirio ya matokeo.
- Ujumuishaji sahihi wa gradienti kulingana na jumla ya idadi ya malengo halali, unaozuia makosa ya uzani yanayosababishwa na kujaza nafasi katika mfuatano tofauti.
- Migawanyo bainifu ya data ya 80/10/10 kulingana na vitambulishi vya familia za kisheria, inayozuia hati zinazohusiana kuvuka mipaka ya mafunzo na majaribio.
- Uzani wa modeli wa umma katika umbizo la
safetensors, pamoja na tokeniza, usanidi, vipimo na msimbo wa pekee wa kufanya makisio.
Elewa Data na Mchakato wa Mafunzo
Hazina hii inagawanya mradi katika hatua maalumu. Orodha rasmi za Baraza na Seneti hukusanywa na kupakuliwa kupitia michakato thabiti na inayoweza kuendeshwa tena bila kurudia kazi. Faili ghafi hubaki nje ya Git, huku metadata nyepesi, miundo ya data na faili za usanidi zikiwekewa matoleo.
Kwenye macOS, adapta asilia ya Swift ya kutoa maandishi hutumia PDFKit kwa hati zilizo na maandishi yaliyopachikwa. Kurasa zilizochanganuliwa au zenye msongamano mdogo wa maandishi hupelekwa kwenye OCR ya Apple Vision. Maandishi yanayotokana huandaliwa katika R kwa kutumia uondoaji nakala sahihi wa SHA-256, utambuzi wa ujumuishaji wa vifungu na grafu ya kimataifa ya familia za kisheria iliyojengwa kwa igraph.
Kila pendekezo, marekebisho, ripoti, maoni na toleo mbadala linalohusishwa na mchakato uleule wa kisheria hupewa family_id sawa. Hashi bainifu ya kitambulishi hicho huweka familia nzima kwenye mafunzo, uthibitishaji au majaribio. Hii huzuia matoleo yanayohusiana kuvuja kati ya migawanyo ya tathmini.
Baada ya kugawa data, hatua ya kutengeneza tokeni kwa Python hufunza msamiati wa BPE wa kiwango cha baiti wenye tokeni 8,192 kwa kutumia data ya mafunzo pekee. Inasaidia lafudhi za Kireno, alama za kisheria kama vile §, º, ª na Art., pamoja na tarakimu na herufi nyingine maalumu. Data iliyotengenezwa tokeni huandikwa kwenye vipande vya binary vyenye faharasa za madirisha ya tokeni 512.
Sanidi Hazina
1. Nakili mradi
Hazina hii inahitaji Python 3.9 au toleo jipya zaidi. Inakili na uingie kwenye saraka ya mradi:
git clone https://github.com/BaruqueRodrigues/llm-legislativo.git
cd llm-legislativo2. Unda mazingira ya mtandaoni
Kutumia mazingira ya mtandaoni huweka vitegemezi vya mradi vimetenganishwa na mfumo wako mwingine:
python3 -m venv .venv
source .venv/bin/activate3. Sakinisha kifurushi
Sakinisha hazina katika hali ya kuhaririwa ili mabadiliko ya ndani ya msimbo wa chanzo yapatikane mara moja:
pip install -e .Hazina hii inajumuisha kifurushi cha Python chini ya src/legislm/, faili za kufunga mazingira ya msingi na CPU, metadata ya R ya kurudia matokeo, usanidi wa kimaelezo, daftari, hati za mstari wa amri na mkusanyiko wa majaribio.
Thibitisha Usakinishaji
Kabla ya kujaribu makisio ya modeli au mafunzo makubwa, endesha majaribio ya kiotomatiki hapa nchini kwenye CPU:
pytest tests/ -qREADME inaripoti zaidi ya majaribio 135 ya vitengo na mikataba yanayohusu tabia ya modeli, uhifadhi, utengenezaji wa tokeni na tathmini. Uendeshaji wenye mafanikio huthibitisha kuwa violesura vya msingi vinafanya kazi bila kuhitaji korpasi kamili ya mamia ya gigabaiti au GPU ya A100.
Pakia Modeli Iliyotolewa
Modeli iliyofunzwa inapatikana kwenye hazina ya BaruqRodrigues/llm-legislativo. Mfano ufuatao hupakua uzani na tokeniza, huunda upya usanifu na hupakia kamusi ya hali ya safetensors.
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
# Download the model artifacts
weights_path = hf_hub_download(
repo_id="BaruqRodrigues/llm-legislativo",
filename="model.safetensors"
)
tokenizer_path = hf_hub_download(
repo_id="BaruqRodrigues/llm-legislativo",
filename="tokenizer.json"
)
# Recreate the tokenizer and model configuration
tokenizer = Tokenizer.from_file(tokenizer_path)
config = ModelConfig(
vocab_size=8192,
context_length=512,
d_model=384,
n_layers=6,
n_heads=6,
tie_embeddings=True
)
model = GPTModel(config)
# Load the trained parameters
state_dict = load_file(weights_path)
model.load_state_dict(state_dict)
model.eval()Unda Maandishi ya Kisheria
Baada ya kupakia modeli, encode kidokezo cha kisheria cha Kireno na uite mbinu ya modeli ya kutengeneza maandishi. Mfano huu unatumia mwanzo mfupi wa mswada na unaomba tokeni mpya zisizozidi 64.
prompt = "PROJETO DE LEI Nº , DE 2026\n\nDispõe sobre"
input_ids = torch.tensor(
[tokenizer.encode(prompt).ids],
dtype=torch.long
)
with torch.no_grad():
output_ids = model.generate(
input_ids,
max_new_tokens=64,
temperature=0.7,
top_k=40,
eos_token_id=2
)
print(tokenizer.decode(output_ids[0].tolist()))Modeli hutumia urefu wa juu wa muktadha wa tokeni 512. Katika mfano huu, temperature=0.7 hudhibiti utofauti wa sampuli na top_k=40 hupunguza sampuli hadi wagombea 40 wenye uwezekano mkubwa zaidi. Rekebisha thamani hizi unapofanya majaribio, huku ukikumbuka kwamba maandishi yanayotengenezwa ni matokeo ya kitakwimu, si maudhui ya kisheria yaliyothibitishwa.
Chunguza Seti za Data za Umma
Mradi huchapisha hatua kadhaa za korpasi kwenye Hugging Face Hub:
- corpus-legislativo-pretraining: toleo lililounganishwa na kuratibiwa katika muundo wa Parquet, lenye sehemu za mafunzo, uthibitishaji na majaribio zilizopangwa kulingana na familia.
- camara-corpus-raw: kumbukumbu ghafi za TAR za Baraza la Manaibu na orodha za SHA-256.
- camara-corpus-text: uchanganuzi uliopangwa wa maandishi ya Baraza, ukiwa na uhakiki wa ubora.
- senado-corpus-raw: orodha za Seneti ya Shirikisho na data msingi.
- senado-corpus-text: hati na kurasa za Seneti zilizoratibiwa katika muundo wa safu wima wa Parquet.
Matoleo haya yanawezesha kuchunguza mradi katika hatua mbalimbali za mchakato, kuanzia kumbukumbu chanzi na maandishi yaliyotolewa hadi matriki za mwisho za mafunzo.
Rudia au Panua Mafunzo
Utekelezaji wa mafunzo unapatikana katika src/legislm/training/, huku uwekaji wa tokeni na utengenezaji wa vipande ukiwa chini ya src/legislm/tokenization/. Mipangilio imehifadhiwa katika configs/, na mtiririko wa kazi wa Google Colab umetolewa katika notebooks/ na src/legislm/colab/.
Uendeshaji wa mafunzo uliochapishwa ulitumia mazingira ya NVIDIA A100-SXM4-40GB na ukakamilisha masasisho 173,209 ya uboreshaji ndani ya takribani saa 20. Ulichakata takribani tokeni bilioni 1.25 kwa kutumia AdamW, kipangaji cha cosine chenye upashaji joto wa mstari wa hatua 2,000, usahihi mchanganyiko wa FP16, na uhifadhi wa checkpoint kupitia Google Drive.
Kwa majaribio yanayoweza kurudiwa, weka tokenizer ikiwa imezuiwa kwenye sehemu ya mafunzo, hifadhi utaratibu wa mgawanyo wa kubainisha kulingana na familia, na dumisha orodha za SHA-256 pamoja na metadata ya checkpoint za hazina. Maelezo haya ni muhimu ili kuzuia kuvuja kwa data na kulinganisha matokeo kwa usawa.
Tathmini Matokeo kwa Usahihi
Mradi unafafanua itifaki sanifu ya tathmini ya byte_nll_v1 kwenye sehemu huru ya majaribio yenye hati 71,069 na takribani baiti milioni 482. Matokeo yaliyoripotiwa yanajumuisha hasara ya wastani ya 2.1065 kwa kila lengo halali, perplexity ya tokeni ya 8.2197, na perplexity ya maneno ya 65.6509.
Matokeo yaliyosawazishwa ya kiwango cha baiti ni nati 0.7297 kwa baiti, au biti 1.0528 kwa baiti. Thamani zilizoripotiwa ni nati 0.7049 kwa baiti kwa mkusanyo wa Baraza na 0.8817 kwa mkusanyo wa Seneti. Unapolinganisha majaribio yajayo, tumia mantiki ileile ya mgawanyo na ufafanuzi uleule wa tathmini badala ya kutegemea perplexity ya tokeni pekee.
Muundo wa Hazina
Saraka kuu zinaonyesha mahali pa kuangalia unapobadilisha au kuchunguza mfumo:
R/: orodha rasmi ya data, upakuaji, ujumuishaji wa uchimbaji na uratibu.src/legislm/: msimbo wa tokenizer, modeli, mafunzo, uhifadhi wa Colab na tathmini.schemas/: mikataba ya data ya Arrow na JSON Schema.configs/: mipangilio ya data, uratibu, mafunzo na Colab.notebooks/: mtiririko wa kazi wa majaribio na kamili wa Google Colab.scripts/: sehemu za kuanzia za mstari wa amri zinazoweza kutekelezwa.tests/: majaribio ya vitengo na mikataba.docs/: nyaraka za kanuni, mikataba na ripoti.
Vidokezo Muhimu vya Kina
- Anza na majaribio: Uthibitishaji wa CPU ni njia ya gharama ndogo ya kuthibitisha usakinishaji kabla ya kupakua seti kubwa za data au kuomba rasilimali za GPU.
- Hifadhi mipaka ya familia: usiwahi kuunda migawanyo ya nasibu ya kiwango cha hati ikiwa unataka matokeo yanayoweza kulinganishwa na mradi, kwa sababu matoleo kutoka mchakato mmoja wa kutunga sheria yanaweza kuhusiana kwa karibu.
- Funza tokeniza baada ya kugawanya: kuhesabu takwimu za msamiati kwa kutumia data ya uthibitishaji au majaribio kungeathiri vidhibiti vya uvujaji wa data vya mradi.
- Fuatilia malengo halali: unapotumia mfuatano uliojazwa, kusanya entropia-mtambuka kwa jumla ya malengo halali katika mafungu madogo.
- Weka vizalia nje ya Git: hazina huweka kwa makusudi metadata na skimu katika udhibiti wa matoleo badala ya faili ghafi za jozi, uzani wa modeli na kache.
- Tumia matoleo ya umma kwa ukaguzi: seti za data ghafi, zilizotolewa na zilizoratibiwa kwenye Hub hukuwezesha kuchunguza hatua mahususi za mchakato bila kuunda upya mchakato mzima wa ukusanyaji.
- Tafsiri vizazi kwa tahadhari: lugha ya kisheria iliyozalishwa inaweza kuonekana kuwa yenye mantiki huku ikiwa na marejeo au vifungu vilivyobuniwa.
Hitimisho
LLM Legislativo Brasileiro inaonyesha njia kamili na inayoweza kukaguliwa kutoka kwenye hifadhi rasmi za sheria hadi kwenye modeli maalumu ya lugha ya kisababishi. Baada ya kusakinisha kifurushi na kuendesha majaribio yake, unaweza kupakia tokeniza iliyotolewa pamoja na modeli ya PyTorch, kuzalisha maandishi, kukagua seti za data za umma, na kuchunguza mbinu za uhifadhi na mafunzo za hazina zinazostahimili uvujaji wa data. Msimbo wake wenye leseni ya MIT pamoja na vizalia vilivyochapishwa wazi vinatoa msingi muhimu wa utafiti kuhusu uundaji wa modeli za lugha ya sheria kwa Kireno.
