trtd56 commited on
Commit
6f645f3
·
verified ·
1 Parent(s): 48a0628

Release phase6 staging

Browse files
README.md ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: apache-2.0
3
+ language:
4
+ - ja
5
+ tags:
6
+ - historical
7
+ - text-generation
8
+ datasets:
9
+ - trtd56/TimeCapsuleLLM-ja-corpus-v4
10
+ ---
11
+
12
+ # TimeCapsuleLLM-ja phase6
13
+
14
+ 1868–1945年に限定した日本語コーパスからゼロから学習したdecoder-only GPTです。現代の知識や安全性を備えたチャットモデルではありません。
15
+
16
+
17
+
18
+ ## 学習データと評価
19
+
20
+ 対応データセットは `trtd56/TimeCapsuleLLM-ja-corpus-v4` です。青空文庫の時代・権利フィルタ通過作品と、1945年以前刊行かつPDMであるNDL OCR品質通過資料を使用しました。test作品はフェーズ間で固定しています。
21
+
22
+
23
+
24
+ - Parameters: 1,046,066,688
25
+ - Processed tokens: 11,875,123,200
26
+ - Training iterations: 45,300
27
+
28
+ - 戦前test BPB: 0.9683
29
+ - 現代文control BPB: 1.6044
30
+ - 自動生成rubric: 100.0%
31
+
32
+ 詳細な設定、checksum、固定プローブ出力は同梱の `training_config.yaml`、`artifact_manifest.json`、`evaluation.json` を参照してください。
33
+
34
+ ## 推論
35
+
36
+ `python inference.py '文明開化とは'` を実行してください。必要パッケージは `torch`, `tokenizers`, `safetensors` です。
37
+
38
+ ### safetensorsの重み共有について
39
+
40
+ 入力埋め込みと出力射影は重みを共有しています(weight tying)。safetensorsは同一メモリを指す
41
+ テンソルを重複して保存できないため、**`transformer.wte.weight` はファイルに含まれず
42
+ `lm_head.weight` のみが保存されます**。同梱の `inference.py` は `safetensors.torch.load_model`
43
+ を使っており、`GPT` が読み込み後に重みを結び直すのでそのまま動作します。
44
+ 自分でstate_dictを読む場合は `strict=False` を指定し、読み込み後に
45
+ `model.transformer.wte.weight.data_ptr() == model.lm_head.weight.data_ptr()` を
46
+ 確認してください。これを怠ると埋め込みが未初期化のまま推論することになります。
47
+
48
+ ## 限界
49
+
50
+ 小型モデルであり、事実誤認、反復、OCR由来の誤字、歴史的な差別表現を生成し得ます。医療・法律・金融その他の意思決定には使用しないでください。
artifact_manifest.json ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "files": [
3
+ {
4
+ "path": "README.md",
5
+ "bytes": 2165,
6
+ "sha256": "6fd088824424f1744be85ee4c0ed2c987abf711b62b2c6aaf59d94dd89d2b8fc"
7
+ },
8
+ {
9
+ "path": "config.json",
10
+ "bytes": 134,
11
+ "sha256": "81a7b3ac292c6735a1cd0377ba43b4e7bb942ea9d81208e43b8ff87714e9b865"
12
+ },
13
+ {
14
+ "path": "evaluation.json",
15
+ "bytes": 5219,
16
+ "sha256": "f89830b289d82c8481828c9dd4ce91bda0ea12cd6a6f6100c1a05a2cb6b2fb81"
17
+ },
18
+ {
19
+ "path": "generation_config.json",
20
+ "bytes": 82,
21
+ "sha256": "c8956e566ededf5439aaee15fe39b79cd811169721ace680b1090ebf5c679b88"
22
+ },
23
+ {
24
+ "path": "inference.py",
25
+ "bytes": 609,
26
+ "sha256": "8c199d3991f31063f5b4cd7a21eac86b6963249fb76d9fd102ca7107cce88921"
27
+ },
28
+ {
29
+ "path": "model.py",
30
+ "bytes": 8325,
31
+ "sha256": "f522fc4ca93cf6a70174ed82a3fdf50622c1427585bd01b39827632d9f92878e"
32
+ },
33
+ {
34
+ "path": "model.safetensors",
35
+ "bytes": 4184290360,
36
+ "sha256": "40d1cf331c3b991a714cde72582e7a60eacb21aa0fab5fd873f9125dd48bb1e5"
37
+ },
38
+ {
39
+ "path": "tokenizer.json",
40
+ "bytes": 1344854,
41
+ "sha256": "285c9629a44871f6822453f7a5559b3f46c6b5b643310868035b640564475250"
42
+ },
43
+ {
44
+ "path": "training_config.yaml",
45
+ "bytes": 7783,
46
+ "sha256": "456804aa4225bddad60f3437142700711f4c4bc391700819d163d5223dc25e45"
47
+ },
48
+ {
49
+ "path": "training_report.json",
50
+ "bytes": 29482,
51
+ "sha256": "5f44c00f4805d37e2609f5f8adbf590d137ce5ca75ace7b73f29df9d2e3f3884"
52
+ }
53
+ ],
54
+ "total_bytes": 4185689013
55
+ }
config.json ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "block_size": 1024,
3
+ "vocab_size": 16384,
4
+ "n_layer": 36,
5
+ "n_head": 24,
6
+ "n_embd": 1536,
7
+ "dropout": 0.0,
8
+ "bias": false
9
+ }
evaluation.json ADDED
@@ -0,0 +1,63 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "checkpoint_sha256": "58594d52bfec2dcbc94d8faa569579bc6d489f1a0afa91181f77a9e427e6b642",
3
+ "tokenizer_sha256": "285c9629a44871f6822453f7a5559b3f46c6b5b643310868035b640564475250",
4
+ "seed": 1945,
5
+ "historical_test": {
6
+ "tokens": 239359,
7
+ "nll": 3.3371582029457074,
8
+ "perplexity": 28.13904751256167,
9
+ "bytes": 1190148,
10
+ "bits_per_byte": 0.9682781352345962
11
+ },
12
+ "modern_control": {
13
+ "tokens": 306830,
14
+ "nll": 3.693451552249165,
15
+ "perplexity": 40.18330264493536,
16
+ "bytes": 1019052,
17
+ "bits_per_byte": 1.6043843611561688
18
+ },
19
+ "historical_bpb_lower_than_modern": true,
20
+ "generations": [
21
+ {
22
+ "prompt": "文明開化とは",
23
+ "text": "文明開化とは全く別物で、我國で西洋諸國の文明開化を學んだのぢやが、西洋諸國が我國より先きに開化したとは言へぬ、我れも文明開化には後れを取つた方ぢやから、西洋諸國をも凌駕したとは思はれぬが、其の後れを取つたは西洋諸國文明開化の本家本元だ、此本家本元たる英國の文明開化を學んだのぢやから、其の前には矢張り前とは別物ぢやと思ひ玉ふかも知れぬ、ナニ我れも野蠻未開の國に生れたから、日本でも野蠻未開の國の風が好きと見えると仰せらるかも知れぬ、其れは御勝手ぢや、彼の國",
24
+ "nonempty": true,
25
+ "no_mojibake": true,
26
+ "repetition_rate": 0.02714932126696834,
27
+ "finite_repetition": true
28
+ },
29
+ {
30
+ "prompt": "昭和十年の東京では",
31
+ "text": "昭和十年の東京では七百八十店で六百五十六店、二千六百五十六店が二百六十七店、三百二十四店が三十三店で、千八十店の中百三十七店が賣店になつてゐる。一店の賣上高が平均五人半として全國で東京が二千五百一一十八店、大阪が二千二百五十五店、名古屋が千二百二十六店、靑森が三百三十店、大阪が三百九十六店となり、神戶も四百六十店で靑森が百五十三店、長崎が二百二十店で、京都が二百三十店である。それから東京と大阪の賣上高を總計すると千五百二十三店で全國で千三百",
32
+ "nonempty": true,
33
+ "no_mojibake": true,
34
+ "repetition_rate": 0.0,
35
+ "finite_repetition": true
36
+ },
37
+ {
38
+ "prompt": "吾輩は",
39
+ "text": "吾輩は寧ろ斯の如きことには少しも頓着せぬ方であていつに念信相正\nそのいはれいいづこおいまたむづかいちじるが、其所由を言はゞ、孰れの國に於ても亦難しとしてある。一言に言へおいせかいへいわじんるゐぜんたいくわんかうそのなんびといなば世界の平和人類全體の輿行は、其難しとするところである。人以爲へらく、せかいけいざいけんきうじんるゐぜんたいくわんかうたゞそのかうふく世界經濟の究と人類全體の輿行とは唯其幸福を增すばかりではなくして、そのかうふくえつかうふくせいくわつえうけん",
40
+ "nonempty": true,
41
+ "no_mojibake": true,
42
+ "repetition_rate": 0.026431718061673992,
43
+ "finite_repetition": true
44
+ },
45
+ {
46
+ "prompt": "人工知能とは",
47
+ "text": "人工知能とは比較的に平易に云ひあらはせる言葉であ)86(る。この問題に關しても、マウントは人間の知能の特性は、一定の時代に於ては種々の發達段階に於て現はれるものである、と述べてゐる。人間の知能の發達を決定する諸條件は、種々である。第一は、發達の段階が必ずしも常に同一でないと云ふことである。卽ち、野蠻人の間では、本能的運動がよく發達して居り、狩獵本能が發達するに過ぎない。また文明人に於ては、本能的運動は十分に發達してゐるけれども、知能の發達は甚だ低くて、未だ成熟期に達してをらない、と說いてゐる。第二は、心的諸能力は發達の程度を異に",
48
+ "nonempty": true,
49
+ "no_mojibake": true,
50
+ "repetition_rate": 0.0,
51
+ "finite_repetition": true
52
+ },
53
+ {
54
+ "prompt": "國家の將來は",
55
+ "text": "國家の將來は恐るべき混亂に陷るだらうと痛嘆したものである。かゝる社會運動が現實に現はれるに及んでは、流石のケマル·パシアも默視し難いものがあつたと見えて一策を考案し、早速これを政府に建議したのである。それは當時世界に流布された「社會主義者の政策」と稱する宣傳文であつた。これは當時フランスに於て出版された「萬國勞働者同盟」の宣傳文集「社會主義雜誌」から轉載したもので、その一節に次のやうな文字がある。世界の平和は、諸君が平和の爲めに努力する時に保たれる。諸君は將來永遠に平和を確保する爲めに、諸君が平和を目的とする",
56
+ "nonempty": true,
57
+ "no_mojibake": true,
58
+ "repetition_rate": 0.0,
59
+ "finite_repetition": true
60
+ }
61
+ ],
62
+ "automatic_rubric_pass_rate": 1.0
63
+ }
generation_config.json ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ {
2
+ "temperature": 0.8,
3
+ "top_k": 100,
4
+ "max_new_tokens": 128,
5
+ "seed": 1945
6
+ }
inference.py ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import json, sys, torch
2
+ from pathlib import Path
3
+ from safetensors.torch import load_model
4
+ from tokenizers import Tokenizer
5
+ from model import GPT, GPTConfig
6
+ root = Path(__file__).parent
7
+ model = GPT(GPTConfig(**json.loads((root/'config.json').read_text())))
8
+ load_model(model, root/'model.safetensors')
9
+ model.eval(); tokenizer = Tokenizer.from_file(str(root/'tokenizer.json'))
10
+ prompt = sys.argv[1] if len(sys.argv) > 1 else '文明開化とは'
11
+ ids = tokenizer.encode(prompt).ids
12
+ torch.manual_seed(1945)
13
+ out = model.generate(torch.tensor(ids).unsqueeze(0), 64, 0.8, 100)[0].tolist()
14
+ print(tokenizer.decode(out))
model.py ADDED
@@ -0,0 +1,203 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from __future__ import annotations
2
+
3
+ import math
4
+ from dataclasses import asdict, dataclass
5
+
6
+ import torch
7
+ import torch.nn as nn
8
+ from torch.nn import functional as F
9
+
10
+
11
+ @dataclass
12
+ class GPTConfig:
13
+ block_size: int = 1024
14
+ vocab_size: int = 8192
15
+ n_layer: int = 12
16
+ n_head: int = 12
17
+ n_embd: int = 768
18
+ dropout: float = 0.0
19
+ bias: bool = False
20
+
21
+
22
+ class CausalSelfAttention(nn.Module):
23
+ def __init__(self, config: GPTConfig) -> None:
24
+ super().__init__()
25
+ if config.n_embd % config.n_head:
26
+ raise ValueError("embedding dimension must be divisible by number of heads")
27
+ self.c_attn = nn.Linear(config.n_embd, 3 * config.n_embd, bias=config.bias)
28
+ self.c_proj = nn.Linear(config.n_embd, config.n_embd, bias=config.bias)
29
+ self.attn_dropout = nn.Dropout(config.dropout)
30
+ self.resid_dropout = nn.Dropout(config.dropout)
31
+ self.n_head = config.n_head
32
+ self.n_embd = config.n_embd
33
+ self.dropout = config.dropout
34
+
35
+ def forward(self, value: torch.Tensor) -> torch.Tensor:
36
+ batch, time, channels = value.size()
37
+ query, key, val = self.c_attn(value).split(self.n_embd, dim=2)
38
+ head_size = channels // self.n_head
39
+ query = query.view(batch, time, self.n_head, head_size).transpose(1, 2)
40
+ key = key.view(batch, time, self.n_head, head_size).transpose(1, 2)
41
+ val = val.view(batch, time, self.n_head, head_size).transpose(1, 2)
42
+ attended = F.scaled_dot_product_attention(
43
+ query,
44
+ key,
45
+ val,
46
+ attn_mask=None,
47
+ dropout_p=self.dropout if self.training else 0,
48
+ is_causal=True,
49
+ )
50
+ attended = attended.transpose(1, 2).contiguous().view(batch, time, channels)
51
+ return self.resid_dropout(self.c_proj(attended))
52
+
53
+
54
+ class MLP(nn.Module):
55
+ def __init__(self, config: GPTConfig) -> None:
56
+ super().__init__()
57
+ self.c_fc = nn.Linear(config.n_embd, 4 * config.n_embd, bias=config.bias)
58
+ self.gelu = nn.GELU()
59
+ self.c_proj = nn.Linear(4 * config.n_embd, config.n_embd, bias=config.bias)
60
+ self.dropout = nn.Dropout(config.dropout)
61
+
62
+ def forward(self, value: torch.Tensor) -> torch.Tensor:
63
+ return self.dropout(self.c_proj(self.gelu(self.c_fc(value))))
64
+
65
+
66
+ class Block(nn.Module):
67
+ def __init__(self, config: GPTConfig) -> None:
68
+ super().__init__()
69
+ self.ln_1 = nn.LayerNorm(config.n_embd, bias=config.bias)
70
+ self.attn = CausalSelfAttention(config)
71
+ self.ln_2 = nn.LayerNorm(config.n_embd, bias=config.bias)
72
+ self.mlp = MLP(config)
73
+
74
+ def forward(self, value: torch.Tensor) -> torch.Tensor:
75
+ value = value + self.attn(self.ln_1(value))
76
+ return value + self.mlp(self.ln_2(value))
77
+
78
+
79
+ class GPT(nn.Module):
80
+ def __init__(self, config: GPTConfig) -> None:
81
+ super().__init__()
82
+ self.config = config
83
+ self.transformer = nn.ModuleDict(
84
+ {
85
+ "wte": nn.Embedding(config.vocab_size, config.n_embd),
86
+ "wpe": nn.Embedding(config.block_size, config.n_embd),
87
+ "drop": nn.Dropout(config.dropout),
88
+ "h": nn.ModuleList([Block(config) for _ in range(config.n_layer)]),
89
+ "ln_f": nn.LayerNorm(config.n_embd, bias=config.bias),
90
+ }
91
+ )
92
+ self.lm_head = nn.Linear(config.n_embd, config.vocab_size, bias=False)
93
+ self.transformer.wte.weight = self.lm_head.weight
94
+ self.apply(self._init_weights)
95
+ for name, parameter in self.named_parameters():
96
+ if name.endswith("c_proj.weight"):
97
+ torch.nn.init.normal_(
98
+ parameter, mean=0.0, std=0.02 / math.sqrt(2 * config.n_layer)
99
+ )
100
+
101
+ @staticmethod
102
+ def _init_weights(module: nn.Module) -> None:
103
+ if isinstance(module, nn.Linear):
104
+ torch.nn.init.normal_(module.weight, mean=0.0, std=0.02)
105
+ if module.bias is not None:
106
+ torch.nn.init.zeros_(module.bias)
107
+ elif isinstance(module, nn.Embedding):
108
+ torch.nn.init.normal_(module.weight, mean=0.0, std=0.02)
109
+
110
+ def forward(
111
+ self, index: torch.Tensor, targets: torch.Tensor | None = None
112
+ ) -> tuple[torch.Tensor, torch.Tensor | None]:
113
+ _, time = index.shape
114
+ if time > self.config.block_size:
115
+ raise ValueError("sequence exceeds model block size")
116
+ positions = torch.arange(0, time, dtype=torch.long, device=index.device)
117
+ value = self.transformer.drop(self.transformer.wte(index) + self.transformer.wpe(positions))
118
+ for block in self.transformer.h:
119
+ value = block(value)
120
+ value = self.transformer.ln_f(value)
121
+ logits = self.lm_head(value)
122
+ loss = (
123
+ F.cross_entropy(logits.view(-1, logits.size(-1)), targets.view(-1), ignore_index=-1)
124
+ if targets is not None
125
+ else None
126
+ )
127
+ return logits, loss
128
+
129
+ @torch.no_grad()
130
+ def generate(
131
+ self,
132
+ index: torch.Tensor,
133
+ max_new_tokens: int,
134
+ temperature: float = 0.8,
135
+ top_k: int | None = 200,
136
+ top_p: float | None = None,
137
+ repetition_penalty: float = 1.0,
138
+ no_repeat_ngram_size: int | None = None,
139
+ ) -> torch.Tensor:
140
+ """Sample a continuation.
141
+
142
+ The defaults reproduce the temperature/top-k-only sampler used for the
143
+ phase 1-5 evaluations, so held-out numbers stay comparable. The
144
+ additional knobs are opt-in: phase-5 generation samples showed the
145
+ low-temperature repetition loop surviving the 345M -> 730M scale-up
146
+ (reports/phase5_generation_samples.md), and the sampler had no
147
+ repetition control of any kind to blame it on.
148
+ """
149
+ for _ in range(max_new_tokens):
150
+ cropped = index[:, -self.config.block_size :]
151
+ logits, _ = self(cropped)
152
+ logits = logits[:, -1, :]
153
+ if repetition_penalty != 1.0:
154
+ for row, sequence in enumerate(index):
155
+ seen = torch.unique(sequence)
156
+ scores = logits[row, seen]
157
+ logits[row, seen] = torch.where(
158
+ scores > 0, scores / repetition_penalty, scores * repetition_penalty
159
+ )
160
+ logits = logits / temperature
161
+ if no_repeat_ngram_size:
162
+ for row, sequence in enumerate(index):
163
+ for token in self._banned_ngram_tokens(sequence, no_repeat_ngram_size):
164
+ logits[row, token] = -float("Inf")
165
+ if top_k is not None:
166
+ values, _ = torch.topk(logits, min(top_k, logits.size(-1)))
167
+ logits[logits < values[:, [-1]]] = -float("Inf")
168
+ if top_p is not None:
169
+ ordered, order = torch.sort(logits, descending=True, dim=-1)
170
+ ranked = F.softmax(ordered, dim=-1)
171
+ # Drop a token once the mass ahead of it already covers top_p,
172
+ # which always keeps at least the most likely token.
173
+ remove = ranked.cumsum(dim=-1) - ranked >= top_p
174
+ logits = logits.masked_fill(
175
+ torch.zeros_like(remove).scatter(1, order, remove), -float("Inf")
176
+ )
177
+ probabilities = F.softmax(logits, dim=-1)
178
+ index = torch.cat((index, torch.multinomial(probabilities, num_samples=1)), dim=1)
179
+ return index
180
+
181
+ @staticmethod
182
+ def _banned_ngram_tokens(sequence: torch.Tensor, size: int) -> list[int]:
183
+ """Tokens that would repeat an n-gram already present in ``sequence``."""
184
+ if size < 2 or len(sequence) < size:
185
+ return []
186
+ tokens = sequence.tolist()
187
+ prefix = tuple(tokens[-(size - 1) :])
188
+ banned = [
189
+ tokens[start + size - 1]
190
+ for start in range(len(tokens) - size + 1)
191
+ if tuple(tokens[start : start + size - 1]) == prefix
192
+ ]
193
+ return banned
194
+
195
+ def parameter_count(self, non_embedding: bool = False) -> int:
196
+ count = sum(parameter.numel() for parameter in self.parameters())
197
+ if non_embedding:
198
+ count -= self.transformer.wpe.weight.numel()
199
+ return count
200
+
201
+ def config_dict(self) -> dict[str, object]:
202
+ return asdict(self.config)
203
+
model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:40d1cf331c3b991a714cde72582e7a60eacb21aa0fab5fd873f9125dd48bb1e5
3
+ size 4184290360
tokenizer.json ADDED
The diff for this file is too large to render. See raw diff
 
training_config.yaml ADDED
@@ -0,0 +1,137 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ extends: configs/base.yaml
2
+ phase: phase6
3
+ # Phase 6 reopens the corpus. Phase 5 concluded that this closed corpus was near
4
+ # an entropy floor because two single-lever moves (data 2.5x, model 2.1x) both
5
+ # bought ~3.5% BPB. reports/phase6_rejection_review.json shows that conclusion
6
+ # rested on a corpus that was never exhausted: 141,521 of the frozen pool's
7
+ # 241,430 candidates (58.6%) were dropped as short_document, and the filter
8
+ # responsible was measuring domain novelty rather than OCR corruption -- its
9
+ # reference 3-gram set came from the Aozora literary corpus alone (2.88M
10
+ # 3-grams). Re-scoring 300 re-downloaded quarantined documents against a
11
+ # reference that also includes accepted NDL text recovers 63% of them, worth an
12
+ # estimated +1.08B prose tokens (train 2.742B -> 3.818B).
13
+ #
14
+ # 6.2 (this config's acquisition stage) only re-downloads. Cleaning waits for
15
+ # the 6.1 filter redesign, so raw ZIPs are NOT pruned in between -- pruning
16
+ # before the new filter exists would force a second five-day re-download.
17
+ data:
18
+ ndl_metadata_dir: data/raw/ndl/metadata
19
+ ndl_metadata_glob: data/raw/ndl/metadata/books_*.zip
20
+ ndl_metadata_urls:
21
+ - https://dl.ndl.go.jp/static/files/dataset/dataset_202602_t_internet_01.zip
22
+ - https://dl.ndl.go.jp/static/files/dataset/dataset_202602_t_internet_02.zip
23
+ - https://dl.ndl.go.jp/static/files/dataset/dataset_202602_t_internet_03.zip
24
+ - https://dl.ndl.go.jp/static/files/dataset/dataset_202602_t_internet_04.zip
25
+ - https://dl.ndl.go.jp/static/files/dataset/dataset_202602_t_internet_05.zip
26
+ # The frozen pool stays the source of truth for order and rights evidence.
27
+ ndl_selection_pool_manifest: data/processed/ndl/selection.jsonl
28
+ # ndl-download walks ndl_selection_manifest, so phase 6 points it at the
29
+ # quarantined-only subset (in pool order) built by
30
+ # scripts/build_phase6_selection.py. Existing ZIPs are skipped by checksum, so
31
+ # the run stays idempotent and resumable. Do NOT run ndl-select against this
32
+ # config: the pool is frozen and ndl-select would overwrite this subset.
33
+ ndl_selection_manifest: data/processed/phase6/selection_quarantined.jsonl
34
+ ndl_download_manifest: data/processed/phase6/ndl_downloads.jsonl
35
+ ndl_raw_dir: data/raw/ndl/books
36
+ ndl_clean_dir: data/clean/ndl
37
+ ndl_clean_manifest: data/processed/phase6/ndl_clean.jsonl
38
+ # Phase-5's manifest is already a superset carrying phases 1-4 forward.
39
+ ndl_clean_reuse_manifest: data/processed/phase5/ndl_clean.jsonl
40
+ ndl_clean_report: phase6_ndl_cleaning.json
41
+ ndl_quality_sample_report: phase6_ndl_quality_sample.jsonl
42
+ ndl_quality_exclude_manifest: data/processed/phase5/ndl_clean.jsonl
43
+ ndl_target_documents: 241430
44
+ ndl_download_delay_seconds: 0.2
45
+ ndl_download_retries: 3
46
+ ndl_max_download_seconds: 600
47
+ # 6.3 froze phase-6 splits, so this now points at them (phase-4's manifest stays
48
+ # on disk untouched). The fixed 24-work phase-1 test set carries over unchanged.
49
+ split_manifest: data/processed/phase6/splits.jsonl
50
+ ndl_max_abnormal_ngram_rate: 0.38
51
+ ndl_max_latin_rate: 0.005
52
+ # 6.1 filter redesign. The abnormal-ngram reference was built from the Aozora
53
+ # literary corpus alone (2,879,238 3-grams), which made that filter a
54
+ # domain-novelty detector rather than an OCR-corruption one: re-scoring 300
55
+ # re-downloaded quarantined documents against a reference that also includes
56
+ # accepted NDL text recovers 63% of them (reports/phase6_rejection_review.json).
57
+ # Order is fixed and each manifest is capped, so the reference itself is
58
+ # reproducible and can be frozen alongside the thresholds.
59
+ ndl_reference_manifests:
60
+ - data/processed/aozora/clean.jsonl
61
+ - data/processed/phase5/ndl_clean.jsonl
62
+ ndl_reference_max_chars: 200000000
63
+ # Widening the reference lets statistics tables and directories through, since
64
+ # abnormal_ngram_rate had been rejecting them as a side effect. Calibrated in
65
+ # reports/phase6_filter_calibration.json: a 0.18 numeral-run ratio fires on
66
+ # 0.071% of already-accepted characters (inside 6.1's 0.5% shrink gate) and
67
+ # catches 100% of the pages the audit triaged as tables.
68
+ #
69
+ # No kana-run rule ships. The draft "garbled" detector was measured against the
70
+ # same two sets and no run length separates ruby-contaminated OCR from ordinary
71
+ # 文語体 (run>=8 at ratio>0.05 flags 54% of accepted characters; run>=20 at
72
+ # ratio>0.20 still flags 8% while recall falls to 41%). 文語体 simply contains
73
+ # long kana runs. mojibake_page continues to handle genuine corruption.
74
+ ndl_max_digit_run_rate: 0.18
75
+ # 6.3 の phase6-merge が書き出す、ページ規則適用後のcleanテキスト。
76
+ # data/clean/ndl を直接書き換えない: 記録済み clean_sha256 と公開済み v1/v2 の
77
+ # 基礎が変わるため(reports/phase6_cleaning_plan.json で却下した案)。
78
+ ndl_filtered_dir: data/clean/ndl_phase6
79
+ # 仮名3-gram参照(青空文庫のみ、凍結)。kana_soup の判定に使う。
80
+ # 生成: uv run python scripts/calibrate_phase6_kana_soup.py
81
+ ndl_kana_reference: artifacts/phase6/kana_reference.txt
82
+ tokenizer:
83
+ # Retrained in 6.3 over the expanded corpus. BPB is per byte, so changing the
84
+ # tokenizer does not break comparability with phases 1-5.
85
+ vocab_size: 16384
86
+ directory: artifacts/phase6/tokenizer
87
+ max_train_chars: 200000000
88
+ tokenized:
89
+ directory: data/processed/phase6/tokenized
90
+ model:
91
+ # 6.4 co-scaling. フェーズ5は730M(36層/20head/1280)でデータ据え置き、
92
+ # フェーズ4は345Mでデータ2.5倍。単独レバーの改善率がほぼ一致した
93
+ # (+3.46% / +3.53%)ことがフェーズ6の出発点なので、ここは初めて両方を同時に
94
+ # 動かす: データ 2.742B → 実測3.8B級、モデル 730M → 約1.05B。
95
+ # head_dim = 1536/24 = 64 でフェーズ3〜5と同じ比を保つ。
96
+ # 実数は `tcja --config configs/phase6.yaml parameter-count --vocab-size 16384`
97
+ # で確認し reports/runs/parameter-count.json へ残す。
98
+ n_layer: 36
99
+ n_head: 24
100
+ n_embd: 1536
101
+ block_size: 1024
102
+ dropout: 0.0
103
+ training:
104
+ device: cuda
105
+ dtype: bfloat16
106
+ # ユーザー判断(2026-07-30)で batch16 x accum16。tokens_per_step は 262,144 で
107
+ # 変わらないので max_iters もそのまま。
108
+ # 当初は batch8 x accum32 を第一候補にしていたが、accumulation回数が半分になる
109
+ # 分こちらが速いはずで、本学習163時間に対しては数%でも十数時間効く。
110
+ # フェーズ5は同じ形(batch16 x accum16)を730Mで走らせて peak 43.8GB・余裕48.4%
111
+ # だった。パラメータは1.43倍だが、支配的なoptimizer stateでも +9GB程度の見込み。
112
+ # **6.5のflightで実測する。VRAM余裕が10%未満なら batch8 x accum32 へ戻す。**
113
+ batch_size: 16
114
+ gradient_accumulation_steps: 16
115
+ # FINALIZED (2026-07-30、reports/phase6_tokenization.json): train実測
116
+ # 3,953,739,596 tokens × 3ep = 11,861,218,788 処理トークン ÷ 262,144 tok/step
117
+ # = 45,254.9 → 45,300 iters(3.003ep、処理 11,875,123,200)。
118
+ # tokens/param 11.35 は フェーズ5の11.3とほぼ同じで、データとモデルを同率で
119
+ # 伸ばした結果になっている。
120
+ max_iters: 45300
121
+ learning_rate: 0.00025
122
+ min_lr: 0.000025
123
+ warmup_iters: 300
124
+ lr_decay_iters: 45300
125
+ eval_interval: 500
126
+ eval_iters: 50
127
+ checkpoint_interval: 500
128
+ grad_clip: 1.0
129
+ out_dir: artifacts/phase6
130
+ budget:
131
+ # フェーズ5実測 9.065 s/step(730M・A100 80GB・262,144 tok/step)= 104.1M tok/h。
132
+ # FLOPsはパラメータ数にほぼ比例するので 1.05B では約72M tok/h。
133
+ # 3ep(約11.4B処理)で約158h・$220($1.39/h)。上限は余裕を見て置く。
134
+ minimum_train_tokens: 3500000000
135
+ maximum_hours: 190
136
+ maximum_usd: 270
137
+ gpu_hourly_usd: 1.39
training_report.json ADDED
@@ -0,0 +1,840 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "iterations": 45300,
3
+ "parameter_count": 1046066688,
4
+ "tokens_per_step": 262144,
5
+ "processed_tokens": 11875123200,
6
+ "elapsed_seconds": 529599.8804617687,
7
+ "best_validation_loss": 3.3402066230773926,
8
+ "history": [
9
+ {
10
+ "iteration": 500,
11
+ "train_loss": 6.373349666595459,
12
+ "validation_loss": 6.335325717926025,
13
+ "learning_rate": 0.00024998914333562564,
14
+ "elapsed_seconds": 5767.518404414877,
15
+ "projected_total_hours": 145.1492131777744,
16
+ "projected_total_cost_usd": 201.75740631710642
17
+ },
18
+ {
19
+ "iteration": 1000,
20
+ "train_loss": 4.988532066345215,
21
+ "validation_loss": 4.971802234649658,
22
+ "learning_rate": 0.0002498660738422774,
23
+ "elapsed_seconds": 11607.223960213829,
24
+ "projected_total_hours": 146.05756816602403,
25
+ "projected_total_cost_usd": 203.02001975077337
26
+ },
27
+ {
28
+ "iteration": 1500,
29
+ "train_loss": 4.607588768005371,
30
+ "validation_loss": 4.590364456176758,
31
+ "learning_rate": 0.0002496061035966192,
32
+ "elapsed_seconds": 17444.452618559822,
33
+ "projected_total_hours": 146.33957474458518,
34
+ "projected_total_cost_usd": 203.41200889497338
35
+ },
36
+ {
37
+ "iteration": 2000,
38
+ "train_loss": 4.4110026359558105,
39
+ "validation_loss": 4.396660327911377,
40
+ "learning_rate": 0.00024920954933234997,
41
+ "elapsed_seconds": 23283.12628326984,
42
+ "projected_total_hours": 146.4896695322394,
43
+ "projected_total_cost_usd": 203.62064064981274
44
+ },
45
+ {
46
+ "iteration": 2500,
47
+ "train_loss": 4.2808990478515625,
48
+ "validation_loss": 4.268635272979736,
49
+ "learning_rate": 0.0002486768941897562,
50
+ "elapsed_seconds": 29123.792723594932,
51
+ "projected_total_hours": 146.58975670876117,
52
+ "projected_total_cost_usd": 203.759761825178
53
+ },
54
+ {
55
+ "iteration": 3000,
56
+ "train_loss": 4.190364837646484,
57
+ "validation_loss": 4.175224781036377,
58
+ "learning_rate": 0.00024800878712707996,
59
+ "elapsed_seconds": 34969.42657046695,
60
+ "projected_total_hours": 146.67731700390306,
61
+ "projected_total_cost_usd": 203.88147063542525
62
+ },
63
+ {
64
+ "iteration": 3500,
65
+ "train_loss": 4.114880561828613,
66
+ "validation_loss": 4.1017656326293945,
67
+ "learning_rate": 0.00024720604212986305,
68
+ "elapsed_seconds": 40825.30353703792,
69
+ "projected_total_hours": 146.77668652601727,
70
+ "projected_total_cost_usd": 204.01959427116398
71
+ },
72
+ {
73
+ "iteration": 4000,
74
+ "train_loss": 4.059500217437744,
75
+ "validation_loss": 4.044155120849609,
76
+ "learning_rate": 0.00024626963721923123,
77
+ "elapsed_seconds": 46672.65582661284,
78
+ "projected_total_hours": 146.8243964545529,
79
+ "projected_total_cost_usd": 204.08591107182852
80
+ },
81
+ {
82
+ "iteration": 4500,
83
+ "train_loss": 8.15172290802002,
84
+ "validation_loss": 8.112296104431152,
85
+ "learning_rate": 0.00024520071326032596,
86
+ "elapsed_seconds": 52528.73340205988,
87
+ "projected_total_hours": 146.8859026613156,
88
+ "projected_total_cost_usd": 204.17140469922867
89
+ },
90
+ {
91
+ "iteration": 5000,
92
+ "train_loss": 4.006167411804199,
93
+ "validation_loss": 3.99216365814209,
94
+ "learning_rate": 0.0002440005725723361,
95
+ "elapsed_seconds": 58357.20548674604,
96
+ "projected_total_hours": 146.86563380831086,
97
+ "projected_total_cost_usd": 204.1432309935521
98
+ },
99
+ {
100
+ "iteration": 5500,
101
+ "train_loss": 3.950077772140503,
102
+ "validation_loss": 3.9378490447998047,
103
+ "learning_rate": 0.00024267067734182245,
104
+ "elapsed_seconds": 64213.86831258284,
105
+ "projected_total_hours": 146.91354720000012,
106
+ "projected_total_cost_usd": 204.20983060800015
107
+ },
108
+ {
109
+ "iteration": 6000,
110
+ "train_loss": 3.9144349098205566,
111
+ "validation_loss": 3.9045145511627197,
112
+ "learning_rate": 0.0002412126478412687,
113
+ "elapsed_seconds": 70062.76474088593,
114
+ "projected_total_hours": 146.93718716491355,
115
+ "projected_total_cost_usd": 204.24269015922982
116
+ },
117
+ {
118
+ "iteration": 6500,
119
+ "train_loss": 3.884676933288574,
120
+ "validation_loss": 3.875600814819336,
121
+ "learning_rate": 0.00023962826045502908,
122
+ "elapsed_seconds": 75910.68644157494,
123
+ "projected_total_hours": 146.9553032394592,
124
+ "projected_total_cost_usd": 204.26787150284827
125
+ },
126
+ {
127
+ "iteration": 7000,
128
+ "train_loss": 3.8586838245391846,
129
+ "validation_loss": 3.849705219268799,
130
+ "learning_rate": 0.00023791944551507753,
131
+ "elapsed_seconds": 81744.92833834188,
132
+ "projected_total_hours": 146.94624022725742,
133
+ "projected_total_cost_usd": 204.2552739158878
134
+ },
135
+ {
136
+ "iteration": 7500,
137
+ "train_loss": 3.8353729248046875,
138
+ "validation_loss": 3.826043128967285,
139
+ "learning_rate": 0.00023608828494919563,
140
+ "elapsed_seconds": 87577.26776477997,
141
+ "projected_total_hours": 146.93519369424195,
142
+ "projected_total_cost_usd": 204.23991923499628
143
+ },
144
+ {
145
+ "iteration": 8000,
146
+ "train_loss": 3.810929775238037,
147
+ "validation_loss": 3.804882764816284,
148
+ "learning_rate": 0.00023413700974446423,
149
+ "elapsed_seconds": 93414.80510617001,
150
+ "projected_total_hours": 146.93370386491324,
151
+ "projected_total_cost_usd": 204.2378483722294
152
+ },
153
+ {
154
+ "iteration": 8500,
155
+ "train_loss": 3.7886407375335693,
156
+ "validation_loss": 3.783992290496826,
157
+ "learning_rate": 0.00023206799722914946,
158
+ "elapsed_seconds": 99244.98037643894,
159
+ "projected_total_hours": 146.92149055727725,
160
+ "projected_total_cost_usd": 204.22087187461537
161
+ },
162
+ {
163
+ "iteration": 9000,
164
+ "train_loss": 3.766958713531494,
165
+ "validation_loss": 3.7680282592773438,
166
+ "learning_rate": 0.0002298837681762942,
167
+ "elapsed_seconds": 105085.86910354486,
168
+ "projected_total_hours": 146.92561328365994,
169
+ "projected_total_cost_usd": 204.2266024642873
170
+ },
171
+ {
172
+ "iteration": 9500,
173
+ "train_loss": 3.7498161792755127,
174
+ "validation_loss": 3.7501485347747803,
175
+ "learning_rate": 0.00022758698373254472,
176
+ "elapsed_seconds": 110928.114993172,
177
+ "projected_total_hours": 146.93109968393833,
178
+ "projected_total_cost_usd": 204.23422856067427
179
+ },
180
+ {
181
+ "iteration": 10000,
182
+ "train_loss": 3.730133056640625,
183
+ "validation_loss": 3.7339835166931152,
184
+ "learning_rate": 0.00022518044217595314,
185
+ "elapsed_seconds": 116778.32068712497,
186
+ "projected_total_hours": 146.94605353129893,
187
+ "projected_total_cost_usd": 204.2550144085055
188
+ },
189
+ {
190
+ "iteration": 10500,
191
+ "train_loss": 3.7131927013397217,
192
+ "validation_loss": 3.7187798023223877,
193
+ "learning_rate": 0.00022266707550670694,
194
+ "elapsed_seconds": 122624.58746308996,
195
+ "projected_total_hours": 146.9548627533856,
196
+ "projected_total_cost_usd": 204.26725922720598
197
+ },
198
+ {
199
+ "iteration": 11000,
200
+ "train_loss": 3.6982581615448,
201
+ "validation_loss": 3.7051968574523926,
202
+ "learning_rate": 0.0002200499458749381,
203
+ "elapsed_seconds": 128481.97054895293,
204
+ "projected_total_hours": 146.9755875219083,
205
+ "projected_total_cost_usd": 204.2960666554525
206
+ },
207
+ {
208
+ "iteration": 11500,
209
+ "train_loss": 3.681401252746582,
210
+ "validation_loss": 3.6900885105133057,
211
+ "learning_rate": 0.00021733224184996498,
212
+ "elapsed_seconds": 134351.35519558704,
213
+ "projected_total_hours": 147.00764227922932,
214
+ "projected_total_cost_usd": 204.34062276812872
215
+ },
216
+ {
217
+ "iteration": 12000,
218
+ "train_loss": 3.667637825012207,
219
+ "validation_loss": 3.6769940853118896,
220
+ "learning_rate": 0.0002145172745355119,
221
+ "elapsed_seconds": 140210.84609409282,
222
+ "projected_total_hours": 147.02665111255567,
223
+ "projected_total_cost_usd": 204.36704504645238
224
+ },
225
+ {
226
+ "iteration": 12500,
227
+ "train_loss": 3.6528677940368652,
228
+ "validation_loss": 3.6665825843811035,
229
+ "learning_rate": 0.00021160847353563888,
230
+ "elapsed_seconds": 146071.26893039,
231
+ "projected_total_hours": 147.04507738992595,
232
+ "projected_total_cost_usd": 204.39265757199706
233
+ },
234
+ {
235
+ "iteration": 13000,
236
+ "train_loss": 3.639846086502075,
237
+ "validation_loss": 3.653087854385376,
238
+ "learning_rate": 0.000208609382776298,
239
+ "elapsed_seconds": 151925.76889001392,
240
+ "projected_total_hours": 147.05635322046217,
241
+ "projected_total_cost_usd": 204.40833097644241
242
+ },
243
+ {
244
+ "iteration": 13500,
245
+ "train_loss": 3.629678964614868,
246
+ "validation_loss": 3.6425936222076416,
247
+ "learning_rate": 0.0002055236561876049,
248
+ "elapsed_seconds": 157782.4660434397,
249
+ "projected_total_hours": 147.06884180592218,
250
+ "projected_total_cost_usd": 204.4256901102318
251
+ },
252
+ {
253
+ "iteration": 14000,
254
+ "train_loss": 3.6172244548797607,
255
+ "validation_loss": 3.634115219116211,
256
+ "learning_rate": 0.00020235505325208816,
257
+ "elapsed_seconds": 163627.8123262967,
258
+ "projected_total_hours": 147.07023607899285,
259
+ "projected_total_cost_usd": 204.42762814980006
260
+ },
261
+ {
262
+ "iteration": 14500,
263
+ "train_loss": 3.602062463760376,
264
+ "validation_loss": 3.626448154449463,
265
+ "learning_rate": 0.00019910743442433889,
266
+ "elapsed_seconds": 169474.427039932,
267
+ "projected_total_hours": 147.07263495994098,
268
+ "projected_total_cost_usd": 204.43096259431795
269
+ },
270
+ {
271
+ "iteration": 15000,
272
+ "train_loss": 3.596639394760132,
273
+ "validation_loss": 3.617069721221924,
274
+ "learning_rate": 0.00019578475642764132,
275
+ "elapsed_seconds": 175318.30801315093,
276
+ "projected_total_hours": 147.07258061103215,
277
+ "projected_total_cost_usd": 204.43088704933467
278
+ },
279
+ {
280
+ "iteration": 15500,
281
+ "train_loss": 3.5822103023529053,
282
+ "validation_loss": 3.604166030883789,
283
+ "learning_rate": 0.00019239106743331515,
284
+ "elapsed_seconds": 181170.80125680007,
285
+ "projected_total_hours": 147.07952145041295,
286
+ "projected_total_cost_usd": 204.440534816074
287
+ },
288
+ {
289
+ "iteration": 16000,
290
+ "train_loss": 3.5695128440856934,
291
+ "validation_loss": 3.594214677810669,
292
+ "learning_rate": 0.0001889305021286422,
293
+ "elapsed_seconds": 187022.97385376412,
294
+ "projected_total_hours": 147.0857763120749,
295
+ "projected_total_cost_usd": 204.4492290737841
296
+ },
297
+ {
298
+ "iteration": 16500,
299
+ "train_loss": 3.5584664344787598,
300
+ "validation_loss": 3.585881233215332,
301
+ "learning_rate": 0.00018540727667938712,
302
+ "elapsed_seconds": 192868.98684213776,
303
+ "projected_total_hours": 147.08695461193335,
304
+ "projected_total_cost_usd": 204.45086691058734
305
+ },
306
+ {
307
+ "iteration": 17000,
308
+ "train_loss": 3.5498061180114746,
309
+ "validation_loss": 3.5772714614868164,
310
+ "learning_rate": 0.0001818256835930484,
311
+ "elapsed_seconds": 198710.49392023915,
312
+ "projected_total_hours": 147.08472834292212,
313
+ "projected_total_cost_usd": 204.44777239666172
314
+ },
315
+ {
316
+ "iteration": 17500,
317
+ "train_loss": 3.538649797439575,
318
+ "validation_loss": 3.5700178146362305,
319
+ "learning_rate": 0.0001781900864890997,
320
+ "elapsed_seconds": 204562.4459545957,
321
+ "projected_total_hours": 147.09013971020931,
322
+ "projected_total_cost_usd": 204.45529419719094
323
+ },
324
+ {
325
+ "iteration": 18000,
326
+ "train_loss": 3.5280675888061523,
327
+ "validation_loss": 3.563185453414917,
328
+ "learning_rate": 0.00017450491478259136,
329
+ "elapsed_seconds": 210410.987407709,
330
+ "projected_total_hours": 147.09286619705583,
331
+ "projected_total_cost_usd": 204.45908401390759
332
+ },
333
+ {
334
+ "iteration": 18500,
335
+ "train_loss": 3.517913579940796,
336
+ "validation_loss": 3.5548534393310547,
337
+ "learning_rate": 0.0001707746582875906,
338
+ "elapsed_seconds": 216262.0165603701,
339
+ "projected_total_hours": 147.09713739016163,
340
+ "projected_total_cost_usd": 204.46502097232465
341
+ },
342
+ {
343
+ "iteration": 19000,
344
+ "train_loss": 3.50887393951416,
345
+ "validation_loss": 3.5479366779327393,
346
+ "learning_rate": 0.00016700386174703456,
347
+ "elapsed_seconds": 222117.43233659677,
348
+ "projected_total_hours": 147.10408895976366,
349
+ "projected_total_cost_usd": 204.47468365407147
350
+ },
351
+ {
352
+ "iteration": 19500,
353
+ "train_loss": 3.5005223751068115,
354
+ "validation_loss": 3.54071044921875,
355
+ "learning_rate": 0.00016319711929566126,
356
+ "elapsed_seconds": 227972.2531674751,
357
+ "projected_total_hours": 147.11030012089205,
358
+ "projected_total_cost_usd": 204.48331716803995
359
+ },
360
+ {
361
+ "iteration": 20000,
362
+ "train_loss": 3.4909307956695557,
363
+ "validation_loss": 3.531663179397583,
364
+ "learning_rate": 0.00015935906886276402,
365
+ "elapsed_seconds": 233830.57044673292,
366
+ "projected_total_hours": 147.11840057273616,
367
+ "projected_total_cost_usd": 204.49457679610325
368
+ },
369
+ {
370
+ "iteration": 20500,
371
+ "train_loss": 3.486023187637329,
372
+ "validation_loss": 3.5255727767944336,
373
+ "learning_rate": 0.0001554943865215889,
374
+ "elapsed_seconds": 239679.68671904784,
375
+ "projected_total_hours": 147.12045810803343,
376
+ "projected_total_cost_usd": 204.49743677016644
377
+ },
378
+ {
379
+ "iteration": 21000,
380
+ "train_loss": 3.4791877269744873,
381
+ "validation_loss": 3.5202720165252686,
382
+ "learning_rate": 0.00015160778079226003,
383
+ "elapsed_seconds": 245518.76395338494,
384
+ "projected_total_hours": 147.1164022101632,
385
+ "projected_total_cost_usd": 204.4917990721268
386
+ },
387
+ {
388
+ "iteration": 21500,
389
+ "train_loss": 3.469804048538208,
390
+ "validation_loss": 3.5100693702697754,
391
+ "learning_rate": 0.0001477039869051728,
392
+ "elapsed_seconds": 251360.50779337808,
393
+ "projected_total_hours": 147.114095646512,
394
+ "projected_total_cost_usd": 204.48859294865167
395
+ },
396
+ {
397
+ "iteration": 22000,
398
+ "train_loss": 3.4615044593811035,
399
+ "validation_loss": 3.505176067352295,
400
+ "learning_rate": 0.00014378776103184527,
401
+ "elapsed_seconds": 257201.9809560948,
402
+ "projected_total_hours": 147.1117391074633,
403
+ "projected_total_cost_usd": 204.485317359374
404
+ },
405
+ {
406
+ "iteration": 22500,
407
+ "train_loss": 3.4569902420043945,
408
+ "validation_loss": 3.499898672103882,
409
+ "learning_rate": 0.00013986387449025582,
410
+ "elapsed_seconds": 263036.7369214799,
411
+ "projected_total_hours": 147.10573064867953,
412
+ "projected_total_cost_usd": 204.47696560166452
413
+ },
414
+ {
415
+ "iteration": 23000,
416
+ "train_loss": 3.4522955417633057,
417
+ "validation_loss": 3.4949960708618164,
418
+ "learning_rate": 0.00013593710793172693,
419
+ "elapsed_seconds": 268878.98143927194,
420
+ "projected_total_hours": 147.10408042510892,
421
+ "projected_total_cost_usd": 204.47467179090137
422
+ },
423
+ {
424
+ "iteration": 23500,
425
+ "train_loss": 3.4453978538513184,
426
+ "validation_loss": 3.488229751586914,
427
+ "learning_rate": 0.0001320122455164382,
428
+ "elapsed_seconds": 274705.03559077205,
429
+ "projected_total_hours": 147.09383111420772,
430
+ "projected_total_cost_usd": 204.46042524874872
431
+ },
432
+ {
433
+ "iteration": 24000,
434
+ "train_loss": 3.43698787689209,
435
+ "validation_loss": 3.482897996902466,
436
+ "learning_rate": 0.00012809406908466384,
437
+ "elapsed_seconds": 280538.5956518408,
438
+ "projected_total_hours": 147.08794424801377,
439
+ "projected_total_cost_usd": 204.45224250473913
440
+ },
441
+ {
442
+ "iteration": 24500,
443
+ "train_loss": 3.426966667175293,
444
+ "validation_loss": 3.475834846496582,
445
+ "learning_rate": 0.00012418735233083727,
446
+ "elapsed_seconds": 286381.1681528948,
447
+ "projected_total_hours": 147.08692650029633,
448
+ "projected_total_cost_usd": 204.45082783541187
449
+ },
450
+ {
451
+ "iteration": 25000,
452
+ "train_loss": 3.4196131229400635,
453
+ "validation_loss": 3.471196174621582,
454
+ "learning_rate": 0.00012029685498753944,
455
+ "elapsed_seconds": 292214.37232685275,
456
+ "projected_total_hours": 147.08123407118256,
457
+ "projected_total_cost_usd": 204.44291535894374
458
+ },
459
+ {
460
+ "iteration": 25500,
461
+ "train_loss": 3.4136993885040283,
462
+ "validation_loss": 3.4657559394836426,
463
+ "learning_rate": 0.00011642731702649787,
464
+ "elapsed_seconds": 298058.5812796368,
465
+ "projected_total_hours": 147.08119533733714,
466
+ "projected_total_cost_usd": 204.4428615188986
467
+ },
468
+ {
469
+ "iteration": 26000,
470
+ "train_loss": 3.4060094356536865,
471
+ "validation_loss": 3.460638999938965,
472
+ "learning_rate": 0.0001125834528836616,
473
+ "elapsed_seconds": 303898.8813599739,
474
+ "projected_total_hours": 147.07926629921815,
475
+ "projected_total_cost_usd": 204.4401801559132
476
+ },
477
+ {
478
+ "iteration": 26500,
479
+ "train_loss": 3.397285223007202,
480
+ "validation_loss": 3.456627130508423,
481
+ "learning_rate": 0.00010876994571538669,
482
+ "elapsed_seconds": 309734.5375928958,
483
+ "projected_total_hours": 147.0752049576329,
484
+ "projected_total_cost_usd": 204.43453489110973
485
+ },
486
+ {
487
+ "iteration": 27000,
488
+ "train_loss": 3.3896384239196777,
489
+ "validation_loss": 3.450105667114258,
490
+ "learning_rate": 0.00010499144169273202,
491
+ "elapsed_seconds": 315585.65890582977,
492
+ "projected_total_hours": 147.0785015270997,
493
+ "projected_total_cost_usd": 204.43911712266856
494
+ },
495
+ {
496
+ "iteration": 27500,
497
+ "train_loss": 3.3839428424835205,
498
+ "validation_loss": 3.444591999053955,
499
+ "learning_rate": 0.0001012525443408152,
500
+ "elapsed_seconds": 321438.789508109,
501
+ "projected_total_hours": 147.08259762340742,
502
+ "projected_total_cost_usd": 204.4448106965363
503
+ },
504
+ {
505
+ "iteration": 28000,
506
+ "train_loss": 3.3783419132232666,
507
+ "validation_loss": 3.4397692680358887,
508
+ "learning_rate": 9.755780893012659e-05,
509
+ "elapsed_seconds": 327273.82601866405,
510
+ "projected_total_hours": 147.0784158595782,
511
+ "projected_total_cost_usd": 204.43899804481367
512
+ },
513
+ {
514
+ "iteration": 28500,
515
+ "train_loss": 3.3702282905578613,
516
+ "validation_loss": 3.4354019165039062,
517
+ "learning_rate": 9.391173692663375e-05,
518
+ "elapsed_seconds": 333119.06978819985,
519
+ "projected_total_hours": 147.07888753806483,
520
+ "projected_total_cost_usd": 204.43965367791012
521
+ },
522
+ {
523
+ "iteration": 29000,
524
+ "train_loss": 3.364657402038574,
525
+ "validation_loss": 3.432204246520996,
526
+ "learning_rate": 9.03187705074386e-05,
527
+ "elapsed_seconds": 338967.86247838195,
528
+ "projected_total_hours": 147.08088285699907,
529
+ "projected_total_cost_usd": 204.4424271712287
530
+ },
531
+ {
532
+ "iteration": 29500,
533
+ "train_loss": 3.361586332321167,
534
+ "validation_loss": 3.4272539615631104,
535
+ "learning_rate": 8.678328714866887e-05,
536
+ "elapsed_seconds": 344816.71290178783,
537
+ "projected_total_hours": 147.08283516432195,
538
+ "projected_total_cost_usd": 204.4451408784075
539
+ },
540
+ {
541
+ "iteration": 30000,
542
+ "train_loss": 3.3544201850891113,
543
+ "validation_loss": 3.4213171005249023,
544
+ "learning_rate": 8.330959429219775e-05,
545
+ "elapsed_seconds": 350665.20799918985,
546
+ "projected_total_hours": 147.08457335521572,
547
+ "projected_total_cost_usd": 204.44755696374983
548
+ },
549
+ {
550
+ "iteration": 30500,
551
+ "train_loss": 3.3491179943084717,
552
+ "validation_loss": 3.4158291816711426,
553
+ "learning_rate": 7.99019240976895e-05,
554
+ "elapsed_seconds": 356519.57499028975,
555
+ "projected_total_hours": 147.0886771134802,
556
+ "projected_total_cost_usd": 204.45326118773747
557
+ },
558
+ {
559
+ "iteration": 31000,
560
+ "train_loss": 3.34259033203125,
561
+ "validation_loss": 3.414461135864258,
562
+ "learning_rate": 7.656442828636477e-05,
563
+ "elapsed_seconds": 362371.10408779606,
564
+ "projected_total_hours": 147.09149655176665,
565
+ "projected_total_cost_usd": 204.45718020695563
566
+ },
567
+ {
568
+ "iteration": 31500,
569
+ "train_loss": 3.336934804916382,
570
+ "validation_loss": 3.4084677696228027,
571
+ "learning_rate": 7.330117308276784e-05,
572
+ "elapsed_seconds": 368224.406660873,
573
+ "projected_total_hours": 147.0949349359572,
574
+ "projected_total_cost_usd": 204.46195956098052
575
+ },
576
+ {
577
+ "iteration": 32000,
578
+ "train_loss": 3.332810878753662,
579
+ "validation_loss": 3.4053311347961426,
580
+ "learning_rate": 7.011613426069842e-05,
581
+ "elapsed_seconds": 374078.46307888115,
582
+ "projected_total_hours": 147.09856230445587,
583
+ "projected_total_cost_usd": 204.46700160319364
584
+ },
585
+ {
586
+ "iteration": 32500,
587
+ "train_loss": 3.325847864151001,
588
+ "validation_loss": 3.3993771076202393,
589
+ "learning_rate": 6.701319229934343e-05,
590
+ "elapsed_seconds": 379934.33091358515,
591
+ "projected_total_hours": 147.1027794050035,
592
+ "projected_total_cost_usd": 204.47286337295486
593
+ },
594
+ {
595
+ "iteration": 33000,
596
+ "train_loss": 3.3214898109436035,
597
+ "validation_loss": 3.3968589305877686,
598
+ "learning_rate": 6.39961276555114e-05,
599
+ "elapsed_seconds": 385785.82466378994,
600
+ "projected_total_hours": 147.1052008187684,
601
+ "projected_total_cost_usd": 204.47622913808806
602
+ },
603
+ {
604
+ "iteration": 33500,
605
+ "train_loss": 3.3171088695526123,
606
+ "validation_loss": 3.393434762954712,
607
+ "learning_rate": 6.106861615772748e-05,
608
+ "elapsed_seconds": 391644.3146269447,
609
+ "projected_total_hours": 147.11017788226033,
610
+ "projected_total_cost_usd": 204.48314725634185
611
+ },
612
+ {
613
+ "iteration": 34000,
614
+ "train_loss": 3.312814712524414,
615
+ "validation_loss": 3.388615131378174,
616
+ "learning_rate": 5.823422452780332e-05,
617
+ "elapsed_seconds": 397495.1632606508,
618
+ "projected_total_hours": 147.11218052048596,
619
+ "projected_total_cost_usd": 204.48593092347548
620
+ },
621
+ {
622
+ "iteration": 34500,
623
+ "train_loss": 3.305443048477173,
624
+ "validation_loss": 3.3842084407806396,
625
+ "learning_rate": 5.549640603533529e-05,
626
+ "elapsed_seconds": 403351.415478304,
627
+ "projected_total_hours": 147.11609598363265,
628
+ "projected_total_cost_usd": 204.49137341724938
629
+ },
630
+ {
631
+ "iteration": 35000,
632
+ "train_loss": 3.299060583114624,
633
+ "validation_loss": 3.3820013999938965,
634
+ "learning_rate": 5.285849629042789e-05,
635
+ "elapsed_seconds": 409202.1039497829,
636
+ "projected_total_hours": 147.11789927718385,
637
+ "projected_total_cost_usd": 204.49387999528554
638
+ },
639
+ {
640
+ "iteration": 35500,
641
+ "train_loss": 3.2942333221435547,
642
+ "validation_loss": 3.3802318572998047,
643
+ "learning_rate": 5.032370917976645e-05,
644
+ "elapsed_seconds": 415038.40922521707,
645
+ "projected_total_hours": 147.11455350471311,
646
+ "projected_total_cost_usd": 204.4892293715512
647
+ },
648
+ {
649
+ "iteration": 36000,
650
+ "train_loss": 3.2915239334106445,
651
+ "validation_loss": 3.375929594039917,
652
+ "learning_rate": 4.7895132950991336e-05,
653
+ "elapsed_seconds": 420878.96743322304,
654
+ "projected_total_hours": 147.11278722781637,
655
+ "projected_total_cost_usd": 204.48677424666474
656
+ },
657
+ {
658
+ "iteration": 36500,
659
+ "train_loss": 3.284877300262451,
660
+ "validation_loss": 3.3734710216522217,
661
+ "learning_rate": 4.55757264501437e-05,
662
+ "elapsed_seconds": 426712.58293662686,
663
+ "projected_total_hours": 147.1086758525814,
664
+ "projected_total_cost_usd": 204.48105943508813
665
+ },
666
+ {
667
+ "iteration": 37000,
668
+ "train_loss": 3.2819366455078125,
669
+ "validation_loss": 3.370877742767334,
670
+ "learning_rate": 4.336831551676778e-05,
671
+ "elapsed_seconds": 432558.64357199613,
672
+ "projected_total_hours": 147.10890806164736,
673
+ "projected_total_cost_usd": 204.4813822056898
674
+ },
675
+ {
676
+ "iteration": 37500,
677
+ "train_loss": 3.2778007984161377,
678
+ "validation_loss": 3.368626594543457,
679
+ "learning_rate": 4.12755895410602e-05,
680
+ "elapsed_seconds": 438408.5406104899,
681
+ "projected_total_hours": 147.11042140485327,
682
+ "projected_total_cost_usd": 204.48348575274602
683
+ },
684
+ {
685
+ "iteration": 38000,
686
+ "train_loss": 3.2740094661712646,
687
+ "validation_loss": 3.3664190769195557,
688
+ "learning_rate": 3.930009818726269e-05,
689
+ "elapsed_seconds": 444255.0420406908,
690
+ "projected_total_hours": 147.11077050031648,
691
+ "projected_total_cost_usd": 204.48397099543988
692
+ },
693
+ {
694
+ "iteration": 38500,
695
+ "train_loss": 3.270355224609375,
696
+ "validation_loss": 3.36319637298584,
697
+ "learning_rate": 3.744424828728872e-05,
698
+ "elapsed_seconds": 450094.42088113073,
699
+ "projected_total_hours": 147.10878258236093,
700
+ "projected_total_cost_usd": 204.4812077894817
701
+ },
702
+ {
703
+ "iteration": 39000,
704
+ "train_loss": 3.267413854598999,
705
+ "validation_loss": 3.3608386516571045,
706
+ "learning_rate": 3.571030090836964e-05,
707
+ "elapsed_seconds": 455934.32394408295,
708
+ "projected_total_hours": 147.1070147768302,
709
+ "projected_total_cost_usd": 204.47875053979396
710
+ },
711
+ {
712
+ "iteration": 39500,
713
+ "train_loss": 3.2651331424713135,
714
+ "validation_loss": 3.3594908714294434,
715
+ "learning_rate": 3.410036859829256e-05,
716
+ "elapsed_seconds": 461770.6794984429,
717
+ "projected_total_hours": 147.10416161237316,
718
+ "projected_total_cost_usd": 204.47478464119868
719
+ },
720
+ {
721
+ "iteration": 40000,
722
+ "train_loss": 3.261547803878784,
723
+ "validation_loss": 3.3563365936279297,
724
+ "learning_rate": 3.261641281158625e-05,
725
+ "elapsed_seconds": 467615.53966924874,
726
+ "projected_total_hours": 147.1040551876178,
727
+ "projected_total_cost_usd": 204.47463671078873
728
+ },
729
+ {
730
+ "iteration": 40500,
731
+ "train_loss": 3.2590126991271973,
732
+ "validation_loss": 3.3551130294799805,
733
+ "learning_rate": 3.126024151979095e-05,
734
+ "elapsed_seconds": 473461.22736253403,
735
+ "projected_total_hours": 147.10420850152806,
736
+ "projected_total_cost_usd": 204.47484981712398
737
+ },
738
+ {
739
+ "iteration": 41000,
740
+ "train_loss": 3.255312919616699,
741
+ "validation_loss": 3.3526666164398193,
742
+ "learning_rate": 3.0033507008723506e-05,
743
+ "elapsed_seconds": 479312.32710030675,
744
+ "projected_total_hours": 147.1060190897283,
745
+ "projected_total_cost_usd": 204.47736653472234
746
+ },
747
+ {
748
+ "iteration": 41500,
749
+ "train_loss": 3.2539491653442383,
750
+ "validation_loss": 3.350898504257202,
751
+ "learning_rate": 2.8937703865421725e-05,
752
+ "elapsed_seconds": 485160.5302867908,
753
+ "projected_total_hours": 147.10690777772172,
754
+ "projected_total_cost_usd": 204.47860181103317
755
+ },
756
+ {
757
+ "iteration": 42000,
758
+ "train_loss": 3.2522432804107666,
759
+ "validation_loss": 3.349637746810913,
760
+ "learning_rate": 2.797416715722014e-05,
761
+ "elapsed_seconds": 491000.89962377073,
762
+ "projected_total_hours": 147.1054282602964,
763
+ "projected_total_cost_usd": 204.47654528181198
764
+ },
765
+ {
766
+ "iteration": 42500,
767
+ "train_loss": 3.2494194507598877,
768
+ "validation_loss": 3.347707509994507,
769
+ "learning_rate": 2.7144070805176307e-05,
770
+ "elapsed_seconds": 496843.76710513374,
771
+ "projected_total_hours": 147.10472320171607,
772
+ "projected_total_cost_usd": 204.47556525038533
773
+ },
774
+ {
775
+ "iteration": 43000,
776
+ "train_loss": 3.247154474258423,
777
+ "validation_loss": 3.3457424640655518,
778
+ "learning_rate": 2.6448426153828607e-05,
779
+ "elapsed_seconds": 502679.92955206474,
780
+ "projected_total_hours": 147.10207240767787,
781
+ "projected_total_cost_usd": 204.47188064667222
782
+ },
783
+ {
784
+ "iteration": 43500,
785
+ "train_loss": 3.2443184852600098,
786
+ "validation_loss": 3.3455331325531006,
787
+ "learning_rate": 2.588808073902886e-05,
788
+ "elapsed_seconds": 508520.75622208,
789
+ "projected_total_hours": 147.10083178071662,
790
+ "projected_total_cost_usd": 204.47015617519608
791
+ },
792
+ {
793
+ "iteration": 44000,
794
+ "train_loss": 3.2425286769866943,
795
+ "validation_loss": 3.344048500061035,
796
+ "learning_rate": 2.5463717255350436e-05,
797
+ "elapsed_seconds": 514355.92856104113,
798
+ "projected_total_hours": 147.0980022968129,
799
+ "projected_total_cost_usd": 204.4662231925699
800
+ },
801
+ {
802
+ "iteration": 44500,
803
+ "train_loss": 3.2407639026641846,
804
+ "validation_loss": 3.343557834625244,
805
+ "learning_rate": 2.5175852724329982e-05,
806
+ "elapsed_seconds": 520196.1437763069,
807
+ "projected_total_hours": 147.0966623786935,
808
+ "projected_total_cost_usd": 204.46436070638396
809
+ },
810
+ {
811
+ "iteration": 45000,
812
+ "train_loss": 3.239764928817749,
813
+ "validation_loss": 3.3421542644500732,
814
+ "learning_rate": 2.5024837864556432e-05,
815
+ "elapsed_seconds": 526028.3676926447,
816
+ "projected_total_hours": 147.09311763257287,
817
+ "projected_total_cost_usd": 204.45943350927627
818
+ },
819
+ {
820
+ "iteration": 45300,
821
+ "train_loss": 3.2387826442718506,
822
+ "validation_loss": 3.3402066230773926,
823
+ "learning_rate": 2.5000000274155676e-05,
824
+ "elapsed_seconds": 529567.9590760078,
825
+ "projected_total_hours": 147.1022108544466,
826
+ "projected_total_cost_usd": 204.47207308768077
827
+ }
828
+ ],
829
+ "environment": {
830
+ "python": "3.11.10",
831
+ "platform": "Linux-6.8.0-124-generic-x86_64-with-glibc2.35",
832
+ "torch": "2.5.1+cu124",
833
+ "cuda": "12.4",
834
+ "gpu": "NVIDIA A100 80GB PCIe"
835
+ },
836
+ "data_manifest_sha256": "c8cb248a827a40f241297474b8e1c2e64589ecd3dbaebe860474aa401697bf98",
837
+ "peak_vram_bytes": 54941026304,
838
+ "gpu_total_bytes": 85093777408,
839
+ "estimated_training_cost_usd": 204.4843982894051
840
+ }