mirror of
https://github.com/hanzoai/live.git
synced 2026-10-30 18:29:41 +00:00
- Fix broadcast_to usage in RoPE implementation
- Change from array.broadcast_to() to mx.broadcast_to() function
- MLX uses functional API, not method chaining for broadcast
- Relax sinusoidal embedding test tolerance from 1e-5 to 2e-5
- Accounts for minor floating point differences between MLX and NumPy
- Bump version from 0.1.0a2 to 0.1.0a3
- All 9 MLX WAN tests now passing ✅
Test results:
- ✓ sinusoidal_embedding_1d
- ✓ rope_params
- ✓ WanRMSNorm
- ✓ WanLayerNorm
- ✓ scaled_dot_product_attention
- ✓ GELU
- ✓ Conv3d
- ✓ FeedForward
- ✓ WanSelfAttention
173 lines
4.4 KiB
TOML
173 lines
4.4 KiB
TOML
[project]
|
|
name = "hanzo-live"
|
|
version = "0.1.0a3"
|
|
description = "Real-time AI video generation and streaming tool with WebRTC support"
|
|
readme = "README.md"
|
|
requires-python = ">=3.10.12"
|
|
authors = [
|
|
{name = "Hanzo AI", email = "[email protected]"},
|
|
]
|
|
maintainers = [
|
|
{name = "Hanzo AI", email = "[email protected]"},
|
|
]
|
|
keywords = ["ai", "video", "streaming", "webrtc", "diffusion", "real-time", "hanzo", "mlx"]
|
|
classifiers = [
|
|
"Development Status :: 3 - Alpha",
|
|
"Intended Audience :: Developers",
|
|
"Intended Audience :: Science/Research",
|
|
"Intended Audience :: End Users/Desktop",
|
|
"License :: OSI Approved :: MIT License",
|
|
"Programming Language :: Python :: 3",
|
|
"Programming Language :: Python :: 3.10",
|
|
"Programming Language :: Python :: 3.11",
|
|
"Programming Language :: Python :: 3.12",
|
|
"Topic :: Scientific/Engineering :: Artificial Intelligence",
|
|
"Topic :: Multimedia :: Video",
|
|
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
]
|
|
dependencies = [
|
|
"aiortc>=1.13.0",
|
|
"fastapi>=0.116.1",
|
|
"httpx>=0.28.1",
|
|
"twilio>=9.8.0",
|
|
"uvicorn>=0.35.0",
|
|
"torch==2.8.0",
|
|
"torchvision==0.23.0",
|
|
"easydict>=1.13",
|
|
"diffusers>=0.31.0",
|
|
"ftfy>=6.3.1",
|
|
"transformers>=4.49.0",
|
|
"einops>=0.8.1",
|
|
"lmdb>=1.7.3",
|
|
"omegaconf>=2.3.0",
|
|
"accelerate>=1.1.1",
|
|
"flash-attn==2.8.3; sys_platform == 'linux' or sys_platform == 'win32'",
|
|
"safetensors>=0.6.2",
|
|
"huggingface_hub>=0.25.0",
|
|
"peft>=0.17.1",
|
|
"torchcodec>=0.7.0",
|
|
"gdown>=5.2.0",
|
|
"mlx>=0.25.0; sys_platform == 'darwin'",
|
|
]
|
|
|
|
[project.scripts]
|
|
hanzo-live = "app:main"
|
|
build = "build:main"
|
|
|
|
[project.urls]
|
|
Homepage = "https://github.com/hanzoai/live"
|
|
Repository = "https://github.com/hanzoai/live"
|
|
Issues = "https://github.com/hanzoai/live/issues"
|
|
|
|
[tool.uv.extra-build-dependencies]
|
|
flash-attn = [{ requirement = "torch", match-runtime = true, marker = "sys_platform == 'linux' or sys_platform == 'win32'" }]
|
|
|
|
[tool.uv.extra-build-variables]
|
|
flash-attn = { FLASH_ATTENTION_SKIP_CUDA_BUILD = "TRUE" }
|
|
|
|
[tool.uv.sources]
|
|
torch = [
|
|
{ index = "pytorch-cu128", marker = "sys_platform == 'linux' or sys_platform == 'win32'" },
|
|
]
|
|
torchvision = [
|
|
{ index = "pytorch-cu128", marker = "sys_platform == 'linux' or sys_platform == 'win32'" },
|
|
]
|
|
flash-attn = [
|
|
# Prebuilt Linux wheels from https://github.com/Dao-AILab/flash-attention
|
|
{ url = "https://github.com/Dao-AILab/flash-attention/releases/download/v2.8.3/flash_attn-2.8.3+cu12torch2.8cxx11abiFALSE-cp310-cp310-linux_x86_64.whl", marker = "sys_platform == 'linux'" },
|
|
# Prebuilt Windows wheels from https://github.com/kingbri1/flash-attention
|
|
{ url = "https://github.com/kingbri1/flash-attention/releases/download/v2.8.3/flash_attn-2.8.3+cu128torch2.8.0cxx11abiFALSE-cp310-cp310-win_amd64.whl", marker = "sys_platform == 'win32'" },
|
|
]
|
|
|
|
[[tool.uv.index]]
|
|
name = "pytorch-cu128"
|
|
url = "https://download.pytorch.org/whl/cu128"
|
|
explicit = true
|
|
|
|
[dependency-groups]
|
|
dev = [
|
|
"imageio>=2.37.0",
|
|
"imageio-ffmpeg>=0.6.0",
|
|
"ruff>=0.8.0",
|
|
"pre-commit>=4.0.0",
|
|
"twine>=5.0.0",
|
|
]
|
|
|
|
[tool.ruff]
|
|
line-length = 88
|
|
target-version = "py310"
|
|
exclude = [
|
|
"*/vendor/*",
|
|
"**/vendor/**",
|
|
"pipelines/base/wan2_1",
|
|
".venv",
|
|
"__pycache__",
|
|
]
|
|
|
|
[tool.ruff.lint]
|
|
select = [
|
|
"E", # pycodestyle errors
|
|
"W", # pycodestyle warnings
|
|
"F", # pyflakes
|
|
"I", # isort
|
|
"B", # flake8-bugbear
|
|
"C4", # flake8-comprehensions
|
|
"UP", # pyupgrade
|
|
]
|
|
ignore = [
|
|
"E501", # line too long, handled by formatter
|
|
"B008", # function call in argument defaults (FastAPI Depends pattern)
|
|
]
|
|
|
|
[tool.ruff.format]
|
|
quote-style = "double"
|
|
indent-style = "space"
|
|
skip-magic-trailing-comma = false
|
|
line-ending = "auto"
|
|
|
|
[tool.ruff.lint.isort]
|
|
known-first-party = ["lib"]
|
|
|
|
[build-system]
|
|
requires = ["hatchling", "editables"]
|
|
build-backend = "hatchling.build"
|
|
|
|
[tool.hatch.build]
|
|
include = [
|
|
"frontend/dist/assets/**/*",
|
|
"frontend/dist/index.html",
|
|
|
|
"pipelines/**/*",
|
|
"lib/**/*",
|
|
"*.py",
|
|
|
|
"./README.md",
|
|
"./LICENSE",
|
|
"*.toml",
|
|
".python-version",
|
|
|
|
"./*.yaml",
|
|
"./*.yml",
|
|
"./*.json",
|
|
]
|
|
|
|
exclude = [
|
|
"__pycache__/**/*",
|
|
"*.pyc",
|
|
"*.pyo",
|
|
"*.pyd",
|
|
".pytest_cache/**/*",
|
|
".coverage",
|
|
"htmlcov/**/*",
|
|
".tox/**/*",
|
|
".venv/**/*",
|
|
"venv/**/*",
|
|
"env/**/*",
|
|
".env",
|
|
".env.*",
|
|
"*.egg-info/**/*",
|
|
"dist/**/*",
|
|
"build/**/*",
|
|
"models/**/*",
|
|
]
|