From d0e40f9233035b9b4a2b860791ce91eef7548430 Mon Sep 17 00:00:00 2001 From: Concedo <39025047+LostRuins@users.noreply.github.com> Date: Thu, 11 Apr 2024 21:28:25 +0800 Subject: [PATCH] fix indentation (+1 squashed commits) Squashed commits: [4d0fc028] testing a simple workflow for windows full build --- .../kcpp-build-release-win-full.yaml | 60 +++++ cmake/FindSIMD.cmake | 100 ------- requirements.txt | 1 + scripts/gen-authors.sh | 9 - tests/test-grammar-integration.cpp | 243 ------------------ 5 files changed, 61 insertions(+), 352 deletions(-) create mode 100644 .github/workflows/kcpp-build-release-win-full.yaml delete mode 100644 cmake/FindSIMD.cmake delete mode 100755 scripts/gen-authors.sh delete mode 100644 tests/test-grammar-integration.cpp diff --git a/.github/workflows/kcpp-build-release-win-full.yaml b/.github/workflows/kcpp-build-release-win-full.yaml new file mode 100644 index 000000000..59270e5ec --- /dev/null +++ b/.github/workflows/kcpp-build-release-win-full.yaml @@ -0,0 +1,60 @@ +name: Koboldcpp Builder Windows Full Binaries + +on: workflow_dispatch +env: + BRANCH_NAME: ${{ github.head_ref || github.ref_name }} + +jobs: + windows: + runs-on: windows-2019 + steps: + - name: Clone + id: checkout + uses: actions/checkout@v3 + with: + ref: concedo_experimental + + - name: Get Python + uses: actions/setup-python@v2 + with: + python-version: 3.8.10 + + - name: Install python dependencies + run: | + python -m pip install --upgrade pip + pip install customtkinter==5.2.0 pyinstaller==5.11.0 psutil==5.9.5 + + - name: Download and install win64devkit + run: | + curl -L https://github.com/skeeto/w64devkit/releases/download/v1.22.0/w64devkit-1.22.0.zip --output w64devkit.zip + Expand-Archive w64devkit.zip -DestinationPath . + + - name: Add w64devkit to PATH + run: | + $env:Path += ";$(Get-Location)\w64devkit-1.22.0\w64devkit\bin" + echo $env:Path + + - name: Build Non-CUDA + id: make_build + run: | + make -j ${env:NUMBER_OF_PROCESSORS} + ls + + # - uses: Jimver/cuda-toolkit@v0.2.11 + # id: cuda-toolkit + # with: + # cuda: '11.4.4' + + # - name: Build CUDA + # id: cmake_build + # run: | + # mkdir build + # cd build + # cmake .. -DLLAMA_CUBLAS=ON -DCMAKE_SYSTEM_VERSION="10.0.19041.0" + # cmake --build . --config Release -j ${env:NUMBER_OF_PROCESSORS} + + # - name: Save artifact + # uses: actions/upload-artifact@v3 + # with: + # name: kcpp_windows_cuda_binary + # path: build/bin/Release/ diff --git a/cmake/FindSIMD.cmake b/cmake/FindSIMD.cmake deleted file mode 100644 index 33377ec44..000000000 --- a/cmake/FindSIMD.cmake +++ /dev/null @@ -1,100 +0,0 @@ -include(CheckCSourceRuns) - -set(AVX_CODE " - #include - int main() - { - __m256 a; - a = _mm256_set1_ps(0); - return 0; - } -") - -set(AVX512_CODE " - #include - int main() - { - __m512i a = _mm512_set_epi8(0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0); - __m512i b = a; - __mmask64 equality_mask = _mm512_cmp_epi8_mask(a, b, _MM_CMPINT_EQ); - return 0; - } -") - -set(AVX2_CODE " - #include - int main() - { - __m256i a = {0}; - a = _mm256_abs_epi16(a); - __m256i x; - _mm256_extract_epi64(x, 0); // we rely on this in our AVX2 code - return 0; - } -") - -set(FMA_CODE " - #include - int main() - { - __m256 acc = _mm256_setzero_ps(); - const __m256 d = _mm256_setzero_ps(); - const __m256 p = _mm256_setzero_ps(); - acc = _mm256_fmadd_ps( d, p, acc ); - return 0; - } -") - -macro(check_sse type flags) - set(__FLAG_I 1) - set(CMAKE_REQUIRED_FLAGS_SAVE ${CMAKE_REQUIRED_FLAGS}) - foreach (__FLAG ${flags}) - if (NOT ${type}_FOUND) - set(CMAKE_REQUIRED_FLAGS ${__FLAG}) - check_c_source_runs("${${type}_CODE}" HAS_${type}_${__FLAG_I}) - if (HAS_${type}_${__FLAG_I}) - set(${type}_FOUND TRUE CACHE BOOL "${type} support") - set(${type}_FLAGS "${__FLAG}" CACHE STRING "${type} flags") - endif() - math(EXPR __FLAG_I "${__FLAG_I}+1") - endif() - endforeach() - set(CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS_SAVE}) - - if (NOT ${type}_FOUND) - set(${type}_FOUND FALSE CACHE BOOL "${type} support") - set(${type}_FLAGS "" CACHE STRING "${type} flags") - endif() - - mark_as_advanced(${type}_FOUND ${type}_FLAGS) -endmacro() - -# flags are for MSVC only! -check_sse("AVX" " ;/arch:AVX") -if (NOT ${AVX_FOUND}) - set(LLAMA_AVX OFF) -else() - set(LLAMA_AVX ON) -endif() - -check_sse("AVX2" " ;/arch:AVX2") -check_sse("FMA" " ;/arch:AVX2") -if ((NOT ${AVX2_FOUND}) OR (NOT ${FMA_FOUND})) - set(LLAMA_AVX2 OFF) -else() - set(LLAMA_AVX2 ON) -endif() - -check_sse("AVX512" " ;/arch:AVX512") -if (NOT ${AVX512_FOUND}) - set(LLAMA_AVX512 OFF) -else() - set(LLAMA_AVX512 ON) -endif() diff --git a/requirements.txt b/requirements.txt index dd87e4920..19d5b8b0f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,3 +4,4 @@ transformers>=4.34.0 gguf>=0.1.0 customtkinter>=5.1.0 protobuf>=4.21.0 +psutil>=5.9.4 \ No newline at end of file diff --git a/scripts/gen-authors.sh b/scripts/gen-authors.sh deleted file mode 100755 index 3ef8391cc..000000000 --- a/scripts/gen-authors.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash - -printf "# date: $(date)\n" > AUTHORS -printf "# this file is auto-generated by scripts/gen-authors.sh\n\n" >> AUTHORS - -git log --format='%an <%ae>' --reverse --date=short master | awk '!seen[$0]++' | sort >> AUTHORS - -# if necessary, update your name here. for example: jdoe -> John Doe -sed -i '' 's/^jdoe/John Doe/g' AUTHORS diff --git a/tests/test-grammar-integration.cpp b/tests/test-grammar-integration.cpp deleted file mode 100644 index 0a9c3b6f5..000000000 --- a/tests/test-grammar-integration.cpp +++ /dev/null @@ -1,243 +0,0 @@ -#ifdef NDEBUG -#undef NDEBUG -#endif - -#define LLAMA_API_INTERNAL - -#include "ggml.h" -#include "llama.h" -#include "grammar-parser.h" -#include "unicode.h" -#include -#include - -static void test_simple_grammar() { - // Test case for a simple grammar - const std::string grammar_str = R"""(root ::= expr -expr ::= term ("+" term)* -term ::= number -number ::= [0-9]+)"""; - - grammar_parser::parse_state parsed_grammar = grammar_parser::parse(grammar_str.c_str()); - - // Ensure we parsed correctly - assert(!parsed_grammar.rules.empty()); - - // Ensure we have a root node - assert(!(parsed_grammar.symbol_ids.find("root") == parsed_grammar.symbol_ids.end())); - - std::vector grammar_rules(parsed_grammar.c_rules()); - llama_grammar* grammar = llama_grammar_init( - grammar_rules.data(), grammar_rules.size(), parsed_grammar.symbol_ids.at("root")); - - std::string input = "123+456"; - - auto decoded = decode_utf8(input, {}); - - const auto & code_points = decoded.first; - - for (auto it = code_points.begin(), end = code_points.end() - 1; it != end; ++it) { - auto prev_stacks = grammar->stacks; - grammar->stacks = llama_grammar_accept(grammar->rules, grammar->stacks, *it); - assert(!grammar->stacks.empty()); - } - - bool completed_grammar = false; - - for (const auto & stack : grammar->stacks) { - if (stack.empty()) { - completed_grammar = true; - break; - } - } - - assert(completed_grammar); - - // Clean up allocated memory - llama_grammar_free(grammar); -} - -static void test_complex_grammar() { - // Test case for a more complex grammar, with both failure strings and success strings - const std::string grammar_str = R"""(root ::= expression -expression ::= term ws (("+"|"-") ws term)* -term ::= factor ws (("*"|"/") ws factor)* -factor ::= number | variable | "(" expression ")" | function-call -number ::= [0-9]+ -variable ::= [a-zA-Z_][a-zA-Z0-9_]* -function-call ::= variable ws "(" (expression ("," ws expression)*)? ")" -ws ::= [ \t\n\r]?)"""; - - grammar_parser::parse_state parsed_grammar = grammar_parser::parse(grammar_str.c_str()); - - // Ensure we parsed correctly - assert(!parsed_grammar.rules.empty()); - - // Ensure we have a root node - assert(!(parsed_grammar.symbol_ids.find("root") == parsed_grammar.symbol_ids.end())); - - std::vector grammar_rules(parsed_grammar.c_rules()); - llama_grammar* grammar = llama_grammar_init( - grammar_rules.data(), grammar_rules.size(), parsed_grammar.symbol_ids.at("root")); - - // Save the original grammar stacks so that we can reset after every new string we want to test - auto original_stacks = grammar->stacks; - - // Test a few strings - std::vector test_strings_pass = { - "42", - "1*2*3*4*5", - "x", - "x+10", - "x1+y2", - "(a+b)*(c-d)", - "func()", - "func(x,y+2)", - "a*(b+c)-d/e", - "f(g(x),h(y,z))", - "x + 10", - "x1 + y2", - "(a + b) * (c - d)", - "func()", - "func(x, y + 2)", - "a * (b + c) - d / e", - "f(g(x), h(y, z))", - "123+456", - "123*456*789-123/456+789*123", - "123+456*789-123/456+789*123-456/789+123*456-789/123+456*789-123/456+789*123-456" - }; - - std::vector test_strings_fail = { - "+", - "/ 3x", - "x + + y", - "a * / b", - "func(,)", - "func(x y)", - "(a + b", - "x + y)", - "a + b * (c - d", - "42 +", - "x +", - "x + 10 +", - "(a + b) * (c - d", - "func(", - "func(x, y + 2", - "a * (b + c) - d /", - "f(g(x), h(y, z)", - "123+456*789-123/456+789*123-456/789+123*456-789/123+456*789-123/456+789*123-456/", - }; - - // Passing strings - for (const auto & test_string : test_strings_pass) { - auto decoded = decode_utf8(test_string, {}); - - const auto & code_points = decoded.first; - - int pos = 0; - for (auto it = code_points.begin(), end = code_points.end() - 1; it != end; ++it) { - ++pos; - auto prev_stacks = grammar->stacks; - grammar->stacks = llama_grammar_accept(grammar->rules, grammar->stacks, *it); - - // Expect that each code point will not cause the grammar to fail - if (grammar->stacks.empty()) { - fprintf(stdout, "Error at position %d\n", pos); - fprintf(stderr, "Unexpected character '%s'\n", unicode_cpt_to_utf8(*it).c_str()); - fprintf(stderr, "Input string is %s:\n", test_string.c_str()); - } - assert(!grammar->stacks.empty()); - } - - bool completed_grammar = false; - - for (const auto & stack : grammar->stacks) { - if (stack.empty()) { - completed_grammar = true; - break; - } - } - - assert(completed_grammar); - - // Reset the grammar stacks - grammar->stacks = original_stacks; - } - - // Failing strings - for (const auto & test_string : test_strings_fail) { - auto decoded = decode_utf8(test_string, {}); - - const auto & code_points = decoded.first; - bool parse_failed = false; - - for (auto it = code_points.begin(), end = code_points.end() - 1; it != end; ++it) { - auto prev_stacks = grammar->stacks; - grammar->stacks = llama_grammar_accept(grammar->rules, grammar->stacks, *it); - if (grammar->stacks.empty()) { - parse_failed = true; - break; - } - assert(!grammar->stacks.empty()); - } - - bool completed_grammar = false; - - for (const auto & stack : grammar->stacks) { - if (stack.empty()) { - completed_grammar = true; - break; - } - } - - // Ensure that the grammar is not completed, or that each string failed to match as-expected - assert((!completed_grammar) || parse_failed); - - // Reset the grammar stacks - grammar->stacks = original_stacks; - } - - // Clean up allocated memory - llama_grammar_free(grammar); -} - -static void test_failure_missing_root() { - // Test case for a grammar that is missing a root rule - const std::string grammar_str = R"""(rot ::= expr -expr ::= term ("+" term)* -term ::= number -number ::= [0-9]+)"""; - - grammar_parser::parse_state parsed_grammar = grammar_parser::parse(grammar_str.c_str()); - - // Ensure we parsed correctly - assert(!parsed_grammar.rules.empty()); - - // Ensure we do NOT have a root node - assert(parsed_grammar.symbol_ids.find("root") == parsed_grammar.symbol_ids.end()); -} - -static void test_failure_missing_reference() { - // Test case for a grammar that is missing a referenced rule - const std::string grammar_str = R"""(root ::= expr -expr ::= term ("+" term)* -term ::= numero -number ::= [0-9]+)"""; - - fprintf(stderr, "Expected error: "); - - grammar_parser::parse_state parsed_grammar = grammar_parser::parse(grammar_str.c_str()); - - // Ensure we did NOT parsed correctly - assert(parsed_grammar.rules.empty()); - - fprintf(stderr, "End of expected error. Test successful.\n"); -} - -int main() { - test_simple_grammar(); - test_complex_grammar(); - test_failure_missing_root(); - test_failure_missing_reference(); - return 0; -}