diff --git a/.github/workflows/build-and-release.yaml b/.github/workflows/build-and-release.yaml index 785f38847..ab8ff4e1c 100644 --- a/.github/workflows/build-and-release.yaml +++ b/.github/workflows/build-and-release.yaml @@ -21,12 +21,25 @@ jobs: # Used to host cibuildwheel - uses: actions/setup-python@v5 with: - python-version: "3.8" + python-version: "3.9" - - name: Install dependencies + - name: Install dependencies (Linux/MacOS) + if: runner.os != 'Windows' run: | python -m pip install --upgrade pip - python -m pip install -e .[all] + python -m pip install uv + RUST_LOG=trace python -m uv pip install -e .[all] --verbose + shell: bash + + - name: Install dependencies (Windows) + if: runner.os == 'Windows' + env: + RUST_LOG: trace + run: | + python -m pip install --upgrade pip + python -m pip install uv + python -m uv pip install -e .[all] --verbose + shell: cmd - name: Build wheels uses: pypa/cibuildwheel@v2.20.0 @@ -79,16 +92,33 @@ jobs: - uses: actions/checkout@v4 with: submodules: "recursive" + - uses: actions/setup-python@v5 with: - python-version: "3.8" - - name: Install dependencies + python-version: "3.9" + + - name: Install dependencies (Linux/MacOS) + if: runner.os != 'Windows' run: | - python -m pip install --upgrade pip build - python -m pip install -e .[all] + python -m pip install --upgrade pip + python -m pip install uv + RUST_LOG=trace python -m uv pip install -e .[all] --verbose + shell: bash + + - name: Install dependencies (Windows) + if: runner.os == 'Windows' + env: + RUST_LOG: trace + run: | + python -m pip install --upgrade pip + python -m pip install uv + python -m uv pip install -e .[all] --verbose + shell: cmd + - name: Build source distribution run: | python -m build --sdist + - uses: actions/upload-artifact@v4 with: name: sdist diff --git a/.github/workflows/build-wheels-cuda.yaml b/.github/workflows/build-wheels-cuda.yaml index 0733a68c5..b1e5fc1a9 100644 --- a/.github/workflows/build-wheels-cuda.yaml +++ b/.github/workflows/build-wheels-cuda.yaml @@ -22,7 +22,7 @@ jobs: $matrix = @{ 'os' = @('ubuntu-latest', 'windows-2019') 'pyver' = @("3.9", "3.10", "3.11", "3.12") - 'cuda' = @("12.1.1", "12.2.2", "12.3.2", "12.4.1") + 'cuda' = @("12.1.1", "12.2.2", "12.3.2", "12.4.1", "12.5.0") 'releasetag' = @("basic") } diff --git a/.github/workflows/build-wheels-metal.yaml b/.github/workflows/build-wheels-metal.yaml index dd8b9c8fc..551820822 100644 --- a/.github/workflows/build-wheels-metal.yaml +++ b/.github/workflows/build-wheels-metal.yaml @@ -23,11 +23,24 @@ jobs: with: python-version: "3.12" cache: 'pip' + + - name: Install dependencies (Linux/MacOS) + if: runner.os != 'Windows' + run: | + python -m pip install --upgrade pip + python -m pip install uv + RUST_LOG=trace python -m uv pip install -e .[all] --verbose + shell: bash - - name: Install dependencies + - name: Install dependencies (Windows) + if: runner.os == 'Windows' + env: + RUST_LOG: trace run: | python -m pip install --upgrade pip - python -m pip install -e .[all] + python -m pip install uv + python -m uv pip install -e .[all] --verbose + shell: cmd - name: Build wheels uses: pypa/cibuildwheel@v2.20.0 diff --git a/.github/workflows/generate-index-from-release.yaml b/.github/workflows/generate-index-from-release.yaml index 51961088d..8d80e7e47 100644 --- a/.github/workflows/generate-index-from-release.yaml +++ b/.github/workflows/generate-index-from-release.yaml @@ -44,6 +44,7 @@ jobs: ./scripts/releases-to-pep-503.sh index/whl/cu122 '^[v]?[0-9]+\.[0-9]+\.[0-9]+-cu122$' ./scripts/releases-to-pep-503.sh index/whl/cu123 '^[v]?[0-9]+\.[0-9]+\.[0-9]+-cu123$' ./scripts/releases-to-pep-503.sh index/whl/cu124 '^[v]?[0-9]+\.[0-9]+\.[0-9]+-cu124$' + ./scripts/releases-to-pep-503.sh index/whl/cu125 '^[v]?[0-9]+\.[0-9]+\.[0-9]+-cu125$' ./scripts/releases-to-pep-503.sh index/whl/metal '^[v]?[0-9]+\.[0-9]+\.[0-9]+-metal$' - name: Upload artifact uses: actions/upload-pages-artifact@v3 diff --git a/.github/workflows/publish-to-test.yaml b/.github/workflows/publish-to-test.yaml index 19613233b..de3ae42aa 100644 --- a/.github/workflows/publish-to-test.yaml +++ b/.github/workflows/publish-to-test.yaml @@ -19,24 +19,42 @@ jobs: - uses: actions/checkout@v4 with: submodules: "recursive" + - name: Set up Python uses: actions/setup-python@v5 with: python-version: "3.11" cache: 'pip' + - name: Append Dev Version to __version__ run: | DEV_VERSION=${{ github.event.inputs.dev_version }} CURRENT_VERSION=$(awk -F= '/__version__ =/ {print $2}' llama_cpp/__init__.py | tr -d ' "') NEW_VERSION="${CURRENT_VERSION}.dev${DEV_VERSION}" sed -i 's/__version__ = \".*\"/__version__ = \"'"${NEW_VERSION}"'\"/' llama_cpp/__init__.py - - name: Install dependencies + + - name: Install dependencies (Linux/MacOS) + if: runner.os != 'Windows' run: | - python -m pip install --upgrade pip build - python -m pip install -e .[all] + python -m pip install --upgrade pip + python -m pip install uv + RUST_LOG=trace python -m uv pip install -e .[all] --verbose + shell: bash + + - name: Install dependencies (Windows) + if: runner.os == 'Windows' + env: + RUST_LOG: trace + run: | + python -m pip install --upgrade pip + python -m pip install uv + python -m uv pip install -e .[all] --verbose + shell: cmd + - name: Build source distribution run: | python -m build --sdist + - name: Publish to Test PyPI uses: pypa/gh-action-pypi-publish@release/v1 with: diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml index c6abb43b3..67816ea03 100644 --- a/.github/workflows/publish.yaml +++ b/.github/workflows/publish.yaml @@ -13,17 +13,34 @@ jobs: - uses: actions/checkout@v4 with: submodules: "recursive" + - name: Set up Python uses: actions/setup-python@v5 with: python-version: "3.9" - - name: Install dependencies + + - name: Install dependencies (Linux/MacOS) + if: runner.os != 'Windows' run: | - python -m pip install --upgrade pip build - python -m pip install -e .[all] + python -m pip install --upgrade pip + python -m pip install uv + RUST_LOG=trace python -m uv pip install -e .[all] --verbose + shell: bash + + - name: Install dependencies (Windows) + if: runner.os == 'Windows' + env: + RUST_LOG: trace + run: | + python -m pip install --upgrade pip + python -m pip install uv + python -m uv pip install -e .[all] --verbose + shell: cmd + - name: Build source distribution run: | python -m build --sdist + - name: Publish distribution to PyPI # TODO: move to tag based releases # if: startsWith(github.ref, 'refs/tags') diff --git a/.github/workflows/test-pypi.yaml b/.github/workflows/test-pypi.yaml index d7131956d..335033bba 100644 --- a/.github/workflows/test-pypi.yaml +++ b/.github/workflows/test-pypi.yaml @@ -16,10 +16,25 @@ jobs: with: python-version: ${{ matrix.python-version }} cache: 'pip' - - name: Install dependencies + + - name: Install dependencies (Linux/MacOS) + if: runner.os != 'Windows' + run: | + python -m pip install --upgrade pip + python -m pip install uv + RUST_LOG=trace python -m uv pip install llama-cpp-python[all] --verbose + shell: bash + + - name: Install dependencies (Windows) + if: runner.os == 'Windows' + env: + RUST_LOG: trace run: | python -m pip install --upgrade pip - python -m pip install --verbose llama-cpp-python[all] + python -m pip install uv + python -m uv pip install llama-cpp-python[all] --verbose + shell: cmd + - name: Test with pytest run: | python -c "import llama_cpp" @@ -37,10 +52,25 @@ jobs: with: python-version: ${{ matrix.python-version }} cache: 'pip' - - name: Install dependencies + + - name: Install dependencies (Linux/MacOS) + if: runner.os != 'Windows' + run: | + python -m pip install --upgrade pip + python -m pip install uv + RUST_LOG=trace python -m uv pip install llama-cpp-python[all] --verbose + shell: bash + + - name: Install dependencies (Windows) + if: runner.os == 'Windows' + env: + RUST_LOG: trace run: | python -m pip install --upgrade pip - python -m pip install --verbose llama-cpp-python[all] + python -m pip install uv + python -m uv pip install llama-cpp-python[all] --verbose + shell: cmd + - name: Test with pytest run: | python -c "import llama_cpp" @@ -57,11 +87,26 @@ jobs: uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} - cache: 'pip' - - name: Install dependencies + cache: 'pip' + + - name: Install dependencies (Linux/MacOS) + if: runner.os != 'Windows' + run: | + python -m pip install --upgrade pip + python -m pip install uv + RUST_LOG=trace python -m uv pip install llama-cpp-python[all] --verbose + shell: bash + + - name: Install dependencies (Windows) + if: runner.os == 'Windows' + env: + RUST_LOG: trace run: | python -m pip install --upgrade pip - python -m pip install --verbose llama-cpp-python[all] + python -m pip install uv + python -m uv pip install llama-cpp-python[all] --verbose + shell: cmd + - name: Test with pytest run: | python -c "import llama_cpp" diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 78f0b4983..9de9c9229 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -20,15 +20,31 @@ jobs: - uses: actions/checkout@v4 with: submodules: "recursive" + - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} cache: 'pip' - - name: Install dependencies + + - name: Install dependencies (Linux/MacOS) + if: runner.os != 'Windows' + run: | + python -m pip install --upgrade pip + python -m pip install uv + RUST_LOG=trace python -m uv pip install -e .[all] --verbose + shell: bash + + - name: Install dependencies (Windows) + if: runner.os == 'Windows' + env: + RUST_LOG: trace run: | python -m pip install --upgrade pip - python -m pip install .[all] -v + python -m pip install uv + python -m uv pip install -e .[all] --verbose + shell: cmd + - name: Test with pytest run: | python -m pytest @@ -44,15 +60,31 @@ jobs: - uses: actions/checkout@v4 with: submodules: "recursive" + - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} cache: 'pip' - - name: Install dependencies + + - name: Install dependencies (Linux/MacOS) + if: runner.os != 'Windows' + run: | + python -m pip install --upgrade pip + python -m pip install uv + RUST_LOG=trace python -m uv pip install -e .[all] --verbose + shell: bash + + - name: Install dependencies (Windows) + if: runner.os == 'Windows' + env: + RUST_LOG: trace run: | python -m pip install --upgrade pip - python -m pip install .[all] -v + python -m pip install uv + python -m uv pip install -e .[all] --verbose + shell: cmd + - name: Test with pytest run: | python -m pytest @@ -68,15 +100,31 @@ jobs: - uses: actions/checkout@v4 with: submodules: "recursive" + - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} cache: 'pip' - - name: Install dependencies + + - name: Install dependencies (Linux/MacOS) + if: runner.os != 'Windows' run: | python -m pip install --upgrade pip - python -m pip install .[all] --verbose + python -m pip install uv + RUST_LOG=trace python -m uv pip install -e .[all] --verbose + shell: bash + + - name: Install dependencies (Windows) + if: runner.os == 'Windows' + env: + RUST_LOG: trace + run: | + python -m pip install --upgrade pip + python -m pip install uv + python -m uv pip install -e .[all] --verbose + shell: cmd + - name: Test with pytest run: | python -m pytest @@ -90,11 +138,24 @@ jobs: - uses: actions/checkout@v4 with: submodules: "recursive" + - name: Set up Python 3.9 uses: actions/setup-python@v5 with: python-version: "3.9" - - name: Install dependencies + + - name: Install dependencies (Linux/MacOS) + if: runner.os != 'Windows' + run: | + python -m pip install --upgrade pip + python -m pip install uv + RUST_LOG=trace CMAKE_ARGS="-DLLAMA_METAL=on" python -m uv pip install .[all] --verbose + shell: bash + + - name: Install dependencies (Windows) + if: runner.os == 'Windows' + env: + RUST_LOG: trace run: | python -m pip install --upgrade pip CMAKE_ARGS="-DGGML_METAL=on" python -m pip install .[all] --verbose diff --git a/README.md b/README.md index cbf1c4158..12b4b127d 100644 --- a/README.md +++ b/README.md @@ -125,7 +125,7 @@ CMAKE_ARGS="-DGGML_CUDA=on" pip install llama-cpp-python It is also possible to install a pre-built wheel with CUDA support. As long as your system meets some requirements: -- CUDA Version is 12.1, 12.2, 12.3, or 12.4 +- CUDA Version is 12.1, 12.2, 12.3, 12.4 or 12.5 - Python Version is 3.10, 3.11 or 3.12 ```bash @@ -138,6 +138,7 @@ Where `` is one of the following: - `cu122`: CUDA 12.2 - `cu123`: CUDA 12.3 - `cu124`: CUDA 12.4 +- `cu124`: CUDA 12.5 For example, to install the CUDA 12.1 wheel: