Add requirements.txt #50
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: [push, pull_request] | |
jobs: | |
ubuntu-latest-cmake: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
include: | |
- build: 'avx' | |
defines: '-DMINIGPT4_BUILD_EXAMPLES=ON -DMINIGPT4_STATIC=OFF -DMINIGPT4_AVX2=OFF' | |
- build: 'avx2' | |
defines: '-DMINIGPT4_BUILD_EXAMPLES=ON -DMINIGPT4_STATIC=OFF -DMINIGPT4_AVX2=ON' | |
- build: 'opencv_avx' | |
defines: '-DMINIGPT4_BUILD_EXAMPLES=ON -DMINIGPT4_STATIC=OFF -DMINIGPT4_AVX2=OFF -DMINIGPT4_BUILD_WITH_OPENCV=ON' | |
- build: 'opencv_avx2' | |
defines: '-DMINIGPT4_BUILD_EXAMPLES=ON -DMINIGPT4_STATIC=OFF -DMINIGPT4_AVX2=ON -DMINIGPT4_BUILD_WITH_OPENCV=ON' | |
steps: | |
- name: Clone | |
id: checkout | |
uses: actions/checkout@v3 | |
with: | |
submodules: 'recursive' | |
- name: Dependencies | |
id: depends | |
run: | | |
sudo apt-get update | |
sudo apt-get install build-essential zip cmake | |
- name: Cache opencv | |
uses: actions/cache@v3 | |
env: | |
cache-name: cache-opencv | |
with: | |
path: | | |
./opencv | |
key: ${{ runner.os }}-build-${{ env.cache-name }} | |
restore-keys: | | |
${{ runner.os }}-build- | |
${{ runner.os }}- | |
- name: Install prerequisites | |
shell: bash -l {0} | |
run: | | |
if [ ! -d "./opencv" ]; then | |
git clone https://github.com/opencv/opencv.git --branch 4.6.0 --depth 1 | |
cmake -S opencv -B opencv/build -D ENABLE_PRECOMPILED_HEADERS=OFF -D WITH_MSMF=OFF -D BUILD_PERF_TESTS=OFF -D BUILD_TESTS=OFF -D BUILD_WITH_DEBUG_INFO=OFF -D BUILD_DOCS=OFF -D WITH_FFMPEG=OFF -D CMAKE_BUILD_TYPE=RELEASE -D WITH_QUIRC=OFF -D BUILD_QUIRC=OFF -D QUIRC=OFF -D BUILD_PROTOBUF=OFF -D BUILD_SHARED_LIBS=ON -D BUILD_LIST=core,imgproc,imgcodecs | |
cd ./opencv/build | |
make -j$(($(nproc) / 2)) | |
else | |
cd ./opencv/build | |
fi | |
sudo make install | |
- name: Build | |
id: cmake_build | |
run: | | |
mkdir build | |
cd build | |
cmake .. ${{ matrix.defines }} | |
cmake --build . --config Release --parallel | |
- name: Test | |
id: cmake_test | |
run: | | |
cd build | |
ctest --verbose | |
- name: Get commit hash | |
id: commit | |
uses: pr-mpt/actions-commit-hash@v2 | |
- name: Fetch system info | |
id: system-info | |
run: | | |
echo "CPU_ARCH=`uname -m`" >> "$GITHUB_OUTPUT" | |
echo "OS_NAME=`lsb_release -s -i`" >> "$GITHUB_OUTPUT" | |
echo "OS_VERSION=`lsb_release -s -r`" >> "$GITHUB_OUTPUT" | |
echo "OS_TYPE=`uname -s`" >> "$GITHUB_OUTPUT" | |
- name: Pack artifacts | |
id: pack_artifacts | |
run: | | |
zip -j minigpt4-${{ env.BRANCH_NAME }}-${{ steps.commit.outputs.short }}-${{ steps.system-info.outputs.OS_TYPE }}-${{ steps.system-info.outputs.OS_NAME }}-${{ steps.system-info.outputs.OS_VERSION }}-${{ matrix.build }}-${{ steps.system-info.outputs.CPU_ARCH }}.zip ./build/libminigpt4.so ./build/bin/main ./minigpt4/minigpt4_library.py ./minigpt4/webui.py ./minigpt4/requirements.txt | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
path: | | |
minigpt4-${{ env.BRANCH_NAME }}-${{ steps.commit.outputs.short }}-${{ steps.system-info.outputs.OS_TYPE }}-${{ steps.system-info.outputs.OS_NAME }}-${{ steps.system-info.outputs.OS_VERSION }}-${{ matrix.build }}-${{ steps.system-info.outputs.CPU_ARCH }}.zip | |
macOS-latest-cmake: | |
runs-on: macOS-latest | |
strategy: | |
matrix: | |
include: | |
- build: 'avx' | |
defines: '-DMINIGPT4_BUILD_EXAMPLES=ON -DMINIGPT4_STATIC=OFF -DMINIGPT4_AVX2=OFF' | |
# - build: 'avx2' | |
# defines: '-DMINIGPT4_BUILD_EXAMPLES=ON -DMINIGPT4_STATIC=OFF -DMINIGPT4_AVX2=ON' | |
- build: 'opencv_avx' | |
defines: '-DMINIGPT4_BUILD_EXAMPLES=ON -DMINIGPT4_STATIC=OFF -DMINIGPT4_AVX2=OFF -DMINIGPT4_BUILD_WITH_OPENCV=ON' | |
# - build: 'opencv_avx2' | |
# defines: '-DMINIGPT4_BUILD_EXAMPLES=ON -DMINIGPT4_STATIC=OFF -DMINIGPT4_AVX2=ON -DMINIGPT4_BUILD_WITH_OPENCV=ON' | |
steps: | |
- name: Clone | |
id: checkout | |
uses: actions/checkout@v3 | |
with: | |
submodules: 'recursive' | |
- name: Dependencies | |
id: depends | |
run: | | |
brew install zip | |
- name: Cache opencv | |
uses: actions/cache@v3 | |
env: | |
cache-name: cache-opencv | |
with: | |
path: | | |
./opencv | |
key: ${{ runner.os }}-build-${{ env.cache-name }} | |
restore-keys: | | |
${{ runner.os }}-build- | |
${{ runner.os }}- | |
- name: Install prerequisites | |
shell: bash -l {0} | |
run: | | |
brew install create-dmg | |
if [ ! -d "./opencv" ]; then | |
git clone https://github.com/opencv/opencv.git --branch 4.6.0 --depth 1 | |
cmake -S opencv -B opencv/build -D ENABLE_PRECOMPILED_HEADERS=OFF -D WITH_MSMF=OFF -D BUILD_PERF_TESTS=OFF -D BUILD_TESTS=OFF -D BUILD_WITH_DEBUG_INFO=OFF -D BUILD_DOCS=OFF -D WITH_FFMPEG=OFF -D CMAKE_BUILD_TYPE=RELEASE -D WITH_QUIRC=OFF -D BUILD_QUIRC=OFF -D QUIRC=OFF -D BUILD_PROTOBUF=OFF -D BUILD_SHARED_LIBS=ON -D BUILD_LIST=core,imgproc,imgcodecs -D BUILD_ZLIB=OFF | |
cd ./opencv/build | |
make -j | |
else | |
cd ./opencv/build | |
fi | |
sudo make install | |
- name: Build | |
id: cmake_build | |
run: | | |
mkdir build | |
cd build | |
cmake .. ${{ matrix.defines }} -DMINIGPT4_FMA=OFF | |
cmake --build . --config Release --parallel | |
- name: Test | |
id: cmake_test | |
run: | | |
cd build | |
ctest --verbose | |
- name: Get commit hash | |
id: commit | |
uses: pr-mpt/actions-commit-hash@v2 | |
- name: Fetch system info | |
id: system-info | |
run: | | |
echo "CPU_ARCH=`uname -m`" >> "$GITHUB_OUTPUT" | |
echo "OS_NAME=`sw_vers -productName`" >> "$GITHUB_OUTPUT" | |
echo "OS_VERSION=`sw_vers -productVersion`" >> "$GITHUB_OUTPUT" | |
echo "OS_TYPE=`uname -s`" >> "$GITHUB_OUTPUT" | |
- name: Pack artifacts | |
id: pack_artifacts | |
run: | | |
zip -j minigpt4-${{ env.BRANCH_NAME }}-${{ steps.commit.outputs.short }}-${{ steps.system-info.outputs.OS_TYPE }}-${{ steps.system-info.outputs.OS_NAME }}-${{ steps.system-info.outputs.OS_VERSION }}-${{ matrix.build }}-${{ steps.system-info.outputs.CPU_ARCH }}.zip ./build/libminigpt4.dylib ./build/bin/main ./minigpt4/minigpt4_library.py ./minigpt4/webui.py ./minigpt4/requirements.txt | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
path: | | |
minigpt4-${{ env.BRANCH_NAME }}-${{ steps.commit.outputs.short }}-${{ steps.system-info.outputs.OS_TYPE }}-${{ steps.system-info.outputs.OS_NAME }}-${{ steps.system-info.outputs.OS_VERSION }}-${{ matrix.build }}-${{ steps.system-info.outputs.CPU_ARCH }}.zip | |
windows-latest-cmake: | |
runs-on: windows-latest | |
strategy: | |
matrix: | |
include: | |
- build: 'avx' | |
defines: '-DMINIGPT4_BUILD_EXAMPLES=ON -DMINIGPT4_STATIC=OFF -DMINIGPT4_AVX2=OFF' | |
- build: 'avx2' | |
defines: '-DMINIGPT4_BUILD_EXAMPLES=ON -DMINIGPT4_STATIC=OFF -DMINIGPT4_AVX2=ON' | |
- build: 'avx512' | |
defines: '-DMINIGPT4_BUILD_EXAMPLES=ON -DMINIGPT4_STATIC=OFF -DMINIGPT4_AVX512=ON' | |
- build: 'opencv_avx' | |
defines: '-DMINIGPT4_BUILD_EXAMPLES=ON -DMINIGPT4_STATIC=OFF -DMINIGPT4_AVX2=OFF -DMINIGPT4_BUILD_WITH_OPENCV=ON' | |
- build: 'opencv_avx2' | |
defines: '-DMINIGPT4_BUILD_EXAMPLES=ON -DMINIGPT4_STATIC=OFF -DMINIGPT4_AVX2=ON -DMINIGPT4_BUILD_WITH_OPENCV=ON' | |
- build: 'opencv_avx512' | |
defines: '-DMINIGPT4_BUILD_EXAMPLES=ON -DMINIGPT4_STATIC=OFF -DMINIGPT4_AVX512=ON -DMINIGPT4_BUILD_WITH_OPENCV=ON' | |
steps: | |
- name: Clone | |
id: checkout | |
uses: actions/checkout@v3 | |
with: | |
submodules: 'recursive' | |
- name: Cache opencv | |
uses: actions/cache@v3 | |
env: | |
cache-name: cache-opencv | |
with: | |
path: | | |
C:/opencv4.6.0 | |
key: ${{ runner.os }}-build-${{ env.cache-name }} | |
restore-keys: | | |
${{ runner.os }}-build- | |
${{ runner.os }}- | |
- name: Install prerequisites | |
run: | | |
Choco-Install -PackageName innosetup --force | |
Choco-Install -PackageName cmake --force | |
$c="C:\opencv4.6.0" | |
if(-not (Test-Path $c)) | |
{ | |
git clone https://github.com/opencv/opencv.git --branch 4.6.0 --depth 1 | |
cmake -S opencv -B opencv/build -D CMAKE_INSTALL_PREFIX=C:/opencv4.6.0 -D ENABLE_PRECOMPILED_HEADERS=OFF -D WITH_MSMF=OFF -D BUILD_PERF_TESTS=OFF -D BUILD_TESTS=OFF -D BUILD_WITH_DEBUG_INFO=OFF -D BUILD_DOCS=OFF -D CMAKE_BUILD_TYPE=RELEASE -D WITH_QUIRC=OFF -D BUILD_QUIRC=OFF -D QUIRC=OFF -D BUILD_PROTOBUF=OFF -D BUILD_SHARED_LIBS=ON -D BUILD_LIST=core,imgproc,imgcodecs | |
cd ./opencv/build | |
cmake --build . --config Release --parallel | |
cmake --install . --config Release | |
} | |
- name: Build | |
id: cmake_build | |
run: | | |
mkdir build | |
cd build | |
cmake .. ${{ matrix.defines }} -DOpenCV_DIR=C:\opencv4.6.0 | |
cmake --build . --config Release --parallel | |
- name: Check AVX512F support | |
id: check_avx512f | |
if: ${{ matrix.build == 'avx512' || matrix.build == 'opencv_avx512' }} | |
continue-on-error: true | |
run: | | |
cd build | |
$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())) | |
$cl = $(join-path $msvc 'bin\Hostx64\x64\cl.exe') | |
echo 'int main(void){unsigned int a[4];__cpuid(a,7);return !(a[1]&65536);}' >> avx512f.c | |
& $cl /O2 /GS- /kernel avx512f.c /link /nodefaultlib /entry:main | |
.\avx512f.exe && echo "AVX512F: YES" && ( echo HAS_AVX512F=1 >> $env:GITHUB_ENV ) || echo "AVX512F: NO" | |
- name: Test | |
id: cmake_test | |
if: ${{ matrix.build != 'avx512' || env.HAS_AVX512F == '1' }} | |
run: | | |
cd build | |
ctest -C Release --verbose | |
- name: Get commit hash | |
id: commit | |
uses: pr-mpt/actions-commit-hash@v2 | |
- name: Pack artifacts | |
id: pack_artifacts | |
run: | | |
7z a minigpt4-${{ env.BRANCH_NAME }}-${{ steps.commit.outputs.short }}-win-${{ matrix.build }}-x64.zip .\build\bin\Release\minigpt4.dll .\build\bin\Release\main.exe .\minigpt4\minigpt4_library.py .\minigpt4\webui.py .\minigpt4\requirements.txt | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
path: | | |
minigpt4-${{ env.BRANCH_NAME }}-${{ steps.commit.outputs.short }}-win-${{ matrix.build }}-x64.zip | |
release: | |
runs-on: ubuntu-latest | |
needs: | |
- ubuntu-latest-cmake | |
- macOS-latest-cmake | |
- windows-latest-cmake | |
steps: | |
- name: Download artifacts | |
id: download-artifact | |
uses: actions/download-artifact@v3 | |
- name: Get commit hash | |
id: commit | |
uses: pr-mpt/actions-commit-hash@v2 | |
- name: Create release | |
id: create_release | |
uses: ncipollo/release-action@v1 | |
with: | |
artifacts: "./artifact/*.zip" | |
prerelease: true |