xax 0.0.3__py3-none-any.whl → 0.0.5__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.
- xax/__init__.py +49 -7
- xax/core/conf.py +1 -0
- xax/nn/embeddings.py +355 -0
- xax/nn/functions.py +8 -4
- xax/requirements-dev.txt +9 -1
- xax/requirements.txt +15 -10
- xax/task/base.py +0 -6
- xax/task/logger.py +328 -393
- xax/task/loggers/callback.py +56 -0
- xax/task/loggers/tensorboard.py +2 -5
- xax/task/mixins/__init__.py +2 -1
- xax/task/mixins/artifacts.py +14 -7
- xax/task/mixins/checkpointing.py +209 -0
- xax/task/mixins/cpu_stats.py +10 -10
- xax/task/mixins/data_loader.py +6 -9
- xax/task/mixins/gpu_stats.py +3 -3
- xax/task/mixins/logger.py +2 -250
- xax/task/mixins/process.py +4 -0
- xax/task/mixins/train.py +71 -40
- xax/task/task.py +6 -5
- xax/utils/data/collate.py +6 -6
- xax/utils/experiments.py +45 -1
- xax/utils/logging.py +29 -0
- xax/utils/tensorboard.py +49 -29
- {xax-0.0.3.dist-info → xax-0.0.5.dist-info}/METADATA +15 -14
- xax-0.0.5.dist-info/RECORD +52 -0
- {xax-0.0.3.dist-info → xax-0.0.5.dist-info}/WHEEL +1 -1
- xax-0.0.3.dist-info/RECORD +0 -49
- {xax-0.0.3.dist-info → xax-0.0.5.dist-info}/LICENSE +0 -0
- {xax-0.0.3.dist-info → xax-0.0.5.dist-info}/top_level.txt +0 -0
xax/utils/experiments.py
CHANGED
@@ -8,6 +8,7 @@ import hashlib
|
|
8
8
|
import inspect
|
9
9
|
import itertools
|
10
10
|
import logging
|
11
|
+
import math
|
11
12
|
import os
|
12
13
|
import random
|
13
14
|
import re
|
@@ -30,7 +31,7 @@ import requests
|
|
30
31
|
from jaxtyping import Array
|
31
32
|
from omegaconf import MISSING, DictConfig, ListConfig, OmegaConf
|
32
33
|
|
33
|
-
from xax.core.conf import get_data_dir, get_pretrained_models_dir
|
34
|
+
from xax.core.conf import get_data_dir, get_pretrained_models_dir, load_user_config
|
34
35
|
from xax.core.state import State
|
35
36
|
from xax.utils.text import colored
|
36
37
|
|
@@ -665,6 +666,7 @@ class BaseFileDownloader(ABC):
|
|
665
666
|
with requests.Session() as session:
|
666
667
|
response = session.get(url, params=params, stream=True)
|
667
668
|
|
669
|
+
token: str | None = None
|
668
670
|
for key, value in response.cookies.items():
|
669
671
|
if key.startswith("download_warning"):
|
670
672
|
token = value
|
@@ -756,3 +758,45 @@ def get_state_dict_prefix(
|
|
756
758
|
if regexp is not None:
|
757
759
|
ckpt = {k: v for k, v in ckpt.items() if regexp.match(k)}
|
758
760
|
return ckpt
|
761
|
+
|
762
|
+
|
763
|
+
def split_n_items_across_workers(n: int, worker_id: int, num_workers: int) -> tuple[int, int]:
|
764
|
+
"""Computes offsets for splitting N items across K workers.
|
765
|
+
|
766
|
+
This returns the start and end indices for the items to be processed by the
|
767
|
+
given worker. The end index is exclusive.
|
768
|
+
|
769
|
+
Args:
|
770
|
+
n: The number of items to process.
|
771
|
+
worker_id: The ID of the current worker.
|
772
|
+
num_workers: The total number of workers.
|
773
|
+
|
774
|
+
Returns:
|
775
|
+
The start and end index for the items in the current worker.
|
776
|
+
"""
|
777
|
+
assert n >= num_workers, f"n ({n}) must be >= num_workers ({num_workers})"
|
778
|
+
assert 0 <= worker_id < num_workers, f"worker_id ({worker_id}) must be >= 0 and < num_workers ({num_workers})"
|
779
|
+
|
780
|
+
# The number of items to process per worker.
|
781
|
+
items_per_worker = math.ceil(n / num_workers)
|
782
|
+
|
783
|
+
# The start and end indices for the items to process.
|
784
|
+
start = worker_id * items_per_worker
|
785
|
+
end = min(start + items_per_worker, n)
|
786
|
+
|
787
|
+
return start, end
|
788
|
+
|
789
|
+
|
790
|
+
def num_workers(default: int) -> int:
|
791
|
+
max_workers = load_user_config().experiment.max_workers
|
792
|
+
if hasattr(os, "sched_getaffinity"):
|
793
|
+
try:
|
794
|
+
return min(len(os.sched_getaffinity(0)), max_workers)
|
795
|
+
except Exception:
|
796
|
+
pass
|
797
|
+
if (cpu_count := os.cpu_count()) is not None:
|
798
|
+
return min(cpu_count, max_workers)
|
799
|
+
return min(default, max_workers)
|
800
|
+
|
801
|
+
|
802
|
+
OmegaConf.register_new_resolver("mlfab.num_workers", num_workers, replace=True)
|
xax/utils/logging.py
CHANGED
@@ -5,6 +5,8 @@ import math
|
|
5
5
|
import socket
|
6
6
|
import sys
|
7
7
|
|
8
|
+
from omegaconf import OmegaConf
|
9
|
+
|
8
10
|
from xax.core.conf import load_user_config
|
9
11
|
from xax.utils.text import Color, color_parts, colored
|
10
12
|
|
@@ -175,6 +177,33 @@ def configure_logging(prefix: str | None = None, *, rank: int | None = None, wor
|
|
175
177
|
logging.getLogger("torch").setLevel(logging.WARNING)
|
176
178
|
|
177
179
|
|
180
|
+
def get_unused_port(default: int | None = None) -> int:
|
181
|
+
"""Returns an unused port number on the local machine.
|
182
|
+
|
183
|
+
Args:
|
184
|
+
default: A default port to try before trying other ports.
|
185
|
+
|
186
|
+
Returns:
|
187
|
+
A port number which is currently unused
|
188
|
+
"""
|
189
|
+
if default is not None:
|
190
|
+
sock = socket.socket()
|
191
|
+
try:
|
192
|
+
sock.bind(("", default))
|
193
|
+
return default
|
194
|
+
except OSError:
|
195
|
+
pass
|
196
|
+
finally:
|
197
|
+
sock.close()
|
198
|
+
|
199
|
+
sock = socket.socket()
|
200
|
+
sock.bind(("", 0))
|
201
|
+
return sock.getsockname()[1]
|
202
|
+
|
203
|
+
|
204
|
+
OmegaConf.register_new_resolver("mlfab.unused_port", get_unused_port, replace=True)
|
205
|
+
|
206
|
+
|
178
207
|
def port_is_busy(port: int) -> int:
|
179
208
|
"""Checks whether a port is busy.
|
180
209
|
|
xax/utils/tensorboard.py
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
"""Defines utility functions for interfacing with Tensorboard."""
|
2
2
|
|
3
3
|
import functools
|
4
|
+
import io
|
4
5
|
import time
|
5
6
|
from pathlib import Path
|
6
7
|
from typing import Literal, TypedDict
|
7
8
|
|
8
|
-
import numpy as np
|
9
9
|
from PIL.Image import Image as PILImage
|
10
10
|
from tensorboard.compat.proto.config_pb2 import RunMetadata
|
11
11
|
from tensorboard.compat.proto.event_pb2 import Event, TaggedRunMetadata
|
@@ -117,29 +117,44 @@ class TensorboardWriter:
|
|
117
117
|
value: float,
|
118
118
|
global_step: int | None = None,
|
119
119
|
walltime: float | None = None,
|
120
|
+
new_style: bool = True,
|
120
121
|
double_precision: bool = False,
|
121
122
|
) -> None:
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
123
|
+
if new_style:
|
124
|
+
self.pb_writer.add_summary(
|
125
|
+
Summary(
|
126
|
+
value=[
|
127
|
+
Summary.Value(
|
128
|
+
tag=tag,
|
129
|
+
tensor=(
|
130
|
+
TensorProto(double_val=[value], dtype="DT_DOUBLE")
|
131
|
+
if double_precision
|
132
|
+
else TensorProto(float_val=[value], dtype="DT_FLOAT")
|
133
|
+
),
|
134
|
+
metadata=SummaryMetadata(
|
135
|
+
plugin_data=SummaryMetadata.PluginData(
|
136
|
+
plugin_name="scalars",
|
137
|
+
),
|
135
138
|
),
|
139
|
+
)
|
140
|
+
],
|
141
|
+
),
|
142
|
+
global_step=global_step,
|
143
|
+
walltime=walltime,
|
144
|
+
)
|
145
|
+
else:
|
146
|
+
self.pb_writer.add_summary(
|
147
|
+
Summary(
|
148
|
+
value=[
|
149
|
+
Summary.Value(
|
150
|
+
tag=tag,
|
151
|
+
simple_value=value,
|
136
152
|
),
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
)
|
153
|
+
],
|
154
|
+
),
|
155
|
+
global_step=global_step,
|
156
|
+
walltime=walltime,
|
157
|
+
)
|
143
158
|
|
144
159
|
def add_image(
|
145
160
|
self,
|
@@ -148,16 +163,21 @@ class TensorboardWriter:
|
|
148
163
|
global_step: int | None = None,
|
149
164
|
walltime: float | None = None,
|
150
165
|
) -> None:
|
151
|
-
|
166
|
+
output = io.BytesIO()
|
167
|
+
value.convert("RGB").save(output, format="PNG")
|
168
|
+
image_string = output.getvalue()
|
169
|
+
output.close()
|
170
|
+
|
152
171
|
self.pb_writer.add_summary(
|
153
172
|
Summary(
|
154
173
|
value=[
|
155
174
|
Summary.Value(
|
156
175
|
tag=tag,
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
176
|
+
image=Summary.Image(
|
177
|
+
height=value.height,
|
178
|
+
width=value.width,
|
179
|
+
colorspace=3, # RGB
|
180
|
+
encoded_image_string=image_string,
|
161
181
|
),
|
162
182
|
),
|
163
183
|
],
|
@@ -197,7 +217,6 @@ class TensorboardWriter:
|
|
197
217
|
|
198
218
|
|
199
219
|
class TensorboardWriterKwargs(TypedDict):
|
200
|
-
log_directory: Path
|
201
220
|
max_queue_size: int
|
202
221
|
flush_seconds: float
|
203
222
|
filename_suffix: str
|
@@ -213,8 +232,9 @@ class TensorboardWriters:
|
|
213
232
|
) -> None:
|
214
233
|
super().__init__()
|
215
234
|
|
235
|
+
self.log_directory = Path(log_directory)
|
236
|
+
|
216
237
|
self.kwargs: TensorboardWriterKwargs = {
|
217
|
-
"log_directory": Path(log_directory),
|
218
238
|
"max_queue_size": max_queue_size,
|
219
239
|
"flush_seconds": flush_seconds,
|
220
240
|
"filename_suffix": filename_suffix,
|
@@ -222,11 +242,11 @@ class TensorboardWriters:
|
|
222
242
|
|
223
243
|
@functools.cached_property
|
224
244
|
def train_writer(self) -> TensorboardWriter:
|
225
|
-
return TensorboardWriter(**self.kwargs)
|
245
|
+
return TensorboardWriter(self.log_directory / "train", **self.kwargs)
|
226
246
|
|
227
247
|
@functools.cached_property
|
228
248
|
def valid_writer(self) -> TensorboardWriter:
|
229
|
-
return TensorboardWriter(**self.kwargs)
|
249
|
+
return TensorboardWriter(self.log_directory / "valid", **self.kwargs)
|
230
250
|
|
231
251
|
def writer(self, phase: Phase) -> TensorboardWriter:
|
232
252
|
match phase:
|
@@ -1,32 +1,33 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: xax
|
3
|
-
Version: 0.0.
|
3
|
+
Version: 0.0.5
|
4
4
|
Summary: The xax project
|
5
5
|
Home-page: https://github.com/dpshai/xax
|
6
6
|
Author: Benjamin Bolte
|
7
7
|
Requires-Python: >=3.11
|
8
8
|
Description-Content-Type: text/markdown
|
9
9
|
License-File: LICENSE
|
10
|
-
Requires-Dist: dpshdl
|
11
|
-
Requires-Dist: equinox
|
12
|
-
Requires-Dist: gitpython
|
13
10
|
Requires-Dist: jax
|
14
11
|
Requires-Dist: jaxtyping
|
15
|
-
Requires-Dist:
|
12
|
+
Requires-Dist: equinox
|
16
13
|
Requires-Dist: optax
|
14
|
+
Requires-Dist: dpshdl
|
15
|
+
Requires-Dist: cloudpickle
|
17
16
|
Requires-Dist: pillow
|
17
|
+
Requires-Dist: omegaconf
|
18
|
+
Requires-Dist: gitpython
|
19
|
+
Requires-Dist: tensorboard
|
18
20
|
Requires-Dist: psutil
|
19
21
|
Requires-Dist: requests
|
20
|
-
Requires-Dist: tensorboard
|
21
|
-
Requires-Dist: types-pillow
|
22
|
-
Requires-Dist: types-psutil
|
23
|
-
Requires-Dist: types-requests
|
24
22
|
Provides-Extra: dev
|
25
|
-
Requires-Dist: black
|
26
|
-
Requires-Dist: darglint
|
27
|
-
Requires-Dist: mypy
|
28
|
-
Requires-Dist:
|
29
|
-
Requires-Dist:
|
23
|
+
Requires-Dist: black; extra == "dev"
|
24
|
+
Requires-Dist: darglint; extra == "dev"
|
25
|
+
Requires-Dist: mypy; extra == "dev"
|
26
|
+
Requires-Dist: ruff; extra == "dev"
|
27
|
+
Requires-Dist: pytest; extra == "dev"
|
28
|
+
Requires-Dist: types-pillow; extra == "dev"
|
29
|
+
Requires-Dist: types-psutil; extra == "dev"
|
30
|
+
Requires-Dist: types-requests; extra == "dev"
|
30
31
|
|
31
32
|
# xax
|
32
33
|
|
@@ -0,0 +1,52 @@
|
|
1
|
+
xax/__init__.py,sha256=3OQTnHGYgaux3i9gTYZxfK8F2zS_hK2QqD-G-Z1TfHQ,7623
|
2
|
+
xax/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
3
|
+
xax/requirements-dev.txt,sha256=qkscNkFzWd1S5fump-AKH53rR65v2x5FmboFdy_kKvs,128
|
4
|
+
xax/requirements.txt,sha256=DRn2B9d3mAr57-U3IOIrKm2nYz8H3cYgDy6EIC3SsuE,266
|
5
|
+
xax/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
6
|
+
xax/core/conf.py,sha256=hwgc5sJw0YRSegQLLrmIDtscev-H_a2ST1-V6BJ5aec,5915
|
7
|
+
xax/core/state.py,sha256=7lnVSytuhwPfcobPGdjfQ0QxbLgzWQNipKwXchd58QI,2695
|
8
|
+
xax/nn/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
9
|
+
xax/nn/embeddings.py,sha256=bQGxBFxkLwi2MQLkRfGaHPH5P_KKB21HdI7VNWTKIOQ,11847
|
10
|
+
xax/nn/functions.py,sha256=CI_OmspaQwN9nl4hwefIU3_I7m6gBZwJ9aGK1JGUgr0,2713
|
11
|
+
xax/nn/parallel.py,sha256=fnTiT7MsG7eQrJvqwjIz2Ifo3P27TuxIJzmpGYSa_dQ,4608
|
12
|
+
xax/task/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
13
|
+
xax/task/base.py,sha256=n82Sw-kMLr-WZzh0c_vAAQ2b-DHRYs0U8biPRonBxKU,7252
|
14
|
+
xax/task/logger.py,sha256=MAFIgd6yO0pD3gJHfKTwUDcwaM8DZD3AZtFLvrQtlFo,26740
|
15
|
+
xax/task/script.py,sha256=oBGnScYa_X284fCajabPCcbaSEIqR8nO4d40dvMv3NQ,1011
|
16
|
+
xax/task/task.py,sha256=X7TV_gt6C4m_-Il22Uyr5iMm-eh15oH5v1dl96sv1go,1295
|
17
|
+
xax/task/launchers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
18
|
+
xax/task/launchers/base.py,sha256=8LB_r6YISKu1vq1zk3aVYmiedRr9MxE5IMRocs6unFI,731
|
19
|
+
xax/task/launchers/cli.py,sha256=cK7Nm-3fO-W2gTxpn3FEThsT2NvneS2w0UjA1Nt-84A,1402
|
20
|
+
xax/task/launchers/single_process.py,sha256=IoML-30g5c526yxkpbWSOtG_KpNQMakT7xujzB1gIAo,846
|
21
|
+
xax/task/launchers/staged.py,sha256=jYeT9u58CN4ldV-ltJiQXQglEWOnEckHWnHYjfJQaoY,1102
|
22
|
+
xax/task/loggers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
23
|
+
xax/task/loggers/callback.py,sha256=reaRuJs5iB6WWNgh3_tsuz_QPAlBC-5Ed2wCG_6Wj4M,2075
|
24
|
+
xax/task/loggers/json.py,sha256=yXHb1bmfsEnk4p0F1Up1ertWYdcPAFZm25NT8wE3Jb8,4045
|
25
|
+
xax/task/loggers/state.py,sha256=qyb-q8MdagN7BX-DhKucwoc45tIZJrPuvVDVoysTKC4,1576
|
26
|
+
xax/task/loggers/stdout.py,sha256=nxQXkS9JUR38RKsU9qj0dgePKguK0BFa9nl_BdGO8cE,6758
|
27
|
+
xax/task/loggers/tensorboard.py,sha256=DMYRDCQ9c-xHqO4kkZvc1-53PXCf2gX0aRiiAQDtHJ0,7293
|
28
|
+
xax/task/mixins/__init__.py,sha256=NkSAjMN5jpXE6LROIwMzX60z7UsTBpGs624_mNUWquo,745
|
29
|
+
xax/task/mixins/artifacts.py,sha256=G0984WuXII_R13IlJZn9En7iM83ISXKjeVYvn7j4wBs,3754
|
30
|
+
xax/task/mixins/checkpointing.py,sha256=JV91b5xyBUyZIbR3S-5UkBZNoAZYCnWx7Y-ayuU0lHQ,7989
|
31
|
+
xax/task/mixins/cpu_stats.py,sha256=Lqskt1t4usE6UslhANjwB0ZKOYmaC4dm9dnVKa6ERdA,8924
|
32
|
+
xax/task/mixins/data_loader.py,sha256=BPs0sYdctesnhS9nQ1rvT77MzLXznw5E4tAzWT1PpJY,5998
|
33
|
+
xax/task/mixins/gpu_stats.py,sha256=tFTNmtl9iMiLiYJSPg7gHR-ZxOP4P_ynzSmYNIAUoRw,8431
|
34
|
+
xax/task/mixins/logger.py,sha256=6XkjP_YUGY2CiDry0kDm1f9jqzJaLa1bPVYYnGjvSBU,2049
|
35
|
+
xax/task/mixins/process.py,sha256=HQAvEruvvfcS_IThrM4hKhFHZCAN2kFY_vEaZGLeZS8,1428
|
36
|
+
xax/task/mixins/runnable.py,sha256=d5-qyIpmNPtbTzE7qFJGGCPSREEDhX1VApUJPNDWye0,1933
|
37
|
+
xax/task/mixins/step_wrapper.py,sha256=Do4eGgZVuqDX9ZGDxQdfn6pRbUnHjQBAkTF0vnNH31E,1472
|
38
|
+
xax/task/mixins/train.py,sha256=Xeb0N9j-Znz5QnMDCXDGPqUSKMNLJkd8oF8giN45l2U,20099
|
39
|
+
xax/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
40
|
+
xax/utils/experiments.py,sha256=qT3H0fyVH8DN417x7T0Xmz4SKoogW81-EHcZfyktFI8,28300
|
41
|
+
xax/utils/jax.py,sha256=VzEVB766UyH3_cgN6UP0FkCsDuGlYg5KJj8YJS4yYUk,439
|
42
|
+
xax/utils/logging.py,sha256=ST1hp2C2xntVVJBUHwo3YxPK19fBLNvHU2WGO1xqcXA,6418
|
43
|
+
xax/utils/numpy.py,sha256=_jOXVi-d2AtJnRftPkRK5MDMzsU8slgw-Jjv4GRm6ns,1197
|
44
|
+
xax/utils/tensorboard.py,sha256=XqxUlryFVsb75jE36uLcuoUhSr3nWg_-dzji2h6U_rI,8245
|
45
|
+
xax/utils/text.py,sha256=zo1sAoZe59GkpcpaHBVOQ0OekSMGXvOAyNa3lOJozCY,10628
|
46
|
+
xax/utils/data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
47
|
+
xax/utils/data/collate.py,sha256=Rd9vMomr_S_zCa_Hi4dO-8ntzAfVwndIUtuXFA3iNcc,7066
|
48
|
+
xax-0.0.5.dist-info/LICENSE,sha256=HCN2bImAzUOXldAZZI7JZ9PYq6OwMlDAP_PpX1HnuN0,1071
|
49
|
+
xax-0.0.5.dist-info/METADATA,sha256=VCiQmbjwZtiuORVyB0dloFTgLWtnK4o3FaolNWvf-A4,937
|
50
|
+
xax-0.0.5.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
51
|
+
xax-0.0.5.dist-info/top_level.txt,sha256=g4Au_r2XhvZ-lTybviH-Fh9g0zF4DAYHYxPue1-xbs8,4
|
52
|
+
xax-0.0.5.dist-info/RECORD,,
|
xax-0.0.3.dist-info/RECORD
DELETED
@@ -1,49 +0,0 @@
|
|
1
|
-
xax/__init__.py,sha256=awE9-hwGPLSx2ywUAUoeBYYm3ztERRhejiZTM8C2ft4,6160
|
2
|
-
xax/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
3
|
-
xax/requirements-dev.txt,sha256=aa9ql8CtmuLTvswvwXYlfAxRL0MEyondkMVcuZuM1A8,56
|
4
|
-
xax/requirements.txt,sha256=eJ8pC2D3CrbjcETujBG-j3y9dt6WMGpT-wQQzAUh2-4,161
|
5
|
-
xax/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
6
|
-
xax/core/conf.py,sha256=DrLXM0VED5RexuqF8-LOljGrnU5soYFgugIrvx6tGmE,5841
|
7
|
-
xax/core/state.py,sha256=7lnVSytuhwPfcobPGdjfQ0QxbLgzWQNipKwXchd58QI,2695
|
8
|
-
xax/nn/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
9
|
-
xax/nn/functions.py,sha256=ejIltzHagoiKjMEkfVpcIFj_OS3GkMd5JElWUDCrT6Y,2471
|
10
|
-
xax/nn/parallel.py,sha256=fnTiT7MsG7eQrJvqwjIz2Ifo3P27TuxIJzmpGYSa_dQ,4608
|
11
|
-
xax/task/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
12
|
-
xax/task/base.py,sha256=4oueHzToECJYBY-umnrVqDY9tJ6bT18cP97TtaQukBE,7411
|
13
|
-
xax/task/logger.py,sha256=lmZ-cfiBisNskz1JDrQmtydT0uwoAAmr38V8-W8XqiU,29200
|
14
|
-
xax/task/script.py,sha256=oBGnScYa_X284fCajabPCcbaSEIqR8nO4d40dvMv3NQ,1011
|
15
|
-
xax/task/task.py,sha256=mUY7lEug9dW5yrTyT1V5gro5OosnmilMkkWLC-FbI4E,1266
|
16
|
-
xax/task/launchers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
17
|
-
xax/task/launchers/base.py,sha256=8LB_r6YISKu1vq1zk3aVYmiedRr9MxE5IMRocs6unFI,731
|
18
|
-
xax/task/launchers/cli.py,sha256=cK7Nm-3fO-W2gTxpn3FEThsT2NvneS2w0UjA1Nt-84A,1402
|
19
|
-
xax/task/launchers/single_process.py,sha256=IoML-30g5c526yxkpbWSOtG_KpNQMakT7xujzB1gIAo,846
|
20
|
-
xax/task/launchers/staged.py,sha256=jYeT9u58CN4ldV-ltJiQXQglEWOnEckHWnHYjfJQaoY,1102
|
21
|
-
xax/task/loggers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
22
|
-
xax/task/loggers/json.py,sha256=yXHb1bmfsEnk4p0F1Up1ertWYdcPAFZm25NT8wE3Jb8,4045
|
23
|
-
xax/task/loggers/state.py,sha256=qyb-q8MdagN7BX-DhKucwoc45tIZJrPuvVDVoysTKC4,1576
|
24
|
-
xax/task/loggers/stdout.py,sha256=nxQXkS9JUR38RKsU9qj0dgePKguK0BFa9nl_BdGO8cE,6758
|
25
|
-
xax/task/loggers/tensorboard.py,sha256=Vt9Vr6i5Bmon7z0vykiQKcx_X9qsYTrRgKf1isLQrEA,7388
|
26
|
-
xax/task/mixins/__init__.py,sha256=NB8CVbx-zxMpWDYeQJJCUIrUOfrNeVc8mE59qXayEsc,685
|
27
|
-
xax/task/mixins/artifacts.py,sha256=W8Y40aqa7QL8mfM5wMRBszLG8Xpv0VZMT3yRnFLfCOU,3568
|
28
|
-
xax/task/mixins/cpu_stats.py,sha256=BeG26vkfy4ePAXZfKfoONyHwpCplK-YrbeeEkVNmF8E,8854
|
29
|
-
xax/task/mixins/data_loader.py,sha256=CWoozUdNd5UgJ2wzVktHTDBDplb0TZJAThq53sYrKsM,6160
|
30
|
-
xax/task/mixins/gpu_stats.py,sha256=HHwBGr56u5MfV_JZDgDvyxnxNgVSr-yNLLfy2tGzyW8,8410
|
31
|
-
xax/task/mixins/logger.py,sha256=lWO3nsEdA92Cd8z_JAiD7VBLgiTr2FS5JK2ZJSajexc,9281
|
32
|
-
xax/task/mixins/process.py,sha256=am6HeAI9Mw7FmrpYX8tMfIzgq-WSYZwm5T6qKuUlOsw,1327
|
33
|
-
xax/task/mixins/runnable.py,sha256=d5-qyIpmNPtbTzE7qFJGGCPSREEDhX1VApUJPNDWye0,1933
|
34
|
-
xax/task/mixins/step_wrapper.py,sha256=Do4eGgZVuqDX9ZGDxQdfn6pRbUnHjQBAkTF0vnNH31E,1472
|
35
|
-
xax/task/mixins/train.py,sha256=blNJEjUL6FnvHUIhIa8a5au2TUw3OEv57hygfIGfNmI,18626
|
36
|
-
xax/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
37
|
-
xax/utils/experiments.py,sha256=EgTTugyBznGhyft04RIA5tDnDGIrib3y3FKa2J6i4sU,26766
|
38
|
-
xax/utils/jax.py,sha256=VzEVB766UyH3_cgN6UP0FkCsDuGlYg5KJj8YJS4yYUk,439
|
39
|
-
xax/utils/logging.py,sha256=CIOvoH7iq70IRvysG-14OuHSgdvoIfzttwMWiw2yu3E,5732
|
40
|
-
xax/utils/numpy.py,sha256=_jOXVi-d2AtJnRftPkRK5MDMzsU8slgw-Jjv4GRm6ns,1197
|
41
|
-
xax/utils/tensorboard.py,sha256=BEa1OmOl_7eiq9yahMI2vd6sc_VEBiZnzkEPBGv3IVs,7654
|
42
|
-
xax/utils/text.py,sha256=zo1sAoZe59GkpcpaHBVOQ0OekSMGXvOAyNa3lOJozCY,10628
|
43
|
-
xax/utils/data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
44
|
-
xax/utils/data/collate.py,sha256=fuXTzOxdi-STgtRUU2DyJTF72Yz42kWLr6nlszZs6tM,7003
|
45
|
-
xax-0.0.3.dist-info/LICENSE,sha256=HCN2bImAzUOXldAZZI7JZ9PYq6OwMlDAP_PpX1HnuN0,1071
|
46
|
-
xax-0.0.3.dist-info/METADATA,sha256=qLBYRcvPbllBPh-VVLDcpSjaYWQJyQxhwrjlx98DTV0,867
|
47
|
-
xax-0.0.3.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
|
48
|
-
xax-0.0.3.dist-info/top_level.txt,sha256=g4Au_r2XhvZ-lTybviH-Fh9g0zF4DAYHYxPue1-xbs8,4
|
49
|
-
xax-0.0.3.dist-info/RECORD,,
|
File without changes
|
File without changes
|