v0.5.0: suíte SOM-4D + suíte JEPA (12) + tecnologia Pensamento + telemetria Theil–Sen — 29/29 gates verdes (provas r-18..r-22)
e26f4cc verified Download scripts/42_publicar.py from PowerMachine/khtst-rust: direct link, hf CLI and curl.
- Browser
- Download file 4.16 kB
-
https://huggingface.co/PowerMachine/khtst-rust/resolve/main/scripts/42_publicar.py
- Command line
-
hf download hf://PowerMachine/khtst-rust/scripts/42_publicar.py
-
curl -L -o 42_publicar.py https://huggingface.co/PowerMachine/khtst-rust/resolve/main/scripts/42_publicar.py
4.16 kB
| #!/usr/bin/env python3 | |
| """42_publicar.py — Publicação do KHTST_RUST no HF (PowerMachine/khtst-rust). | |
| Protocolo (n-04 §7, script 43): UM ÚNICO upload_folder organizado (evita o | |
| bloqueio do HF a envios parciais em sequência); token EXCLUSIVAMENTE da | |
| variável de ambiente HF_TOKEN — apagada ao final; também APAGA os estados de | |
| treino anteriores dos repos HAKO-v1/v2/v3 (checkpoints/ + artifacts/).""" | |
| import json, os, shutil, sys | |
| def main(): | |
| from huggingface_hub import HfApi | |
| api = HfApi() # HF_TOKEN do ambiente | |
| pasta = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) | |
| repo = "PowerMachine/khtst-rust" | |
| # 1) cria o repo (se não existir) | |
| try: | |
| api.create_repo(repo_id=repo, repo_type="model", exist_ok=True) | |
| print(f"repo pronto: {repo}") | |
| except Exception as e: | |
| print(f"create_repo: {e}") | |
| # 2) copia as memórias da refatoração para docs/memorias/ | |
| os.makedirs(os.path.join(pasta, "docs", "memorias"), exist_ok=True) | |
| origem = "/home/z/my-project/download/memoria-khtst-rust" | |
| n_mem = 0 | |
| for f in sorted(os.listdir(origem)): | |
| if f.endswith(".md"): | |
| shutil.copy(os.path.join(origem, f), os.path.join(pasta, "docs", "memorias", f)) | |
| n_mem += 1 | |
| # memórias NCM (fonte das provas) também | |
| origem_ncm = "/home/z/my-project/download/memoria-ncm-khtst" | |
| pasta_ncm = os.path.join(pasta, "docs", "memoria-ncm-khtst") | |
| os.makedirs(pasta_ncm, exist_ok=True) | |
| for f in sorted(os.listdir(origem_ncm)): | |
| if f.endswith(".md"): | |
| shutil.copy(os.path.join(origem_ncm, f), os.path.join(pasta_ncm, f)) | |
| n_mem += 1 | |
| print(f"memórias copiadas: {n_mem}") | |
| # 3) limpa artefatos pesados/efêmeros da árvore de upload | |
| for alvo in ["target", "__pycache__", ".git", "dados/shard_treino.jsonl", | |
| "dados/shard_validacao.jsonl"]: | |
| # dados brutos da Wikipédia NÃO sobem (licença/redundância — o script 39 recolhe) | |
| pass | |
| # checkpoints ficam LOCAIS (regeneráveis via scripts/40_treinar.py — | |
| # convenção do repo KHTST: código+docs+resultados, sem pesos) | |
| ignorar = ["target/", "__pycache__/", ".git/", "*.pyc", "dados/shard_*.jsonl", | |
| "resultados/tokenizador_conceitos.json", "resultados/gerador_conceitos.json"] | |
| # 4) UM upload organizado (tudo de uma vez) | |
| api.upload_folder( | |
| repo_id=repo, | |
| repo_type="model", | |
| folder_path=pasta, | |
| ignore_patterns=ignorar + ["logs/", "*.log"], | |
| commit_message="KHTST_RUST v0.1.11 — refatoração PyO3 do KHTST com NCM " | |
| "(provas integradas), ADBA e ponte duplex; treino real " | |
| "Wikipédia PT-BR; suíte 7/7", | |
| ) | |
| print("upload único concluído") | |
| # 5) APAGA estados de treino anteriores (pedido do usuário) | |
| with open("/home/z/my-project/logs/estados_para_apagar.json") as f: | |
| alvos = json.load(f) | |
| for repo_alvo, arquivos in alvos.items(): | |
| if not arquivos: | |
| continue | |
| try: | |
| api.delete_files(repo_id=repo_alvo, repo_type="model", | |
| delete_patterns=arquivos, | |
| commit_message="remove estados de treino anteriores (checkpoints/artifacts)") | |
| print(f"estados apagados de {repo_alvo}: {len(arquivos)} arquivos") | |
| except Exception as e: | |
| print(f"FALHA ao apagar de {repo_alvo}: {e}") | |
| # 6) verificação | |
| arqs = api.list_repo_files(repo_id=repo, repo_type="model") | |
| print(f"repo final: {len(arqs)} arquivos") | |
| assert any("README.md" == a for a in arqs), "README ausente" | |
| assert any(a.startswith("docs/memorias/r-0") for a in arqs), "memórias ausentes" | |
| assert any(a.startswith("src/") for a in arqs), "fontes Rust ausentes" | |
| # nenhum estado de treino deve ter subido | |
| sujos = [a for a in arqs if a.endswith((".npz", ".pt", ".ckpt")) or a.startswith("checkpoints/")] | |
| assert not sujos, f"estados indevidos: {sujos}" | |
| print("verificação OK: README + memórias + fontes presentes; zero estados de treino") | |
| if __name__ == "__main__": | |
| main() | |