Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add windows build #2

Open
wants to merge 6 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
109 changes: 105 additions & 4 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,96 @@ jobs:
name: flatline_lsp_ubuntu2004_${{ matrix.build }}.zip
path: dist/flatline_lsp_ubuntu2004_${{ matrix.build }}.zip

build-release-windows-latest:
runs-on: windows-latest

env:
OPENBLAS_VERSION: 0.3.23

strategy:
matrix:
include:
- build: 'openblas'
defines: '-DLLAMA_BLAS=ON -DLLAMA_BLAS_VENDOR=OpenBLAS -DBLAS_INCLUDE_DIRS="$env:RUNNER_TEMP/openblas/include" -DBLAS_LIBRARIES="$env:RUNNER_TEMP/openblas/lib/openblas.lib"'

steps:
- name: Clone
id: checkout
uses: actions/checkout@v1

- name: Common dependencies
id: depends
run: |
python3 -m pip install cmake
python3 -m pip install torch --index-url https://download.pytorch.org/whl/cpu
python3 -m pip install transformers==4.33.3 tiktoken pygls pyinstaller

- name: Download OpenBLAS
id: get_openblas
if: ${{ matrix.build == 'openblas' }}
run: |
curl.exe -o $env:RUNNER_TEMP/openblas.zip -L "https://github.com/xianyi/OpenBLAS/releases/download/v${env:OPENBLAS_VERSION}/OpenBLAS-${env:OPENBLAS_VERSION}-x64.zip"
curl.exe -o $env:RUNNER_TEMP/OpenBLAS.LICENSE.txt -L "https://github.com/xianyi/OpenBLAS/raw/v${env:OPENBLAS_VERSION}/LICENSE"
mkdir $env:RUNNER_TEMP/openblas
tar.exe -xvf $env:RUNNER_TEMP/openblas.zip -C $env:RUNNER_TEMP/openblas
$vcdir = $(vswhere -latest -products * -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath)
$msvc = $(join-path $vcdir $('VC\Tools\MSVC\'+$(gc -raw $(join-path $vcdir 'VC\Auxiliary\Build\Microsoft.VCToolsVersion.default.txt')).Trim()))
$lib = $(join-path $msvc 'bin\Hostx64\x64\lib.exe')
& $lib /machine:x64 "/def:${env:RUNNER_TEMP}/openblas/lib/libopenblas.def" "/out:${env:RUNNER_TEMP}/openblas/lib/openblas.lib" /name:openblas.dll

- name: Build backend server
id: cmake_build_backend_server
run: |
cmake -B build_backend_server -S . -DLLAMA_NATIVE=OFF ${{ matrix.defines }}
cmake --build build_backend_server --config Release

- name: Add libopenblas.dll
id: add_libopenblas_dll
if: ${{ matrix.build == 'openblas' }}
run: |
cp $env:RUNNER_TEMP/openblas/bin/libopenblas.dll ./build_backend_server/bin/Release/openblas.dll
cp $env:RUNNER_TEMP/OpenBLAS.LICENSE.txt ./build_backend_server/bin/Release/OpenBLAS-${env:OPENBLAS_VERSION}.txt

- name: Build lsp server
id: pyinstaller_build_lsp_server
shell: bash
run: |
pyinstaller flatline_lsp.py \
--copy-metadata tqdm \
--copy-metadata regex \
--copy-metadata requests \
--copy-metadata packaging \
--copy-metadata filelock \
--copy-metadata numpy \
--copy-metadata tokenizers \
--copy-metadata huggingface-hub \
--copy-metadata safetensors \
--copy-metadata pyyaml \
--copy-metadata torch \
--hidden-import=tiktoken_ext.openai_public \
--hidden-import=tiktoken_ext \
;

- name: Make package
id: make_package
shell: bash
run: |
mkdir -p ./dist/flatline_lsp/_internal/flatline/model_data
mkdir -p ./dist/flatline_lsp/_internal/flatline/backend_server
find build_backend_server
mv build_backend_server/bin/Release/flatline-server.exe ./dist/flatline_lsp/_internal/flatline/backend_server/flatline-server.exe
mkdir -p ./dist/flatline_lsp/license
find build_backend_server/bin/Release -name \*.LICENSE.txt | xargs -I{} cp {} ./dist/flatline_lsp/license/
cd dist
7z a flatline_lsp_windows_${{ matrix.build }}.zip flatline_lsp

- name: Upload package
id: upload_package
uses: actions/upload-artifact@v3
with:
name: flatline_lsp_windows_${{ matrix.build }}.zip
path: dist/flatline_lsp_windows_${{ matrix.build }}.zip

create-release:
runs-on: ubuntu-latest
needs: [build-release-ubuntu-2004]
Expand Down Expand Up @@ -121,8 +211,8 @@ jobs:
draft: false
prerelease: true

- name: Upload release openblas asset
id: upload_release_openblas_asset
- name: Upload release ubuntu2004 openblas asset
id: upload_release_ubuntu2004_openblas_asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Expand All @@ -132,8 +222,8 @@ jobs:
asset_name: flatline_lsp_ubuntu2004_openblas.zip
asset_content_type: application/zip

- name: Upload release cublas asset
id: upload_release_cublas_asset
- name: Upload release ubuntu2004 cublas asset
id: upload_release_ubuntu2004_cublas_asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Expand All @@ -143,6 +233,17 @@ jobs:
asset_name: flatline_lsp_ubuntu2004_cublas.zip
asset_content_type: application/zip

- name: Upload release windows openblas asset
id: upload_release_windows_openblas_asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: flatline_lsp_windows_openblas.zip/flatline_lsp_windows_openblas.zip
asset_name: flatline_lsp_windows_openblas.zip
asset_content_type: application/zip

test-on-ubuntu-2004:
runs-on: ubuntu-20.04
needs: [create-release]
Expand Down
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ target_link_libraries(httplib INTERFACE Threads::Threads)
add_executable(${PROJECT_NAME}-server
${CMAKE_CURRENT_SOURCE_DIR}/flatline_server.cpp)
set_target_properties(${PROJECT_NAME}-server PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/bin")
target_link_libraries(${PROJECT_NAME}-server PRIVATE llama ggml httplib jsoncpp_static structopt spdlog::spdlog "stdc++fs")
target_link_libraries(${PROJECT_NAME}-server PRIVATE llama ggml httplib jsoncpp_static structopt spdlog::spdlog)
add_custom_command(
TARGET ${PROJECT_NAME}-server
POST_BUILD
Expand Down
Loading