--- library_name: pytorch tags: - agillm - transformer - diffusion-block - single-file license: other --- # AGILLM3.5 Single File AGILLM3.5 is the AGILLM3 checkpoint/tokenizer contract running on the AGILLM4 runtime and DiffusionBlock training path. The runnable artifact is `agillm35.py`. The helper modules are folded into that one file so the runtime can be cloned, inspected, and launched without restoring the whole AGILLM4 source tree. ## Public Join Scripts `public_join/agillm35_network_host.py` starts a signed-lease HTTPS coordinator for people who want to run their own network. `public_join/agillm35_join_worker.py` is an outbound-only worker for untrusted joiners. It requests short-lived leases, verifies package hashes, runs a local worker command, and submits results to quarantine rather than exposing SSH or writing directly into the master merge path. ## Distributed Inference `distributed_infer/agillm35_distributed_infer.py` is a single-file distributed AR inference harness for the real AGILLM3.5 transformer. It splits contiguous transformer/DiffusionBlock layer ranges across local or HTTP worker stages, using the actual `Block` implementation and MoE FFNs from the checkpoint config. Plan layer ranges: ```bash python distributed_infer/agillm35_distributed_infer.py plan \ --agillm35-path ./agillm35.py \ --ckpt /path/to/master.pt \ --dblock-blocks 8 ``` Start a worker for one layer range: ```bash AGILLM35_INFER_TOKEN='change-me' python distributed_infer/agillm35_distributed_infer.py worker \ --agillm35-path ./agillm35.py \ --ckpt /path/to/master.pt \ --start-layer 0 \ --end-layer 12 \ --host 0.0.0.0 \ --port 9100 ``` Run the coordinator: ```bash AGILLM35_INFER_TOKEN='change-me' python distributed_infer/agillm35_distributed_infer.py infer \ --agillm35-path ./agillm35.py \ --ckpt /path/to/master.pt \ --prompt "Hello" \ --max-new 32 \ --cache-mode kv \ --stage https://worker-a.example:9100,0,12 \ --stage local:12:24 ``` Network tensor payloads use a small raw tensor wire format rather than unpickling remote worker responses. Use TLS plus a bearer token for workers exposed beyond localhost. `--cache-mode kv` is the default and keeps per-session KV state on each worker after the prompt prefill, so decode steps send only the new hidden token through the pipeline. `--cache-mode full` is kept for comparison/debugging. SAT/NAT distributed decoding is a later phase. For inference against the live round-299 checkpoint, prefer the HF inference-slim artifact `distributed/inference/master_r299_20260602-205914_ar_infer_slim.pt`; it drops optimizer/SAT/disaggregated training state while preserving AR transformer inference. ## Defaults - tokenizer: `deepseek-ai/DeepSeek-V3.2` - preset: `large` (`d=1024`, `layers=24`, `heads=16`, `rank=128`) - compatibility mode: `--agillm3_compat` - NAT head/objective: disabled for AGILLM3 checkpoint compatibility - DiffusionBlocks: available with `--dblock` ## Commands ```bash python agillm35.py --help python agillm35.py status --ckpt /path/to/pretrain_step00051081.pt python agillm35.py infer --ckpt /path/to/pretrain_step00051081.pt --prompt "Hello" ``` ## Example ```bash python agillm35.py train \ --agillm3_compat \ --preset large \ --resume /path/to/pretrain_step00051081.pt \ --block 512 \ --batch_size 1 \ --source HuggingFaceFW/fineweb-edu \ --save_dir ckpts \ --dblock \ --dblock_blocks 8 \ --nat_every 0 \ --dblock_nat_weight 0 ``` ## Notes This repository contains code only, not AGILLM3 checkpoint weights. DiffusionBlock logs report raw CE-style `loss` plus the actual EDM-weighted training objective as `weighted`. The weighted value is the optimization target; the raw value is the sanity-check number to compare with ordinary AR/SAT loss. The Linux smoke test compiles the single file and completes a one-step synthetic training save. The full AGILLM3.5 continuation run is managed separately by the disaggregated Hetzner worker setup.