arbor-ai 0.2.1__py3-none-any.whl → 0.2.2__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.
- arbor/__init__.py +17 -0
- arbor/cli.py +83 -43
- arbor/client/arbor_client.py +259 -0
- arbor/server/api/models/schemas.py +3 -1
- arbor/server/api/routes/grpo.py +2 -6
- arbor/server/api/routes/inference.py +7 -3
- arbor/server/core/config.py +293 -7
- arbor/server/core/config_manager.py +100 -0
- arbor/server/main.py +26 -1
- arbor/server/services/comms/comms.py +13 -9
- arbor/server/services/file_manager.py +7 -4
- arbor/server/services/grpo_manager.py +98 -62
- arbor/server/services/health_manager.py +171 -0
- arbor/server/services/inference/vllm_client.py +6 -4
- arbor/server/services/inference_manager.py +40 -38
- arbor/server/services/job_manager.py +2 -2
- arbor/server/services/scripts/grpo_training.py +62 -281
- arbor/server/services/scripts/mmgrpo_training.py +510 -0
- arbor/server/services/scripts/sft_training.py +8 -5
- arbor/server/services/scripts/utils/callbacks.py +33 -0
- arbor/server/services/scripts/utils/comms_monitors.py +169 -0
- arbor/server/services/scripts/utils/dataset.py +176 -0
- arbor/server/services/scripts/utils/ingestion_monitor.py +35 -0
- arbor/server/services/scripts/utils/mock_server.py +124 -0
- arbor/server/services/training_manager.py +4 -4
- arbor/server/utils/logging.py +298 -0
- {arbor_ai-0.2.1.dist-info → arbor_ai-0.2.2.dist-info}/METADATA +8 -18
- arbor_ai-0.2.2.dist-info/RECORD +51 -0
- arbor_ai-0.2.1.dist-info/RECORD +0 -42
- {arbor_ai-0.2.1.dist-info → arbor_ai-0.2.2.dist-info}/WHEEL +0 -0
- {arbor_ai-0.2.1.dist-info → arbor_ai-0.2.2.dist-info}/entry_points.txt +0 -0
- {arbor_ai-0.2.1.dist-info → arbor_ai-0.2.2.dist-info}/licenses/LICENSE +0 -0
- {arbor_ai-0.2.1.dist-info → arbor_ai-0.2.2.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,298 @@
|
|
1
|
+
"""
|
2
|
+
Logging configuration for Arbor.
|
3
|
+
Provides centralized logging setup with file and console handlers.
|
4
|
+
"""
|
5
|
+
|
6
|
+
import logging
|
7
|
+
import logging.config
|
8
|
+
import sys
|
9
|
+
from pathlib import Path
|
10
|
+
from typing import Any, Dict, Optional
|
11
|
+
|
12
|
+
|
13
|
+
class ColoredFormatter(logging.Formatter):
|
14
|
+
"""Custom formatter with colors for console output."""
|
15
|
+
|
16
|
+
# ANSI color codes
|
17
|
+
COLORS = {
|
18
|
+
"DEBUG": "\033[36m", # Cyan
|
19
|
+
"INFO": "\033[32m", # Green
|
20
|
+
"WARNING": "\033[33m", # Yellow
|
21
|
+
"ERROR": "\033[31m", # Red
|
22
|
+
"CRITICAL": "\033[35m", # Magenta
|
23
|
+
"RESET": "\033[0m", # Reset
|
24
|
+
}
|
25
|
+
|
26
|
+
def format(self, record):
|
27
|
+
# Use the name mapping to get short names, fallback to original name
|
28
|
+
name_mappings = {
|
29
|
+
"arbor.server.services.inference_manager": "infer",
|
30
|
+
"arbor.server.services.grpo_manager": "grpo",
|
31
|
+
"arbor.server.services.file_manager": "files",
|
32
|
+
"arbor.server.services.health_manager": "health",
|
33
|
+
"arbor.server.services.job_manager": "jobs",
|
34
|
+
"arbor.server.services.training_manager": "train",
|
35
|
+
"arbor.server.services.comms.comms": "comms",
|
36
|
+
"arbor.server.services.scripts.sft_training": "sft",
|
37
|
+
"arbor.server.services.scripts.grpo_training": "grpo",
|
38
|
+
"arbor.config": "config",
|
39
|
+
"arbor.cli": "cli",
|
40
|
+
"__main__": "main",
|
41
|
+
# Add uvicorn loggers
|
42
|
+
"uvicorn": "api",
|
43
|
+
"uvicorn.access": "api",
|
44
|
+
"uvicorn.error": "api",
|
45
|
+
}
|
46
|
+
|
47
|
+
# Get short name if available, otherwise use the provided name
|
48
|
+
short_name = name_mappings.get(record.name, record.name)
|
49
|
+
name = short_name.upper()
|
50
|
+
record.name = f"[{name}]".rjust(
|
51
|
+
8
|
52
|
+
) # Right-align the whole bracketed name (8 chars max)
|
53
|
+
|
54
|
+
# Store original level name for color lookup
|
55
|
+
original_level = record.levelname
|
56
|
+
|
57
|
+
# Convert level names to 4-character abbreviations
|
58
|
+
level_abbreviations = {
|
59
|
+
"DEBUG": "DEBG",
|
60
|
+
"INFO": "INFO",
|
61
|
+
"WARNING": "WARN",
|
62
|
+
"ERROR": "ERRO",
|
63
|
+
"CRITICAL": "CRIT",
|
64
|
+
}
|
65
|
+
|
66
|
+
# Get abbreviated level name and add brackets with padding
|
67
|
+
abbreviated_level = level_abbreviations.get(original_level, original_level[:4])
|
68
|
+
record.levelname = f"[{abbreviated_level}]"
|
69
|
+
|
70
|
+
# Add color to the bracketed level name
|
71
|
+
if original_level in self.COLORS:
|
72
|
+
record.levelname = (
|
73
|
+
f"{self.COLORS[original_level]}{record.levelname}{self.COLORS['RESET']}"
|
74
|
+
)
|
75
|
+
|
76
|
+
return super().format(record)
|
77
|
+
|
78
|
+
|
79
|
+
def setup_logging(
|
80
|
+
log_level: str = "INFO",
|
81
|
+
log_dir: Optional[Path] = None,
|
82
|
+
enable_file_logging: bool = True,
|
83
|
+
enable_console_logging: bool = True,
|
84
|
+
log_format: Optional[str] = None,
|
85
|
+
) -> Dict[str, Any]:
|
86
|
+
"""
|
87
|
+
Setup logging configuration for Arbor.
|
88
|
+
|
89
|
+
Args:
|
90
|
+
log_level: Logging level (DEBUG, INFO, WARNING, ERROR, CRITICAL)
|
91
|
+
log_dir: Directory for log files
|
92
|
+
enable_file_logging: Whether to enable file logging
|
93
|
+
enable_console_logging: Whether to enable console logging
|
94
|
+
log_format: Custom log format string
|
95
|
+
|
96
|
+
Returns:
|
97
|
+
Dictionary with logging configuration details
|
98
|
+
"""
|
99
|
+
|
100
|
+
# Default log format
|
101
|
+
if log_format is None:
|
102
|
+
log_format = "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
|
103
|
+
|
104
|
+
# Console format with colors and tight alignment
|
105
|
+
console_format = "%(name)s - %(levelname)s - %(message)s"
|
106
|
+
|
107
|
+
# Create formatters
|
108
|
+
file_formatter = logging.Formatter(log_format)
|
109
|
+
console_formatter = ColoredFormatter(console_format)
|
110
|
+
|
111
|
+
# Get root logger
|
112
|
+
root_logger = logging.getLogger()
|
113
|
+
root_logger.setLevel(getattr(logging, log_level.upper()))
|
114
|
+
|
115
|
+
# Clear existing handlers
|
116
|
+
root_logger.handlers.clear()
|
117
|
+
|
118
|
+
handlers = []
|
119
|
+
|
120
|
+
# Console handler
|
121
|
+
if enable_console_logging:
|
122
|
+
console_handler = logging.StreamHandler(sys.stdout)
|
123
|
+
console_handler.setLevel(getattr(logging, log_level.upper()))
|
124
|
+
console_handler.setFormatter(console_formatter)
|
125
|
+
root_logger.addHandler(console_handler)
|
126
|
+
handlers.append("console")
|
127
|
+
|
128
|
+
# File handlers
|
129
|
+
if enable_file_logging and log_dir:
|
130
|
+
log_dir = Path(log_dir)
|
131
|
+
log_dir.mkdir(parents=True, exist_ok=True)
|
132
|
+
|
133
|
+
# Main log file (all levels)
|
134
|
+
main_log_file = log_dir / "arbor.log"
|
135
|
+
file_handler = logging.FileHandler(main_log_file)
|
136
|
+
file_handler.setLevel(logging.DEBUG) # Capture all levels in file
|
137
|
+
file_handler.setFormatter(file_formatter)
|
138
|
+
root_logger.addHandler(file_handler)
|
139
|
+
handlers.append("file")
|
140
|
+
|
141
|
+
# Error log file (errors and critical only)
|
142
|
+
error_log_file = log_dir / "arbor_error.log"
|
143
|
+
error_handler = logging.FileHandler(error_log_file)
|
144
|
+
error_handler.setLevel(logging.ERROR)
|
145
|
+
error_handler.setFormatter(file_formatter)
|
146
|
+
root_logger.addHandler(error_handler)
|
147
|
+
handlers.append("error_file")
|
148
|
+
|
149
|
+
# Configure specific loggers for different components
|
150
|
+
configure_component_loggers(log_level)
|
151
|
+
|
152
|
+
return {
|
153
|
+
"level": log_level,
|
154
|
+
"handlers": handlers,
|
155
|
+
"log_dir": str(log_dir) if log_dir else None,
|
156
|
+
"main_log_file": str(log_dir / "arbor.log") if log_dir else None,
|
157
|
+
"error_log_file": str(log_dir / "arbor_error.log") if log_dir else None,
|
158
|
+
}
|
159
|
+
|
160
|
+
|
161
|
+
def configure_component_loggers(log_level: str):
|
162
|
+
"""Configure loggers for specific Arbor components."""
|
163
|
+
|
164
|
+
# Arbor component loggers with shorter names (8 chars max for proper centering)
|
165
|
+
component_loggers = {
|
166
|
+
"arbor.server.services.inference_manager": "infer",
|
167
|
+
"arbor.server.services.grpo_manager": "grpo",
|
168
|
+
"arbor.server.services.file_manager": "files",
|
169
|
+
"arbor.server.services.health_manager": "health",
|
170
|
+
"arbor.server.services.job_manager": "jobs",
|
171
|
+
"arbor.server.services.training_manager": "train",
|
172
|
+
"arbor.server.services.comms": "comms",
|
173
|
+
"arbor.server.services.scripts.sft_training": "sft",
|
174
|
+
"arbor.server.services.scripts.grpo_training": "grpo",
|
175
|
+
"arbor.config": "config",
|
176
|
+
"arbor.cli": "cli",
|
177
|
+
"__main__": "main",
|
178
|
+
}
|
179
|
+
|
180
|
+
# Create shorter logger aliases
|
181
|
+
for full_name, short_name in component_loggers.items():
|
182
|
+
# Set up the short name logger to use the same handlers as root
|
183
|
+
short_logger = logging.getLogger(short_name)
|
184
|
+
short_logger.setLevel(getattr(logging, log_level.upper()))
|
185
|
+
|
186
|
+
# Also configure the full name for backward compatibility
|
187
|
+
full_logger = logging.getLogger(full_name)
|
188
|
+
full_logger.setLevel(getattr(logging, log_level.upper()))
|
189
|
+
|
190
|
+
# Third-party library loggers (usually more verbose)
|
191
|
+
third_party_loggers = {
|
192
|
+
"uvicorn": "WARNING",
|
193
|
+
"uvicorn.access": "WARNING",
|
194
|
+
"uvicorn.error": "WARNING",
|
195
|
+
"fastapi": "WARNING",
|
196
|
+
"httpx": "WARNING",
|
197
|
+
"urllib3": "WARNING",
|
198
|
+
"vllm": "INFO",
|
199
|
+
"torch": "WARNING",
|
200
|
+
"transformers": "WARNING",
|
201
|
+
}
|
202
|
+
|
203
|
+
for logger_name, level in third_party_loggers.items():
|
204
|
+
logger = logging.getLogger(logger_name)
|
205
|
+
logger.setLevel(getattr(logging, level))
|
206
|
+
|
207
|
+
|
208
|
+
def get_logger(name: str) -> logging.Logger:
|
209
|
+
"""
|
210
|
+
Get a logger with the specified name, automatically mapping long module names to short ones.
|
211
|
+
|
212
|
+
Args:
|
213
|
+
name: Logger name, typically __name__
|
214
|
+
|
215
|
+
Returns:
|
216
|
+
Configured logger instance with short name if available
|
217
|
+
"""
|
218
|
+
# Mapping of full module names to short names (8 chars max for proper centering)
|
219
|
+
name_mappings = {
|
220
|
+
"arbor.server.services.inference_manager": "infer",
|
221
|
+
"arbor.server.services.grpo_manager": "grpo",
|
222
|
+
"arbor.server.services.file_manager": "files",
|
223
|
+
"arbor.server.services.health_manager": "health",
|
224
|
+
"arbor.server.services.job_manager": "jobs",
|
225
|
+
"arbor.server.services.training_manager": "train",
|
226
|
+
"arbor.server.services.comms.comms": "comms",
|
227
|
+
"arbor.server.services.scripts.sft_training": "sft",
|
228
|
+
"arbor.server.services.scripts.grpo_training": "grpo",
|
229
|
+
"arbor.config": "config",
|
230
|
+
"arbor.cli": "cli",
|
231
|
+
"__main__": "main",
|
232
|
+
# Add uvicorn loggers
|
233
|
+
"uvicorn": "api",
|
234
|
+
"uvicorn.access": "api",
|
235
|
+
"uvicorn.error": "api",
|
236
|
+
}
|
237
|
+
|
238
|
+
# Use short name if available, otherwise use the provided name
|
239
|
+
short_name = name_mappings.get(name, name)
|
240
|
+
return logging.getLogger(short_name)
|
241
|
+
|
242
|
+
|
243
|
+
def log_system_info():
|
244
|
+
"""Log system information at startup."""
|
245
|
+
logger = get_logger("arbor.startup")
|
246
|
+
|
247
|
+
logger.info("=" * 60)
|
248
|
+
logger.info("ARBOR SYSTEM STARTUP")
|
249
|
+
logger.info("=" * 60)
|
250
|
+
|
251
|
+
# This will be populated by the health manager
|
252
|
+
logger.info("System information logged via health manager")
|
253
|
+
|
254
|
+
|
255
|
+
def log_configuration(config: Dict[str, Any]):
|
256
|
+
"""Log configuration information."""
|
257
|
+
logger = get_logger("arbor.config")
|
258
|
+
|
259
|
+
logger.info("Logging configuration:")
|
260
|
+
for key, value in config.items():
|
261
|
+
logger.info(f" {key}: {value}")
|
262
|
+
|
263
|
+
|
264
|
+
# Context manager for temporary log level changes
|
265
|
+
class LogLevel:
|
266
|
+
"""Context manager to temporarily change log level."""
|
267
|
+
|
268
|
+
def __init__(self, logger_name: str, level: str):
|
269
|
+
self.logger = logging.getLogger(logger_name)
|
270
|
+
self.level = getattr(logging, level.upper())
|
271
|
+
self.original_level = None
|
272
|
+
|
273
|
+
def __enter__(self):
|
274
|
+
self.original_level = self.logger.level
|
275
|
+
self.logger.setLevel(self.level)
|
276
|
+
return self.logger
|
277
|
+
|
278
|
+
def __exit__(self, exc_type, exc_val, exc_tb):
|
279
|
+
self.logger.setLevel(self.original_level)
|
280
|
+
|
281
|
+
|
282
|
+
def apply_uvicorn_formatting():
|
283
|
+
"""
|
284
|
+
Apply our custom formatting to uvicorn loggers after they're set up.
|
285
|
+
This runs after the FastAPI app is created to avoid interfering with startup.
|
286
|
+
"""
|
287
|
+
console_formatter = ColoredFormatter("%(name)s - %(levelname)s - %(message)s")
|
288
|
+
|
289
|
+
# List of uvicorn loggers to modify
|
290
|
+
uvicorn_loggers = ["uvicorn", "uvicorn.error", "uvicorn.access"]
|
291
|
+
|
292
|
+
for logger_name in uvicorn_loggers:
|
293
|
+
logger = logging.getLogger(logger_name)
|
294
|
+
|
295
|
+
# Update formatters for existing handlers
|
296
|
+
for handler in logger.handlers:
|
297
|
+
if hasattr(handler, "setFormatter"):
|
298
|
+
handler.setFormatter(console_formatter)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: arbor-ai
|
3
|
-
Version: 0.2.
|
3
|
+
Version: 0.2.2
|
4
4
|
Summary: A framework for fine-tuning and managing language models
|
5
5
|
Author-email: Noah Ziems <nziems2@nd.edu>
|
6
6
|
Project-URL: Homepage, https://github.com/Ziems/arbor
|
@@ -14,7 +14,7 @@ Requires-Dist: uvicorn
|
|
14
14
|
Requires-Dist: click
|
15
15
|
Requires-Dist: python-multipart
|
16
16
|
Requires-Dist: pydantic-settings
|
17
|
-
Requires-Dist: vllm
|
17
|
+
Requires-Dist: vllm==0.8.5.post1
|
18
18
|
Requires-Dist: transformers
|
19
19
|
Requires-Dist: trl>=0.17.0
|
20
20
|
Requires-Dist: peft
|
@@ -43,7 +43,8 @@ Install Arbor via pip:
|
|
43
43
|
pip install -U arbor-ai
|
44
44
|
```
|
45
45
|
|
46
|
-
Optionally, you can also install
|
46
|
+
Optionally, you can also install flash attention to speed up inference. <br/>
|
47
|
+
This can take 15+ minutes to install on some setups:
|
47
48
|
```bash
|
48
49
|
pip install flash-attn --no-build-isolation
|
49
50
|
```
|
@@ -52,27 +53,16 @@ pip install flash-attn --no-build-isolation
|
|
52
53
|
|
53
54
|
## ⚡ Quick Start
|
54
55
|
|
55
|
-
### 1️⃣
|
56
|
-
|
57
|
-
This is all dependent on your setup. Here is an example of one:
|
58
|
-
```yaml
|
59
|
-
inference:
|
60
|
-
gpu_ids: '0'
|
61
|
-
|
62
|
-
training:
|
63
|
-
gpu_ids: '1, 2'
|
64
|
-
```
|
65
|
-
Which will use the `GPU:0` for inference with `GPU:1` and `GPU:2` reserved for training. We generally recommend splitting the GPUs roughly evenly between inference and training.
|
66
|
-
|
67
|
-
### 2️⃣ Start the Server
|
56
|
+
### 1️⃣ Start the Server
|
68
57
|
|
69
58
|
**CLI:**
|
70
59
|
|
71
60
|
```bash
|
72
|
-
python -m arbor.cli serve
|
61
|
+
python -m arbor.cli serve
|
73
62
|
```
|
63
|
+
On the first run you'll be asked which GPUs will be used for training and which for inference. For more that one GPU, separate the ids by comma: `1, 2`. Your config file will be saved in `~/.arbor/config.yaml` should you want to edit these configs in the future.
|
74
64
|
|
75
|
-
###
|
65
|
+
### 2️⃣ Optimize a DSPy Program
|
76
66
|
|
77
67
|
Follow the DSPy tutorials here to see usage examples:
|
78
68
|
[DSPy RL Optimization Examples](https://dspy.ai/tutorials/rl_papillon/)
|
@@ -0,0 +1,51 @@
|
|
1
|
+
arbor/__init__.py,sha256=DKqMupRY_1oOt7WfwU_6g4FVbTBJjU83p7yEGC-JAhs,458
|
2
|
+
arbor/cli.py,sha256=YK-MIFxWb4ZfNb-UtK6t-EgTk1XQRq0dVOzdGf7_AY8,4867
|
3
|
+
arbor/client/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
4
|
+
arbor/client/api.py,sha256=86bgHuGM_AvI1Uhic_QaCnpF4VFqXie9ZzxmbTXUPpQ,19
|
5
|
+
arbor/client/arbor_client.py,sha256=laGmeTMyGzwKOBGjpOWEZdDXTwsp_MUhp6umiLufncs,8320
|
6
|
+
arbor/server/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
7
|
+
arbor/server/main.py,sha256=Ww4HfxltENIIe4TCq4x_tis69tJ7IhQ9o70BEfRT7MI,1177
|
8
|
+
arbor/server/api/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
9
|
+
arbor/server/api/models/schemas.py,sha256=yQzZEdYpUDi1BOQi2Ws7pn09Bq5Y_V8ae-oOEKMeD4M,6296
|
10
|
+
arbor/server/api/routes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
11
|
+
arbor/server/api/routes/files.py,sha256=DQC_ogH5zlzhHZSAA4Cj5wzK07XBIBVs2Po91W9rcDY,1835
|
12
|
+
arbor/server/api/routes/grpo.py,sha256=VHL68SO0lUp4zAZ1RfPCdgdRfO_ZRE7NA7LXvOZwo-c,1914
|
13
|
+
arbor/server/api/routes/inference.py,sha256=Vyh6atkEOhz8YLWgJ34dXUzkdLwqOfZC9LIhez-IfEI,2282
|
14
|
+
arbor/server/api/routes/jobs.py,sha256=BNdaSYUBJX6xSd6Pj6qx1DQJiZ5EKVxxbXDbEkfkCpw,3634
|
15
|
+
arbor/server/core/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
16
|
+
arbor/server/core/config.py,sha256=8l1BVuV09MZd7tPh1iK-bW2scQaQd0rmgN1K8WjIZWc,11116
|
17
|
+
arbor/server/core/config_manager.py,sha256=LTT8T6CQ063MiDM6udfc4IptHTLRW8OewyI1tpGcd_Q,3227
|
18
|
+
arbor/server/core/logging.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
19
|
+
arbor/server/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
20
|
+
arbor/server/services/dependencies.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
21
|
+
arbor/server/services/file_manager.py,sha256=kyRz5rJ2VHjdGWCqzqQ-HnNVaL42oLlJZQAuRwiDJLE,12199
|
22
|
+
arbor/server/services/grpo_manager.py,sha256=IC3rY2cqC_qRo8hnBWju44CreY7soz_qyw2paURmCsc,20571
|
23
|
+
arbor/server/services/health_manager.py,sha256=J5RkxHvXTzGITCaiQ9a_G_h8YYQLAEt69DdL7-Xj1VM,6475
|
24
|
+
arbor/server/services/inference_manager.py,sha256=63GpZeHPIlj2QgNH4LXA4K2DSjofhWQRvd_bKlpaJyE,9925
|
25
|
+
arbor/server/services/job_manager.py,sha256=wrtB0cO48DZh7D7hq6POt6xgxlauDKVjK8foNTVZVTA,2180
|
26
|
+
arbor/server/services/training_manager.py,sha256=SM1TaKNF7Plm-nY6UQ2ytVSh4d5hgfVkLGx9vPXbx0E,21053
|
27
|
+
arbor/server/services/comms/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
28
|
+
arbor/server/services/comms/comms.py,sha256=zTV1Wo4FGnOcl5tIjBOfcuvDPMu-VTSKBlDBXV4h6LY,7833
|
29
|
+
arbor/server/services/inference/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
30
|
+
arbor/server/services/inference/vllm_client.py,sha256=EwVuv4bUSK2rOGEL6YdGSfaYtA4NsZfTwWw_KKfMAiQ,18367
|
31
|
+
arbor/server/services/inference/vllm_serve.py,sha256=UZAGo7CyshR3-9fhXCTKhXeidqNqbY6LyU9DDNiX_Sw,109543
|
32
|
+
arbor/server/services/scripts/dpo_training.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
33
|
+
arbor/server/services/scripts/grpo_training.py,sha256=XJZ3PBJdXRP__XfiQBtqEqjRE4YKjjYrJ4ze5W9SRnY,22160
|
34
|
+
arbor/server/services/scripts/mmgrpo_training.py,sha256=aDaTGkyfceA-jhAdzfpehAzuSSGIT8gdfD_5z9IoBEk,19373
|
35
|
+
arbor/server/services/scripts/sft_training.py,sha256=BvCsOA2kg2SEsyd7P9mkerIICPORoASB-0r8EO3usrQ,3538
|
36
|
+
arbor/server/services/scripts/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
37
|
+
arbor/server/services/scripts/utils/arg_parser.py,sha256=ur_iyhc_Ie00tjq63vK4Sdeu2PGKwe6Dh6Iax2vw9jc,1022
|
38
|
+
arbor/server/services/scripts/utils/callbacks.py,sha256=iPE_bjNHSQyBLO0v7UjxsuWDjDvLvhQAGerBFX8UbnA,1347
|
39
|
+
arbor/server/services/scripts/utils/comms_monitors.py,sha256=RE9RxHR1yqXgc8VgRyhVwtwes7ofXeVgFcwIN5AVW_Y,7983
|
40
|
+
arbor/server/services/scripts/utils/dataset.py,sha256=O-g-BUwLdVxUiQEsn2G4VobOYJjspA_iXc7MMNXZLQ0,6178
|
41
|
+
arbor/server/services/scripts/utils/ingestion_monitor.py,sha256=r5t5vG_TO62PYiFQROfm1mzBESB10WlxFRgGN-IKtaI,1305
|
42
|
+
arbor/server/services/scripts/utils/mock_server.py,sha256=NX38oBtxEVS9-kreayTCSzg5Hhuum-3vK0uNcOBkdtw,4237
|
43
|
+
arbor/server/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
44
|
+
arbor/server/utils/helpers.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
45
|
+
arbor/server/utils/logging.py,sha256=UsG3cYgNk04pXadf5-NcYxvI8qYjB6o91N_P08FuoIg,10368
|
46
|
+
arbor_ai-0.2.2.dist-info/licenses/LICENSE,sha256=5vFGrbOFeXXM83JV9o16w7ohH4WLeu3-57GocJSz8ow,1067
|
47
|
+
arbor_ai-0.2.2.dist-info/METADATA,sha256=1Jw-RJostZFj8mR9mIz_p8LLLpyh7qKZSPmrRn0Otzw,2776
|
48
|
+
arbor_ai-0.2.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
49
|
+
arbor_ai-0.2.2.dist-info/entry_points.txt,sha256=PGBX-MfNwfIl8UPFgsX3gjtXLqSogRhOktKMpZUysD0,40
|
50
|
+
arbor_ai-0.2.2.dist-info/top_level.txt,sha256=jzWdp3BRYqvZDMFsPajrcftvvlluzVDErkD8IMRfhYs,6
|
51
|
+
arbor_ai-0.2.2.dist-info/RECORD,,
|
arbor_ai-0.2.1.dist-info/RECORD
DELETED
@@ -1,42 +0,0 @@
|
|
1
|
-
arbor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
2
|
-
arbor/cli.py,sha256=6S_nT93Zof6nB01n-xA7hSzssREzY13Oyh_jrElyTTY,3490
|
3
|
-
arbor/client/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
4
|
-
arbor/client/api.py,sha256=86bgHuGM_AvI1Uhic_QaCnpF4VFqXie9ZzxmbTXUPpQ,19
|
5
|
-
arbor/server/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
6
|
-
arbor/server/main.py,sha256=tY4Vlaaj4oq1FTGYOkbFMGF0quLEeR-VBaKaXhQ5mEE,382
|
7
|
-
arbor/server/api/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
8
|
-
arbor/server/api/models/schemas.py,sha256=394FHmIxAWVwED3z5tjnJCsyrgSWXg2SFWvMM1oKqOI,6177
|
9
|
-
arbor/server/api/routes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
10
|
-
arbor/server/api/routes/files.py,sha256=DQC_ogH5zlzhHZSAA4Cj5wzK07XBIBVs2Po91W9rcDY,1835
|
11
|
-
arbor/server/api/routes/grpo.py,sha256=Yc4FxieuUbJ7Dbd-93uN4syQu9h2eQU4R9ZvnE_axRU,1982
|
12
|
-
arbor/server/api/routes/inference.py,sha256=txLF4ANa0ZSaROrbvSaPZVFOSzn4so9e7mjNKnt2bcM,2182
|
13
|
-
arbor/server/api/routes/jobs.py,sha256=BNdaSYUBJX6xSd6Pj6qx1DQJiZ5EKVxxbXDbEkfkCpw,3634
|
14
|
-
arbor/server/core/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
15
|
-
arbor/server/core/config.py,sha256=Mx77S3ByIMvHmPDikQLcczhzA5so3Vrw_U4QefOiHOU,1257
|
16
|
-
arbor/server/core/logging.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
17
|
-
arbor/server/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
18
|
-
arbor/server/services/dependencies.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
19
|
-
arbor/server/services/file_manager.py,sha256=Z9z4A4EzvPauid_DBfpim401DDtuJy_TbX4twTWDJWI,12119
|
20
|
-
arbor/server/services/grpo_manager.py,sha256=jY4kc7wlKKoi7RigjJiH1VaxX6qJCOxyEc0oYCkqPlQ,18549
|
21
|
-
arbor/server/services/inference_manager.py,sha256=a1c5zYbjk6fPM3egX2McKv7ZWPN7c-QH_Qogu9iay90,9597
|
22
|
-
arbor/server/services/job_manager.py,sha256=m_d4UPwN_82f7t7K443DaFpFoyv7JZSZKml8tawt1Bk,2186
|
23
|
-
arbor/server/services/training_manager.py,sha256=oQdhpfxdgp_lCTb_lxhvjupdLrcg6HL3TEbct_q9F6I,21065
|
24
|
-
arbor/server/services/comms/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
25
|
-
arbor/server/services/comms/comms.py,sha256=3KN3mzwPvfW2_L5hq02JdAk6yOMyhY0_pBz-DDr5A3o,7694
|
26
|
-
arbor/server/services/inference/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
27
|
-
arbor/server/services/inference/vllm_client.py,sha256=06-VfdcwKqq8_ZRWaER3OnSVLtvL87bLdljSrkXfm-A,18269
|
28
|
-
arbor/server/services/inference/vllm_serve.py,sha256=UZAGo7CyshR3-9fhXCTKhXeidqNqbY6LyU9DDNiX_Sw,109543
|
29
|
-
arbor/server/services/scripts/dpo_training.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
30
|
-
arbor/server/services/scripts/grpo_training.py,sha256=6kXzMwn3rZXHdEn0xe_Kd9d7tbdYb76zE0zbi02xCm4,31314
|
31
|
-
arbor/server/services/scripts/sft_training.py,sha256=jgDMxZn9RFH9ys_7OF9Is8pQ9V97O2KzWg22Gveh3yE,3410
|
32
|
-
arbor/server/services/scripts/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
33
|
-
arbor/server/services/scripts/utils/arg_parser.py,sha256=ur_iyhc_Ie00tjq63vK4Sdeu2PGKwe6Dh6Iax2vw9jc,1022
|
34
|
-
arbor/server/services/scripts/utils/dataset.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
35
|
-
arbor/server/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
36
|
-
arbor/server/utils/helpers.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
37
|
-
arbor_ai-0.2.1.dist-info/licenses/LICENSE,sha256=5vFGrbOFeXXM83JV9o16w7ohH4WLeu3-57GocJSz8ow,1067
|
38
|
-
arbor_ai-0.2.1.dist-info/METADATA,sha256=34XAZBm8OLlsSBicLmRn_hhbltn0pDNlAj5WOjn9LtE,2791
|
39
|
-
arbor_ai-0.2.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
40
|
-
arbor_ai-0.2.1.dist-info/entry_points.txt,sha256=PGBX-MfNwfIl8UPFgsX3gjtXLqSogRhOktKMpZUysD0,40
|
41
|
-
arbor_ai-0.2.1.dist-info/top_level.txt,sha256=jzWdp3BRYqvZDMFsPajrcftvvlluzVDErkD8IMRfhYs,6
|
42
|
-
arbor_ai-0.2.1.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|