Require OpenBLAS on Linux so that CT2 works (and enable it for Whisper too) (#251)

* Enable some CT2 backends on Linux

* Might as well enable OpenBLAS for whisper too

* Format cmake files

* Update README to add info about OpenBLAS now being a required dependency

* Fix OpenBLAS dependencies and linking for Ubuntu package
This commit is contained in:
Tabitha Cromarty
2025-10-30 14:49:12 +00:00
committed by GitHub
parent 98c1a8a172
commit eccea49d99
7 changed files with 62 additions and 52 deletions

View File

@@ -2,6 +2,8 @@ package 'cmake'
package 'ccache'
package 'git'
package 'jq'
package 'libopenblas-dev'
package 'libopenblas-openmp-dev'
package 'libsimde-dev'
package 'ninja-build', bin: 'ninja'
package 'pkg-config'
package 'libopenblas-dev'

View File

@@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 3.31...4.12)
cmake_minimum_required(VERSION 3.28...4.12)
include("${CMAKE_CURRENT_SOURCE_DIR}/cmake/common/bootstrap.cmake" NO_POLICY_SCOPE)
@@ -65,6 +65,9 @@ if(WIN32)
CACHE STRING "Acceleration to use")
endif()
set_property(CACHE ACCELERATION PROPERTY STRINGS "cpu" "hipblas" "cuda" "vulkan")
elseif(UNIX AND NOT APPLE)
set(BLA_VENDOR OpenBLAS)
find_package(BLAS REQUIRED)
endif()
include(cmake/BuildWhispercpp.cmake)

View File

@@ -146,8 +146,10 @@ For other distros where you can't use the CI build script, you can build the plu
1. Clone the repository and install these dependencies using your distribution's package manager:
* libcurl (with development headers)
* libssl (with development headers)
* icu
* openblas
* vulkan headers
1. Install rust via [rustup](https://rust-lang.org/tools/install/) (recommended), or your distribution's package manager

View File

@@ -97,13 +97,12 @@ else()
# build CTranslate2 from source
set(CT2_VERSION "4.1.1")
set(CT2_URL "https://github.com/OpenNMT/CTranslate2.git")
set(CT2_OPENBLAS_CMAKE_ARGS -DWITH_OPENBLAS=OFF)
if(CMAKE_MAJOR_VERSION EQUAL 4)
set(CT2_CMAKE_PLATFORM_OPTIONS -DBUILD_SHARED_LIBS=OFF -DOPENMP_RUNTIME=NONE -DCMAKE_POSITION_INDEPENDENT_CODE=ON
set(CT2_CMAKE_PLATFORM_OPTIONS -DBUILD_SHARED_LIBS=OFF -DCMAKE_POSITION_INDEPENDENT_CODE=ON
-DCMAKE_POLICY_VERSION_MINIMUM=3.5)
else()
set(CT2_CMAKE_PLATFORM_OPTIONS -DBUILD_SHARED_LIBS=OFF -DOPENMP_RUNTIME=NONE -DCMAKE_POSITION_INDEPENDENT_CODE=ON)
set(CT2_CMAKE_PLATFORM_OPTIONS -DBUILD_SHARED_LIBS=OFF -DCMAKE_POSITION_INDEPENDENT_CODE=ON)
endif()
set(CT2_LIB_INSTALL_LOCATION
${CMAKE_INSTALL_LIBDIR}/${CMAKE_SHARED_LIBRARY_PREFIX}ctranslate2${CMAKE_STATIC_LIBRARY_SUFFIX})
@@ -121,19 +120,19 @@ else()
-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
-DCMAKE_INSTALL_LIBDIR=${CMAKE_INSTALL_LIBDIR}
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
-DWITH_CUDA=OFF
-DOPENMP_RUNTIME=COMP
-DWITH_MKL=OFF
-DWITH_TESTS=OFF
-DWITH_EXAMPLES=OFF
-DWITH_TFLITE=OFF
-DWITH_TRT=OFF
-DWITH_PYTHON=OFF
-DWITH_SERVER=OFF
-DWITH_COVERAGE=OFF
-DWITH_PROFILING=OFF
-DWITH_DNNL=OFF
-DWITH_ACCELERATE=OFF
-DWITH_OPENBLAS=ON
-DWITH_RUY=OFF
-DWITH_CUDA=OFF
-DWITH_CUDNN=OFF
-DWITH_TENSOR_PARALLEL=ON
-DENABLE_CPU_DISPATCH=ON
-DENABLE_PROFILING=OFF
-DBUILD_CLI=OFF
-DBUILD_TESTS=OFF
${CT2_OPENBLAS_CMAKE_ARGS}
${CT2_CMAKE_PLATFORM_OPTIONS}
LOG_CONFIGURE ON
LOG_BUILD ON
@@ -147,6 +146,6 @@ else()
set_target_properties(ct2::ct2 PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${INSTALL_DIR}/include)
add_library(ct2 INTERFACE)
target_link_libraries(ct2 INTERFACE ct2::ct2 cpu_features)
target_link_libraries(ct2 INTERFACE ct2::ct2 cpu_features ${BLAS_LIBRARIES})
endif()

View File

@@ -117,7 +117,8 @@ else()
endif()
set(Whispercpp_Build_GIT_TAG "v1.6.2")
set(WHISPER_EXTRA_CXX_FLAGS "-fPIC")
set(WHISPER_ADDITIONAL_CMAKE_ARGS -DWHISPER_BLAS=OFF -DWHISPER_CUBLAS=OFF -DWHISPER_OPENBLAS=OFF)
set(WHISPER_ADDITIONAL_CMAKE_ARGS -DWHISPER_BLAS=ON -DWHISPER_BLAS_VENDOR=OpenBLAS -DWHISPER_CUBLAS=OFF
-DWHISPER_OPENBLAS=on)
# On Linux build a static Whisper library
ExternalProject_Add(
@@ -159,3 +160,6 @@ if(APPLE)
target_link_libraries(Whispercpp INTERFACE "-framework Accelerate -framework CoreML -framework Metal")
target_link_libraries(Whispercpp INTERFACE Whispercpp::GGML Whispercpp::CoreML)
endif(APPLE)
if(UNIX AND NOT APPLE)
target_link_libraries(Whispercpp INTERFACE ${BLAS_LIBRARIES})
endif()

View File

@@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 3.31...4.12)
cmake_minimum_required(VERSION 3.28...4.12)
include_guard(GLOBAL)

View File

@@ -7,35 +7,35 @@
"files": [
{
"url": "https://huggingface.co/jncraton/m2m100_418M-ct2-int8/resolve/main/model.bin?download=true",
"sha256": "D6703DD9F920FF896E45C3D97B490761BED5944937B90BBE6A7245F5652542D4"
"sha256": "d6703dd9f920ff896e45c3d97b490761bed5944937b90bbe6a7245f5652542d4"
},
{
"url": "https://huggingface.co/jncraton/m2m100_418M-ct2-int8/resolve/main/config.json?download=true",
"sha256": "4244772990E30069563E3DDFB4AD6DC95BDFD2AC3DE667EA8858C9B0A8433FA8"
"sha256": "4244772990e30069563e3ddfb4ad6dc95bdfd2ac3de667ea8858c9b0a8433fa8"
},
{
"url": "https://huggingface.co/jncraton/m2m100_418M-ct2-int8/resolve/main/generation_config.json?download=true",
"sha256": "AED76366507333DDBB8BD49960F23C82FE6446B3319A46A54BEFDB45324CCF61"
"sha256": "aed76366507333ddbb8bd49960f23c82fe6446b3319a46a54befdb45324ccf61"
},
{
"url": "https://huggingface.co/jncraton/m2m100_418M-ct2-int8/resolve/main/shared_vocabulary.json?download=true",
"sha256": "7EB5D0FF184C6095C7C10F9911C0AEA492250ABD12854F9C3D787C64B1C6397E"
"sha256": "7eb5d0ff184c6095c7c10f9911c0aea492250abd12854f9c3d787c64b1c6397e"
},
{
"url": "https://huggingface.co/jncraton/m2m100_418M-ct2-int8/resolve/main/special_tokens_map.json?download=true",
"sha256": "C1A4F86C3874D279AE1B2A05162858DB5DD6C61665D84223ED886CBCFF08FDA6"
"sha256": "c1a4f86c3874d279ae1b2a05162858db5dd6c61665d84223ed886cbcff08fda6"
},
{
"url": "https://huggingface.co/jncraton/m2m100_418M-ct2-int8/resolve/main/tokenizer_config.json?download=true",
"sha256": "AE54F15F0649BB05041CDADAD8485BA1FAF40BC33E6B4C2A74AE2D1AE5710FA2"
"sha256": "ae54f15f0649bb05041cdadad8485ba1faf40bc33e6b4c2a74ae2d1ae5710fa2"
},
{
"url": "https://huggingface.co/jncraton/m2m100_418M-ct2-int8/resolve/main/vocab.json?download=true",
"sha256": "B6E77E474AEEA8F441363ACA7614317C06381F3EACFE10FB9856D5081D1074CC"
"sha256": "b6e77e474aeea8f441363aca7614317c06381f3eacfe10fb9856d5081d1074cc"
},
{
"url": "https://huggingface.co/jncraton/m2m100_418M-ct2-int8/resolve/main/sentencepiece.bpe.model?download=true",
"sha256": "D8F7C76ED2A5E0822BE39F0A4F95A55EB19C78F4593CE609E2EDBC2AEA4D380A"
"sha256": "d8f7c76ed2a5e0822be39f0a4f95a55eb19c78f4593ce609e2edbc2aea4d380a"
}
]
},
@@ -46,35 +46,35 @@
"files": [
{
"url": "https://huggingface.co/jncraton/m2m100_1.2B-ct2-int8/resolve/main/model.bin?download=true",
"sha256": "C97DF052A558895317312470E1FF7CB8EAE5416F7AE16214A2983C6853DD3CE5"
"sha256": "c97df052a558895317312470e1ff7cb8eae5416f7ae16214a2983c6853dd3ce5"
},
{
"url": "https://huggingface.co/jncraton/m2m100_1.2B-ct2-int8/resolve/main/config.json?download=true",
"sha256": "4244772990E30069563E3DDFB4AD6DC95BDFD2AC3DE667EA8858C9B0A8433FA8"
"sha256": "4244772990e30069563e3ddfb4ad6dc95bdfd2ac3de667ea8858c9b0a8433fa8"
},
{
"url": "https://huggingface.co/jncraton/m2m100_1.2B-ct2-int8/resolve/main/generation_config.json?download=true",
"sha256": "AED76366507333DDBB8BD49960F23C82FE6446B3319A46A54BEFDB45324CCF61"
"sha256": "aed76366507333ddbb8bd49960f23c82fe6446b3319a46a54befdb45324ccf61"
},
{
"url": "https://huggingface.co/jncraton/m2m100_1.2B-ct2-int8/resolve/main/shared_vocabulary.json?download=true",
"sha256": "7EB5D0FF184C6095C7C10F9911C0AEA492250ABD12854F9C3D787C64B1C6397E"
"sha256": "7eb5d0ff184c6095c7c10f9911c0aea492250abd12854f9c3d787c64b1c6397e"
},
{
"url": "https://huggingface.co/jncraton/m2m100_1.2B-ct2-int8/resolve/main/special_tokens_map.json?download=true",
"sha256": "C1A4F86C3874D279AE1B2A05162858DB5DD6C61665D84223ED886CBCFF08FDA6"
"sha256": "c1a4f86c3874d279ae1b2a05162858db5dd6c61665d84223ed886cbcff08fda6"
},
{
"url": "https://huggingface.co/jncraton/m2m100_1.2B-ct2-int8/resolve/main/tokenizer_config.json?download=true",
"sha256": "1566A6CFA4F541A55594C9D5E090F530812D5DE7C94882EA3AF156962D9933AE"
"sha256": "1566a6cfa4f541a55594c9d5e090f530812d5de7c94882ea3af156962d9933ae"
},
{
"url": "https://huggingface.co/jncraton/m2m100_1.2B-ct2-int8/resolve/main/vocab.json?download=true",
"sha256": "B6E77E474AEEA8F441363ACA7614317C06381F3EACFE10FB9856D5081D1074CC"
"sha256": "b6e77e474aeea8f441363aca7614317c06381f3eacfe10fb9856d5081d1074cc"
},
{
"url": "https://huggingface.co/jncraton/m2m100_1.2B-ct2-int8/resolve/main/sentencepiece.bpe.model?download=true",
"sha256": "D8F7C76ED2A5E0822BE39F0A4F95A55EB19C78F4593CE609E2EDBC2AEA4D380A"
"sha256": "d8f7c76ed2a5e0822be39f0a4f95a55eb19c78f4593ce609e2edbc2aea4d380a"
}
]
},
@@ -85,31 +85,31 @@
"files": [
{
"url": "https://huggingface.co/JustFrederik/nllb-200-distilled-1.3B-ct2-int8/resolve/main/model.bin?download=true",
"sha256": "72D7533DC7A0E8F10F19A650D4E90FAF9CBFA899DB5411AD124BD5802BD91263"
"sha256": "72d7533dc7a0e8f10f19a650d4e90faf9cbfa899db5411ad124bd5802bd91263"
},
{
"url": "https://huggingface.co/JustFrederik/nllb-200-distilled-1.3B-ct2-int8/resolve/main/config.json?download=true",
"sha256": "0C2F6FA2057C7264D052FB4A62BA3476EEAE70487ACDDFA8E779A53A00CBF44C"
"sha256": "0c2f6fa2057c7264d052fb4a62ba3476eeae70487acddfa8e779a53a00cbf44c"
},
{
"url": "https://huggingface.co/JustFrederik/nllb-200-distilled-1.3B-ct2-int8/resolve/main/tokenizer.json?download=true",
"sha256": "E316B82DE11D0F951F370943B3C438311629547285129B0B81DADABD01BCA665"
"sha256": "e316b82de11d0f951f370943b3c438311629547285129b0b81dadabd01bca665"
},
{
"url": "https://huggingface.co/JustFrederik/nllb-200-distilled-1.3B-ct2-int8/resolve/main/shared_vocabulary.txt?download=true",
"sha256": "A132A83330F45514C2476EB81D1D69B3C41762264D16CE0A7EA982E5D6C728E5"
"sha256": "a132a83330f45514c2476eb81d1d69b3c41762264d16ce0a7ea982e5d6c728e5"
},
{
"url": "https://huggingface.co/JustFrederik/nllb-200-distilled-1.3B-ct2-int8/resolve/main/special_tokens_map.json?download=true",
"sha256": "992BD4ED610D644D6823081937BCC91BB8878DD556CEA4AE5327F2480361330E"
"sha256": "992bd4ed610d644d6823081937bcc91bb8878dd556cea4ae5327f2480361330e"
},
{
"url": "https://huggingface.co/JustFrederik/nllb-200-distilled-1.3B-ct2-int8/resolve/main/tokenizer_config.json?download=true",
"sha256": "D1AA8C3697D3E35674F97B5B7E9C99D22B010F528E80140257D97316BE90D044"
"sha256": "d1aa8c3697d3e35674f97b5b7e9c99d22b010f528e80140257d97316be90d044"
},
{
"url": "https://huggingface.co/JustFrederik/nllb-200-distilled-1.3B-ct2-int8/resolve/main/sentencepiece.bpe.model?download=true",
"sha256": "14BB8DFB35C0FFDEA7BC01E56CEA38B9E3D5EFCDCB9C251D6B40538E1AAB555A"
"sha256": "14bb8dfb35c0ffdea7bc01e56cea38b9e3d5efcdcb9c251d6b40538e1aab555a"
}
]
},
@@ -120,31 +120,31 @@
"files": [
{
"url": "https://huggingface.co/JustFrederik/nllb-200-distilled-600M-ct2-int8/resolve/main/model.bin?download=true",
"sha256": "ED1BEAF75134DE7505315A5223162F56ACFF397EFF6B50638A500D3936FE707B"
"sha256": "ed1beaf75134de7505315a5223162f56acff397eff6b50638a500d3936fe707b"
},
{
"url": "https://huggingface.co/JustFrederik/nllb-200-distilled-600M-ct2-int8/resolve/main/config.json?download=true",
"sha256": "0C2F6FA2057C7264D052FB4A62BA3476EEAE70487ACDDFA8E779A53A00CBF44C"
"sha256": "0c2f6fa2057c7264d052fb4a62ba3476eeae70487acddfa8e779a53a00cbf44c"
},
{
"url": "https://huggingface.co/JustFrederik/nllb-200-distilled-600M-ct2-int8/resolve/main/tokenizer.json?download=true",
"sha256": "E316B82DE11D0F951F370943B3C438311629547285129B0B81DADABD01BCA665"
"sha256": "e316b82de11d0f951f370943b3c438311629547285129b0b81dadabd01bca665"
},
{
"url": "https://huggingface.co/JustFrederik/nllb-200-distilled-600M-ct2-int8/resolve/main/shared_vocabulary.txt?download=true",
"sha256": "A132A83330F45514C2476EB81D1D69B3C41762264D16CE0A7EA982E5D6C728E5"
"sha256": "a132a83330f45514c2476eb81d1d69b3c41762264d16ce0a7ea982e5d6c728e5"
},
{
"url": "https://huggingface.co/JustFrederik/nllb-200-distilled-600M-ct2-int8/resolve/main/special_tokens_map.json?download=true",
"sha256": "992BD4ED610D644D6823081937BCC91BB8878DD556CEA4AE5327F2480361330E"
"sha256": "992bd4ed610d644d6823081937bcc91bb8878dd556cea4ae5327f2480361330e"
},
{
"url": "https://huggingface.co/JustFrederik/nllb-200-distilled-600M-ct2-int8/resolve/main/tokenizer_config.json?download=true",
"sha256": "D1AA8C3697D3E35674F97B5B7E9C99D22B010F528E80140257D97316BE90D044"
"sha256": "d1aa8c3697d3e35674f97b5b7e9c99d22b010f528e80140257d97316be90d044"
},
{
"url": "https://huggingface.co/JustFrederik/nllb-200-distilled-600M-ct2-int8/resolve/main/sentencepiece.bpe.model?download=true",
"sha256": "14BB8DFB35C0FFDEA7BC01E56CEA38B9E3D5EFCDCB9C251D6B40538E1AAB555A"
"sha256": "14bb8dfb35c0ffdea7bc01e56cea38b9e3d5efcdcb9c251d6b40538e1aab555a"
}
]
},
@@ -155,19 +155,19 @@
"files": [
{
"url": "https://huggingface.co/santhosh/madlad400-3b-ct2/resolve/main/model.bin?download=true",
"sha256": "F3C87256A2C888100C179D7DCD7F41DF17C767469546C59D32C7DDE86C740A6B"
"sha256": "f3c87256a2c888100c179d7dcd7f41df17c767469546c59d32c7dde86c740a6b"
},
{
"url": "https://huggingface.co/santhosh/madlad400-3b-ct2/resolve/main/config.json?download=true",
"sha256": "A428C51CD35517554523B3C6B6974A5928BC35E82B130869A543566A34A83B93"
"sha256": "a428c51cd35517554523b3c6b6974a5928bc35e82b130869a543566a34a83b93"
},
{
"url": "https://huggingface.co/santhosh/madlad400-3b-ct2/resolve/main/shared_vocabulary.txt?download=true",
"sha256": "C327551CE3CA6EFC7B437E11A267F79979893332DDA8A1D146E2C950815193F8"
"sha256": "c327551ce3ca6efc7b437e11a267f79979893332dda8a1d146e2c950815193f8"
},
{
"url": "https://huggingface.co/santhosh/madlad400-3b-ct2/resolve/main/sentencepiece.model?download=true",
"sha256": "EF11AC9A22C7503492F56D48DCE53BE20E339B63605983E9F27D2CD0E0F3922C"
"sha256": "ef11ac9a22c7503492f56d48dce53be20e339b63605983e9f27d2cd0e0f3922c"
}
]
},