Skip to content

Commit ee48e2f

Browse files
Fix MiniLM Swift 6.2 CoreML compatibility on macOS
1 parent 72e8925 commit ee48e2f

File tree

3 files changed

+9
-13
lines changed

3 files changed

+9
-13
lines changed

Sources/WaxVectorSearchMiniLM/CoreML/MiniLMEmbeddings.swift

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -271,11 +271,9 @@ private extension MiniLMEmbeddings {
271271
let float16Ptr = embeddings.dataPointer.bindMemory(to: Float16.self, capacity: elementCount)
272272
return (0..<batch).map { row in
273273
let start = row * dim
274-
var vector = [Float](repeating: 0, count: dim)
275-
// Use Accelerate SIMD for 8-16x faster Float16→Float32 conversion
276-
let srcPtr = float16Ptr.advanced(by: start)
277-
vDSP.convertElements(of: UnsafeBufferPointer(start: srcPtr, count: dim), to: &vector)
278-
return vector
274+
return (0..<dim).map { col in
275+
Float(float16Ptr[start + col])
276+
}
279277
}
280278
}
281279
}

Sources/WaxVectorSearchMiniLM/CoreML/all-MiniLM-L6-v2.swift

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,13 +55,11 @@ public class all_MiniLM_L6_v2Output : MLFeatureProvider {
5555
}
5656

5757
/// var_554 as multidimensional array of 16-bit floats
58-
#if (os(macOS) || targetEnvironment(macCatalyst)) && arch(x86_64)
59-
@available(macOS, unavailable)
60-
@available(macCatalyst, unavailable)
61-
#endif
58+
#if !(os(macOS) || targetEnvironment(macCatalyst))
6259
public var var_554ShapedArray: MLShapedArray<Float16> {
6360
MLShapedArray<Float16>(var_554)
6461
}
62+
#endif
6563

6664
public var featureNames: Set<String> {
6765
provider.featureNames

Sources/WaxVectorSearchMiniLM/MiniLMEmbedder.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,11 @@ import WaxVectorSearch
44
#if canImport(CoreML)
55
@preconcurrency import CoreML
66
#if canImport(OSLog)
7-
import OSLog
7+
@preconcurrency import OSLog
88
#endif
99

1010
extension MiniLMEmbeddings: @unchecked Sendable {}
1111

12-
// MARK: - Logging
13-
private let logger = Logger(subsystem: "com.wax.vectormodel", category: "MiniLMEmbedder")
14-
1512
/// High-performance MiniLM embedder with batch support for optimal ANE/GPU utilization.
1613
/// Implements BatchEmbeddingProvider for significant throughput improvements during ingest.
1714
@available(macOS 15.0, iOS 18.0, *)
@@ -80,10 +77,13 @@ public actor MiniLMEmbedder: EmbeddingProvider, BatchEmbeddingProvider {
8077
}
8178

8279
private nonisolated func logComputeUnits() {
80+
#if canImport(OSLog)
81+
let logger = Logger(subsystem: "com.wax.vectormodel", category: "MiniLMEmbedder")
8382
let units = currentComputeUnits()
8483
let aneAvailable = isUsingANE()
8584
logger.info("MiniLMEmbedder initialized with computeUnits: \(units.rawValue, privacy: .public)")
8685
logger.info("ANE configured: \(aneAvailable ? "Yes" : "No", privacy: .public)")
86+
#endif
8787

8888
// TODO: Expose MLModelConfiguration knobs (e.g. low-precision accumulation) for more tuning.
8989
}

0 commit comments

Comments
 (0)