teapottrainer 0.1.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,148 @@
1
+ from .config import TrainingConfig, ModelConfig, DatasetSpec
2
+ from .trainer import TeapotTrainer
3
+ from .datasets import (
4
+ DatasetSourceConfig,
5
+ DatasetRegistry,
6
+ FINEWEB_EDU,
7
+ DCLM_EDU,
8
+ STACK_EDU,
9
+ FINEMATH,
10
+ INFIWEBMATH,
11
+ COSMOPEDIA_V2,
12
+ SMOLTALK,
13
+ SMOLTALK_MAGPIE,
14
+ SMOLTALK_EVERYDAY,
15
+ SMOLTALK_OPENHERMES,
16
+ SMOLTALK_CONSTRAINTS,
17
+ SMOLTALK_SYSTEMCHATS,
18
+ SMOLTALK_SUMMARIZE,
19
+ SMOLTALK_REWRITE,
20
+ SMOLTALK_APIGEN,
21
+ SMOLTALK_APIGEN_DECISION,
22
+ SMOLTALK_APIGEN_ALIASED,
23
+ SMOLTALK_APIGEN_MISSING,
24
+ SMOLTALK_APIGEN_UNRELATED,
25
+ SMOLTALK_METAMATH,
26
+ SMOLTALK_MAGPIE_TEST,
27
+ SMOLTALK_CONSTRAINTS_TEST,
28
+ SMOLTALK_APIGEN_TEST,
29
+ SMOLTALK_APIGEN_DECISION_TEST,
30
+ SMOLTALK_APIGEN_ALIASED_TEST,
31
+ GSM8K,
32
+ GSM8K_TEST,
33
+ WHEN2CALL,
34
+ WHEN2CALL_TEST,
35
+ WHEN2CALL_ASK,
36
+ WHEN2CALL_REFUSE,
37
+ SQUAD_V2,
38
+ SQUAD_V2_VAL,
39
+ HOTPOT,
40
+ HOTPOT_VAL,
41
+ SYNTHQA,
42
+ SYNTHQA_TEST,
43
+ SYNTHQA_ANSWERABLE,
44
+ SYNTHQA_UNANSWERABLE,
45
+ TEAPOT_CHAT,
46
+ SQUAD_V2_ANSWERABLE,
47
+ SQUAD_V2_UNANSWERABLE,
48
+ SQUAD_V2_CONTRASTIVE,
49
+ HOTPOT_CONTRASTIVE,
50
+ SYNTHQA_CONTRASTIVE,
51
+ IFEVAL,
52
+ MT_BENCH,
53
+ ALPACA_EVAL,
54
+ ARENA_HARD,
55
+ ARC_EASY,
56
+ ARC_EASY_VAL,
57
+ HELLASWAG,
58
+ HELLASWAG_VAL,
59
+ PIQA,
60
+ PIQA_VAL,
61
+ WINOGRANDE,
62
+ WINOGRANDE_VAL,
63
+ COQA,
64
+ COQA_VAL,
65
+ DROP,
66
+ DROP_VAL,
67
+ HERMES_FUNCTION_CALLING,
68
+ BFCL_SIMPLE,
69
+ BFCL_MULTIPLE,
70
+ BFCL_PARALLEL,
71
+ BFCL_IRRELEVANCE,
72
+ )
73
+
74
+ __version__ = "0.1.0"
75
+ __all__ = [
76
+ "TeapotTrainer",
77
+ "TrainingConfig",
78
+ "ModelConfig",
79
+ "DatasetSpec",
80
+ "DatasetSourceConfig",
81
+ "DatasetRegistry",
82
+ "FINEWEB_EDU",
83
+ "DCLM_EDU",
84
+ "STACK_EDU",
85
+ "FINEMATH",
86
+ "INFIWEBMATH",
87
+ "COSMOPEDIA_V2",
88
+ "SMOLTALK",
89
+ "SMOLTALK_MAGPIE",
90
+ "SMOLTALK_EVERYDAY",
91
+ "SMOLTALK_OPENHERMES",
92
+ "SMOLTALK_CONSTRAINTS",
93
+ "SMOLTALK_SYSTEMCHATS",
94
+ "SMOLTALK_SUMMARIZE",
95
+ "SMOLTALK_REWRITE",
96
+ "SMOLTALK_APIGEN",
97
+ "SMOLTALK_APIGEN_DECISION",
98
+ "SMOLTALK_APIGEN_ALIASED",
99
+ "SMOLTALK_APIGEN_MISSING",
100
+ "SMOLTALK_APIGEN_UNRELATED",
101
+ "SMOLTALK_METAMATH",
102
+ "SMOLTALK_MAGPIE_TEST",
103
+ "SMOLTALK_CONSTRAINTS_TEST",
104
+ "SMOLTALK_APIGEN_TEST",
105
+ "SMOLTALK_APIGEN_DECISION_TEST",
106
+ "SMOLTALK_APIGEN_ALIASED_TEST",
107
+ "GSM8K",
108
+ "GSM8K_TEST",
109
+ "WHEN2CALL",
110
+ "WHEN2CALL_TEST",
111
+ "WHEN2CALL_ASK",
112
+ "WHEN2CALL_REFUSE",
113
+ "SQUAD_V2",
114
+ "SQUAD_V2_VAL",
115
+ "HOTPOT",
116
+ "HOTPOT_VAL",
117
+ "SYNTHQA",
118
+ "SYNTHQA_TEST",
119
+ "SYNTHQA_ANSWERABLE",
120
+ "SYNTHQA_UNANSWERABLE",
121
+ "TEAPOT_CHAT",
122
+ "SQUAD_V2_ANSWERABLE",
123
+ "SQUAD_V2_UNANSWERABLE",
124
+ "SQUAD_V2_CONTRASTIVE",
125
+ "HOTPOT_CONTRASTIVE",
126
+ "SYNTHQA_CONTRASTIVE",
127
+ "IFEVAL",
128
+ "MT_BENCH",
129
+ "ALPACA_EVAL",
130
+ "ARENA_HARD",
131
+ "ARC_EASY",
132
+ "ARC_EASY_VAL",
133
+ "HELLASWAG",
134
+ "HELLASWAG_VAL",
135
+ "PIQA",
136
+ "PIQA_VAL",
137
+ "WINOGRANDE",
138
+ "WINOGRANDE_VAL",
139
+ "COQA",
140
+ "COQA_VAL",
141
+ "DROP",
142
+ "DROP_VAL",
143
+ "HERMES_FUNCTION_CALLING",
144
+ "BFCL_SIMPLE",
145
+ "BFCL_MULTIPLE",
146
+ "BFCL_PARALLEL",
147
+ "BFCL_IRRELEVANCE",
148
+ ]
@@ -0,0 +1,54 @@
1
+ from pydantic import BaseModel, Field, ConfigDict
2
+ from typing import Optional, List, Any, Union
3
+ from .datasets import DatasetSourceConfig, FINEWEB_EDU
4
+
5
+ class ModelConfig(BaseModel):
6
+ model_type: str = "llama"
7
+ hidden_size: int = 768
8
+ layers: int = Field(12, alias="num_hidden_layers")
9
+ heads: int = Field(12, alias="num_attention_heads")
10
+ kv_heads: int = Field(4, alias="num_key_value_heads")
11
+ intermediate: int = Field(3072, alias="intermediate_size")
12
+ seq_len: int = Field(2048, alias="max_position_embeddings")
13
+
14
+ custom_config_cls: Optional[Any] = None
15
+ custom_model_cls: Optional[Any] = None
16
+
17
+ model_config = ConfigDict(populate_by_name=True, arbitrary_types_allowed=True)
18
+
19
+
20
+ class DatasetSpec(BaseModel):
21
+ source: Union[DatasetSourceConfig, str] = FINEWEB_EDU
22
+ target_tokens: int = 1_000_000_000
23
+ weight: float = 1.0
24
+
25
+ model_config = ConfigDict(populate_by_name=True, arbitrary_types_allowed=True)
26
+
27
+
28
+ class TrainingConfig(BaseModel):
29
+ model: ModelConfig = Field(default_factory=ModelConfig, alias="model_config")
30
+
31
+ pretrain_datasets: List[DatasetSpec] = Field(
32
+ default_factory=lambda: [DatasetSpec(source=FINEWEB_EDU, target_tokens=2_000_000_000)]
33
+ )
34
+ sft_datasets: List[DatasetSpec] = Field(default_factory=list)
35
+ eval_datasets: List[DatasetSpec] = Field(default_factory=list)
36
+
37
+ tokenizer: str = "Qwen/Qwen2.5-0.5B"
38
+ # Hugging Face id or local directory. None builds a new model from the config.
39
+ init_from: Optional[str] = None
40
+ batch_size: int = 4
41
+ grad_accum: int = 32
42
+ lr: float = 5e-4
43
+ weight_decay: float = 0.1
44
+ compile: bool = True
45
+ logging_dir: Optional[str] = None
46
+
47
+ eval_every_percent: float = 5.0
48
+ # At each pretrain eval checkpoint, train a copy on the full SFT mix and
49
+ # save it beside the base weights. The pretrain model keeps training.
50
+ sft_at_checkpoints: bool = False
51
+ holdout_ratio: float = 0.05
52
+ seed: int = 42
53
+
54
+ model_config = ConfigDict(populate_by_name=True)