setup.py 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. import sys
  2. import platform
  3. import subprocess
  4. from setuptools import find_packages, setup
  5. # Base requirements for all platforms
  6. install_requires = [
  7. "aiohttp==3.10.11",
  8. "aiohttp_cors==0.7.0",
  9. "aiofiles==24.1.0",
  10. "grpcio==1.70.0",
  11. "grpcio-tools==1.70.0",
  12. "Jinja2==3.1.4",
  13. "numpy==2.0.0",
  14. "nuitka==2.5.1",
  15. "nvidia-ml-py==12.560.30",
  16. "opencv-python==4.10.0.84",
  17. "pillow==10.4.0",
  18. "prometheus-client==0.20.0",
  19. "protobuf==5.28.1",
  20. "psutil==6.0.0",
  21. "pyamdgpuinfo==2.1.6;platform_system=='Linux'",
  22. "pydantic==2.9.2",
  23. "requests==2.32.3",
  24. "rich==13.7.1",
  25. "scapy==2.6.1",
  26. "tqdm==4.66.4",
  27. "transformers==4.46.3",
  28. "uuid==1.30",
  29. "uvloop==0.21.0",
  30. "tinygrad @ git+https://github.com/tinygrad/tinygrad.git@ec120ce6b9ce8e4ff4b5692566a683ef240e8bc8",
  31. ]
  32. extras_require = {
  33. "formatting": ["yapf==0.40.2",],
  34. "apple_silicon": [
  35. "mlx==0.22.0",
  36. "mlx-lm==0.21.1",
  37. ],
  38. "windows": ["pywin32==308",],
  39. "nvidia-gpu": ["nvidia-ml-py==12.560.30",],
  40. "amd-gpu": ["pyrsmi==0.2.0"],
  41. }
  42. # Check if running on macOS with Apple Silicon
  43. if sys.platform.startswith("darwin") and platform.machine() == "arm64":
  44. install_requires.extend(extras_require["apple_silicon"])
  45. # Check if running Windows
  46. if sys.platform.startswith("win32"):
  47. install_requires.extend(extras_require["windows"])
  48. def _add_gpu_requires():
  49. global install_requires
  50. # Add Nvidia-GPU
  51. try:
  52. out = subprocess.run(['nvidia-smi', '--query-gpu=name', '--format=csv,noheader'], shell=True, text=True, capture_output=True, check=False)
  53. if out.returncode == 0:
  54. install_requires.extend(extras_require["nvidia-gpu"])
  55. except subprocess.CalledProcessError:
  56. pass
  57. # Add AMD-GPU
  58. # This will mostly work only on Linux, amd/rocm-smi is not yet supported on Windows
  59. try:
  60. out = subprocess.run(['amd-smi', 'list', '--csv'], shell=True, text=True, capture_output=True, check=False)
  61. if out.returncode == 0:
  62. install_requires.extend(extras_require["amd-gpu"])
  63. except:
  64. out = subprocess.run(['rocm-smi', 'list', '--csv'], shell=True, text=True, capture_output=True, check=False)
  65. if out.returncode == 0:
  66. install_requires.extend(extras_require["amd-gpu"])
  67. finally:
  68. pass
  69. _add_gpu_requires()
  70. setup(
  71. name="exo",
  72. version="0.0.1",
  73. packages=find_packages(),
  74. install_requires=install_requires,
  75. extras_require=extras_require,
  76. package_data={"exo": ["tinychat/**/*"]},
  77. entry_points={"console_scripts": ["exo = exo.main:run"]},
  78. )