feat(embed): candle Metal (Apple Silicon GPU) opt-in build feature #200
Reference in New Issue
Block a user
Delete Branch "feat/embed-candle-metal"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
요약
candle CPU 임베딩은 e5-large/512-tok 에서
1.51.9 s/chunk 로 느리고, 코어를 더 줘도(rayon/MKL) 빨라지지 않는다(병목 = 커널 효율, 코어 수 아님). 대용량 코퍼스(수만 청크)는 CPU 로는 수 시간이 걸린다. 이를 구조적으로 풀기 위해 candle 을 Apple Silicon GPU(Metal)에서 돌리는 opt-in build feature 를 추가한다.워크플로: M-시리즈 맥에서 GPU 로 빠르게 색인 →
kebab.sqlite+lancedb/만 Linux NUMA 서버로 복사 → 서버는 CPU candle 로 질의. 벡터는 동일 e5-large 모델이라 GPU/CPU 산출물이 호환되고(패리티 2.01e-7), KB 는 이식 가능하다(workspace_path상대경로 +chunks.text저장 → 검색에 원본 파일 불필요).설계: docs/superpowers/specs/2026-06-01-embed-candle-track-spec.md (§10 후속 — GPU 가속)
변경
kebab-embed-candle에metalfeature →candle-core/-nn/-transformers의 metal 백엔드 활성.select_device()가 metal 빌드 시Device::new_metal(0)선택(실패 시 CPU fallback), 비-metal 빌드는 기존Device::Cpu그대로..contiguous()추가 — Metal 의 strided view 를to_vec2가 거부(CPU 는 허용).kebab-app/embed_metal→kebab-cli/embed_metal. 빌드(macOS):cargo build --release --features embed_metal.검증
cargo clippy -p kebab-embed-candle -p kebab-cli --all-targets -- -D warningsexit 0;cargo test -p kebab-embed-candleexit 0 (candle 단위 6 + thread_cap 1 + parity 1 ignored);cargo check -p kebab-cliexit 0.select_device()의 Metal 분기는#[cfg(feature="metal")]로 격리 → 비-metal 빌드엔 Metal 심볼 0.비범위 / 검증 분담
candle device = Metal (GPU).provider=candle) 로 질의 — 본 PR 의 영향 없음.시험 항목 (Test Plan)
cargo build --release --features embed_metal빌드 성공candle device = Metal (GPU)+ CPU 대비 속도 향상 확인Assisted-by: Claude Code
회차 1 — candle Metal opt-in build feature 검토. select_device() 가 #[cfg(feature=metal)] 로 Metal 분기를 격리(성공 시 new_metal, 실패 시 CPU fallback; 비-metal 빌드는 Device::Cpu 그대로) → default 경로 무영향. feature passthrough(cli→app→candle) 정확, .contiguous() host-copy 가드 적절, 버전 0.23.0 + README(빌드/)/HOTFIXES 동기화. default(비-metal) clippy -D warnings 0 / candle 단위·thread_cap·parity / cli check 모두 exit 0 확인. Metal feature 는 macOS 전용 컴파일이라 GPU 실행·속도·패리티는 M4 Pro 사용자 검증 영역(Linux 에서 불가) — 코드 레벨 머지 동의. 잔여 actionable 0.