mirror of
https://github.com/mudler/LocalAI.git
synced 2024-12-19 04:37:53 +00:00
a670318a9f
* auto select cpu variant Signed-off-by: Sertac Ozercan <sozercan@gmail.com> * remove cuda target for now Signed-off-by: Sertac Ozercan <sozercan@gmail.com> * fix metal Signed-off-by: Sertac Ozercan <sozercan@gmail.com> * fix path Signed-off-by: Sertac Ozercan <sozercan@gmail.com> * cuda Signed-off-by: Sertac Ozercan <sozercan@gmail.com> * auto select cuda Signed-off-by: Sertac Ozercan <sozercan@gmail.com> * update test Signed-off-by: Sertac Ozercan <sozercan@gmail.com> * select CUDA backend only if present Signed-off-by: mudler <mudler@localai.io> * ci: keep cuda bin in path Signed-off-by: mudler <mudler@localai.io> * Makefile: make dist now builds also cuda Signed-off-by: mudler <mudler@localai.io> * Keep pushing fallback in case auto-flagset/nvidia fails There could be other reasons for which the default binary may fail. For example we might have detected an Nvidia GPU, however the user might not have the drivers/cuda libraries installed in the system, and so it would fail to start. We keep the fallback of llama.cpp at the end of the llama.cpp backends to try to fallback loading in case things go wrong Signed-off-by: mudler <mudler@localai.io> * Do not build cuda on MacOS Signed-off-by: mudler <mudler@localai.io> * cleanup Signed-off-by: Sertac Ozercan <sozercan@gmail.com> * Apply suggestions from code review Signed-off-by: Ettore Di Giacinto <mudler@users.noreply.github.com> --------- Signed-off-by: Sertac Ozercan <sozercan@gmail.com> Signed-off-by: Ettore Di Giacinto <mudler@users.noreply.github.com> Signed-off-by: mudler <mudler@localai.io> Co-authored-by: Ettore Di Giacinto <mudler@users.noreply.github.com> Co-authored-by: mudler <mudler@localai.io>
135 lines
4.1 KiB
YAML
135 lines
4.1 KiB
YAML
name: Build and Release
|
|
|
|
on:
|
|
- push
|
|
- pull_request
|
|
|
|
env:
|
|
GRPC_VERSION: v1.63.0
|
|
|
|
permissions:
|
|
contents: write
|
|
|
|
concurrency:
|
|
group: ci-releases-${{ github.head_ref || github.ref }}-${{ github.repository }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
build-linux:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Clone
|
|
uses: actions/checkout@v4
|
|
with:
|
|
submodules: true
|
|
- uses: actions/setup-go@v5
|
|
with:
|
|
go-version: '1.21.x'
|
|
cache: false
|
|
- name: Dependencies
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install build-essential ffmpeg protobuf-compiler
|
|
- name: Install CUDA Dependencies
|
|
run: |
|
|
curl -O https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb
|
|
sudo dpkg -i cuda-keyring_1.1-1_all.deb
|
|
sudo apt-get update
|
|
sudo apt-get install -y cuda-nvcc-${CUDA_VERSION} libcublas-dev-${CUDA_VERSION}
|
|
env:
|
|
CUDA_VERSION: 12-3
|
|
- name: Cache grpc
|
|
id: cache-grpc
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: grpc
|
|
key: ${{ runner.os }}-grpc-${{ env.GRPC_VERSION }}
|
|
- name: Build grpc
|
|
if: steps.cache-grpc.outputs.cache-hit != 'true'
|
|
run: |
|
|
git clone --recurse-submodules -b ${{ env.GRPC_VERSION }} --depth 1 --shallow-submodules https://github.com/grpc/grpc && \
|
|
cd grpc && mkdir -p cmake/build && cd cmake/build && cmake -DgRPC_INSTALL=ON \
|
|
-DgRPC_BUILD_TESTS=OFF \
|
|
../.. && sudo make --jobs 5 --output-sync=target
|
|
- name: Install gRPC
|
|
run: |
|
|
cd grpc && cd cmake/build && sudo make --jobs 5 --output-sync=target install
|
|
- name: Build
|
|
id: build
|
|
run: |
|
|
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
|
|
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
|
|
export PATH=$PATH:$GOPATH/bin
|
|
export PATH=/usr/local/cuda/bin:$PATH
|
|
make dist
|
|
- uses: actions/upload-artifact@v4
|
|
with:
|
|
name: LocalAI-linux
|
|
path: release/
|
|
- name: Release
|
|
uses: softprops/action-gh-release@v2
|
|
if: startsWith(github.ref, 'refs/tags/')
|
|
with:
|
|
files: |
|
|
release/*
|
|
|
|
build-stablediffusion:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Clone
|
|
uses: actions/checkout@v4
|
|
with:
|
|
submodules: true
|
|
- uses: actions/setup-go@v5
|
|
with:
|
|
go-version: '1.21.x'
|
|
cache: false
|
|
- name: Dependencies
|
|
run: |
|
|
sudo apt-get install -y --no-install-recommends libopencv-dev protobuf-compiler
|
|
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
|
|
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
|
|
- name: Build stablediffusion
|
|
run: |
|
|
export PATH=$PATH:$GOPATH/bin
|
|
make backend-assets/grpc/stablediffusion
|
|
mkdir -p release && cp backend-assets/grpc/stablediffusion release
|
|
- uses: actions/upload-artifact@v4
|
|
with:
|
|
name: stablediffusion
|
|
path: release/
|
|
|
|
build-macOS-arm64:
|
|
runs-on: macos-14
|
|
steps:
|
|
- name: Clone
|
|
uses: actions/checkout@v4
|
|
with:
|
|
submodules: true
|
|
- uses: actions/setup-go@v5
|
|
with:
|
|
go-version: '1.21.x'
|
|
cache: false
|
|
- name: Dependencies
|
|
run: |
|
|
brew install protobuf grpc
|
|
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
|
|
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
|
|
- name: Build
|
|
id: build
|
|
run: |
|
|
export C_INCLUDE_PATH=/usr/local/include
|
|
export CPLUS_INCLUDE_PATH=/usr/local/include
|
|
export PATH=$PATH:$GOPATH/bin
|
|
make dist
|
|
- uses: actions/upload-artifact@v4
|
|
with:
|
|
name: LocalAI-MacOS-arm64
|
|
path: release/
|
|
- name: Release
|
|
uses: softprops/action-gh-release@v2
|
|
if: startsWith(github.ref, 'refs/tags/')
|
|
with:
|
|
files: |
|
|
release/*
|