together 1.5.35__py3-none-any.whl → 2.0.0a6__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.
Files changed (208) hide show
  1. together/__init__.py +101 -114
  2. together/_base_client.py +1995 -0
  3. together/_client.py +1033 -0
  4. together/_compat.py +219 -0
  5. together/_constants.py +14 -0
  6. together/_exceptions.py +108 -0
  7. together/_files.py +123 -0
  8. together/_models.py +857 -0
  9. together/_qs.py +150 -0
  10. together/_resource.py +43 -0
  11. together/_response.py +830 -0
  12. together/_streaming.py +370 -0
  13. together/_types.py +260 -0
  14. together/_utils/__init__.py +64 -0
  15. together/_utils/_compat.py +45 -0
  16. together/_utils/_datetime_parse.py +136 -0
  17. together/_utils/_logs.py +25 -0
  18. together/_utils/_proxy.py +65 -0
  19. together/_utils/_reflection.py +42 -0
  20. together/_utils/_resources_proxy.py +24 -0
  21. together/_utils/_streams.py +12 -0
  22. together/_utils/_sync.py +58 -0
  23. together/_utils/_transform.py +457 -0
  24. together/_utils/_typing.py +156 -0
  25. together/_utils/_utils.py +421 -0
  26. together/_version.py +4 -0
  27. together/lib/.keep +4 -0
  28. together/lib/__init__.py +23 -0
  29. together/{cli → lib/cli}/api/endpoints.py +66 -84
  30. together/{cli/api/evaluation.py → lib/cli/api/evals.py} +152 -43
  31. together/{cli → lib/cli}/api/files.py +20 -17
  32. together/{cli/api/finetune.py → lib/cli/api/fine_tuning.py} +116 -172
  33. together/{cli → lib/cli}/api/models.py +34 -27
  34. together/lib/cli/api/utils.py +50 -0
  35. together/{cli → lib/cli}/cli.py +16 -26
  36. together/{constants.py → lib/constants.py} +11 -24
  37. together/lib/resources/__init__.py +11 -0
  38. together/lib/resources/files.py +999 -0
  39. together/lib/resources/fine_tuning.py +280 -0
  40. together/lib/resources/models.py +35 -0
  41. together/lib/types/__init__.py +13 -0
  42. together/lib/types/error.py +9 -0
  43. together/lib/types/fine_tuning.py +397 -0
  44. together/{utils → lib/utils}/__init__.py +6 -14
  45. together/{utils → lib/utils}/_log.py +11 -16
  46. together/{utils → lib/utils}/files.py +90 -288
  47. together/lib/utils/serializer.py +10 -0
  48. together/{utils → lib/utils}/tools.py +19 -55
  49. together/resources/__init__.py +225 -39
  50. together/resources/audio/__init__.py +72 -48
  51. together/resources/audio/audio.py +198 -0
  52. together/resources/audio/speech.py +574 -128
  53. together/resources/audio/transcriptions.py +247 -261
  54. together/resources/audio/translations.py +221 -241
  55. together/resources/audio/voices.py +111 -41
  56. together/resources/batches.py +417 -0
  57. together/resources/chat/__init__.py +30 -21
  58. together/resources/chat/chat.py +102 -0
  59. together/resources/chat/completions.py +1063 -263
  60. together/resources/code_interpreter/__init__.py +33 -0
  61. together/resources/code_interpreter/code_interpreter.py +258 -0
  62. together/resources/code_interpreter/sessions.py +135 -0
  63. together/resources/completions.py +884 -225
  64. together/resources/embeddings.py +172 -68
  65. together/resources/endpoints.py +589 -490
  66. together/resources/evals.py +452 -0
  67. together/resources/files.py +397 -129
  68. together/resources/fine_tuning.py +1033 -0
  69. together/resources/hardware.py +181 -0
  70. together/resources/images.py +258 -104
  71. together/resources/jobs.py +214 -0
  72. together/resources/models.py +223 -193
  73. together/resources/rerank.py +190 -92
  74. together/resources/videos.py +286 -214
  75. together/types/__init__.py +66 -167
  76. together/types/audio/__init__.py +10 -0
  77. together/types/audio/speech_create_params.py +75 -0
  78. together/types/audio/transcription_create_params.py +54 -0
  79. together/types/audio/transcription_create_response.py +111 -0
  80. together/types/audio/translation_create_params.py +40 -0
  81. together/types/audio/translation_create_response.py +70 -0
  82. together/types/audio/voice_list_response.py +23 -0
  83. together/types/audio_speech_stream_chunk.py +16 -0
  84. together/types/autoscaling.py +13 -0
  85. together/types/autoscaling_param.py +15 -0
  86. together/types/batch_create_params.py +24 -0
  87. together/types/batch_create_response.py +14 -0
  88. together/types/batch_job.py +45 -0
  89. together/types/batch_list_response.py +10 -0
  90. together/types/chat/__init__.py +18 -0
  91. together/types/chat/chat_completion.py +60 -0
  92. together/types/chat/chat_completion_chunk.py +61 -0
  93. together/types/chat/chat_completion_structured_message_image_url_param.py +18 -0
  94. together/types/chat/chat_completion_structured_message_text_param.py +13 -0
  95. together/types/chat/chat_completion_structured_message_video_url_param.py +18 -0
  96. together/types/chat/chat_completion_usage.py +13 -0
  97. together/types/chat/chat_completion_warning.py +9 -0
  98. together/types/chat/completion_create_params.py +329 -0
  99. together/types/code_interpreter/__init__.py +5 -0
  100. together/types/code_interpreter/session_list_response.py +31 -0
  101. together/types/code_interpreter_execute_params.py +45 -0
  102. together/types/completion.py +42 -0
  103. together/types/completion_chunk.py +66 -0
  104. together/types/completion_create_params.py +138 -0
  105. together/types/dedicated_endpoint.py +44 -0
  106. together/types/embedding.py +24 -0
  107. together/types/embedding_create_params.py +31 -0
  108. together/types/endpoint_create_params.py +43 -0
  109. together/types/endpoint_list_avzones_response.py +11 -0
  110. together/types/endpoint_list_params.py +18 -0
  111. together/types/endpoint_list_response.py +41 -0
  112. together/types/endpoint_update_params.py +27 -0
  113. together/types/eval_create_params.py +263 -0
  114. together/types/eval_create_response.py +16 -0
  115. together/types/eval_list_params.py +21 -0
  116. together/types/eval_list_response.py +10 -0
  117. together/types/eval_status_response.py +100 -0
  118. together/types/evaluation_job.py +139 -0
  119. together/types/execute_response.py +108 -0
  120. together/types/file_delete_response.py +13 -0
  121. together/types/file_list.py +12 -0
  122. together/types/file_purpose.py +9 -0
  123. together/types/file_response.py +31 -0
  124. together/types/file_type.py +7 -0
  125. together/types/fine_tuning_cancel_response.py +194 -0
  126. together/types/fine_tuning_content_params.py +24 -0
  127. together/types/fine_tuning_delete_params.py +11 -0
  128. together/types/fine_tuning_delete_response.py +12 -0
  129. together/types/fine_tuning_list_checkpoints_response.py +21 -0
  130. together/types/fine_tuning_list_events_response.py +12 -0
  131. together/types/fine_tuning_list_response.py +199 -0
  132. together/types/finetune_event.py +41 -0
  133. together/types/finetune_event_type.py +33 -0
  134. together/types/finetune_response.py +177 -0
  135. together/types/hardware_list_params.py +16 -0
  136. together/types/hardware_list_response.py +58 -0
  137. together/types/image_data_b64.py +15 -0
  138. together/types/image_data_url.py +15 -0
  139. together/types/image_file.py +23 -0
  140. together/types/image_generate_params.py +85 -0
  141. together/types/job_list_response.py +47 -0
  142. together/types/job_retrieve_response.py +43 -0
  143. together/types/log_probs.py +18 -0
  144. together/types/model_list_response.py +10 -0
  145. together/types/model_object.py +42 -0
  146. together/types/model_upload_params.py +36 -0
  147. together/types/model_upload_response.py +23 -0
  148. together/types/rerank_create_params.py +36 -0
  149. together/types/rerank_create_response.py +36 -0
  150. together/types/tool_choice.py +23 -0
  151. together/types/tool_choice_param.py +23 -0
  152. together/types/tools_param.py +23 -0
  153. together/types/training_method_dpo.py +22 -0
  154. together/types/training_method_sft.py +18 -0
  155. together/types/video_create_params.py +86 -0
  156. together/types/video_create_response.py +10 -0
  157. together/types/video_job.py +57 -0
  158. together-2.0.0a6.dist-info/METADATA +729 -0
  159. together-2.0.0a6.dist-info/RECORD +165 -0
  160. {together-1.5.35.dist-info → together-2.0.0a6.dist-info}/WHEEL +1 -1
  161. together-2.0.0a6.dist-info/entry_points.txt +2 -0
  162. {together-1.5.35.dist-info → together-2.0.0a6.dist-info}/licenses/LICENSE +1 -1
  163. together/abstract/api_requestor.py +0 -770
  164. together/cli/api/chat.py +0 -298
  165. together/cli/api/completions.py +0 -119
  166. together/cli/api/images.py +0 -93
  167. together/cli/api/utils.py +0 -139
  168. together/client.py +0 -186
  169. together/error.py +0 -194
  170. together/filemanager.py +0 -635
  171. together/legacy/__init__.py +0 -0
  172. together/legacy/base.py +0 -27
  173. together/legacy/complete.py +0 -93
  174. together/legacy/embeddings.py +0 -27
  175. together/legacy/files.py +0 -146
  176. together/legacy/finetune.py +0 -177
  177. together/legacy/images.py +0 -27
  178. together/legacy/models.py +0 -44
  179. together/resources/batch.py +0 -165
  180. together/resources/code_interpreter.py +0 -82
  181. together/resources/evaluation.py +0 -808
  182. together/resources/finetune.py +0 -1388
  183. together/together_response.py +0 -50
  184. together/types/abstract.py +0 -26
  185. together/types/audio_speech.py +0 -311
  186. together/types/batch.py +0 -54
  187. together/types/chat_completions.py +0 -210
  188. together/types/code_interpreter.py +0 -57
  189. together/types/common.py +0 -67
  190. together/types/completions.py +0 -107
  191. together/types/embeddings.py +0 -35
  192. together/types/endpoints.py +0 -123
  193. together/types/error.py +0 -16
  194. together/types/evaluation.py +0 -93
  195. together/types/files.py +0 -93
  196. together/types/finetune.py +0 -465
  197. together/types/images.py +0 -42
  198. together/types/models.py +0 -96
  199. together/types/rerank.py +0 -43
  200. together/types/videos.py +0 -69
  201. together/utils/api_helpers.py +0 -124
  202. together/version.py +0 -6
  203. together-1.5.35.dist-info/METADATA +0 -583
  204. together-1.5.35.dist-info/RECORD +0 -77
  205. together-1.5.35.dist-info/entry_points.txt +0 -3
  206. /together/{abstract → lib/cli}/__init__.py +0 -0
  207. /together/{cli → lib/cli/api}/__init__.py +0 -0
  208. /together/{cli/api/__init__.py → py.typed} +0 -0
@@ -0,0 +1,397 @@
1
+ from enum import Enum
2
+ from typing import Any, List, Union, Literal, Optional
3
+ from datetime import datetime
4
+ from typing_extensions import TypeAlias
5
+
6
+ from pydantic import Field, StrictBool
7
+
8
+ from ..._models import BaseModel
9
+
10
+
11
+ class FinetuneJobStatus(str, Enum):
12
+ """
13
+ Possible fine-tune job status
14
+ """
15
+
16
+ STATUS_PENDING = "pending"
17
+ STATUS_QUEUED = "queued"
18
+ STATUS_RUNNING = "running"
19
+ STATUS_COMPRESSING = "compressing"
20
+ STATUS_UPLOADING = "uploading"
21
+ STATUS_CANCEL_REQUESTED = "cancel_requested"
22
+ STATUS_CANCELLED = "cancelled"
23
+ STATUS_ERROR = "error"
24
+ STATUS_USER_ERROR = "user_error"
25
+ STATUS_COMPLETED = "completed"
26
+
27
+
28
+ class FinetuneEventType(str, Enum):
29
+ """
30
+ Fine-tune job event types
31
+ """
32
+
33
+ JOB_PENDING = "JOB_PENDING"
34
+ JOB_START = "JOB_START"
35
+ JOB_STOPPED = "JOB_STOPPED"
36
+ MODEL_DOWNLOADING = "MODEL_DOWNLOADING"
37
+ MODEL_DOWNLOAD_COMPLETE = "MODEL_DOWNLOAD_COMPLETE"
38
+ TRAINING_DATA_DOWNLOADING = "TRAINING_DATA_DOWNLOADING"
39
+ TRAINING_DATA_DOWNLOAD_COMPLETE = "TRAINING_DATA_DOWNLOAD_COMPLETE"
40
+ VALIDATION_DATA_DOWNLOADING = "VALIDATION_DATA_DOWNLOADING"
41
+ VALIDATION_DATA_DOWNLOAD_COMPLETE = "VALIDATION_DATA_DOWNLOAD_COMPLETE"
42
+ WANDB_INIT = "WANDB_INIT"
43
+ TRAINING_START = "TRAINING_START"
44
+ CHECKPOINT_SAVE = "CHECKPOINT_SAVE"
45
+ BILLING_LIMIT = "BILLING_LIMIT"
46
+ EPOCH_COMPLETE = "EPOCH_COMPLETE"
47
+ EVAL_COMPLETE = "EVAL_COMPLETE"
48
+ TRAINING_COMPLETE = "TRAINING_COMPLETE"
49
+ MODEL_COMPRESSING = "COMPRESSING_MODEL"
50
+ MODEL_COMPRESSION_COMPLETE = "MODEL_COMPRESSION_COMPLETE"
51
+ MODEL_UPLOADING = "MODEL_UPLOADING"
52
+ MODEL_UPLOAD_COMPLETE = "MODEL_UPLOAD_COMPLETE"
53
+ MODEL_UPLOADING_TO_HF = "MODEL_UPLOADING_TO_HF"
54
+ MODEL_UPLOAD_TO_HF_COMPLETE = "MODEL_UPLOAD_TO_HF_COMPLETE"
55
+ JOB_COMPLETE = "JOB_COMPLETE"
56
+ JOB_ERROR = "JOB_ERROR"
57
+ JOB_USER_ERROR = "JOB_USER_ERROR"
58
+ CANCEL_REQUESTED = "CANCEL_REQUESTED"
59
+ JOB_RESTARTED = "JOB_RESTARTED"
60
+ REFUND = "REFUND"
61
+ WARNING = "WARNING"
62
+
63
+
64
+ class FinetuneEventLevels(str, Enum):
65
+ """
66
+ Fine-tune job event status levels
67
+ """
68
+
69
+ NULL = ""
70
+ INFO = "Info"
71
+ WARNING = "Warning"
72
+ ERROR = "Error"
73
+ LEGACY_INFO = "info"
74
+ LEGACY_IWARNING = "warning"
75
+ LEGACY_IERROR = "error"
76
+
77
+
78
+ class FinetuneEvent(BaseModel):
79
+ """
80
+ Fine-tune event type
81
+ """
82
+
83
+ # object type
84
+ object: Literal["fine-tune-event"]
85
+ # created at datetime stamp
86
+ created_at: Union[str, None] = None
87
+ # event log level
88
+ level: Union[FinetuneEventLevels, None] = None
89
+ # event message string
90
+ message: Union[str, None] = None
91
+ # event type
92
+ type: Union[FinetuneEventType, None] = None
93
+ # optional: model parameter count
94
+ param_count: Union[int, None] = None
95
+ # optional: dataset token count
96
+ token_count: Union[int, None] = None
97
+ # optional: weights & biases url
98
+ wandb_url: Union[str, None] = None
99
+ # event hash
100
+ hash: Union[str, None] = None
101
+
102
+
103
+ class FullTrainingType(BaseModel):
104
+ """
105
+ Training type for full fine-tuning
106
+ """
107
+
108
+ type: Union[Literal["Full"], Literal[""]] = "Full"
109
+
110
+
111
+ class LoRATrainingType(BaseModel):
112
+ """
113
+ Training type for LoRA adapters training
114
+ """
115
+
116
+ lora_r: int
117
+ lora_alpha: int
118
+ lora_dropout: float = 0.0
119
+ lora_trainable_modules: str = "all-linear"
120
+ type: Literal["Lora"] = "Lora"
121
+
122
+
123
+ TrainingType: TypeAlias = Union[FullTrainingType, LoRATrainingType]
124
+
125
+
126
+ class FinetuneFullTrainingLimits(BaseModel):
127
+ max_batch_size: int
128
+ max_batch_size_dpo: int = -1
129
+ min_batch_size: int
130
+
131
+ def __init__(self, **data: Any) -> None:
132
+ super().__init__(**data)
133
+ if self.max_batch_size_dpo == -1:
134
+ half_max = self.max_batch_size // 2
135
+ rounded_half_max = (half_max // 8) * 8
136
+ self.max_batch_size_dpo = max(self.min_batch_size, rounded_half_max)
137
+
138
+
139
+ class FinetuneLoraTrainingLimits(FinetuneFullTrainingLimits):
140
+ max_rank: int
141
+ target_modules: List[str]
142
+
143
+
144
+ class TrainingMethodSFT(BaseModel):
145
+ """
146
+ Training method type for SFT training
147
+ """
148
+
149
+ method: Literal["sft"] = "sft"
150
+ train_on_inputs: Union[StrictBool, Literal["auto"]] = "auto"
151
+
152
+
153
+ class TrainingMethodDPO(BaseModel):
154
+ """
155
+ Training method type for DPO training
156
+ """
157
+
158
+ method: Literal["dpo"] = "dpo"
159
+ dpo_beta: Union[float, None] = None
160
+ dpo_normalize_logratios_by_length: bool = False
161
+ dpo_reference_free: bool = False
162
+ rpo_alpha: Union[float, None] = None
163
+ simpo_gamma: Union[float, None] = None
164
+
165
+
166
+ TrainingMethod: TypeAlias = Union[TrainingMethodSFT, TrainingMethodDPO]
167
+
168
+
169
+ class FinetuneTrainingLimits(BaseModel):
170
+ max_num_epochs: int
171
+ max_learning_rate: float
172
+ min_learning_rate: float
173
+ full_training: Optional[FinetuneFullTrainingLimits] = None
174
+ lora_training: Optional[FinetuneLoraTrainingLimits] = None
175
+
176
+
177
+ class LinearLRSchedulerArgs(BaseModel):
178
+ min_lr_ratio: Union[float, None] = 0.0
179
+
180
+
181
+ class CosineLRSchedulerArgs(BaseModel):
182
+ min_lr_ratio: Union[float, None] = 0.0
183
+ num_cycles: Union[float, None] = 0.5
184
+
185
+
186
+ class LinearLRScheduler(BaseModel):
187
+ lr_scheduler_type: Literal["linear"] = "linear"
188
+ lr_scheduler_args: Union[LinearLRSchedulerArgs, None] = None
189
+
190
+
191
+ class CosineLRScheduler(BaseModel):
192
+ lr_scheduler_type: Literal["cosine"] = "cosine"
193
+ lr_scheduler_args: Union[CosineLRSchedulerArgs, None] = None
194
+
195
+
196
+ # placeholder for old fine-tuning jobs with no lr_scheduler_type specified
197
+ class EmptyLRScheduler(BaseModel):
198
+ lr_scheduler_type: Literal[""]
199
+ lr_scheduler_args: None = None
200
+
201
+
202
+ FinetuneLRScheduler: TypeAlias = Union[LinearLRScheduler, CosineLRScheduler, EmptyLRScheduler]
203
+
204
+
205
+ class FinetuneResponse(BaseModel):
206
+ """
207
+ Fine-tune API response type
208
+ """
209
+
210
+ id: str
211
+ """Unique identifier for the fine-tune job"""
212
+
213
+ created_at: datetime
214
+ """Creation timestamp of the fine-tune job"""
215
+
216
+ status: Optional[FinetuneJobStatus] = None
217
+ """Status of the fine-tune job"""
218
+
219
+ updated_at: datetime
220
+ """Last update timestamp of the fine-tune job"""
221
+
222
+ batch_size: Optional[int] = None
223
+ """Batch size used for training"""
224
+
225
+ events: Optional[List[FinetuneEvent]] = None
226
+ """Events related to this fine-tune job"""
227
+
228
+ from_checkpoint: Optional[str] = None
229
+ """Checkpoint used to continue training"""
230
+
231
+ from_hf_model: Optional[str] = None
232
+ """Hugging Face Hub repo to start training from"""
233
+
234
+ hf_model_revision: Optional[str] = None
235
+ """The revision of the Hugging Face Hub model to continue training from"""
236
+
237
+ learning_rate: Optional[float] = None
238
+ """Learning rate used for training"""
239
+
240
+ lr_scheduler: Optional[FinetuneLRScheduler] = None
241
+ """Learning rate scheduler configuration"""
242
+
243
+ max_grad_norm: Optional[float] = None
244
+ """Maximum gradient norm for clipping"""
245
+
246
+ model: Optional[str] = None
247
+ """Base model used for fine-tuning"""
248
+
249
+ output_name: Optional[str] = Field(alias="model_output_name")
250
+ """Output model name"""
251
+
252
+ adapter_output_name: Optional[str]
253
+ """Adapter output name"""
254
+
255
+ n_checkpoints: Optional[int] = None
256
+ """Number of checkpoints saved during training"""
257
+
258
+ n_epochs: Optional[int] = None
259
+ """Number of training epochs"""
260
+
261
+ n_evals: Optional[int] = None
262
+ """Number of evaluations during training"""
263
+
264
+ owner_address: Optional[str] = None
265
+ """Owner address information"""
266
+
267
+ suffix: Optional[str] = None
268
+ """Suffix added to the fine-tuned model name"""
269
+
270
+ token_count: Optional[int] = None
271
+ """Count of tokens processed"""
272
+
273
+ total_price: Optional[int] = None
274
+ """Total price for the fine-tuning job"""
275
+
276
+ training_file: Optional[str] = None
277
+ """File-ID of the training file"""
278
+
279
+ training_method: Optional[TrainingMethod] = None
280
+ """Method of training used"""
281
+
282
+ training_type: Optional[TrainingType] = None
283
+ """Type of training used (full or LoRA)"""
284
+
285
+ user_id: Optional[str] = None
286
+ """Identifier for the user who created the job"""
287
+
288
+ validation_file: Optional[str] = None
289
+ """File-ID of the validation file"""
290
+
291
+ wandb_name: Optional[str] = None
292
+ """Weights & Biases run name"""
293
+
294
+ wandb_project_name: Optional[str] = None
295
+ """Weights & Biases project name"""
296
+
297
+ wandb_base_url: Union[str, None] = None
298
+ """Weights & Biases base URL"""
299
+
300
+ wandb_url: Union[str, None] = None
301
+ """Weights & Biases job URL"""
302
+
303
+ warmup_ratio: Optional[float] = None
304
+ """Ratio of warmup steps"""
305
+
306
+ weight_decay: Optional[float] = None
307
+ """Weight decay value used"""
308
+
309
+ eval_steps: Union[int, None] = None
310
+ """number of steps between evals"""
311
+
312
+ job_id: Optional[str] = None
313
+ """Job ID"""
314
+
315
+ param_count: Optional[int] = None
316
+ """Model parameter count"""
317
+
318
+ total_steps: Optional[int] = None
319
+ """Total number of training steps"""
320
+
321
+ steps_completed: Union[int, None] = None
322
+ """Number of steps completed (incrementing counter)"""
323
+
324
+ epochs_completed: Union[int, None] = None
325
+ """Number of epochs completed (incrementing counter)"""
326
+
327
+ evals_completed: Union[int, None] = None
328
+ """Number of evaluation loops completed (incrementing counter)"""
329
+
330
+ queue_depth: Union[int, None] = None
331
+ """Place in job queue (decrementing counter)"""
332
+
333
+ # # training file metadata
334
+ training_file_num_lines: Optional[int] = Field(None, alias="TrainingFileNumLines")
335
+ training_file_size: Optional[int] = Field(None, alias="TrainingFileSize")
336
+ train_on_inputs: Union[StrictBool, Literal["auto"], None] = "auto"
337
+
338
+ @classmethod
339
+ def validate_training_type(cls, v: TrainingType) -> TrainingType:
340
+ if v.type == "Full" or v.type == "":
341
+ return FullTrainingType(**v.model_dump())
342
+ elif v.type == "Lora":
343
+ return LoRATrainingType(**v.model_dump())
344
+ else:
345
+ raise ValueError("Unknown training type")
346
+
347
+
348
+ class FinetuneRequest(BaseModel):
349
+ """
350
+ Fine-tune request type
351
+ """
352
+
353
+ # training file ID
354
+ training_file: str
355
+ # validation file id
356
+ validation_file: Union[str, None] = None
357
+ # base model string
358
+ model: Union[str, None] = None
359
+ # number of epochs to train for
360
+ n_epochs: int
361
+ # training learning rate
362
+ learning_rate: float
363
+ # learning rate scheduler type and args
364
+ lr_scheduler: Union[LinearLRScheduler, CosineLRScheduler, None] = None
365
+ # learning rate warmup ratio
366
+ warmup_ratio: float
367
+ # max gradient norm
368
+ max_grad_norm: float
369
+ # weight decay
370
+ weight_decay: float
371
+ # number of checkpoints to save
372
+ n_checkpoints: Union[int, None] = None
373
+ # number of evaluation loops to run
374
+ n_evals: Union[int, None] = None
375
+ # training batch size
376
+ batch_size: Union[int, Literal["max"], None] = None
377
+ # up to 40 character suffix for output model name
378
+ suffix: Union[str, None] = None
379
+ # weights & biases api key
380
+ wandb_key: Union[str, None] = None
381
+ # weights & biases base url
382
+ wandb_base_url: Union[str, None] = None
383
+ # wandb project name
384
+ wandb_project_name: Union[str, None] = None
385
+ # wandb run name
386
+ wandb_name: Union[str, None] = None
387
+ # training type
388
+ training_type: Union[TrainingType, None] = None
389
+ # training method
390
+ training_method: Union[TrainingMethodSFT, TrainingMethodDPO] = Field(default_factory=TrainingMethodSFT)
391
+ # from step
392
+ from_checkpoint: Union[str, None] = None
393
+ from_hf_model: Union[str, None] = None
394
+ hf_model_revision: Union[str, None] = None
395
+ # hf related fields
396
+ hf_api_token: Union[str, None] = None
397
+ hf_output_repo_name: Union[str, None] = None
@@ -1,32 +1,24 @@
1
- from together.utils._log import log_debug, log_info, log_warn, log_warn_once, logfmt
2
- from together.utils.api_helpers import default_api_key, get_headers
3
- from together.utils.files import check_file
4
- from together.utils.tools import (
1
+ from ._log import logfmt, log_info, log_warn, log_debug, log_warn_once
2
+ from .files import check_file
3
+ from .tools import (
5
4
  convert_bytes,
5
+ normalize_key,
6
+ parse_timestamp,
6
7
  convert_unix_timestamp,
7
8
  enforce_trailing_slash,
8
9
  finetune_price_to_dollars,
9
- normalize_key,
10
- parse_timestamp,
11
- format_timestamp,
12
- get_event_step,
13
10
  )
14
11
 
15
-
16
12
  __all__ = [
17
- "check_file",
18
- "get_headers",
19
- "default_api_key",
20
13
  "log_debug",
21
14
  "log_info",
22
15
  "log_warn",
23
16
  "log_warn_once",
24
17
  "logfmt",
18
+ "check_file",
25
19
  "enforce_trailing_slash",
26
20
  "normalize_key",
27
21
  "parse_timestamp",
28
- "format_timestamp",
29
- "get_event_step",
30
22
  "finetune_price_to_dollars",
31
23
  "convert_bytes",
32
24
  "convert_unix_timestamp",
@@ -1,25 +1,20 @@
1
1
  from __future__ import annotations
2
2
 
3
- import logging
4
3
  import os
5
4
  import re
6
5
  import sys
7
- from typing import Any, Dict
8
-
9
- import together
10
-
6
+ import logging
7
+ from typing import Any, Set, Dict
11
8
 
12
- logger = logging.getLogger("together")
9
+ logger: logging.Logger = logging.getLogger("together")
13
10
 
14
11
  TOGETHER_LOG = os.environ.get("TOGETHER_LOG")
15
12
 
16
- WARNING_MESSAGES_ONCE = set()
13
+ WARNING_MESSAGES_ONCE: Set[str] = set()
17
14
 
18
15
 
19
16
  def _console_log_level() -> str | None:
20
- if together.log in ["debug", "info"]:
21
- return together.log
22
- elif TOGETHER_LOG in ["debug", "info"]:
17
+ if TOGETHER_LOG in ["debug", "info"]:
23
18
  return TOGETHER_LOG
24
19
  else:
25
20
  return None
@@ -46,26 +41,26 @@ def logfmt(props: Dict[str, Any]) -> str:
46
41
  def log_debug(message: str | Any, **params: Any) -> None:
47
42
  msg = logfmt(dict(message=message, **params))
48
43
  if _console_log_level() == "debug":
49
- print(msg, file=sys.stderr)
44
+ print(msg, file=sys.stderr) # noqa
50
45
  logger.debug(msg)
51
46
 
52
47
 
53
48
  def log_info(message: str | Any, **params: Any) -> None:
54
49
  msg = logfmt(dict(message=message, **params))
55
50
  if _console_log_level() in ["debug", "info"]:
56
- print(msg, file=sys.stderr)
51
+ print(msg, file=sys.stderr) # noqa
57
52
  logger.info(msg)
58
53
 
59
54
 
60
55
  def log_warn(message: str | Any, **params: Any) -> None:
61
56
  msg = logfmt(dict(message=message, **params))
62
- print(msg, file=sys.stderr)
63
- logger.warn(msg)
57
+ print(msg, file=sys.stderr) # noqa
58
+ logger.warning(msg)
64
59
 
65
60
 
66
61
  def log_warn_once(message: str | Any, **params: Any) -> None:
67
62
  msg = logfmt(dict(message=message, **params))
68
63
  if msg not in WARNING_MESSAGES_ONCE:
69
- print(msg, file=sys.stderr)
70
- logger.warn(msg)
64
+ print(msg, file=sys.stderr) # noqa
65
+ logger.warning(msg)
71
66
  WARNING_MESSAGES_ONCE.add(msg)