Text Generation
GGUF
Japanese
japanese
instruction-tuning
little-language-model
tiny-language-model
edge-ai
embedded-ai
ex-word
llama-cpp
lm-studio
custom-code
conversational
Instructions to use ToTo-40417/EXLLM with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- llama.cpp
How to use ToTo-40417/EXLLM with llama.cpp:
Install (macOS, Linux)
curl -LsSf https://llama.app/install.sh | sh # Start a local OpenAI-compatible server with a web UI: llama serve -hf ToTo-40417/EXLLM:F16 # Run inference directly in the terminal: llama cli -hf ToTo-40417/EXLLM:F16
Install from WinGet (Windows)
winget install llama.cpp # Start a local OpenAI-compatible server with a web UI: llama serve -hf ToTo-40417/EXLLM:F16 # Run inference directly in the terminal: llama cli -hf ToTo-40417/EXLLM:F16
Build from source code
git clone https://github.com/ggml-org/llama.cpp.git cd llama.cpp cmake -B build cmake --build build -j --target llama-app # Start a local OpenAI-compatible server with a web UI: ./build/bin/llama serve -hf ToTo-40417/EXLLM:F16 # Run inference directly in the terminal: ./build/bin/llama cli -hf ToTo-40417/EXLLM:F16
Use Docker
docker model run hf.co/ToTo-40417/EXLLM:F16
- Llama new
- LM Studio
- Jan
- vLLM
How to use ToTo-40417/EXLLM with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "ToTo-40417/EXLLM" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "ToTo-40417/EXLLM", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/ToTo-40417/EXLLM:F16
- Ollama
How to use ToTo-40417/EXLLM with Ollama:
ollama run hf.co/ToTo-40417/EXLLM:F16
- Unsloth Desktop
- Docker Model Runner
How to use ToTo-40417/EXLLM with Docker Model Runner:
docker model run hf.co/ToTo-40417/EXLLM:F16
- Lemonade
How to use ToTo-40417/EXLLM with Lemonade:
Pull the model
# Download Lemonade from https://lemonade-server.ai/ lemonade pull ToTo-40417/EXLLM:F16
Run and chat with the model
lemonade run user.EXLLM-F16
List all available models
lemonade list
- Atomic Chat
ToTo-40417 commited on
Publish EXQ12 and 5M lineage metadata
Browse files- DATA_PROVENANCE.md +7 -2
- EXQ12_FORMAT.md +33 -0
- README.md +3 -1
- config-v1.0.json +9 -0
- tools/export_exq12.py +91 -0
- training/release-5m-stages.json +104 -0
- training/release-5m.json +4 -2
- weights/EXLLM-v1.0.0.safetensors +3 -0
DATA_PROVENANCE.md
CHANGED
|
@@ -5,13 +5,18 @@
|
|
| 5 |
EXLLM-0.005B-Instruct is a project-original model with 0.005377824B unique trainable parameters.
|
| 6 |
|
| 7 |
1. The EXLLM project originates from random initialization.
|
| 8 |
-
2. The current 0.005B release was expanded from
|
| 9 |
3. Additional staged training used only project-generated Japanese instruction/response data.
|
| 10 |
4. Corrective datasets were added in response to regression failures.
|
| 11 |
5. The final fp32 checkpoint was exported to EXLLM8 and EXQ12 deployment formats.
|
| 12 |
|
| 13 |
No external pretrained checkpoint was used. The model is not a distillation or quantization of a third-party LLM.
|
| 14 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 15 |
## Training data
|
| 16 |
|
| 17 |
The project contains 0.086408M JSONL records across its published staged files. This number is the sum of file records, not a deduplicated training-example count. The files include overlapping base, validation, robustness, recovery, balance, consistency, and final corrective stages.
|
|
@@ -35,7 +40,7 @@ No external public text dataset was imported into the published project corpus.
|
|
| 35 |
|---|---|
|
| 36 |
| Parameters | 0.005377824B |
|
| 37 |
| Global step | 1,810 |
|
| 38 |
-
| Initialization |
|
| 39 |
| Final corrective source | `EXLLM-v1.1-5m-release2.pt` |
|
| 40 |
| Final corrective data | `v1_1_release_fix.jsonl` |
|
| 41 |
| Final corrective steps | 100 |
|
|
|
|
| 5 |
EXLLM-0.005B-Instruct is a project-original model with 0.005377824B unique trainable parameters.
|
| 6 |
|
| 7 |
1. The EXLLM project originates from random initialization.
|
| 8 |
+
2. The current 0.005B release was expanded from the published project-owned `weights/EXLLM-v1.0.0.safetensors` checkpoint by transplanting dimension-compatible parameters.
|
| 9 |
3. Additional staged training used only project-generated Japanese instruction/response data.
|
| 10 |
4. Corrective datasets were added in response to regression failures.
|
| 11 |
5. The final fp32 checkpoint was exported to EXLLM8 and EXQ12 deployment formats.
|
| 12 |
|
| 13 |
No external pretrained checkpoint was used. The model is not a distillation or quantization of a third-party LLM.
|
| 14 |
|
| 15 |
+
The direct parent hash and every 5M training stage are recorded in
|
| 16 |
+
[`training/release-5m-stages.json`](training/release-5m-stages.json). The source
|
| 17 |
+
repository contains the complete datasets and `tools/replay_5m.py`. EXQ12 is
|
| 18 |
+
deterministically generated from EXLLM8 by `tools/export_exq12.py`.
|
| 19 |
+
|
| 20 |
## Training data
|
| 21 |
|
| 22 |
The project contains 0.086408M JSONL records across its published staged files. This number is the sum of file records, not a deduplicated training-example count. The files include overlapping base, validation, robustness, recovery, balance, consistency, and final corrective stages.
|
|
|
|
| 40 |
|---|---|
|
| 41 |
| Parameters | 0.005377824B |
|
| 42 |
| Global step | 1,810 |
|
| 43 |
+
| Initialization | Published project-owned v1.0 checkpoint transplantation |
|
| 44 |
| Final corrective source | `EXLLM-v1.1-5m-release2.pt` |
|
| 45 |
| Final corrective data | `v1_1_release_fix.jsonl` |
|
| 46 |
| Final corrective steps | 100 |
|
EXQ12_FORMAT.md
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# EXQ12 deployment format
|
| 2 |
+
|
| 3 |
+
`model.q12` is produced deterministically from the published EXLLM8 file by
|
| 4 |
+
`tools/export_exq12.py`. It contains the same 39 tensors in the order stored by
|
| 5 |
+
EXLLM8. The EX-word runtime uses integer matrix weights and fixed-point scales;
|
| 6 |
+
the file is not GGUF and is not interchangeable with EXLLM8.
|
| 7 |
+
|
| 8 |
+
## Header
|
| 9 |
+
|
| 10 |
+
- 8 bytes: `EXQ12\0\0\0`
|
| 11 |
+
- little-endian `uint32`: format version (`1`)
|
| 12 |
+
- little-endian `uint32`: tensor count (`39` for the 5M release)
|
| 13 |
+
|
| 14 |
+
Each tensor record contains a little-endian `uint16` name length, `uint8`
|
| 15 |
+
dimension count, `uint8` qtype, UTF-8 name bytes, `uint32` dimensions, `uint32`
|
| 16 |
+
scale count, `uint32` payload byte count, optional scale data, and the payload.
|
| 17 |
+
|
| 18 |
+
- qtype `1`: signed int8 matrix payload; one signed Q20 `int32` scale per row.
|
| 19 |
+
- qtype `3`: signed Q12 `int16` vector payload; no separate scale table.
|
| 20 |
+
|
| 21 |
+
## Reproduce the release artifact
|
| 22 |
+
|
| 23 |
+
```bash
|
| 24 |
+
python tools/export_exq12.py
|
| 25 |
+
```
|
| 26 |
+
|
| 27 |
+
Expected result:
|
| 28 |
+
|
| 29 |
+
```text
|
| 30 |
+
bytes: 5443105
|
| 31 |
+
sha256: d64037fde791e5c0e48101bc1a8ab366a3287f1f36b4464879e36495ea7e5a53
|
| 32 |
+
tensors: 39
|
| 33 |
+
```
|
README.md
CHANGED
|
@@ -73,6 +73,7 @@ The published staged files include overlapping base, robustness, recovery, and c
|
|
| 73 |
|
| 74 |
Data scope and weight lineage are documented in [`DATA_PROVENANCE.md`](DATA_PROVENANCE.md).
|
| 75 |
The machine-readable release metadata is available in [`training/release-5m.json`](training/release-5m.json).
|
|
|
|
| 76 |
|
| 77 |
## Inference Performance
|
| 78 |
|
|
@@ -168,9 +169,10 @@ print(answer(model, tokenizer, "RAMとは何ですか?", temperature=0.0))
|
|
| 168 |
| `weights/EXLLM-v1.1-5m-release3.pt` | 21,526,737 bytes (20.53 MiB; 0.021526737 GB) | `48ad00c6640689595a253fc949cad83f3000e14cccdf69275fcf245e85be3ceb` | fp32 PyTorch checkpoint |
|
| 169 |
| `weights/EXLLM-v1.1-5m-int8.bin` | 5,443,105 bytes (5.19 MiB; 0.005443105 GB) | `3b2bf2d9f103cba714bc98976709c5ad34860c1ff55fed2fce91fc95afb5b34a` | EXLLM8 interchange artifact |
|
| 170 |
| `weights/model.q12` | 5,443,105 bytes (5.19 MiB; 0.005443105 GB) | `d64037fde791e5c0e48101bc1a8ab366a3287f1f36b4464879e36495ea7e5a53` | EX-word EXQ12 artifact |
|
|
|
|
| 171 |
| `EXLLM-0.005B-LMStudio-F16.gguf` | 10,915,168 bytes (10.41 MiB; 0.010915168 GB) | `0e3c519d4a044fac45be84dc607eb8a43de4a7c60083983bf246c5b9c8a43472` | Separately trained Llama-compatible F16 companion for LM Studio / llama.cpp |
|
| 172 |
|
| 173 |
-
EXLLM8 and EXQ12 have the same file size but are not interchangeable formats.
|
| 174 |
|
| 175 |
## Intended Use
|
| 176 |
|
|
|
|
| 73 |
|
| 74 |
Data scope and weight lineage are documented in [`DATA_PROVENANCE.md`](DATA_PROVENANCE.md).
|
| 75 |
The machine-readable release metadata is available in [`training/release-5m.json`](training/release-5m.json).
|
| 76 |
+
The direct v1.0 parent and exact 5M stage parameters and hashes are published in [`training/release-5m-stages.json`](training/release-5m-stages.json). The source repository provides all staged datasets and `tools/replay_5m.py`.
|
| 77 |
|
| 78 |
## Inference Performance
|
| 79 |
|
|
|
|
| 169 |
| `weights/EXLLM-v1.1-5m-release3.pt` | 21,526,737 bytes (20.53 MiB; 0.021526737 GB) | `48ad00c6640689595a253fc949cad83f3000e14cccdf69275fcf245e85be3ceb` | fp32 PyTorch checkpoint |
|
| 170 |
| `weights/EXLLM-v1.1-5m-int8.bin` | 5,443,105 bytes (5.19 MiB; 0.005443105 GB) | `3b2bf2d9f103cba714bc98976709c5ad34860c1ff55fed2fce91fc95afb5b34a` | EXLLM8 interchange artifact |
|
| 171 |
| `weights/model.q12` | 5,443,105 bytes (5.19 MiB; 0.005443105 GB) | `d64037fde791e5c0e48101bc1a8ab366a3287f1f36b4464879e36495ea7e5a53` | EX-word EXQ12 artifact |
|
| 172 |
+
| `weights/EXLLM-v1.0.0.safetensors` | 4,905,568 bytes (4.68 MiB; 0.004905568 GB) | `caad6a93aa2a8f6f2b525c4671dc8d2f8e4328d262a093172a55c672cd4e24c9` | Direct project-owned parent of the 5M expansion |
|
| 173 |
| `EXLLM-0.005B-LMStudio-F16.gguf` | 10,915,168 bytes (10.41 MiB; 0.010915168 GB) | `0e3c519d4a044fac45be84dc607eb8a43de4a7c60083983bf246c5b9c8a43472` | Separately trained Llama-compatible F16 companion for LM Studio / llama.cpp |
|
| 174 |
|
| 175 |
+
EXLLM8 and EXQ12 have the same file size but are not interchangeable formats. Rebuild and verify `model.q12` with `python tools/export_exq12.py`; see [`EXQ12_FORMAT.md`](EXQ12_FORMAT.md).
|
| 176 |
|
| 177 |
## Intended Use
|
| 178 |
|
config-v1.0.json
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"vocab_size": 868,
|
| 3 |
+
"max_seq_len": 128,
|
| 4 |
+
"d_model": 160,
|
| 5 |
+
"n_layers": 4,
|
| 6 |
+
"n_heads": 5,
|
| 7 |
+
"d_ff": 512,
|
| 8 |
+
"rms_eps": 1e-05
|
| 9 |
+
}
|
tools/export_exq12.py
ADDED
|
@@ -0,0 +1,91 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/usr/bin/env python3
|
| 2 |
+
"""Convert the published EXLLM8 artifact to the EX-word EXQ12 format."""
|
| 3 |
+
|
| 4 |
+
import argparse
|
| 5 |
+
import hashlib
|
| 6 |
+
import json
|
| 7 |
+
import struct
|
| 8 |
+
from pathlib import Path
|
| 9 |
+
|
| 10 |
+
MAGIC_IN = b"EXLLM8\0\0"
|
| 11 |
+
MAGIC_OUT = b"EXQ12\0\0\0"
|
| 12 |
+
|
| 13 |
+
|
| 14 |
+
def read_exllm8(path):
|
| 15 |
+
raw = path.read_bytes()
|
| 16 |
+
if raw[:8] != MAGIC_IN:
|
| 17 |
+
raise ValueError("input is not EXLLM8")
|
| 18 |
+
offset = 8
|
| 19 |
+
version, count = struct.unpack_from("<II", raw, offset)
|
| 20 |
+
offset += 8
|
| 21 |
+
if version != 1:
|
| 22 |
+
raise ValueError(f"unsupported EXLLM8 version: {version}")
|
| 23 |
+
records = []
|
| 24 |
+
for _ in range(count):
|
| 25 |
+
name_len, ndim, qtype = struct.unpack_from("<HBB", raw, offset)
|
| 26 |
+
offset += 4
|
| 27 |
+
name = raw[offset : offset + name_len]
|
| 28 |
+
offset += name_len
|
| 29 |
+
dims = struct.unpack_from("<" + "I" * ndim, raw, offset)
|
| 30 |
+
offset += 4 * ndim
|
| 31 |
+
scale_count, payload_bytes = struct.unpack_from("<II", raw, offset)
|
| 32 |
+
offset += 8
|
| 33 |
+
scales = struct.unpack_from("<" + "f" * scale_count, raw, offset) if scale_count else ()
|
| 34 |
+
offset += 4 * scale_count
|
| 35 |
+
payload = raw[offset : offset + payload_bytes]
|
| 36 |
+
offset += payload_bytes
|
| 37 |
+
records.append((name, qtype, dims, scales, payload))
|
| 38 |
+
if offset != len(raw):
|
| 39 |
+
raise ValueError("trailing bytes in EXLLM8 input")
|
| 40 |
+
return records
|
| 41 |
+
|
| 42 |
+
|
| 43 |
+
def convert(source, output):
|
| 44 |
+
records = read_exllm8(source)
|
| 45 |
+
with output.open("wb") as stream:
|
| 46 |
+
stream.write(MAGIC_OUT)
|
| 47 |
+
stream.write(struct.pack("<II", 1, len(records)))
|
| 48 |
+
for name, qtype, dims, scales, payload in records:
|
| 49 |
+
if qtype == 1:
|
| 50 |
+
fixed_scales = [max(1, min(0x7FFFFFFF, round(scale * (1 << 20)))) for scale in scales]
|
| 51 |
+
output_qtype = 1
|
| 52 |
+
elif qtype == 2:
|
| 53 |
+
values = struct.unpack("<" + "e" * (len(payload) // 2), payload)
|
| 54 |
+
payload = struct.pack(
|
| 55 |
+
"<" + "h" * len(values),
|
| 56 |
+
*(max(-32768, min(32767, round(value * 4096))) for value in values),
|
| 57 |
+
)
|
| 58 |
+
fixed_scales = []
|
| 59 |
+
output_qtype = 3
|
| 60 |
+
else:
|
| 61 |
+
raise ValueError(f"unsupported EXLLM8 qtype: {qtype}")
|
| 62 |
+
stream.write(struct.pack("<HBB", len(name), len(dims), output_qtype))
|
| 63 |
+
stream.write(name)
|
| 64 |
+
stream.write(struct.pack("<" + "I" * len(dims), *dims))
|
| 65 |
+
stream.write(struct.pack("<II", len(fixed_scales), len(payload)))
|
| 66 |
+
if fixed_scales:
|
| 67 |
+
stream.write(struct.pack("<" + "i" * len(fixed_scales), *fixed_scales))
|
| 68 |
+
stream.write(payload)
|
| 69 |
+
return len(records)
|
| 70 |
+
|
| 71 |
+
|
| 72 |
+
def main():
|
| 73 |
+
parser = argparse.ArgumentParser()
|
| 74 |
+
parser.add_argument("--input", type=Path, default=Path("weights/EXLLM-v1.1-5m-int8.bin"))
|
| 75 |
+
parser.add_argument("--output", type=Path, default=Path("weights/model.q12"))
|
| 76 |
+
parser.add_argument(
|
| 77 |
+
"--expect-sha256",
|
| 78 |
+
default="d64037fde791e5c0e48101bc1a8ab366a3287f1f36b4464879e36495ea7e5a53",
|
| 79 |
+
)
|
| 80 |
+
args = parser.parse_args()
|
| 81 |
+
args.output.parent.mkdir(parents=True, exist_ok=True)
|
| 82 |
+
tensor_count = convert(args.input, args.output)
|
| 83 |
+
digest = hashlib.sha256(args.output.read_bytes()).hexdigest()
|
| 84 |
+
result = {"output": str(args.output), "bytes": args.output.stat().st_size, "sha256": digest, "tensors": tensor_count}
|
| 85 |
+
print(json.dumps(result, indent=2))
|
| 86 |
+
if args.expect_sha256 and digest != args.expect_sha256:
|
| 87 |
+
raise SystemExit("EXQ12 SHA-256 mismatch")
|
| 88 |
+
|
| 89 |
+
|
| 90 |
+
if __name__ == "__main__":
|
| 91 |
+
main()
|
training/release-5m-stages.json
ADDED
|
@@ -0,0 +1,104 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"schema": "exllm-training-stages-v1",
|
| 3 |
+
"scope": "Direct lineage from the published v1.0 project checkpoint through the 5M release",
|
| 4 |
+
"seed_policy": {
|
| 5 |
+
"expansion": 20260923,
|
| 6 |
+
"corrective_stages": 20260924,
|
| 7 |
+
"corrective_sampling": "20260924 + input checkpoint global_step"
|
| 8 |
+
},
|
| 9 |
+
"parent": {
|
| 10 |
+
"checkpoint": "weights/EXLLM-v1.0.0.safetensors",
|
| 11 |
+
"sha256": "caad6a93aa2a8f6f2b525c4671dc8d2f8e4328d262a093172a55c672cd4e24c9",
|
| 12 |
+
"config": "config-v1.0.json",
|
| 13 |
+
"origin": "Earlier in-project EXLLM release trained from random initialization",
|
| 14 |
+
"external_pretrained_checkpoint": null
|
| 15 |
+
},
|
| 16 |
+
"input_artifacts": {
|
| 17 |
+
"config-v1.0.json": "4f8ec8792299a5a4a7b6f636748779ccc2f7e3f16cbfa180865ab572c793a090",
|
| 18 |
+
"tokenizer.json": "4c2a583b554e8165936cb3b11727f79d2ede43b73d416a48681f8d38385f5964",
|
| 19 |
+
"data/mix.jsonl": "3cbf8c724def49546c56c457fd3dc5b33feced6309b8a13c3a1cac904d44e51a",
|
| 20 |
+
"data/valid.jsonl": "63cb1a220df46ddc013410858d5dd2ee851529960cb9c1bf1ab78988c0205899",
|
| 21 |
+
"data/final_consistent.jsonl": "e76a5cc604b29296aae811bebfffd1db59f95c06360fd1c70cb8c93bdb46f20b",
|
| 22 |
+
"data/v1_1_release_fix.jsonl": "f8426b9eef53e0eb597d6b9572bf0439a2bd2c01617e588110f28b3f361cd2d7"
|
| 23 |
+
},
|
| 24 |
+
"stages": [
|
| 25 |
+
{
|
| 26 |
+
"name": "expand-and-train-5m",
|
| 27 |
+
"runner": "src.train_large",
|
| 28 |
+
"input": "weights/EXLLM-v1.0.0.safetensors",
|
| 29 |
+
"output": "weights/EXLLM-v1.1-5m.pt",
|
| 30 |
+
"output_sha256": "03cf2db5795871920911300b9f980f3fac6a27a590ae537866c2fdcbbe2fb0d0",
|
| 31 |
+
"data": "data/mix.jsonl",
|
| 32 |
+
"valid": "data/valid.jsonl",
|
| 33 |
+
"epochs": 8,
|
| 34 |
+
"batch": 128,
|
| 35 |
+
"threads": 8,
|
| 36 |
+
"learning_rate": 0.0005,
|
| 37 |
+
"d_model": 288,
|
| 38 |
+
"layers": 6,
|
| 39 |
+
"heads": 9,
|
| 40 |
+
"d_ff": 896
|
| 41 |
+
},
|
| 42 |
+
{
|
| 43 |
+
"name": "fix1",
|
| 44 |
+
"runner": "src.finetune",
|
| 45 |
+
"input": "weights/EXLLM-v1.1-5m.pt",
|
| 46 |
+
"output": "weights/EXLLM-v1.1-5m-fix1.pt",
|
| 47 |
+
"output_sha256": "39a5136b12cb13ad9e1d8d20d7d802b6b78ca1a5b68a82ffc5baed79101c79ba",
|
| 48 |
+
"data": "data/final_consistent.jsonl",
|
| 49 |
+
"steps": 800,
|
| 50 |
+
"batch": 64,
|
| 51 |
+
"threads": 8,
|
| 52 |
+
"learning_rate": 0.00012
|
| 53 |
+
},
|
| 54 |
+
{
|
| 55 |
+
"name": "final",
|
| 56 |
+
"runner": "src.finetune",
|
| 57 |
+
"input": "weights/EXLLM-v1.1-5m-fix1.pt",
|
| 58 |
+
"output": "weights/EXLLM-v1.1-5m-final.pt",
|
| 59 |
+
"output_sha256": "26fc9c588a30eba71eef062720a967337a155435dd02e2595a54b735f0178865",
|
| 60 |
+
"data": "data/v1_1_release_fix.jsonl",
|
| 61 |
+
"steps": 500,
|
| 62 |
+
"batch": 32,
|
| 63 |
+
"threads": 8,
|
| 64 |
+
"learning_rate": 0.00006
|
| 65 |
+
},
|
| 66 |
+
{
|
| 67 |
+
"name": "release",
|
| 68 |
+
"runner": "src.finetune",
|
| 69 |
+
"input": "weights/EXLLM-v1.1-5m-final.pt",
|
| 70 |
+
"output": "weights/EXLLM-v1.1-5m-release.pt",
|
| 71 |
+
"output_sha256": "35468acd4b962dc8fd64d7f6ae4bbf6d3245e03236d1b3562278251deed31204",
|
| 72 |
+
"data": "data/v1_1_release_fix.jsonl",
|
| 73 |
+
"steps": 250,
|
| 74 |
+
"batch": 32,
|
| 75 |
+
"threads": 8,
|
| 76 |
+
"learning_rate": 0.000025
|
| 77 |
+
},
|
| 78 |
+
{
|
| 79 |
+
"name": "release2",
|
| 80 |
+
"runner": "src.finetune",
|
| 81 |
+
"input": "weights/EXLLM-v1.1-5m-release.pt",
|
| 82 |
+
"output": "weights/EXLLM-v1.1-5m-release2.pt",
|
| 83 |
+
"output_sha256": "22e5c171bdb0cce094648d25c3768d0a0291797aa18d5ef833d812e6010a2d84",
|
| 84 |
+
"data": "data/v1_1_release_fix.jsonl",
|
| 85 |
+
"steps": 160,
|
| 86 |
+
"batch": 32,
|
| 87 |
+
"threads": 8,
|
| 88 |
+
"learning_rate": 0.000012
|
| 89 |
+
},
|
| 90 |
+
{
|
| 91 |
+
"name": "release3",
|
| 92 |
+
"runner": "src.finetune",
|
| 93 |
+
"input": "weights/EXLLM-v1.1-5m-release2.pt",
|
| 94 |
+
"output": "weights/EXLLM-v1.1-5m-release3.pt",
|
| 95 |
+
"output_sha256": "48ad00c6640689595a253fc949cad83f3000e14cccdf69275fcf245e85be3ceb",
|
| 96 |
+
"data": "data/v1_1_release_fix.jsonl",
|
| 97 |
+
"steps": 100,
|
| 98 |
+
"batch": 32,
|
| 99 |
+
"threads": 8,
|
| 100 |
+
"learning_rate": 0.000006
|
| 101 |
+
}
|
| 102 |
+
],
|
| 103 |
+
"determinism_note": "Commands, seeds and inputs are preserved. Bit-for-bit identity can still vary with PyTorch, BLAS, CPU and platform; compare every output SHA-256 with this manifest."
|
| 104 |
+
}
|
training/release-5m.json
CHANGED
|
@@ -8,9 +8,11 @@
|
|
| 8 |
"global_step": 1810,
|
| 9 |
"lineage": {
|
| 10 |
"project_origin": "random initialization",
|
| 11 |
-
"release_parent": "
|
|
|
|
| 12 |
"expansion": "dimension-compatible parameter transplantation",
|
| 13 |
-
"external_pretrained_checkpoint": null
|
|
|
|
| 14 |
},
|
| 15 |
"architecture": {
|
| 16 |
"vocab_size": 868,
|
|
|
|
| 8 |
"global_step": 1810,
|
| 9 |
"lineage": {
|
| 10 |
"project_origin": "random initialization",
|
| 11 |
+
"release_parent": "weights/EXLLM-v1.0.0.safetensors",
|
| 12 |
+
"release_parent_sha256": "caad6a93aa2a8f6f2b525c4671dc8d2f8e4328d262a093172a55c672cd4e24c9",
|
| 13 |
"expansion": "dimension-compatible parameter transplantation",
|
| 14 |
+
"external_pretrained_checkpoint": null,
|
| 15 |
+
"stage_manifest": "training/release-5m-stages.json"
|
| 16 |
},
|
| 17 |
"architecture": {
|
| 18 |
"vocab_size": 868,
|
weights/EXLLM-v1.0.0.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:caad6a93aa2a8f6f2b525c4671dc8d2f8e4328d262a093172a55c672cd4e24c9
|
| 3 |
+
size 4905568
|