setup.py (99 lines of code) (raw):

import os import re import subprocess from setuptools import find_packages, setup # Ensure we match the version set in src/optimum-benchmark/version.py try: filepath = "optimum_benchmark/version.py" with open(filepath) as version_file: (__version__,) = re.findall('__version__ = "(.*)"', version_file.read()) except Exception as error: assert False, "Error: Could not open '%s' due %s\n" % (filepath, error) MIN_OPTIMUM_VERSION = "1.18.0" INSTALL_REQUIRES = [ # HF dependencies "huggingface-hub", "transformers", "accelerate", "datasets", "hf_xet", # Hydra "hydra-core", "omegaconf", # CPU "psutil", # Reporting "typing-extensions", "flatten_dict", "colorlog", "pandas", "rich", ] try: subprocess.run(["nvidia-smi"], check=True) IS_NVIDIA_SYSTEM = True except Exception: IS_NVIDIA_SYSTEM = False try: subprocess.run(["amd-smi"], check=True) IS_ROCM_SYSTEM = True except Exception: IS_ROCM_SYSTEM = False USE_CUDA = (os.environ.get("USE_CUDA", None) == "1") or IS_NVIDIA_SYSTEM USE_ROCM = (os.environ.get("USE_ROCM", None) == "1") or IS_ROCM_SYSTEM if USE_CUDA: INSTALL_REQUIRES.append("nvidia-ml-py") if USE_ROCM: INSTALL_REQUIRES.extend(["pyrsmi", "amdsmi"]) DEV_REQUIRE = ["ruff", "pytest", "mock", "hydra-joblib-launcher"] EXTRAS_REQUIRE = { "quality": ["ruff"], "dev": DEV_REQUIRE, "tests": DEV_REQUIRE, "testing": DEV_REQUIRE, # optimum backends "ipex": [f"optimum[ipex]>={MIN_OPTIMUM_VERSION}"], "tensorrt-llm": [f"optimum[nvidia]>={MIN_OPTIMUM_VERSION}"], "openvino": [f"optimum[openvino,nncf]>={MIN_OPTIMUM_VERSION}"], "onnxruntime": [f"optimum[onnxruntime]>={MIN_OPTIMUM_VERSION}"], "onnxruntime-gpu": [f"optimum[onnxruntime-gpu]>={MIN_OPTIMUM_VERSION}"], # other backends "llama-cpp": ["llama-cpp-python"], "llm-swarm": ["llm-swarm"], "py-txi": ["py-txi"], "vllm": ["vllm"], # optional dependencies "sentence-transformers": ["sentence-transformers"], "gptqmodel": ["gptqmodel", "optimum"], "codecarbon": ["codecarbon<3.0.0"], "bitsandbytes": ["bitsandbytes"], "deepspeed": ["deepspeed<0.16"], "flash-attn": ["flash-attn"], "diffusers": ["diffusers"], "torchao": ["torchao"], "timm": ["timm"], "peft": ["peft"], } setup( packages=find_packages(), install_requires=INSTALL_REQUIRES, extras_require=EXTRAS_REQUIRE, entry_points={"console_scripts": ["optimum-benchmark=optimum_benchmark.cli:main"]}, description="Optimum-Benchmark is a unified multi-backend utility for benchmarking " "Transformers, Timm, Diffusers and Sentence-Transformers with full support of " "Optimum's hardware optimizations & quantization schemes.", url="https://github.com/huggingface/optimum-benchmark", classifiers=[ "Intended Audience :: Education", "Intended Audience :: Developers", "Operating System :: POSIX :: Linux", "Intended Audience :: Science/Research", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "License :: OSI Approved :: Apache Software License", "Topic :: Scientific/Engineering :: Artificial Intelligence", ], keywords="benchmark, transformers, quantization, pruning, optimization, training, inference, onnx, onnx runtime, intel, " "habana, graphcore, neural compressor, ipex, ipu, hpu, llm-swarm, py-txi, vllm, llama-cpp, gptqmodel, " "sentence-transformers, bitsandbytes, codecarbon, flash-attn, deepspeed, diffusers, timm, peft", long_description=open("README.md", "r", encoding="utf-8").read(), long_description_content_type="text/markdown", author="HuggingFace Inc. Special Ops Team", include_package_data=True, name="optimum-benchmark", version=__version__, license="Apache", )