Skip to content

Commit d0db8a0

Browse files
jhnwu3LogiquoEricSchrock
authored
init commit, tldr the cache_dir or files should probably indicate tab… (#835)
* init commit, tldr the cache_dir or files should probably indicate table names * better approach is to hash the filename rather than the directory name * Fix cache dir * Simplify new caching behavior code and add unit tests * Remove unnecessary f-string * commit to remove cache_dir from task, will update after seeing if test cases pass * Add proc UUID to samples cache dir docs * Remove the cache_format param from set_task * Remove task schema from the proc UUID (since it is now included in the task UUID) * Add proc UUID to the _init_cache_dir docs * Remove cache_format param from unit tests * Remove set_task(cache_dir) from more examples * Fix cache unit test (call_count increments trigger new caches and we can no longer override the default task cache) * update cache size directory check to be more in line with our tasks/ subdir setup with how cache_dir works * Remove unused ensure_empty_dir function * Correct cache size calculations (the "workers_n" examples do not need to be corrected because they were already using the default task cache path) --------- Co-authored-by: Yongda Fan <yongdaf2@illinois.edu> Co-authored-by: EricSchrock <eric.schrock22@gmail.com>
1 parent 3d11e3b commit d0db8a0

49 files changed

Lines changed: 387 additions & 419 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

examples/benchmark_perf/benchmark_workers_1.py

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,7 @@ def main():
117117
print("\n[1/2] Loading MIMIC-IV base dataset...")
118118
dataset_start = time.time()
119119

120+
base_cache_dir = f"{cache_root}/base_dataset"
120121
base_dataset = MIMIC4Dataset(
121122
ehr_root="/srv/local/data/physionet.org/files/mimiciv/2.2/",
122123
ehr_tables=[
@@ -127,7 +128,7 @@ def main():
127128
"labevents",
128129
],
129130
dev=dev,
130-
cache_dir=f"{cache_root}/base_dataset",
131+
cache_dir=base_cache_dir,
131132
)
132133

133134
dataset_time = time.time() - dataset_start
@@ -140,20 +141,17 @@ def main():
140141
sample_dataset = base_dataset.set_task(
141142
MortalityPredictionStageNetMIMIC4(),
142143
num_workers=1,
143-
cache_dir=f"{cache_root}/task_samples",
144144
)
145145

146146
task_time = time.time() - task_start
147147
print(f"✓ Task processing completed in {task_time:.2f} seconds")
148148

149149
# Measure cache sizes
150150
print("\n[3/3] Measuring cache sizes...")
151-
base_cache_dir = f"{cache_root}/base_dataset"
152-
task_cache_dir = f"{cache_root}/task_samples"
153151

154-
base_cache_size = get_directory_size(base_cache_dir)
155-
task_cache_size = get_directory_size(task_cache_dir)
156-
total_cache_size = base_cache_size + task_cache_size
152+
total_cache_size = get_directory_size(base_cache_dir)
153+
task_cache_size = get_directory_size(f"{base_cache_dir}/tasks")
154+
base_cache_size = total_cache_size - task_cache_size
157155

158156
print(f"✓ Base dataset cache: {format_size(base_cache_size)}")
159157
print(f"✓ Task samples cache: {format_size(task_cache_size)}")

examples/benchmark_perf/benchmark_workers_12.py

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,7 @@ def main():
117117
print("\n[1/2] Loading MIMIC-IV base dataset...")
118118
dataset_start = time.time()
119119

120+
base_cache_dir = f"{cache_root}/base_dataset"
120121
base_dataset = MIMIC4Dataset(
121122
ehr_root="/srv/local/data/physionet.org/files/mimiciv/2.2/",
122123
ehr_tables=[
@@ -127,7 +128,7 @@ def main():
127128
"labevents",
128129
],
129130
dev=dev,
130-
cache_dir=f"{cache_root}/base_dataset",
131+
cache_dir=base_cache_dir,
131132
)
132133

133134
dataset_time = time.time() - dataset_start
@@ -140,20 +141,17 @@ def main():
140141
sample_dataset = base_dataset.set_task(
141142
MortalityPredictionStageNetMIMIC4(),
142143
num_workers=12,
143-
cache_dir=f"{cache_root}/task_samples",
144144
)
145145

146146
task_time = time.time() - task_start
147147
print(f"✓ Task processing completed in {task_time:.2f} seconds")
148148

149149
# Measure cache sizes
150150
print("\n[3/3] Measuring cache sizes...")
151-
base_cache_dir = f"{cache_root}/base_dataset"
152-
task_cache_dir = f"{cache_root}/task_samples"
153151

154-
base_cache_size = get_directory_size(base_cache_dir)
155-
task_cache_size = get_directory_size(task_cache_dir)
156-
total_cache_size = base_cache_size + task_cache_size
152+
total_cache_size = get_directory_size(base_cache_dir)
153+
task_cache_size = get_directory_size(f"{base_cache_dir}/tasks")
154+
base_cache_size = total_cache_size - task_cache_size
157155

158156
print(f"✓ Base dataset cache: {format_size(base_cache_size)}")
159157
print(f"✓ Task samples cache: {format_size(task_cache_size)}")

examples/benchmark_perf/benchmark_workers_4.py

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,7 @@ def main():
117117
print("\n[1/2] Loading MIMIC-IV base dataset...")
118118
dataset_start = time.time()
119119

120+
base_cache_dir = f"{cache_root}/base_dataset"
120121
base_dataset = MIMIC4Dataset(
121122
ehr_root="/srv/local/data/physionet.org/files/mimiciv/2.2/",
122123
ehr_tables=[
@@ -127,7 +128,7 @@ def main():
127128
"labevents",
128129
],
129130
dev=dev,
130-
# cache_dir=f"{cache_root}/base_dataset",
131+
cache_dir=base_cache_dir,
131132
)
132133

133134
dataset_time = time.time() - dataset_start
@@ -140,20 +141,17 @@ def main():
140141
sample_dataset = base_dataset.set_task(
141142
MortalityPredictionStageNetMIMIC4(),
142143
num_workers=4,
143-
cache_dir=f"{cache_root}/task_samples_old",
144144
)
145145

146146
task_time = time.time() - task_start
147147
print(f"✓ Task processing completed in {task_time:.2f} seconds")
148148

149149
# Measure cache sizes
150150
print("\n[3/3] Measuring cache sizes...")
151-
base_cache_dir = f"{cache_root}/base_dataset"
152-
task_cache_dir = f"{cache_root}/task_samples"
153151

154-
base_cache_size = get_directory_size(base_cache_dir)
155-
task_cache_size = get_directory_size(task_cache_dir)
156-
total_cache_size = base_cache_size + task_cache_size
152+
total_cache_size = get_directory_size(base_cache_dir)
153+
task_cache_size = get_directory_size(f"{base_cache_dir}/tasks")
154+
base_cache_size = total_cache_size - task_cache_size
157155

158156
print(f"✓ Base dataset cache: {format_size(base_cache_size)}")
159157
print(f"✓ Task samples cache: {format_size(task_cache_size)}")

examples/benchmark_perf/benchmark_workers_n.py

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -159,13 +159,6 @@ def parse_workers(value: str) -> list[int]:
159159
return workers
160160

161161

162-
def ensure_empty_dir(path: str | Path) -> None:
163-
p = Path(path)
164-
if p.exists():
165-
shutil.rmtree(p)
166-
p.mkdir(parents=True, exist_ok=True)
167-
168-
169162
def remove_dir(path: str | Path, retries: int = 3, delay: float = 1.0) -> None:
170163
"""Remove a directory with retry logic for busy file handles."""
171164
p = Path(path)
@@ -282,11 +275,8 @@ def main() -> None:
282275
print("\n[1/1] Sweeping num_workers (each run reloads dataset + task)...")
283276
for w in args.workers:
284277
for r in range(args.repeats):
285-
task_cache_dir = cache_root / f"task_samples_w{w}"
286-
287278
# Ensure no cache artifacts before this run.
288279
remove_dir(base_cache_dir)
289-
ensure_empty_dir(task_cache_dir)
290280

291281
tracker.reset()
292282
run_start = time.time()
@@ -311,13 +301,13 @@ def main() -> None:
311301
sample_dataset = base_dataset.set_task(
312302
MortalityPredictionStageNetMIMIC4(),
313303
num_workers=w,
314-
cache_dir=str(task_cache_dir),
315304
)
316305

317306
task_process_s = time.time() - task_start
318307
total_s = time.time() - run_start
319308
peak_rss_bytes = tracker.peak_bytes()
320-
task_cache_bytes = get_directory_size(task_cache_dir)
309+
tasks_dir = base_cache_dir / "tasks"
310+
task_cache_bytes = get_directory_size(tasks_dir)
321311

322312
# Capture sample count BEFORE cleaning up the cache (litdata needs it).
323313
num_samples = len(sample_dataset)
@@ -327,7 +317,6 @@ def main() -> None:
327317
del base_dataset
328318

329319
# Clean up to avoid disk growth across an overnight sweep.
330-
remove_dir(task_cache_dir)
331320
remove_dir(base_cache_dir)
332321

333322
results.append(

examples/benchmark_perf/benchmark_workers_n_drug_recommendation.py

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -159,13 +159,6 @@ def parse_workers(value: str) -> list[int]:
159159
return workers
160160

161161

162-
def ensure_empty_dir(path: str | Path) -> None:
163-
p = Path(path)
164-
if p.exists():
165-
shutil.rmtree(p)
166-
p.mkdir(parents=True, exist_ok=True)
167-
168-
169162
def remove_dir(path: str | Path, retries: int = 3, delay: float = 1.0) -> None:
170163
"""Remove a directory with retry logic for busy file handles."""
171164
p = Path(path)
@@ -284,11 +277,8 @@ def main() -> None:
284277
print("\n[1/1] Sweeping num_workers (each run reloads dataset + task)...")
285278
for w in args.workers:
286279
for r in range(args.repeats):
287-
task_cache_dir = cache_root / f"task_samples_drug_rec_w{w}"
288-
289280
# Ensure no cache artifacts before this run.
290281
remove_dir(base_cache_dir)
291-
ensure_empty_dir(task_cache_dir)
292282

293283
tracker.reset()
294284
run_start = time.time()
@@ -313,13 +303,13 @@ def main() -> None:
313303
sample_dataset = base_dataset.set_task(
314304
DrugRecommendationMIMIC4(),
315305
num_workers=w,
316-
cache_dir=str(task_cache_dir),
317306
)
318307

319308
task_process_s = time.time() - task_start
320309
total_s = time.time() - run_start
321310
peak_rss_bytes = tracker.peak_bytes()
322-
task_cache_bytes = get_directory_size(task_cache_dir)
311+
tasks_dir = base_cache_dir / "tasks"
312+
task_cache_bytes = get_directory_size(tasks_dir)
323313

324314
# Capture sample count BEFORE cleaning up the cache (litdata needs it).
325315
num_samples = len(sample_dataset)
@@ -329,7 +319,6 @@ def main() -> None:
329319
del base_dataset
330320

331321
# Clean up to avoid disk growth across an overnight sweep.
332-
remove_dir(task_cache_dir)
333322
remove_dir(base_cache_dir)
334323

335324
results.append(

examples/benchmark_perf/benchmark_workers_n_length_of_stay.py

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -159,13 +159,6 @@ def parse_workers(value: str) -> list[int]:
159159
return workers
160160

161161

162-
def ensure_empty_dir(path: str | Path) -> None:
163-
p = Path(path)
164-
if p.exists():
165-
shutil.rmtree(p)
166-
p.mkdir(parents=True, exist_ok=True)
167-
168-
169162
def remove_dir(path: str | Path, retries: int = 3, delay: float = 1.0) -> None:
170163
"""Remove a directory with retry logic for busy file handles."""
171164
p = Path(path)
@@ -284,11 +277,8 @@ def main() -> None:
284277
print("\n[1/1] Sweeping num_workers (each run reloads dataset + task)...")
285278
for w in args.workers:
286279
for r in range(args.repeats):
287-
task_cache_dir = cache_root / f"task_samples_los_w{w}"
288-
289280
# Ensure no cache artifacts before this run.
290281
remove_dir(base_cache_dir)
291-
ensure_empty_dir(task_cache_dir)
292282

293283
tracker.reset()
294284
run_start = time.time()
@@ -313,13 +303,13 @@ def main() -> None:
313303
sample_dataset = base_dataset.set_task(
314304
LengthOfStayPredictionMIMIC4(),
315305
num_workers=w,
316-
cache_dir=str(task_cache_dir),
317306
)
318307

319308
task_process_s = time.time() - task_start
320309
total_s = time.time() - run_start
321310
peak_rss_bytes = tracker.peak_bytes()
322-
task_cache_bytes = get_directory_size(task_cache_dir)
311+
tasks_dir = base_cache_dir / "tasks"
312+
task_cache_bytes = get_directory_size(tasks_dir)
323313

324314
# Capture sample count BEFORE cleaning up the cache (litdata needs it).
325315
num_samples = len(sample_dataset)
@@ -329,7 +319,6 @@ def main() -> None:
329319
del base_dataset
330320

331321
# Clean up to avoid disk growth across an overnight sweep.
332-
remove_dir(task_cache_dir)
333322
remove_dir(base_cache_dir)
334323

335324
results.append(

0 commit comments

Comments
 (0)