From fa29e9bc6a671648f36d62bdbc59f031c2301857 Mon Sep 17 00:00:00 2001 From: Scott Schneider Date: Fri, 8 Nov 2024 12:24:21 -0800 Subject: [PATCH 01/13] Tweaking font sizes on README chart --- .../decoders/benchmark_decoders_library.py | 6 +++--- .../decoders/benchmark_readme_chart.png | Bin 67441 -> 81499 bytes 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/benchmarks/decoders/benchmark_decoders_library.py b/benchmarks/decoders/benchmark_decoders_library.py index 62ea1e9a..8d9d8a92 100644 --- a/benchmarks/decoders/benchmark_decoders_library.py +++ b/benchmarks/decoders/benchmark_decoders_library.py @@ -393,6 +393,8 @@ def retrieve_videos(urls_and_dest_paths): def plot_data(df_data, plot_path): + plt.rcParams["font.size"] = 18 + # Creating the DataFrame df = pd.DataFrame(df_data) @@ -440,9 +442,7 @@ def plot_data(df_data, plot_path): # Set the title for the subplot base_video = Path(video).name.removesuffix(".mp4") - ax.set_title( - f"video={base_video}\ndecode_pattern={vcount} x {vtype}", fontsize=10 - ) + ax.set_title(f"{base_video}\n{vcount} x {vtype}", fontsize=11) # Plot bars with error bars ax.barh( diff --git a/benchmarks/decoders/benchmark_readme_chart.png b/benchmarks/decoders/benchmark_readme_chart.png index e3c09a46a43e3929c7fd234b8d3cb155cec946fa..5dec9348ad7da72495fa2fec11b0800082fd9877 100644 GIT binary patch literal 81499 zcmeFZ2T+x1*DZL|Hnah>4S*61U;qRW5XmZv905_HNNPkta?S$Uc1x=ucmRol0YS0| zNCp)pCyA0plH{BP?t19q1Y9c*>5Rj!+v8LNz#`SX(0rW~1_mxF_!PHM01`-5fAA8R-La(30Z zcYkz8DX)#VbIbO$5$EA^TO$tSMEdyr={ND?J^xIp&zaS?DHCq-f}48EGJ1z?_=CiK z#b-1__zG}4|9;(4vMe6@`5*ZI7Lgqra1H-{9XfM+>(76uSnmJ-fAoKKHTF`QGVNkb zPlVLRsr$wc?ccw@tGCy%RVUfN3oo9qXba8Xwxpn}?1!IBR!S~kH_75RtoYs?praap zHMOg+uWxIb)`biAC4P)biT@bQFA3lc|KrXbl{`1sc&)4x^6mK^^aEpsY-%zxfB#rq zv|C=BF{ua@Hku!5%hA}f=Y(HkV&cY~oDmH=?pgsnS|zH39&{|Uas%0!p6+h_spb?T zU+0hhx?!E@>SqGc(6xRzB^McSb%yWMBcD6%zrYk z{ZV7Gp@!=Pzr)WMv>iL{&e(nX_-oG6{6LI$P9_#eCFRCtyT0mk9`tM%)0V$|dZ3bK zt~ED5e57Ne7w`;b*U*u4G4dGC_S%1T|Hv@FTxA4&-c2}W+cSX!N&(GQz4d&6A1 zIy+y`IAr@Xdc$NLw1vkq9fkHY=t%P%WH3Cm%i3yqA44yz^;r37)?809Io67c++7_l zQmhr?4l1lCC=^D$x2BEP*n{d~)eKFt-rrfjM@L6zV5z?@){8yas3wy6;ix+utJn?p zAoXMeeUq%C8gBzvuiY59>*&?MOuGS*k7f=XAJ%T)vE#b7Q}@o~8=vJxP=mKJB)nIBACRa8`zdm-&57j#^|?Bl)d<-vj`WnIO- z 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 literal 67441 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 From 8a6257ac5e230bc2c7bd3621d96e3ccbc5643c7c Mon Sep 17 00:00:00 2001 From: Scott Schneider Date: Tue, 12 Nov 2024 05:56:11 -0800 Subject: [PATCH 02/13] Workflow for benchmarks --- .github/workflows/benchmarks.yaml | 49 +++++++++++++++++ benchmarks/decoders/generate_readme_data.py | 58 ++++++++++++++++----- 2 files changed, 93 insertions(+), 14 deletions(-) create mode 100644 .github/workflows/benchmarks.yaml diff --git a/.github/workflows/benchmarks.yaml b/.github/workflows/benchmarks.yaml new file mode 100644 index 00000000..a414570d --- /dev/null +++ b/.github/workflows/benchmarks.yaml @@ -0,0 +1,49 @@ +name: Benchmarks + +on: + push: + branches: [ main ] + pull_request: + paths: + - src/torchcodec/* + - benchmarks/* + - .github/workflows/benchmarks.yaml + +defaults: + run: + shell: bash -l -eo pipefail {0} + +jobs: + build: + runs-on: ubuntu-latest + strategy: + fail-fast: false + steps: + - name: Check out repo + uses: actions/checkout@v3 + - name: Setup conda env + uses: conda-incubator/setup-miniconda@v2 + with: + auto-update-conda: true + miniconda-version: "latest" + activate-environment: test + python-version: '3.12' + - name: Update pip + run: python -m pip install --upgrade pip + - name: Install dependencies and FFmpeg + run: | + # TODO: torchvision and torchaudio shouldn't be needed. They were only added + # to silence an error as seen in https://github.com/pytorch/torchcodec/issues/203 + python -m pip install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cpu + conda install "ffmpeg=7.0.1" pkg-config -c conda-forge + ffmpeg -version + - name: Build and install torchcodec + run: | + python -m pip install -e ".[dev]" --no-build-isolation -vvv + - name: Test generic decoder benchmark + run: | + python benchmarks/decoders/benchmark_decoders.py --bm_video_speed_min_run_seconds 1 + - name: TEST README data geeneration benchmark + run: | + python benchmarks/decoders/generate_readme_data.py --test_run + diff --git a/benchmarks/decoders/generate_readme_data.py b/benchmarks/decoders/generate_readme_data.py index 277cd375..57beda50 100644 --- a/benchmarks/decoders/generate_readme_data.py +++ b/benchmarks/decoders/generate_readme_data.py @@ -4,6 +4,7 @@ # This source code is licensed under the BSD-style license found in the # LICENSE file in the root directory of this source tree. +import argparse import json import os import platform @@ -26,18 +27,48 @@ def main() -> None: """Benchmarks the performance of a few video decoders on synthetic videos""" + parser = argparse.ArgumentParser() + parser.add_argument( + "--test_run", + help="Test run only; use small values for experiments to ensure everything works. Does not overwrite the data file.", + action="store_true", + ) + args = parser.parse_args() + + # The logic is clearer internally if we invert the boolean. However, we want to + # maintain the external default that a test run is off by default. + data_generation_run = not args.test_run + + if data_generation_run: + resolutions = ["1280x720"] + encodings = ["libx264"] + patterns = ["mandelbrot"] + fpses = [60] + gop_sizes = [600] + durations = [120] + pix_fmts = ["yuv420p"] + ffmpeg_path = "ffmpeg" + min_runtime_seconds = 30 + + # These are the number of uniform seeks we do in the seek+decode benchmark. + num_samples = 10 + else: + resolutions = ["640x480"] + encodings = ["libx264"] + patterns = ["mandelbrot"] + fpses = [30] + gop_sizes = [20] + durations = [10] # if this goes too low, we hit EOF errors in some decoders + pix_fmts = ["yuv420p"] + ffmpeg_path = "ffmpeg" + min_runtime_seconds = 1 + + num_samples = 4 + videos_dir_path = "/tmp/torchcodec_benchmarking_videos" shutil.rmtree(videos_dir_path, ignore_errors=True) os.makedirs(videos_dir_path) - resolutions = ["1280x720"] - encodings = ["libx264"] - patterns = ["mandelbrot"] - fpses = [60] - gop_sizes = [600] - durations = [120] - pix_fmts = ["yuv420p"] - ffmpeg_path = "ffmpeg" generate_videos( resolutions, encodings, @@ -61,15 +92,13 @@ def main() -> None: decoder_dict["TorchAudio"] = TorchAudioDecoder() decoder_dict["Decord"] = DecordAccurateBatch() - # These are the number of uniform seeks we do in the seek+decode benchmark. - num_samples = 10 video_files_paths = list(Path(videos_dir_path).glob("*.mp4")) df_data = run_benchmarks( decoder_dict, video_files_paths, num_samples, num_sequential_frames_from_start=[100], - min_runtime_seconds=30, + min_runtime_seconds=min_runtime_seconds, benchmark_video_creation=False, ) df_data.append( @@ -82,9 +111,10 @@ def main() -> None: } ) - data_json = Path(__file__).parent / "benchmark_readme_data.json" - with open(data_json, "w") as write_file: - json.dump(df_data, write_file, sort_keys=True, indent=4) + if data_generation_run: + data_json = Path(__file__).parent / "benchmark_readme_data.json" + with open(data_json, "w") as write_file: + json.dump(df_data, write_file, sort_keys=True, indent=4) if __name__ == "__main__": From 960b620f8b4fd4a5e47fdc06b5cdd5af92d24e09 Mon Sep 17 00:00:00 2001 From: Scott Schneider Date: Tue, 12 Nov 2024 06:21:26 -0800 Subject: [PATCH 03/13] Add benchmark deps --- .github/workflows/benchmarks.yaml | 6 ++---- benchmarks/decoders/generate_readme_data.py | 2 +- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/.github/workflows/benchmarks.yaml b/.github/workflows/benchmarks.yaml index a414570d..3cb31e56 100644 --- a/.github/workflows/benchmarks.yaml +++ b/.github/workflows/benchmarks.yaml @@ -32,10 +32,9 @@ jobs: run: python -m pip install --upgrade pip - name: Install dependencies and FFmpeg run: | - # TODO: torchvision and torchaudio shouldn't be needed. They were only added - # to silence an error as seen in https://github.com/pytorch/torchcodec/issues/203 + conda install ffmpeg pkg-config -c conda-forge python -m pip install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cpu - conda install "ffmpeg=7.0.1" pkg-config -c conda-forge + python -m pip install decord matplotlib pandas numpy ffmpeg -version - name: Build and install torchcodec run: | @@ -46,4 +45,3 @@ jobs: - name: TEST README data geeneration benchmark run: | python benchmarks/decoders/generate_readme_data.py --test_run - diff --git a/benchmarks/decoders/generate_readme_data.py b/benchmarks/decoders/generate_readme_data.py index 57beda50..f8e24538 100644 --- a/benchmarks/decoders/generate_readme_data.py +++ b/benchmarks/decoders/generate_readme_data.py @@ -58,7 +58,7 @@ def main() -> None: patterns = ["mandelbrot"] fpses = [30] gop_sizes = [20] - durations = [10] # if this goes too low, we hit EOF errors in some decoders + durations = [10] # if this goes too low, we hit EOF errors in some decoders pix_fmts = ["yuv420p"] ffmpeg_path = "ffmpeg" min_runtime_seconds = 1 From 64acfebc82bfdcaea1127f6466bdd885d45f840b Mon Sep 17 00:00:00 2001 From: Scott Schneider Date: Tue, 12 Nov 2024 07:06:09 -0800 Subject: [PATCH 04/13] Don't execute against decord --- .github/workflows/benchmarks.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/benchmarks.yaml b/.github/workflows/benchmarks.yaml index 3cb31e56..cf17b288 100644 --- a/.github/workflows/benchmarks.yaml +++ b/.github/workflows/benchmarks.yaml @@ -41,7 +41,7 @@ jobs: python -m pip install -e ".[dev]" --no-build-isolation -vvv - name: Test generic decoder benchmark run: | - python benchmarks/decoders/benchmark_decoders.py --bm_video_speed_min_run_seconds 1 + python benchmarks/decoders/benchmark_decoders.py --decoders torchcodec_core,torchcodec_public,torchvision,torchaudio --bm_video_speed_min_run_seconds 1 - name: TEST README data geeneration benchmark run: | python benchmarks/decoders/generate_readme_data.py --test_run From 7585c1ff7523eb94e77a36f74fb928cbebd34696 Mon Sep 17 00:00:00 2001 From: Scott Schneider Date: Tue, 12 Nov 2024 07:13:48 -0800 Subject: [PATCH 05/13] Revert to default decoders --- .github/workflows/benchmarks.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/benchmarks.yaml b/.github/workflows/benchmarks.yaml index cf17b288..3cb31e56 100644 --- a/.github/workflows/benchmarks.yaml +++ b/.github/workflows/benchmarks.yaml @@ -41,7 +41,7 @@ jobs: python -m pip install -e ".[dev]" --no-build-isolation -vvv - name: Test generic decoder benchmark run: | - python benchmarks/decoders/benchmark_decoders.py --decoders torchcodec_core,torchcodec_public,torchvision,torchaudio --bm_video_speed_min_run_seconds 1 + python benchmarks/decoders/benchmark_decoders.py --bm_video_speed_min_run_seconds 1 - name: TEST README data geeneration benchmark run: | python benchmarks/decoders/generate_readme_data.py --test_run From 2085998410aabdcade513845509fc5a304978fe3 Mon Sep 17 00:00:00 2001 From: Scott Schneider Date: Tue, 12 Nov 2024 07:21:09 -0800 Subject: [PATCH 06/13] Setting FFmpeg version to 6 --- .github/workflows/benchmarks.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/benchmarks.yaml b/.github/workflows/benchmarks.yaml index 3cb31e56..a0ac3838 100644 --- a/.github/workflows/benchmarks.yaml +++ b/.github/workflows/benchmarks.yaml @@ -32,7 +32,7 @@ jobs: run: python -m pip install --upgrade pip - name: Install dependencies and FFmpeg run: | - conda install ffmpeg pkg-config -c conda-forge + conda install "ffmpeg=6" pkg-config -c conda-forge python -m pip install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cpu python -m pip install decord matplotlib pandas numpy ffmpeg -version From ea9082142cb7fbf6927cfaabaee784680d4ac61b Mon Sep 17 00:00:00 2001 From: Scott Schneider Date: Tue, 12 Nov 2024 11:57:58 -0800 Subject: [PATCH 07/13] Install TorchVision from source --- .github/workflows/benchmarks.yaml | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/.github/workflows/benchmarks.yaml b/.github/workflows/benchmarks.yaml index a0ac3838..992f0e11 100644 --- a/.github/workflows/benchmarks.yaml +++ b/.github/workflows/benchmarks.yaml @@ -21,6 +21,7 @@ jobs: steps: - name: Check out repo uses: actions/checkout@v3 + - name: Setup conda env uses: conda-incubator/setup-miniconda@v2 with: @@ -28,20 +29,34 @@ jobs: miniconda-version: "latest" activate-environment: test python-version: '3.12' + - name: Update pip run: python -m pip install --upgrade pip - - name: Install dependencies and FFmpeg + + - name: Install FFmpeg, PyTorch and TorchAudio run: | conda install "ffmpeg=6" pkg-config -c conda-forge - python -m pip install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cpu - python -m pip install decord matplotlib pandas numpy + python -m pip install --pre torch torchaudio --index-url https://download.pytorch.org/whl/nightly/cpu ffmpeg -version + + - name: Download, build and install TorchVision + run: | + git clone https://github.com/pytorch/vision.git + cd vision + python setup.py install + + - name: Install all other dependencies + run: | + python -m pip install decord matplotlib pandas numpy + - name: Build and install torchcodec run: | python -m pip install -e ".[dev]" --no-build-isolation -vvv + - name: Test generic decoder benchmark run: | python benchmarks/decoders/benchmark_decoders.py --bm_video_speed_min_run_seconds 1 + - name: TEST README data geeneration benchmark run: | python benchmarks/decoders/generate_readme_data.py --test_run From 6cc503c152625b655f5f5b4a441bb298593ab4d5 Mon Sep 17 00:00:00 2001 From: Scott Schneider Date: Tue, 12 Nov 2024 18:20:53 -0800 Subject: [PATCH 08/13] Install TorchVision from nightly --- .github/workflows/benchmarks.yaml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/benchmarks.yaml b/.github/workflows/benchmarks.yaml index 992f0e11..308514fd 100644 --- a/.github/workflows/benchmarks.yaml +++ b/.github/workflows/benchmarks.yaml @@ -36,14 +36,14 @@ jobs: - name: Install FFmpeg, PyTorch and TorchAudio run: | conda install "ffmpeg=6" pkg-config -c conda-forge - python -m pip install --pre torch torchaudio --index-url https://download.pytorch.org/whl/nightly/cpu + python -m pip install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cpu ffmpeg -version - - name: Download, build and install TorchVision - run: | - git clone https://github.com/pytorch/vision.git - cd vision - python setup.py install + #- name: Download, build and install TorchVision + # run: | + # git clone https://github.com/pytorch/vision.git + # cd vision + # python setup.py install - name: Install all other dependencies run: | From 9e59bab94dc1b558569184540c3e696c08d827cd Mon Sep 17 00:00:00 2001 From: Scott Schneider Date: Tue, 12 Nov 2024 18:51:31 -0800 Subject: [PATCH 09/13] Temp disable new batch mode --- benchmarks/decoders/benchmark_decoders.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/benchmarks/decoders/benchmark_decoders.py b/benchmarks/decoders/benchmark_decoders.py index 23f45dab..0129c84f 100644 --- a/benchmarks/decoders/benchmark_decoders.py +++ b/benchmarks/decoders/benchmark_decoders.py @@ -174,7 +174,7 @@ def main() -> None: num_sequential_frames_from_start=[1, 10, 100], min_runtime_seconds=args.bm_video_speed_min_run_seconds, benchmark_video_creation=args.bm_video_creation, - batch_parameters=BatchParameters(num_threads=8, batch_size=40), + batch_parameters=None, #BatchParameters(num_threads=8, batch_size=40), ) plot_data(df_data, args.plot_path) From 0f0412be86e87aafa5e3240c8cc2fd7d4d3701ca Mon Sep 17 00:00:00 2001 From: Scott Schneider Date: Tue, 12 Nov 2024 19:01:22 -0800 Subject: [PATCH 10/13] Install PyTorch, TorchAudio and TorchVision from conda --- .github/workflows/benchmarks.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/benchmarks.yaml b/.github/workflows/benchmarks.yaml index 308514fd..bc5aa823 100644 --- a/.github/workflows/benchmarks.yaml +++ b/.github/workflows/benchmarks.yaml @@ -36,7 +36,8 @@ jobs: - name: Install FFmpeg, PyTorch and TorchAudio run: | conda install "ffmpeg=6" pkg-config -c conda-forge - python -m pip install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cpu + conda install pytorch torchvision torchaudio cpuonly -c pytorch-nightly + #python -m pip install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cpu ffmpeg -version #- name: Download, build and install TorchVision From a5f15a4dac3412cf5b3dff1a322064d07451145b Mon Sep 17 00:00:00 2001 From: Scott Schneider Date: Tue, 12 Nov 2024 19:06:02 -0800 Subject: [PATCH 11/13] Use ffmpeg=4 --- .github/workflows/benchmarks.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/benchmarks.yaml b/.github/workflows/benchmarks.yaml index bc5aa823..ffac4747 100644 --- a/.github/workflows/benchmarks.yaml +++ b/.github/workflows/benchmarks.yaml @@ -35,7 +35,7 @@ jobs: - name: Install FFmpeg, PyTorch and TorchAudio run: | - conda install "ffmpeg=6" pkg-config -c conda-forge + conda install "ffmpeg=4" pkg-config -c conda-forge conda install pytorch torchvision torchaudio cpuonly -c pytorch-nightly #python -m pip install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cpu ffmpeg -version From f880bf9bbf931988a136baccc8dbb6f5f03880a2 Mon Sep 17 00:00:00 2001 From: Scott Schneider Date: Tue, 12 Nov 2024 20:28:13 -0800 Subject: [PATCH 12/13] Use FFmpeg=5 --- .github/workflows/benchmarks.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/benchmarks.yaml b/.github/workflows/benchmarks.yaml index ffac4747..4087d3a5 100644 --- a/.github/workflows/benchmarks.yaml +++ b/.github/workflows/benchmarks.yaml @@ -35,7 +35,7 @@ jobs: - name: Install FFmpeg, PyTorch and TorchAudio run: | - conda install "ffmpeg=4" pkg-config -c conda-forge + conda install "ffmpeg=5" pkg-config -c conda-forge conda install pytorch torchvision torchaudio cpuonly -c pytorch-nightly #python -m pip install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cpu ffmpeg -version From dc29aa5473727b214ca31d326b9402d5ab6d4f4e Mon Sep 17 00:00:00 2001 From: Scott Schneider Date: Tue, 12 Nov 2024 20:34:35 -0800 Subject: [PATCH 13/13] FFmpeg=4, lint --- .github/workflows/benchmarks.yaml | 2 +- benchmarks/decoders/benchmark_decoders.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/benchmarks.yaml b/.github/workflows/benchmarks.yaml index 4087d3a5..ffac4747 100644 --- a/.github/workflows/benchmarks.yaml +++ b/.github/workflows/benchmarks.yaml @@ -35,7 +35,7 @@ jobs: - name: Install FFmpeg, PyTorch and TorchAudio run: | - conda install "ffmpeg=5" pkg-config -c conda-forge + conda install "ffmpeg=4" pkg-config -c conda-forge conda install pytorch torchvision torchaudio cpuonly -c pytorch-nightly #python -m pip install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cpu ffmpeg -version diff --git a/benchmarks/decoders/benchmark_decoders.py b/benchmarks/decoders/benchmark_decoders.py index 0129c84f..bda3d63d 100644 --- a/benchmarks/decoders/benchmark_decoders.py +++ b/benchmarks/decoders/benchmark_decoders.py @@ -13,7 +13,7 @@ from benchmark_decoders_library import ( AbstractDecoder, - BatchParameters, + # BatchParameters, DecordAccurate, DecordAccurateBatch, plot_data, @@ -174,7 +174,7 @@ def main() -> None: num_sequential_frames_from_start=[1, 10, 100], min_runtime_seconds=args.bm_video_speed_min_run_seconds, benchmark_video_creation=args.bm_video_creation, - batch_parameters=None, #BatchParameters(num_threads=8, batch_size=40), + batch_parameters=None, # BatchParameters(num_threads=8, batch_size=40), ) plot_data(df_data, args.plot_path)