diff --git a/.github/workflows/pr-test-npu.yml b/.github/workflows/pr-test-npu.yml index 644464167..de7833571 100644 --- a/.github/workflows/pr-test-npu.yml +++ b/.github/workflows/pr-test-npu.yml @@ -29,6 +29,7 @@ jobs: runs-on: ubuntu-latest outputs: main_package: ${{ steps.filter.outputs.main_package || steps.run-mode.outputs.run_all_tests }} + multimodal_gen: ${{ steps.filter.outputs.multimodal_gen || steps.run-mode.outputs.run_all_tests }} steps: - name: Checkout code uses: actions/checkout@v4 @@ -56,10 +57,15 @@ jobs: filters: | main_package: - "python/sglang/!(multimodal_gen)/**" - - "python/pyproject_other.toml" + - "python/pyproject_npu.toml" - "scripts/ci/npu/npu_ci_install_dependency.sh" - "test/srt/ascend/**" - ".github/workflows/pr-test-npu.yml" + multimodal_gen: + - "python/sglang/multimodal_gen/**" + - "python/pyproject_npu.toml" + - "scripts/ci/npu_ci_install_dependency.sh" + - ".github/workflows/pr-test-npu.yml" # ==================== PR Gate ==================== # pr-gate: diff --git a/.github/workflows/release-docker-npu-nightly.yml b/.github/workflows/release-docker-npu-nightly.yml index ef9bc0c06..7b66eba24 100644 --- a/.github/workflows/release-docker-npu-nightly.yml +++ b/.github/workflows/release-docker-npu-nightly.yml @@ -1,11 +1,5 @@ name: Release Docker Images Nightly (NPU) on: - pull_request: - branches: - - main - paths: - - ".github/workflows/release-docker-npu-nightly.yml" - - "docker/npu.Dockerfile" workflow_dispatch: schedule: - cron: "0 0 * * *" diff --git a/docker/npu.Dockerfile b/docker/npu.Dockerfile index d6fb7d2cf..e49551b19 100644 --- a/docker/npu.Dockerfile +++ b/docker/npu.Dockerfile @@ -73,7 +73,7 @@ RUN (${PIP_INSTALL} pybind11) \ # Install SGLang RUN git clone https://github.com/sgl-project/sglang --branch $SGLANG_TAG && \ - (cd sglang/python && rm -rf pyproject.toml && mv pyproject_other.toml pyproject.toml && ${PIP_INSTALL} -v .[srt_npu]) && \ + (cd sglang/python && rm -rf pyproject.toml && mv pyproject_npu.toml pyproject.toml && ${PIP_INSTALL} -v .[all_npu]) && \ rm -rf sglang # Install Deep-ep diff --git a/docs/platforms/ascend_npu.md b/docs/platforms/ascend_npu.md index 1a4f14ae8..d91382f65 100644 --- a/docs/platforms/ascend_npu.md +++ b/docs/platforms/ascend_npu.md @@ -100,8 +100,8 @@ pip install ./custom_ops-2.0.$DEVICE_TYPE-cp311-cp311-linux_aarch64.whl # Use the last release branch git clone https://github.com/sgl-project/sglang.git cd sglang -mv python/pyproject_other.toml python/pyproject.toml -pip install -e python[srt_npu] +mv python/pyproject_npu.toml python/pyproject.toml +pip install -e python[all_npu] ``` ### Method 2: Using Docker Image diff --git a/python/pyproject_npu.toml b/python/pyproject_npu.toml new file mode 100644 index 000000000..70403f8ee --- /dev/null +++ b/python/pyproject_npu.toml @@ -0,0 +1,146 @@ +[build-system] +requires = ["setuptools>=61.0", "setuptools-scm>=8.0", "wheel", "grpcio-tools==1.75.1"] +build-backend = "setuptools.build_meta" + +[project] +name = "sglang" +dynamic = ["version"] +description = "SGLang is a fast serving framework for large language models and vision language models." +readme = "README.md" +requires-python = ">=3.10" +license = { file = "LICENSE" } +classifiers = [ + "Programming Language :: Python :: 3", + "License :: OSI Approved :: Apache Software License", +] + +dependencies = [ + "IPython", + "aiohttp", + "anthropic>=0.20.0", + "blobfile==3.0.0", + "build", + "compressed-tensors", + "decord2", + "datasets", + "einops", + "fastapi", + "gguf", + "hf_transfer", + "huggingface_hub", + "interegular", + "llguidance>=0.7.11,<0.8.0", + "modelscope", + "msgspec", + "ninja", + "numpy", + "openai-harmony==0.0.4", + "openai==2.6.1", + "orjson", + "outlines==0.1.11", + "packaging", + "partial_json_parser", + "pillow", + "prometheus-client>=0.20.0", + "psutil", + "py-spy", + "pybase64", + "pydantic", + "python-multipart", + "pyzmq>=25.1.2", + "requests", + "scipy", + "sentencepiece", + "setproctitle", + "soundfile==0.13.1", + "tiktoken", + "timm==1.0.16", + "torchao==0.9.0", + "tqdm", + "transformers==4.57.1", + "uvicorn", + "uvloop", + "xgrammar==0.1.27", + "grpcio==1.75.1", # keep it align with compile_proto.py + "grpcio-tools==1.75.1", # keep it align with compile_proto.py + "grpcio-reflection==1.75.1", # required by srt/entrypoints/grpc_server.py +] + +[project.optional-dependencies] +checkpoint-engine = ["checkpoint-engine==0.1.2"] +diffusion = [ + "PyYAML==6.0.1", + "cloudpickle", + "diffusers==0.36.0", + "imageio==2.36.0", + "imageio-ffmpeg==0.5.1", + "moviepy>=2.0.0", + "opencv-python==4.10.0.84", + "remote-pdb", + "cache-dit==1.1.8" +] + +tracing = [ + "opentelemetry-api", + "opentelemetry-exporter-otlp", + "opentelemetry-exporter-otlp-proto-grpc", + "opentelemetry-sdk", +] + +test = [ + "accelerate", + "expecttest", + "gguf", + "jsonlines", + "matplotlib", + "pandas", + "peft", + "pytest", + "sentence_transformers", + "tabulate", +] + +# https://docs.sglang.io/platforms/ascend_npu.html +srt_npu = [] +all_npu = ["sglang[diffusion]"] +dev_npu = ["sglang[all_npu]", "sglang[test]"] + +[project.urls] +"Homepage" = "https://github.com/sgl-project/sglang" +"Bug Tracker" = "https://github.com/sgl-project/sglang/issues" + +[project.scripts] +sglang = "sglang.cli.main:main" + +[tool.setuptools.package-data] +"sglang" = [ + "srt/**/*", + "jit_kernel/**/*" +] + +[tool.setuptools.packages.find] +exclude = [ + "assets*", + "benchmark*", + "docs*", + "dist*", + "playground*", + "scripts*", + "tests*", +] + +[tool.wheel] +exclude = [ + "assets*", + "benchmark*", + "docs*", + "dist*", + "playground*", + "scripts*", + "tests*", +] + +[tool.setuptools_scm] +root = ".." +version_file = "sglang/_version.py" +git_describe_command = ["git", "describe", "--tags", "--long", "--match", "v*"] diff --git a/python/pyproject_other.toml b/python/pyproject_other.toml index a00edee53..e1312a46e 100755 --- a/python/pyproject_other.toml +++ b/python/pyproject_other.toml @@ -99,9 +99,6 @@ diffusion_hip = [ "runai_model_streamer", ] -# https://docs.sglang.io/platforms/ascend_npu.html -srt_npu = ["sglang[runtime_common]"] - # For Intel Gaudi(device : hpu) follow the installation guide # https://docs.vllm.ai/en/latest/getting_started/gaudi-installation.html srt_hpu = ["sglang[runtime_common]"] @@ -145,12 +142,10 @@ test = [ ] all_hip = ["sglang[srt_hip]"] -all_npu = ["sglang[srt_npu]"] all_hpu = ["sglang[srt_hpu]"] all_musa = ["sglang[srt_musa]", "sglang[diffusion_musa]"] dev_hip = ["sglang[all_hip]", "sglang[test]"] -dev_npu = ["sglang[all_npu]", "sglang[test]"] dev_hpu = ["sglang[all_hpu]", "sglang[test]"] dev_musa = ["sglang[all_musa]", "sglang[test]"] diff --git a/scripts/ci/npu/npu_ci_install_dependency.sh b/scripts/ci/npu/npu_ci_install_dependency.sh index a1dbe0e35..a4ce9bda9 100755 --- a/scripts/ci/npu/npu_ci_install_dependency.sh +++ b/scripts/ci/npu/npu_ci_install_dependency.sh @@ -17,7 +17,9 @@ apt update -y && apt install -y \ clang \ locales \ ccache \ - ca-certificates + ca-certificates \ + libgl1 \ + libglib2.0-0 update-ca-certificates ${PIP_INSTALL} --upgrade pip # Pin wheel to 0.45.1, REF: https://github.com/pypa/wheel/issues/662 @@ -62,5 +64,5 @@ wget https://sglang-ascend.obs.cn-east-3.myhuaweicloud.com/ops/custom_ops-1.0.$D pip install ./custom_ops-1.0.$DEVICE_TYPE-cp311-cp311-linux_aarch64.whl ### Install SGLang -rm -rf python/pyproject.toml && mv python/pyproject_other.toml python/pyproject.toml +rm -rf python/pyproject.toml && mv python/pyproject_npu.toml python/pyproject.toml ${PIP_INSTALL} -v -e "python[dev_npu]" diff --git a/scripts/release/README.md b/scripts/release/README.md index e564cf1d4..6a8d2351c 100644 --- a/scripts/release/README.md +++ b/scripts/release/README.md @@ -21,6 +21,7 @@ python scripts/release/bump_sglang_version.py 0.5.3rc0 - `docs/platforms/ascend_npu.md` - `python/pyproject.toml` - `python/pyproject_other.toml` +- `python/pyproject_npu.toml` - `python/sglang/version.py` ### `bump_kernel_version.py` diff --git a/scripts/release/bump_sglang_version.py b/scripts/release/bump_sglang_version.py index 76d26383c..73e79fdcf 100755 --- a/scripts/release/bump_sglang_version.py +++ b/scripts/release/bump_sglang_version.py @@ -27,6 +27,7 @@ def main(): Path("docs/platforms/ascend_npu.md"), Path("python/pyproject.toml"), Path("python/pyproject_other.toml"), + Path("python/pyproject_npu.toml"), Path("python/pyproject_cpu.toml"), Path("python/pyproject_xpu.toml"), Path("python/sglang/version.py"),