Toy model; nothing serious
  • Rust 54.8%
  • Jupyter Notebook 20.6%
  • Python 16.8%
  • Makefile 7.8%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-08-01 19:00:23 -03:00
preparar_dataset feat: actually outputs stuff 2026-08-01 18:17:49 -03:00
tests feat: actually outputs stuff 2026-08-01 18:17:49 -03:00
.gitignore feat: actual training 2026-07-12 13:05:28 -03:00
arquitetura.odp fix: explain visually 2026-08-01 19:00:23 -03:00
arquitetura.pdf fix: explain visually 2026-08-01 19:00:23 -03:00
arquitetura.png fix: explain visually 2026-08-01 19:00:23 -03:00
LICENSE fix: optimize training speed 2026-07-13 15:51:58 -03:00
makefile feat: actually outputs stuff 2026-08-01 18:17:49 -03:00
nanowiki_split.py feat: actually outputs stuff 2026-08-01 18:17:49 -03:00
plain_pix.py feat: actually outputs stuff 2026-08-01 18:17:49 -03:00
README.md feat: actually outputs stuff 2026-08-01 18:17:49 -03:00
requirements-lean.txt feat: fetches and processes dataset 2026-07-04 21:17:27 -03:00
requirements.txt feat: fetches and processes dataset 2026-07-04 21:17:27 -03:00
treinar_small_language_model.ipynb feat: actually outputs stuff 2026-08-01 18:17:49 -03:00
treinar_tokenizer.py feat: actually outputs stuff 2026-08-01 18:17:49 -03:00

NanoWiki

NanoWiki é uma prova de conceito de modelo de linguagem pequeno, treinado com a Wikipedia em português. O fluxo padrão usa apenas essa fonte, para que a preparação e o treino possam ser repetidos em hardware doméstico.

Fluxo padrão

No Linux, WSL ou macOS, instale pyenv, wget, Rust, CUDA compatível com PyTorch e as ferramentas de compilação necessárias para o llama.cpp. Em seguida, execute as etapas na ordem abaixo:

make run_dataset
make run_tokenizer
make run_train
make run_conversion
make run_inference

make run_dataset baixa wikipedia_pt_all_nopic.zim e extrai a Wikipedia em português em quatro artefatos irmãos: data/processed/wikipedia_pt_full.jsonl, seu índice data/processed/wikipedia_pt_full.jsonl.idx, o texto legível data/processed/wikipedia_pt_full.plain e o índice de texto data/processed/wikipedia_pt_full.pix. O Rust preserva JSONL/IDX para auditoria e combinação interna. O .plain contém um artigo limpo UTF-8 por linha terminada em LF; o .pix guarda pares start/end exclusivos de 16 bytes para acesso aleatório ao texto, sem incluir o LF. O tokenizador e o treino Python consomem somente .plain/.pix.

As etapas seguintes usam estes artefatos, com nomes estáveis e genéricos:

Etapa Artefato
Tokenizador artifacts/nanowiki-tokenizer
Execuções de treino artifacts/nanowiki-model-runs
Modelo no formato Hugging Face artifacts/nanowiki-model-hf
Modelo GGUF BF16 artifacts/nanowiki-model.bf16.gguf

make run_inference chama llama-cli com o GGUF gerado. O alvo instala e usa a cópia do llama.cpp preparada pelo Makefile, portanto não exige que llama-cli já esteja no PATH.

Perfil NanoWiki

O perfil padrão tem exatamente 23.604.096 parâmetros. É um modelo LLaMA-style com dimensão oculta 384, dimensão FFN 1024, 14 camadas, 6 cabeças de atenção e 2 cabeças key-value.

O tokenizador tem vocabulário de 4096 tokens. O contexto de treino é fixado em 256 tokens e o aquecimento dura 1000 passos. Tokens de preenchimento não contribuem para a perda: os rótulos dessas posições recebem -100.

As medições de memória, disco e tempo que descreviam um perfil anterior de cerca de 170M parâmetros não representam o NanoWiki atual. Elas não devem ser usadas para estimar os requisitos deste perfil PoC.

Catálogo de fontes do extrator

As fontes abaixo são um catálogo de capacidades do extrator, obtidas de Kiwix. O extrator continua sabendo processar todos esses ZIMs. Porém, o pipeline padrão de treino usa somente wikipedia_pt_all_nopic.zim.

Se dados de outras fontes já existirem em data/processed, o fluxo padrão os ignora e não os apaga. Eles podem ser usados por fluxos configurados explicitamente para essas fontes.

Fonte Controlador URL Licença SPDX Tamanho
Wikipedia EN Wikimedia https://download.kiwix.org/zim/wikipedia_en_all_nopic.zim CC-BY-SA-4.0 50G
Wikipedia PT Wikimedia https://download.kiwix.org/zim/wikipedia_pt_all_nopic.zim CC-BY-SA-4.0 6.6G
Wiktionary PT Wikimedia https://lb.download.kiwix.org/zim/wiktionary/wiktionary_pt_all_nopic_2026-06.zim CC-BY-SA-4.0 303M
Wiktionary EN Wikimedia https://lb.download.kiwix.org/zim/wiktionary/wiktionary_en_all_nopic_2026-05.zim CC-BY-SA-4.0 8.5G
Stack Overflow em Português Stack Exchange https://lb.download.kiwix.org/zim/stack_exchange/pt.stackoverflow.com_mul_all_2026-02.zim CC-BY-SA-4.0 891M
Stack Overflow em Espanhol Stack Exchange https://lb.download.kiwix.org/zim/stack_exchange/es.stackoverflow.com_mul_all_2026-02.zim CC-BY-SA-4.0 1.4G
Stack Overflow Stack Exchange https://lb.download.kiwix.org/zim/stack_exchange/stackoverflow.com_en_all_2023-11.zim CC-BY-SA-4.0 75G
Super User Stack Exchange https://lb.download.kiwix.org/zim/stack_exchange/superuser.com_en_all_2026-02.zim CC-BY-SA-4.0 3.8G
Web Applications Stack Exchange Stack Exchange https://lb.download.kiwix.org/zim/stack_exchange/webapps.stackexchange.com_en_all_2026-02.zim CC-BY-SA-4.0 276M
Operations Research Stack Exchange Stack Exchange https://lb.download.kiwix.org/zim/stack_exchange/or.stackexchange.com_en_all_2026-02.zim CC-BY-SA-4.0 33M
Software Quality Assurance Stack Exchange Stack Exchange https://lb.download.kiwix.org/zim/stack_exchange/sqa.stackexchange.com_en_all_2026-02.zim CC-BY-SA-4.0 84M
DevOps Stack Exchange Stack Exchange https://lb.download.kiwix.org/zim/stack_exchange/devops.stackexchange.com_en_all_2026-02.zim CC-BY-SA-4.0 34M
Project Management Stack Exchange Stack Exchange https://lb.download.kiwix.org/zim/stack_exchange/pm.stackexchange.com_en_all_2026-02.zim CC-BY-SA-4.0 49M
Information Security Stack Exchange Stack Exchange https://lb.download.kiwix.org/zim/stack_exchange/security.stackexchange.com_en_all_2026-02.zim CC-BY-SA-4.0 420M
Software Engineering Stack Exchange Stack Exchange https://lb.download.kiwix.org/zim/stack_exchange/softwareengineering.stackexchange.com_en_all_2026-02.zim CC-BY-SA-4.0 458M
DevDocs SQLite SQLite Consortium https://lb.download.kiwix.org/zim/devdocs/devdocs_en_sqlite_2026-04.zim blessing 3.4M
OPSEC Bible nihilist https://lb.download.kiwix.org/zim/zimit/privacydefence.org_en_opsecbible_2026-06.zim CC0 163M
Devhints Rico Sta. Cruz https://lb.download.kiwix.org/zim/zimit/devhints.io_en_all_2026-05.zim MIT 3.9M

O catálogo contém 18 fontes: 15 sob CC-BY-SA-4.0, uma sob CC0, uma sob MIT e uma sob blessing. Cada fonte preserva sua licença original. O NanoWiki padrão é treinado somente com a Wikipedia em português, licenciada sob CC-BY-SA-4.0.

Licença do modelo

O modelo de linguagem é licenciado sob a licença CC-BY-SA-4.0, que é compatível com a fonte usada pelo pipeline padrão.

Licença do código gerador do modelo

O código do projeto é licenciado sob a licença CC0, para maximizar a liberdade de uso, modificação e distribuição, de forma que autoria não seja impedimento.

A exceção notória é o diretório preparar_dataset/vendor/zim/ que possui suas próprias licenças em preparar_dataset/vendor/zim/README.md e recebeu correções mínimas para que rodasse neste projeto.

O projeto usa bibliotecas de terceiros que possuem suas licenças próprias; deixo ao usuário a responsabilidade de verificar a compatibilidade das licenças de terceiros com o uso pretendido.