From a207520571b9c111a55841ff2ba3ad90a789af83 Mon Sep 17 00:00:00 2001 From: Meng Zhang Date: Tue, 5 Sep 2023 13:03:49 +0800 Subject: [PATCH] feat: turn on metal device by default on macosx / aarch64 devices (#398) --- .github/workflows/ci.yml | 4 +--- crates/tabby/Cargo.toml | 5 +++-- crates/tabby/src/serve/completions.rs | 6 +++--- crates/tabby/src/serve/mod.rs | 2 +- 4 files changed, 8 insertions(+), 9 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index fef8bd4..f6bfbfe 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -70,10 +70,8 @@ jobs: include: - os: macos-11 target: aarch64-apple-darwin - flags: "--features metal" - os: ubuntu-latest target: x86_64-unknown-linux-gnu - flags: "" env: SCCACHE_GHA_ENABLED: true @@ -112,7 +110,7 @@ jobs: - run: bash ./ci/prepare_build_environment.sh - name: Bulid release binary - run: cargo build --no-default-features ${{ matrix.flags }} --release --target ${{ matrix.target }} + run: cargo build --no-default-features --release --target ${{ matrix.target }} - name: Rename release binary run: mv target/${{ matrix.target }}/release/tabby tabby_${{ matrix.target }} diff --git a/crates/tabby/Cargo.toml b/crates/tabby/Cargo.toml index 802f252..209db99 100644 --- a/crates/tabby/Cargo.toml +++ b/crates/tabby/Cargo.toml @@ -35,7 +35,9 @@ tantivy = { workspace = true } anyhow = { workspace = true } sysinfo = "0.29.8" nvml-wrapper = "0.9.0" -llama-cpp-bindings = { path = "../llama-cpp-bindings", optional = true } + +[target.'cfg(all(target_os="macos", target_arch="aarch64"))'.dependencies] +llama-cpp-bindings = { path = "../llama-cpp-bindings" } [dependencies.uuid] version = "1.3.3" @@ -49,7 +51,6 @@ features = [ default = ["scheduler"] link_shared = ["ctranslate2-bindings/link_shared"] scheduler = ["tabby-scheduler"] -metal = ["llama-cpp-bindings"] [build-dependencies] vergen = { version = "8.0.0", features = ["build", "git", "gitcl"] } diff --git a/crates/tabby/src/serve/completions.rs b/crates/tabby/src/serve/completions.rs index 8307cab..f89b10c 100644 --- a/crates/tabby/src/serve/completions.rs +++ b/crates/tabby/src/serve/completions.rs @@ -141,7 +141,7 @@ impl CompletionState { } } -#[cfg(not(feature = "metal"))] +#[cfg(not(all(target_os = "macos", target_arch = "aarch64")))] fn create_engine( args: &crate::serve::ServeArgs, model_dir: &ModelDir, @@ -150,7 +150,7 @@ fn create_engine( create_ctranslate2_engine(args, model_dir, metadata) } -#[cfg(feature = "metal")] +#[cfg(all(target_os = "macos", target_arch = "aarch64"))] fn create_engine( args: &crate::serve::ServeArgs, model_dir: &ModelDir, @@ -183,7 +183,7 @@ fn create_ctranslate2_engine( Box::new(CTranslate2Engine::create(options)) } -#[cfg(feature = "metal")] +#[cfg(all(target_os = "macos", target_arch = "aarch64"))] fn create_llama_engine(model_dir: &ModelDir) -> Box { let options = llama_cpp_bindings::LlamaEngineOptionsBuilder::default() .model_path(model_dir.ggml_model_file()) diff --git a/crates/tabby/src/serve/mod.rs b/crates/tabby/src/serve/mod.rs index a8b9638..d8738e4 100644 --- a/crates/tabby/src/serve/mod.rs +++ b/crates/tabby/src/serve/mod.rs @@ -55,7 +55,7 @@ pub enum Device { #[strum(serialize = "cuda")] Cuda, - #[cfg(feature = "metal")] + #[cfg(all(target_os = "macos", target_arch = "aarch64"))] #[strum(serialize = "metal")] Metal, }