cddb07a176
docs / deploy (push) Has been cancelled
docs / changes (push) Has been cancelled
docs / check-and-build (push) Has been cancelled
build container image / cpu (push) Has been cancelled
build container image / cuda (push) Has been cancelled
build container image / rocm (push) Has been cancelled
frontend checks / frontend-checks (push) Has been cancelled
frontend tests / frontend-tests (push) Has been cancelled
lfs checks / lfs-check (push) Has been cancelled
python checks / python-checks (push) Has been cancelled
python tests / py3.12: macos-default (push) Has been cancelled
python tests / py3.11: windows-cpu (push) Has been cancelled
python tests / py3.12: windows-cpu (push) Has been cancelled
python tests / py3.11: linux-cpu (push) Has been cancelled
typegen checks / typegen-checks (push) Has been cancelled
uv lock checks / uv-lock-checks (push) Has been cancelled
openapi checks / openapi-checks (push) Has been cancelled
python tests / py3.11: macos-default (push) Has been cancelled
python tests / py3.12: linux-cpu (push) Has been cancelled
34 lines
1.0 KiB
Python
34 lines
1.0 KiB
Python
from contextlib import contextmanager
|
|
|
|
import torch
|
|
|
|
from invokeai.backend.util.logging import InvokeAILogger
|
|
|
|
|
|
@contextmanager
|
|
def log_operation_vram_usage(operation_name: str):
|
|
"""A helper function for tuning working memory requirements for memory-intensive ops.
|
|
|
|
Sample usage:
|
|
|
|
```python
|
|
with log_operation_vram_usage("some_operation"):
|
|
some_operation()
|
|
```
|
|
"""
|
|
torch.cuda.synchronize()
|
|
torch.cuda.reset_peak_memory_stats()
|
|
max_allocated_before = torch.cuda.max_memory_allocated()
|
|
max_reserved_before = torch.cuda.max_memory_reserved()
|
|
try:
|
|
yield
|
|
finally:
|
|
torch.cuda.synchronize()
|
|
max_allocated_after = torch.cuda.max_memory_allocated()
|
|
max_reserved_after = torch.cuda.max_memory_reserved()
|
|
logger = InvokeAILogger.get_logger()
|
|
logger.info(
|
|
f">>>{operation_name} Peak VRAM allocated: {(max_allocated_after - max_allocated_before) / 2**20} MB, "
|
|
f"Peak VRAM reserved: {(max_reserved_after - max_reserved_before) / 2**20} MB"
|
|
)
|