fix: load progress in shared worker

This commit is contained in:
Tienson Qin
2025-08-01 00:03:22 +08:00
parent 1e84a21042
commit 1e8d7de446
3 changed files with 18 additions and 12 deletions

View File

@@ -76,13 +76,13 @@
;; A fast pprint alternative.
(defn print-prefix-map* [prefix m print-one writer opts]
(pr-sequential-writer
writer
(fn [e w opts]
(print-one (key e) w opts)
(-write w \space)
(print-one (val e) w opts))
(str prefix "\n{") \newline "}"
opts (seq m)))
writer
(fn [e w opts]
(print-one (key e) w opts)
(-write w \space)
(print-one (val e) w opts))
(str prefix "\n{") \newline "}"
opts (seq m)))
(defn ugly-pr-str
"Ugly printing fast, with newlines so that git diffs are smaller"
@@ -91,6 +91,6 @@
(pr-str x)))
(defn post-message
[type data]
(when (exists? js/self)
(.postMessage js/self (ldb/write-transit-str [type data]))))
[type data & {:keys [port]}]
(when-let [worker (or port js/self)]
(.postMessage worker (ldb/write-transit-str [type data]))))

View File

@@ -67,4 +67,6 @@
(glogi-console/install!)
(let [port (first (.-ports e))
^js obj #_{:clj-kondo/ignore [:unresolved-symbol]} (InferenceWorker.)]
(reset! infer-worker.text-embedding/*port port)
(.start port)
(Comlink/expose obj port))))

View File

@@ -19,6 +19,8 @@
(log/info :delete-hnsw-index repo)
(.delete hnsw-index))))))
(defonce *port (atom nil))
(def ^:private embedding-opts #js{"pooling" "mean" "normalize" true})
(def ^:private init-max-elems 100)
@@ -181,7 +183,7 @@
;; :hnsw-config {:dims 1024}}
})
(def ^:private *load-model-progress (atom nil))
(defonce ^:private *load-model-progress (atom nil))
(defn <load-model
[model-name]
@@ -210,7 +212,9 @@
(c.m/run-background-task
::push-load-model-progress
(m/reduce
(fn [_ v] (worker-util/post-message :vector-search/load-model-progress v))
(fn [_ v]
(when-let [port @*port]
(worker-util/post-message :vector-search/load-model-progress v {:port port})))
(c.m/throttle 500 (m/watch *load-model-progress)))))
(comment