############################ Latency optimization package ############################ The ``enot.latency`` package contains utilities which can help you to profile your model, measure model or search space latency, or to obtain statistical information about latency distribution in a search space. ********** Main tools ********** .. autofunction:: enot.latency.search_space_latency_calculator.initialize_latency To select latency_type see :ref:`SS Latency Calculators` section. .. autofunction:: enot.latency.search_space_latency_calculator.available_calculators .. autofunction:: enot.latency.search_space_latency_calculator.reset_latency *************************** SearchSpaceLatencyContainer *************************** .. autoclass:: enot.latency.search_space_latency_container.SearchSpaceLatencyContainer :members: *********************************************************** Statistical tools for :class:`.SearchSpaceLatencyContainer` *********************************************************** .. autofunction:: enot.latency.search_space_latency_statistics.min_latency .. autofunction:: enot.latency.search_space_latency_statistics.max_latency .. autofunction:: enot.latency.search_space_latency_statistics.mean_latency .. autofunction:: enot.latency.search_space_latency_statistics.median_latency .. autofunction:: enot.latency.search_space_latency_statistics.sample_latencies .. autofunction:: enot.latency.search_space_latency_statistics.current_latency .. autofunction:: enot.latency.search_space_latency_statistics.best_arch_latency .. _SS Latency Calculators: ******************************** Search space latency calculators ******************************** We support two types of calculators. First type calculates amount of multiply-accumulate (mac) operations (inherited from :class:`.SearchSpaceCommonCalculator`). Second type estimates real-time/latency (in ms) of operations on target device. Amount of multiply-accumulate operations may correlate poorly with latency (in ms) on device, because of the difference in compiler optimization, device architecures, etc. If you know on which type of device you want to optimize neural network and you can run calculator on it --- use the second type of calculators: :class:`.SearchSpacePytorchCudaLatencyCalculator`, :class:`.SearchSpacePytorchCpuLatencyCalculator`. Otherwise, use mac-calculators, these calculators can roughly estimate the complexity of neural network on an abstract device. Use :func:`.initialize_latency` function to calculate latency of :class:`.SearchSpaceModel`. Pass ``latency_type`` corrensponding to selected calculator (see :func:`.available_calculators`). .. autoclass:: enot.latency.search_space_latency_calculator.SearchSpaceLatencyCalculator :members: .. autoclass:: enot.latency.search_space_latency_calculator.SearchSpaceCommonCalculator :members: :show-inheritance: .. autoclass:: enot.latency.search_space_latency_calculator.SearchSpaceMacThopCalculator :members: :show-inheritance: .. autoclass:: enot.latency.search_space_latency_calculator.SearchSpaceMacPthflopsCalculator :members: :show-inheritance: .. autoclass:: enot.latency.search_space_latency_calculator.SearchSpaceMacFvcoreCalculator :members: :show-inheritance: .. autoclass:: enot.latency.search_space_latency_calculator.SearchSpacePytorchLatencyCalculator :members: :show-inheritance: .. autoclass:: enot.latency.search_space_latency_calculator.SearchSpacePytorchCpuLatencyCalculator :members: :show-inheritance: .. autoclass:: enot.latency.search_space_latency_calculator.SearchSpacePytorchCudaLatencyCalculator :members: :show-inheritance: ******************* Latency calculators ******************* .. autoclass:: enot.latency.latency_calculator.LatencyCalculator :members: .. autoclass:: enot.latency.latency_calculator.MacCalculatorFvcore :members: :show-inheritance: .. autoclass:: enot.latency.latency_calculator.MacCalculatorThop :members: :show-inheritance: .. autoclass:: enot.latency.latency_calculator.MacCalculatorPthflops :members: :show-inheritance: