Spaces:
Running on Zero
Running on Zero
| name: CI (apple) | |
| on: | |
| workflow_dispatch: # allows manual triggering | |
| push: | |
| branches: | |
| - master | |
| paths: [ | |
| '.github/workflows/build-apple.yml', | |
| '**/CMakeLists.txt', | |
| '**/.cmake', | |
| '**/*.h', | |
| '**/*.hpp', | |
| '**/*.c', | |
| '**/*.cpp', | |
| '**/*.swift', | |
| '**/*.m', | |
| '**/*.metal' | |
| ] | |
| pull_request: | |
| types: [opened, synchronize, reopened] | |
| paths: [ | |
| '.github/workflows/build-apple.yml', | |
| 'ggml/src/ggml-metal/**' | |
| ] | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.head_ref && github.ref || github.run_id }} | |
| cancel-in-progress: true | |
| env: | |
| GGML_NLOOP: 3 | |
| GGML_N_THREADS: 1 | |
| LLAMA_ARG_LOG_COLORS: 1 | |
| LLAMA_ARG_LOG_PREFIX: 1 | |
| LLAMA_ARG_LOG_TIMESTAMPS: 1 | |
| jobs: | |
| macos-latest-arm64: | |
| runs-on: macos-latest | |
| steps: | |
| - name: Clone | |
| id: checkout | |
| uses: actions/checkout@v6 | |
| - name: ccache | |
| uses: ggml-org/ccache-action@v1.2.21 | |
| with: | |
| key: apple-arm64 | |
| evict-old-files: 1d | |
| save: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }} | |
| - name: Build | |
| id: cmake_build | |
| run: | | |
| sysctl -a | |
| cmake -B build \ | |
| -DCMAKE_BUILD_RPATH="@loader_path" \ | |
| -DLLAMA_FATAL_WARNINGS=ON \ | |
| -DLLAMA_BUILD_BORINGSSL=ON \ | |
| -DGGML_METAL_USE_BF16=ON \ | |
| -DGGML_METAL_EMBED_LIBRARY=OFF \ | |
| -DGGML_METAL_SHADER_DEBUG=ON \ | |
| -DGGML_RPC=ON | |
| time cmake --build build --config Release -j $(sysctl -n hw.logicalcpu) | |
| leaks -atExit -- ./build/bin/test-thread-safety -hf ggml-org/gemma-3-270m-qat-GGUF -ngl 99 -p "$(printf 'hello %.0s' {1..128})" -n 16 -c 512 -ub 32 -np 2 -t 2 -lv 1 | |
| - name: Test | |
| id: cmake_test | |
| run: | | |
| cd build | |
| ctest -L main -E "test-llama-archs" --verbose --timeout 900 | |
| macos-latest-x64: | |
| runs-on: macos-15-intel | |
| steps: | |
| - name: Clone | |
| id: checkout | |
| uses: actions/checkout@v6 | |
| - name: ccache | |
| uses: ggml-org/ccache-action@v1.2.21 | |
| with: | |
| key: apple-x64 | |
| evict-old-files: 1d | |
| save: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }} | |
| - name: Build | |
| id: cmake_build | |
| run: | | |
| sysctl -a | |
| # Metal is disabled due to intermittent failures with Github runners not having a GPU: | |
| # https://github.com/ggml-org/llama.cpp/actions/runs/8635935781/job/23674807267#step:5:2313 | |
| cmake -B build \ | |
| -DCMAKE_BUILD_RPATH="@loader_path" \ | |
| -DLLAMA_FATAL_WARNINGS=ON \ | |
| -DLLAMA_BUILD_BORINGSSL=ON \ | |
| -DGGML_METAL=OFF \ | |
| -DGGML_RPC=ON \ | |
| -DCMAKE_OSX_DEPLOYMENT_TARGET=13.3 | |
| time cmake --build build --config Release -j $(sysctl -n hw.logicalcpu) | |
| - name: Test | |
| id: cmake_test | |
| run: | | |
| cd build | |
| ctest -L main --verbose --timeout 900 | |
| macos-latest-ios-xcode: | |
| runs-on: macos-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v6 | |
| - name: Setup Xcode | |
| uses: ggml-org/setup-xcode@v1 | |
| with: | |
| xcode-version: latest-stable | |
| - name: Build | |
| id: cmake_build | |
| run: | | |
| sysctl -a | |
| cmake -B build -G Xcode \ | |
| -DGGML_METAL_USE_BF16=ON \ | |
| -DGGML_METAL_EMBED_LIBRARY=ON \ | |
| -DLLAMA_OPENSSL=OFF \ | |
| -DLLAMA_BUILD_APP=OFF \ | |
| -DLLAMA_BUILD_EXAMPLES=OFF \ | |
| -DLLAMA_BUILD_TOOLS=OFF \ | |
| -DLLAMA_BUILD_TESTS=OFF \ | |
| -DLLAMA_BUILD_SERVER=OFF \ | |
| -DCMAKE_SYSTEM_NAME=iOS \ | |
| -DCMAKE_OSX_DEPLOYMENT_TARGET=14.0 \ | |
| -DCMAKE_XCODE_ATTRIBUTE_DEVELOPMENT_TEAM=ggml | |
| cmake --build build --config Release -j $(sysctl -n hw.logicalcpu) -- CODE_SIGNING_ALLOWED=NO | |
| - name: xcodebuild for swift package | |
| id: xcodebuild | |
| run: | | |
| ./build-xcframework.sh | |
| - name: Upload xcframework artifact | |
| uses: actions/upload-artifact@v6 | |
| with: | |
| name: llama-xcframework | |
| path: build-apple/llama.xcframework/ | |
| retention-days: 1 | |
| - name: Build Xcode project | |
| run: | | |
| xcodebuild -downloadPlatform iOS | |
| xcodebuild -project examples/llama.swiftui/llama.swiftui.xcodeproj -scheme llama.swiftui -sdk iphoneos CODE_SIGNING_REQUIRED=NO CODE_SIGN_IDENTITY= -destination 'generic/platform=iOS' FRAMEWORK_FOLDER_PATH=./build-ios build | |
| macos-latest-tvos: | |
| runs-on: macos-latest | |
| steps: | |
| - name: Clone | |
| id: checkout | |
| uses: actions/checkout@v6 | |
| # TODO: this likely does not do anything - if yes, remove it | |
| - name: ccache | |
| uses: ggml-org/ccache-action@v1.2.21 | |
| with: | |
| key: apple-tvos | |
| evict-old-files: 1d | |
| save: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }} | |
| - name: Build | |
| id: cmake_build | |
| run: | | |
| sysctl -a | |
| cmake -B build -G Xcode \ | |
| -DGGML_METAL_USE_BF16=ON \ | |
| -DGGML_METAL_EMBED_LIBRARY=ON \ | |
| -DLLAMA_BUILD_COMMON=OFF \ | |
| -DLLAMA_BUILD_APP=OFF \ | |
| -DLLAMA_BUILD_EXAMPLES=OFF \ | |
| -DLLAMA_BUILD_TOOLS=OFF \ | |
| -DLLAMA_BUILD_TESTS=OFF \ | |
| -DLLAMA_BUILD_SERVER=OFF \ | |
| -DCMAKE_SYSTEM_NAME=tvOS \ | |
| -DCMAKE_OSX_DEPLOYMENT_TARGET=14.0 \ | |
| -DCMAKE_XCODE_ATTRIBUTE_DEVELOPMENT_TEAM=ggml | |
| cmake --build build --config Release -j $(sysctl -n hw.logicalcpu) -- CODE_SIGNING_ALLOWED=NO | |
| macos-latest-visionos: | |
| runs-on: macos-latest | |
| steps: | |
| - name: Clone | |
| id: checkout | |
| uses: actions/checkout@v6 | |
| # TODO: this likely does not do anything - if yes, remove it | |
| - name: ccache | |
| uses: ggml-org/ccache-action@v1.2.21 | |
| with: | |
| key: apple-visionos | |
| evict-old-files: 1d | |
| save: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }} | |
| - name: Build | |
| id: cmake_build | |
| run: | | |
| sysctl -a | |
| cmake -B build -G Xcode \ | |
| -DGGML_METAL_USE_BF16=ON \ | |
| -DGGML_METAL_EMBED_LIBRARY=ON \ | |
| -DLLAMA_BUILD_COMMON=OFF \ | |
| -DLLAMA_BUILD_APP=OFF \ | |
| -DLLAMA_BUILD_EXAMPLES=OFF \ | |
| -DLLAMA_BUILD_TOOLS=OFF \ | |
| -DLLAMA_BUILD_TESTS=OFF \ | |
| -DLLAMA_BUILD_SERVER=OFF \ | |
| -DCMAKE_SYSTEM_NAME=visionOS \ | |
| -DCMAKE_OSX_DEPLOYMENT_TARGET=1.0 \ | |
| -DCMAKE_XCODE_ATTRIBUTE_DEVELOPMENT_TEAM=ggml | |
| cmake --build build --config Release -j $(sysctl -n hw.logicalcpu) -- CODE_SIGNING_ALLOWED=NO | |
| macos-latest-swift: | |
| runs-on: macos-latest | |
| needs: macos-latest-ios-xcode | |
| strategy: | |
| matrix: | |
| destination: ['generic/platform=macOS', 'generic/platform=iOS', 'generic/platform=tvOS'] | |
| steps: | |
| - name: Clone | |
| id: checkout | |
| uses: actions/checkout@v6 | |
| # TODO: this likely does not do anything - if yes, remove it | |
| - name: ccache | |
| uses: ggml-org/ccache-action@v1.2.21 | |
| with: | |
| key: apple-swift | |
| evict-old-files: 1d | |
| save: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }} | |
| - name: Download xcframework artifact | |
| uses: actions/download-artifact@v7 | |
| with: | |
| name: llama-xcframework | |
| path: build-apple/llama.xcframework/ | |
| - name: Build llama.cpp with CMake | |
| id: cmake_build | |
| run: | | |
| sysctl -a | |
| cmake -B build -G Xcode \ | |
| -DGGML_METAL_USE_BF16=ON \ | |
| -DGGML_METAL_EMBED_LIBRARY=ON \ | |
| -DLLAMA_OPENSSL=OFF \ | |
| -DLLAMA_BUILD_APP=OFF \ | |
| -DLLAMA_BUILD_EXAMPLES=OFF \ | |
| -DLLAMA_BUILD_TOOLS=OFF \ | |
| -DLLAMA_BUILD_TESTS=OFF \ | |
| -DLLAMA_BUILD_SERVER=OFF \ | |
| -DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" | |
| cmake --build build --config Release -j $(sysctl -n hw.logicalcpu) | |